从COBOL语言,看固定资本更新难——兼试证一种固定资本的新形式,编程语言

编者按:
1.cobol语言的状况实际上是计算机界普遍的现象,资产阶级为了获取超额利润强迫程序员完成极其粗糙的底层代码结构,然后出现问题之后又不愿意放弃短期利益去更换代码,只能让运维无限制的从上面修修补补,浪费大量资源去维护一个垃圾,直到其维护成本要远远高于重建成本才会去选择重建,这种资本主义的逐利现象对于无产阶级的影响是巨大的,大家一年就必须要换一部新手机,显卡性能永远不够,5g下载速度比4g还慢也是因为这个,哪怕硬件性能会成指数上升,光是维护那些垃圾代码就会飞快的把这些增加的性能给耗光,更别说还有些资本为了逐利还无限制的往软件里面塞广告,无论如何,资产阶级的研发和维护垃圾的成本都需要从无产阶级的口袋里掏,所以说,要想避免这种几乎无限制的的浪费,就需要推翻资产阶级专政,建立无产阶级专政的社会
2.只要一个产品还会为资产阶级带来利润,那么资产阶级就不会停止尝试继续用其获取利润,这种现象不光是在编程代码上,我们常见的一些日常生活用品里即使存在设计缺陷,只要不影响其利润往往就不会改进,资本主义社会的生产模式就决定了其保守且不思进取的产品迭代方式。例如苏联时期设计的AK47在各方面都表现出极高的可靠性,但在俄罗斯时期设计的AK12作为AK47的后续型号缺有大量的设计缺陷但却不愿进行改进。从生产的方方面面都可以看出社会主义生产制度远优于资本主义的生产制度。

建立在垄断与逐利性上的编程语言。

20世纪50年代末,此时第一门高级编程语言Fortran刚刚被开发出来,但编程语言的标准化遥遥无期,业务代码的编程、迁移、运行通常占据成本的一大部分。在这种情况下,各计算机制造商很快组织起成为一个委员会<笔者注:垄断联盟>,他们向美国国防部提议开发新的通用业务语言,致力于减少成本以及提高语言功能性、实现现代化。

COBOL语言就此诞生,它更早于C语言,且基于Fortran开发,是最早的一批高级语言,非常适合用来处理大量数据,最重要的是,在垄断制造商联盟与国防部的推广下,这些因素使得它在短短几年就成为当时世界上应用最广泛的语言…没有之一。

1962年末,IBM宣布COBOL将成为他们的主要开发语言,并且COMTRAN的开发将停止。需要指出的是,COBOL语言的运行平台正是以IBM大型机为主,IBM一直是COBOL语言实施的中流砥柱。

时至今日,世界上43%的银行系统依赖COBOL;美国金融机构超过 80% 的面对面交易和95%的信用卡交易使用 COBOL。至今仍有超过 4000 亿行 COBOL 代码在美国运行。

可以说,COBOL语言就是在计算机技术这个生产力层面的发展,同垄断性、逐利性的资本主义生产关系碰撞的产物,它从一开始就是为了垄断资产阶级的更方便地谋利服务的,而不是为了人民更好地生产消费服务。COBOL语言十分重要,但这种重要性恰恰使资本主义下的根本矛盾——私有制同社会化生产的矛盾,体现得淋漓尽致。

上古语言出路难寻,资本主义下的必然恶果

首先,COBOL语言在开发之初,以大数据集处理见长,同时也是第一批执行标准化的语言,但是这种优势早已在六十余年的发展中磨灭殆尽。下面我们会提到COBOL标准化进程缓慢这回事,单从语言能力上,COBOL语言也早已被Python、MySQL等语言赶超,究竟是什么使得COBOL现在仍然没办法退出市场?答案只有一个,就是资本主义。

维护不了

稍微接触编程的同志应该都听说过一个词,叫做“屎山代码”,也即是年久失修,开发文档丢失或语焉不详,开发逻辑混乱过时的一堆代码堆在那里,成了难以维护的“屎山”。COBOL语言凭借垄断联盟极强的执行力几年之内就占领了几乎整个市场。但是,金融行业、银行系统的业务代码必须7x24小时地运行,因此他的更替和维护就变得极为困难。

“如果代码出了问题,最好的解决办法就是在所有代码外面加一层if。”,一线的维护人员迫于开发时限,往往只能采用这种维护思路。“你别管它丑不丑,能跑就行。”企业的管理层同一线开发人员实际上没有形成有机的联系,资本家就负责保证让业务尽快回复,以实现盈利;程序员就负责让代码跑起来,双方严格遵循着私有制的准则。

而不仅单个企业内部维护不动自己的业务代码,眼光放到整个编程语言的生态,其实COBOL也是疲态尽显。

更新不动

COBOL在刚被开发出来,就被批评是一种冗长的语言,现在的标准涵盖了600个保留字符,语法结构庞大,特性复杂,这导致它的编译器极其难以开发。【笔者注,编译即是将COBOL代码,从自然语言的形式,转化为机器可以理解的机器码,这需要将由保留字规定的逻辑转化为计算机的具体执行步骤】

