几个月前,受到美国实体名单的影响,哈尔滨工业大学、哈尔滨工程大学购买的“工科神器”MATLAB软件收到被取消激活的通知,这件事情迅速发酵并登上热搜,引发学术界,工商界,以及公众广泛讨论。很快,美国商务部宣布新增 33 家中国公司及机构列入“实体清单”,除了奇虎360、云从科技、烽火科技等企业外,还包括中国公安部法医科学研究所等政府相关机构,以及哈尔滨工业大学和哈尔滨工程大学两所高校。至此,中国大陆共有 13 所高校被列入该实体清单,除上述两所外,还有:中国人民大学、北京航空航天大学、西安交通大学、西北工业大学、四川大学、电子科技大学、湖南大学、国防科技大学、同济大学、南昌大学、广东工业大学。 
这些高校将被美国《出口管理条例》限制出口、进口或转口,无法和美国进行任何商业交易,在获得美国科技方面面临新的限制。它们和去年被列入清单的华为、中兴等中国企业一样,和美国企业之间的进出口业务需要美国政府的批准,也就是所谓的“技术制裁”。迫于政府的压力,MATLAB 所属公司 MathWorks 被迫中止对这些国内高校的正版授权。
虽说能上这份清单的组织机构从侧面证明了其科研实力,但正所谓,工欲善其事必先利其器,如果没有强有力的基础软件支持,很多科研,原创工作的开展会受到很大限制,即使能做,效率也会大大降低。另外人才的培养,实践课程的安排上要进行重新梳理,否则学习中会面临无素材可用,无项目可学,论文不被国际主流接受的窘境。
MATLAB为什么被广泛使用而很难替代?MATLAB是矩阵实验室(Matrix Laboratory)的简称,由美国 MathWorks 公司出品,是一种高级技术计算语言和交互式环境集成软件,由 MATLAB 和 Simulink 两大部分组成,广泛应用于算法开发、数据可视化、数据分析、仿真建模以及数值计算,在工业制造、学术研究等领域具有近乎垄断的市场地位。大学读理工科专业的同学基本上都接触过这款软件。有分析人士指出,如果整个学校被禁用了正版 MATLAB,这意味着学校的人员再发表论文或者从事商业项目,其成果原则上就不应包含任何基于 MATLAB 的内容,这对国内相关企业和研究学者带来的影响不可忽视。
于是摆在中国高校面前只有几个选择,用其他开源软件或者盗版,亦或,最理想的情况是能用上国内完全自主开发的工具软件。其实不光是理工科领域的工具软件,还有众多工业化软件,如知名的AutoCAD,Photoshop等,甚至基础的Windows,Mac操作系统,手机上的ios,android系统,理论上讲,都有可能被用来实行技术封锁,这也是为什么政府现在大力推行国产替代,提倡自主研发的原因。虽然实际情况来说,考虑到商业公司在中国市场的长期利益,要所有美国软件公司实施技术封锁的可行性很小,但如果真的面临一些极端情况,我们或许会面临没有软件正版更新,无技术支持,甚至无法正常使用软件的情况,长期来看,能做到基础软件全面国产替代是万无一失的解决方案,虽然这也不是一朝一夕能完成的工作。
那么如果现在开始逐步自主开发一些基础软件,我们必然就要用到开发软件的语言:编程语言,目前市面上大部分的软件,网站,应用都是用C,C++,C#,Java,PHP,Python等主流编程语言开发完成的,但问题来了,这些编程语言会不会被美国政府列入技术封锁的列表,我们会不会根本无法使用这些编程语言自主开发软件?
任何一个国家政府都无法禁止人类使用编程语言
从目前综合的信息来看,美国政府理论上是可以针对部分美国公司有版权的编程语言颁布禁令,但可能效果甚微,因为很多编程语言从诞生之日起就不存在专利约束,任何人都可以学习,复制,并且使用它来创造。
经典的编程语言- C语言,确实是诞生于美国的Bell实验室,并实现了UNIX操作系统,但最终未通过专利的力量组织其他平台上C语言的实现和使用,未能阻止BSD和GNU的出现。后来从开源社区诞生的语言譬如Python, Ruby, PHP, Go等,也不设专利约束,供所有人使用。
简单说,开源的编程语言以及应用属于全世界,不属于包括美国在内的任何一个政府或商业组织,不光光是美国不可能禁止,其他国家也不能。一旦编程语言的语法结构,源代码公布,有用户下载,学习,使用,并在互联网上传播,那么它就像是泼出去的水,再也无法收回。
编程语言不是硬件,硬件数量是有限的,可以通过各种方法,渠道禁止,类似目前我们遇到的芯片制造问题,但语言,知识和方法是可以直接传播,复制,学习,更新的,无法通过权力直接限制。
当然,确实是有一些编程语言的应用是受到专利约束的,譬如Java语言在Oracle的手上,Oracle诉Google的android开发使用到Java已经拥有的工具接口而侵权,要求赔偿88亿美元就是一个相关的案例,不过此案的关键不是说Google不能用Java,而是需要基于Oracle复杂的许可协议。
这就相当于你教会了我踢足球以及足球比赛规则,但你无法远隔万里禁止我踢球一样,你能做的最多是我禁止参加一部分比赛,禁止我与你的直接技术交流。
所以,如果发生最极端的情况或者类似苏美对抗的新冷战,我们还是可以用这些开源的编程语言,在双方彻底撕破脸皮的情况下,甚至可以直接照抄成熟的产品代码,只是开发的相关产品可能无法合法进入美国市场或者国际市场而已。
至于编程中需要使用的编译器,根据目前GPL协议,我们可以通过合法使用开源协议来设计开发我们的自主架构,GPL协议并没有什么国家安全的特例之类的条款,只要保证不关闭其源代码,我们就可以随便用。即使现在封锁编译器,工程师也可以从之前的版本中开发出新的开源版本。
退一万步说,美国要全面禁止我们使用美国公司拥有版权的软件,且禁止我们合法授权使用部分编程语言,迫于无奈,我们可以应对的策略是:
1. 继续使用能运行的软件,直至我们找到其他免费开源软件,或使用已经成熟的编程语言开发出自己的软件;
2. 获得源代码的软件,可以学习并开发一套新版本的软件;
唯一的挑战,就是时间,一是软件开发需要相关人力和时间,二是需要上下游使用者配套使用,只有生态完善,软件才能持续改进,让更多人使用。
感谢开源的世界
美国不能在编程语言上封锁其他国家,分析下来有点像一句正确的废话。
但某个软件使用确实是可以被封锁的,前面我们也提到一种解决方案就是找到或者开发可替代的开源软件。
开源,(Open Source)全称为开放源代码开源软件最大的特点应该是开放,也就是任何人都可以得到软件源代码,加以修改学习,甚至重新发放,当然是在版权限制范围之内。
所有人都需要感谢这种理念:开源。而相反的理念则是闭源。
如果所有编程语言以及底层系统从开始就被一个国家政府控制,是一件很可怕的事情,这意味着全世界所有开发者,所有软件的使用者都直接或间接的被政治利益所牵制,这不仅可能被某些极端主义者利用,还会大大阻碍软硬件的创新换代。
如本文最开始提到的MATLAB遭到禁用事件,一些类似的开源软件开始受到关注,譬如SCILAB,Octave,以及Spyder。
开源的伟大在于让所有人都有机会享受到了软件带来的生产力提高以及新的生产关系。
关于开源最著名的故事:UNIX系统被发明后被广泛使用,但后来就开始收费并闭源,一位名叫RMS的大叔不认同,于是发起了名为GNU(GNU’s Not Unix!)的操作系统项目计划,起草了GPL协议,模仿Unix界面和使用方式,从头做一个开源的版本,自己做了编辑器和编译器,接下来全世界的工程师们在GNU计划下作了很多工作和项目,逐步完善这个额计划。然后一个叫Linus的同学用C语言开发了著名的Linux,并在发布Linux时候选择了GPL协议,后续大家发现Linux正好填补了GNU计划中最缺的系统内核部分,于是打包在一起发布叫GNU/Linux,后续念着念着就简称了Linux系统。我国自主开发的红旗Linux也是基于这个体系。而我们安卓手机上用的android系统,也是基于linux内核开发的。
说的通俗一点,如果一台用Linux计算机是一台汽车,那么Linux就是相当于传动杆,变速箱,传感器以及行车电脑,负责将发动机能量传送到轮胎上,并获取车辆运行状态的核心大脑,而GNU则相当于油门,刹车,方向盘,仪表等司机使用的工具。
RMS也曾呼吁学校只应使用自由软件,他认为学校具有社会使命,不应该教授非自由软件培育依赖性,尽管他对商业闭源软件厂商有个人敌意,但是他的担忧目前来看并非危言耸听。MATLAB被禁用事件,以及学生,企业高度依赖Windows系统,CAD等软件,让我们不得不持续付费的同时,还承受了其他风险。
更为关键的是,这些闭源软件拒绝了一些有编程天赋的工程师以及学生通过阅读源代码学习的机会,一旦闭源软件成为政治工具时,我们缺少相应知识的人才去开发自有的软件。
很多人认为开源就等于免费,其实并不是这样,开源最大的特点是开放,开源也是有版权的,用户在使用开源产品时,不但需表明产品来自开源软件和注明源代码编写者姓名,而且还应把所修改产品返回给开源软件,否则所修改产品就可视为侵权。现在,国内的盗版很泛滥,即便闭源的软件,都会被肆意盗版甚至篡改版权,开源软件就更别说了,篡改版权就是个查找替换的简单操作而已。版权意识的淡漠才是国内开源发展的最大障碍。
而且我们也并不是要求所有应用软件都开源,开源与商业化也不矛盾,用户完全可以根据开源的源代码,开发出属于自己的可商业化的软件,但同样你不能阻止别人与你竞争,这才是软件以及编程技术不断发展的健康环境。对于行业有杰出贡献的产品理应获得财务上丰厚的回报,这有点类似药品行业的研发,有专利保护期可以供研药公司获取利润以支持后续研发,但保护期过后可允许别家公司生产,以治疗更多之前支付不起相应成本的病人。
华为被曝自研编程语言
如果未来连C语言,以及最近热门的Phthon语言都被限制合法使用,我们还有办法吗?
近日,华为要自主研发编程语言的消息在网上出现,据微博博主@IT工程师 称,华为正在研发新的自主编程语言仓颉,领头人是南京大学的计算机科学与技术系博士生导师,冯新宇。
这件事情干尚未得到官方证实,不过这很有可能是华为还在初期秘密进行中的项目。或许是出于1月份中科院研究所推出“木兰”这一门基于Python实现的编程语言时用力过猛,发表了夸大宣传,即使华为在编译器与编程语言方面早有动向,华为在这块的表态可能也会格外谨慎。
2019年8月31日,华为在开源平台上放出了方舟编译器的源代码,这是华为首个完全自主研发的编译器平台。华为做这些方面的研究,也不完全是出自怕被封的恐惧,而是基于通讯设备的性能需求。
知乎@养猫的哈士奇 表示,去年一次交流中,华为消费者BG软件部的总裁王成录博士,提到了华为为什么要搞这个实验室、做编译器这些东西。
“简单来说,就是华为很早以前就发现,在核心网设备上自己编译,可以大大提高性能(通信设备也是有性能要求的),后来就开始有小规模的团队来做编译。也就是说,在做方舟编译器之前,华为已经做了很多年编译的相关工作了。在做智能手机的过程中,华为想把手机做到像iPhone一样流畅,但遇到很多困难,其中很重要的一点就是Android的虚拟机机制。所以他们做了一个很重要的决定——(研发)方舟编译器,事实上这不仅是针对手机平台、还包括通信设备等,将华为所有的编译工作都统一起来,全面提升效能。”
所以,对于华为来说,自研编程语言这一步是迟早要迈出的。
结尾
软件技术的发展日新月异,行业发展凝聚了几十年全球无数工程师的智慧晶华,与芯片等硬件相比,同样是人类文明王冠上的明珠。
随着自动化,信息技术,人工智能的应用和普及,编程语言以及相关软件工程知识是改变命运的梯子,是缩小贫富差距的工具,是人类文明发展的驱动力,任何人都不能把它关入自己的盒子控制起来。
我们期待更多中国企业和专业人士能逐步拥有底层软件系统开发的话语权,甚至研发出供全世界使用的编程语言和应用软件。
最后皮一下,本文不是编程语言课程软文。
参考资料:
高校应拥抱开源,哈工大等国内高校被禁用 MATLAB
https://www.oschina.net/news/116379/matlab-ban-and-edu-schools
GNU 是什么,和 Linux 是什么关系?
https://www.zhihu.com/question/319783573/answer/656033035
华为被曝自研编程语言“仓颉”,南大教授冯新宇领衔
https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_8898628425540680962%22%7D&n_type=1&p_from=4
美国可以封杀编程语言吗?
https://www.zhihu.com/question/274105107
- END -
投稿及内容合作|[email protected]
广告及商务合作|[email protected]
点击“在看”,拥有相互成就的关系!
继续阅读
阅读原文