事实上,除了在刚开始的二十几年中,COBOL的更新还能跟上发展的步伐,但其后续更新已经越发疲软,如它在2002才推出面向对象版本,但这个版本的支持极差,甚至没有编译器完全支持该标准。

COBOL语言如今更新疲软,标准化工作难以执行,但好笑的是,这恰恰与COBOL语言设计初衷(统一各公司业务语言标准)相违背。我们知道,编程语言作为人类劳动的成果之一,它的维护与更新,也必然离不开人的劳动,但是只有有序的、建立在集中领导、合理分工基础上的劳动,才能产生最大作用,可作为维护COBOL语言的各企业,虽然形式上确定了统一的委员会,但他们的利益实际上是不同的。

有的企业迫切需要如面向对象、跨平台等特性,但有些企业的业务并不涉及这方面,这就是私有制同社会化生产的矛盾,只要问题本身没有危害到所有人的利益,那么这个集团就没有办法完全开动起来。

人才不够

正是由于COBOL上手门槛高,相比其他语言也没有优势,并且人才市场流动性极差,COBOL程序员正不断流失,那些依赖于COBOL的企业发现,现在就算“保持现状”也越发难以实现了。据统计,目前COBOL程序员中有40%以上,年龄在40岁到55岁。这一已经足够令人大跌眼镜的数据,恐怕在几年后还会更加打破那些资本家保持现状的幻想。

驳关于解决Cobol语言问题诸谬论

既然COBOL面临如此严峻的处境,资产阶级的老爷们自然要想方设法跳出这个怪圈,那我们就来品鉴一下他们提出的两个措施。

自由主义/续命主义

续命主义的核心观点就是保持现状。因为事实就是:COBOL语言就连保持现在这个半死不活的状态都难以维持了。

在COVID-19 大流行和随之而来的失业率激增期间,美国几个州报告称缺乏熟练的 COBOL 程序员来支持用于失业福利管理的遗留系统。在大流行之前,其中许多系统一直在转换为更现代的编程语言,但该过程被搁置。同样,美国国税局急忙修补其基于 COBOL 的个人主文件,以便支付《冠状病毒援助、救济和经济安全法案》规定的数千万笔款项。

既然Cobol在目前市场上占有举足轻重的地位,而且短期无法替换掉,我们应该想办法给他续命,最重要的是就是高薪促使COBOL人才回流。

而这种想法,实际正是从自由主义诞生出来,也即是觉得一切经济问题都是市场规律的结果,人才不足就提高薪资待遇,再不足就要拨经费给高校进行培养。

千万不能把这种措施误解为什么利于工人阶级的措施,什么提高薪资待遇等等,须知,资本家既然能给COBOL程序员开出更高的薪资,这就意味着程序员给他创造了更多得多的价值。况且,提高薪资实际是不能瞬间变出人才的,所谓的人才,实际大多是已经退休的工人阶级,这种手段,更是意味着COBOL程序员会面对更长期,更持久的压迫。

改良主义

另一种观点认为,Cobol早就被淘汰,我们应该立即动员起程序员、各大企业,将其用其他语言重写或转移到线上计算,以求替代、减轻他的重要程度。

说这种观点是改良主义,正是因为他的想法和改良主义出于同源,都是希望那些公司自觉放弃自己的短期利益,维护整个市场的长期利益。 首先,这种措施带来的开销,绝对是单个企业所无法承担的,如果某个银行要着手重写代码,实现去COBOL,且不论花费的成本,就是这个过程的业务停止带来的损失都是它无法承受的。另一方面,指望这些企业联合起来,也是不切实际的,我们早就指出:金融企业、计算机制造商之间形成的垄断联盟,仅仅是形式上的,他们彼此之间的矛盾是绝对的且不可调和的。

当然,改良主义能够实施并非不可能的,这就是只有“保持现状”的成本,远远大于“维护、更新代码”的成本时,他们才不得不行动起来。

马列毛主义者怎么办

那么到底如何解决这个问题呢?我们的答案也只有一个,那就是社会主义。

COBOL语言的问题,归根到底是私有制同生产社会化的矛盾,只有社会主义下才能彻底解决这个问题。维护编程语言的可能仍然是以委员会形式,但是其中各个成员是没有冲突的,只是出于分工的不同而对编程语言提出不同的要求。而执行业务代码的各部门,则应完全服从党的集中统一领导,从而可以按地区、按人民的需求部署业务窗口,甚至按计划停止一部分业务窗口进行更新,维护。

资产阶级提出的一切解决方案,都是希望在承认私有制的框架下实现,都是在不损害自己的私人利益的条件下实现,那么它就不可能实现!

Cobol语言反映了资本主义下一般固定资本的规律

分析完COBOL语言本身之后,我们终于可以拿着这些资料,来做出一些普遍的判断,笔者在这里就提出一个观点,即,编程语言,尤其是COBOL语言,体现了固定资本的诸多特征,可以认定这是固定资本的一种新形式。

一般固定资本规律

首先我们归纳一下通常通常固定资本的刻板印象吧!

  1. 固定资本的价值流动规律是:在每一次生产过程中,固定资本的物质 要素是逐断被消费,它的价值也是逐渐地、一部分一部分地转 移到产品中去
  2. 固定资本算是不变资本的一部分,而后者在资本的占比是不断提高的,也即是资本有机构成不断提高的规律
  3. 替换困难,进入帝国主义时代以后,垄断资本的腐朽性进一步暴露,它可以通过垄断地位攫取垄断利润,就不愿意在提高生产上花费“成本”。那么那些数十年前购入的固定资本就迟迟得不到更换。但是垄断集团不乐意,资本主义的规律也会强迫它就范,因此我们就会看到,每到经济危机,生产力包括固定资本就会被大量破坏,往下就后来居上,其他资本家带着新的更优质的固定资本取得竞争优势,化身新的垄断集团。

通常固定资本有哪些形式呢?比如说机床、仓库、用于运输的火车、轮船。但是COBOL语言显然是不符合这种刻板印象的,看起来,语言、软件作为一串电子数据,已经生产出来,在技术上就可以自由传输,那么它使用价值和价值就被逐渐分散掉了。笔者也曾经被这种“直观”的想法困惑过,那么我们就来分析一下COBOL语言背后的价值是如何流动的吧。

Cobol反应了固定资本存在新的形式,即编程语言

分析COBOL语言的价值规律,就得从其刚开始诞生出发,1960年,COBOL语言由一个六人委员会开发出来,那么COBOL的原始版本就主要由他们脑力劳动中蕴含的价值构成,我们把这部分称为固定价值。接下来,世界无数的程序员用COBOL语言开发业务代码,这些代码价值的主要部分是业务程序员的劳动,但其中一定包含少量固定价值

这个过程实际说明了许多问题,比如说,表面上看,业务程序员可以用原始版本的COBOL开发无数程序,使得固定价值就像是一座取之不尽的矿藏,但这显然既违背理论,更违背实际!因为业务程序员的实践会不断证明COBOL语言的诸多局限性和错误,这就需要委员会对COBOL进行更新维护,这个过程实际正是使固定价值发生了变化!如果COBOL没有更新,那么业务程序员就只会转向性能更好的语言。

看起来,COBOL语言需要大量劳动力持续维护,但这种表面上的“高流动性”,根本难以掩盖本身的“固定性”。COBOL就像是金融资本家已经建好了的一座“大房子”,越用就越年久失修,但编程语言同一般的房子根本不同,想要继续有地方住,没办法新建一座更好的房子,只能在旧的房子上修修补补。但无论房子本身的价值是否变化了,我们说,房子的价值向在房子内生产出的产品流动的过程,一定是“逐渐 ”的!

这种“固定性”不仅体现在劳动价值上,还是以房子做比较,房子再怎么修补,地基都改不了了,COBOL语言在一开始就规定了400个保留字,难道后期更新还能让它变简洁?(事实上60年的更新后,现在有600个保留字了)COBOL的弊病不仅埋藏在最开始做出的规范中,后续的一切修补,都是补上了一个墙洞,又凸起一块墙皮,这种举动无法阻止房子越来越不好住的趋势。

小结

这样来看,COBOL语言无疑是符合固定资本的价值规律的。那么,现在出现了COBOL语言替换困难、维护困难,也就符合了固定资本的规律。那么我们完全可以做出这样科学的预言:COBOL语言必定被淘汰,随着新式高级语言的发展、老式语言越难发挥它的使用价值,这几乎正说明它的价值快被转移光了!

但是,这种淘汰还是在资本主义的后来居上、历史周期律里面,身为马列毛主义者,就要跳出这些框框,用革命的方法把这些编程语言按照社会主义的方式组织起来。到底怎么办,上一节结尾已有简要论述,这里就不再重复。

在结尾我们还是回到理论上,笔者虽然提出了编程语言是一种新式固定资本 这个观点。但是现实是价值转移运动无疑是更为复杂的,比如固定性和流动性的判断是有条件的,比如有些编程语言一开始其实是作为其他编程语言的业务程序出现的(C++可视为基于C语言的面向对象版本,python的底层也是C语言),这些就都不提了。

唯有确定的,就是把握住“具体问题,具体分析”这个活的灵魂,本文得出的结论,离不开COBOL语言的特殊性,想再发掘出更普遍的规律,就需要广大同志在实践中总结更多经验了。

1 个赞

社会主义下的编程语言或软件的开发,应该是有一个委员会负责统筹,而其他有技术乐于参与软件开发的程序员都可以参与进来,这样能发挥开源软件的优势。

文末提出了不同编程语言的一些区别。其实不妨这么看,编程语言是开发软件的工具,在一般的软件开发中除了编程语言本体外,肯定还会使用各种用该编程语言造的轮子,比如JAVA开发要用到Spring Boot,开发游戏的Unity用到C#,Web开发要用上的MySql等数据库软件本身就定义了一种Sql语言。不论它们形式如何,它们的本质都可以按文中说的是一种固定资本,是为了生产出能实际运行的代码的,换句话说它们对于开发应用软件的程序员来说是手段而不是目的。但是对于使用软件(比如Excel等办公软件)的工人来说,软件及其背后的编程工具都是固定资本的一部分。