为什么C#排名和Python相差越来越大?

.NET都开源了,还是雷声大雨点小,C#排名仍然不变,和Python的距离越来越大

范狂夫

谢(知乎人工智障算法于首页今日头条位置醒目应景)推荐(「真理标准大讨论」相关话题)。

这其中蕴涵着充沛的政治和意识形态内容并引领了激烈的政治和意识形态斗争新动向。

之前回答过不少类似话题,今天早上还有一个,差不多都「政治敏感」「亦当删去」了也。

本问题之下其它回答当中充沛着真知灼见,也夹杂着歪理邪说,境内深入揭批工作以及政治和意识形态上的定性结论以新闻联播念诵的人民日报发表的新华社通稿为准。

就从技术角度判断,目前最流行的「动态语言」是「ECMAScript」,目前已经可以运用多种范式实践于多种场景,甚至包括但不限于以「Node.js」为典型的「后端」,对于这一点「业内」应该达成共识,无论「排名」如何。

今天早上还说,「ECMA」砥砺奋进二十多年,看到「JavaScript with Class」出来之后,老迈年高的不入流码农立刻「思路广欢乐多」的联想到「C with Class」,也就是后来唤作「C++」的如今已经被与时俱进的童年才俊当作反面典型于知乎首页推荐中反复嘲笑的那个语言。

也就是说,以美帝灯塔国一票「大手会社」为主力的信息技术「业界」积累三十多年的充沛伎俩,估计都会在「ECMAScript」上面再耍一遍,是否重走弯路「吃二茬苦受二茬罪」还是「摸着C++过河」,都会在今后一段时间内于知乎首页推荐当中出现的「真理标准大讨论」反映出来。

至于若干回答中坚持使用「ECMAScript」这种字眼,是为了避免歧义。毕竟「标准」是万恶的旧大陆之「ECMA」制定的,而「实践」则是百善の新世界当中以美帝灯塔国一票「大手会社」为主力的信息技术「业界」进行的。那么「真理」到底在哪边,是否「掌握在少数人手里」导致跨海隔空对骂,还是在NATO (No Action, Talking Only)框架内坚持「以一个声音说话」,也是个关乎当前错综复杂的国际局势的话题,让我们拭目以待。

众所周知的「JavaScript™」,在先射箭后画靶子的事后诸葛亮看来,是「ECMAScript」的一种「实践」;而其它「实践」也有,比方说微软的「JScript」,已经与时俱进为「JScript.Net」了也,运行时当中自带「jsc.exe」,和编译C#的「csc.exe」并列。

到了这里,肯定会有「不明真相」的围观群众开始了解「真相」了,虽然没有「实践」。关键不在于「纯文本风格」(或曰「源代码」),而在于运行环境。所以其它回答当中已经提到了相关真知灼见:把依赖「.Net」的各语种「分而治之」进行「捅妓」并不合适。

必须同时指出,可以在JVM上面运行的高级语言也有很多,只不过其中Java™是中央钦定的,其它语种可以忽略不计。

先引用俩「定律」:

Any application that can be written in JavaScript, will eventually be written in JavaScript.(Atwood’s law, 2007)

Any application that can be compiled to WebAssembly, will be compiled to WebAssembly eventually.(Ending’s law, 2016)

那么有志于「互联网」行业的童年才俊,现在知道「方向」了么?

也就是说,今后继续与时俱进的「前端」从业者已经不限于高举紧跟语言「排名」了,而与时俱进到现在为止就开始大放厥词的童年才俊例外。

微软对于「ECMAScript」的「实践」除了老迈年高的「JScript」之外,还有新鲜出炉的「TypeScript」,是「严格超集」。按照其设计者的一贯表现,估计会把「.Net」全套伎俩都移植过去,再依托「WebAssembly」以实现当年先后使用「ActiveX」「SilverLight」与「Java™ Applet」「Flash」争夺「浏览器寄生虫」尊号之竞价「排名」的壮志未酬。不惮以最大的恶意揣测,将「.Net Core」开源并跨平台,是这个「一张蓝图绘到底」之宏大叙事项目的关键一环。

所以,最起码C#码农短期内不用担心曾经的「智力投资」化作「沉没成本」从而被中央钦定「脱离时代」成为「历史唯物主义の尘埃」兼「螳臂挡车の跳梁小丑」从而被童年才俊以大拇指搓手机形式驾驶的「历史の五对负重轮」碾为齑粉的悲惨下场了也。

看到「严格超集」这个字眼,顺便提一句今天早上说过的「Objective-C」,是「C」的「严格超集」,仅增加了「消息传递机制」用于模拟「面向对象」范式。从这个角度看,称其为「C with Class」的另外一种「实践」也不过分。

好啦,那么以史为鉴,「C++」能干的,理论上「Objective-C」都能干,就看把持了授权协议的苹果是不是愿意干了。好比那把持了「Java™」的「伪装成信息技术企业的律师事务所」一样,向着「伪装成信息技术企业的贴牌制造厂」戴尔看齐。

随便用龟头思考一下也能给出「Objective-C」应用的若干场景,就比方说若要与曾经坚持垄断运行环境的同一条路线的微软拼「跨平台」,可以考虑重写「Qt」甚至「KDE」。而目前所有主流操作系统的底层均为C语言接口,哪怕是Linux下的Gnome,都可以在「严格超集」的掩护下包装为「类库」,甚至Windows也可以,好比那曾经壮志未酬的Borland的「OWL」一样。

再比方说我比较关注的场景,目前使用的SageMath软件包依赖Python(回答写到这里终于切题了)包装一堆第三方库,其它「Python科学计算」也一样。这些第三方库差不多都是用C写的,那么「Objective-C」又可以「拿来主义」了也。而「前端」还得高举紧跟「ECMAScript」,试着用「Objective-C」写「WebAssembly」吧。

先写这么多吧。

最后强调,「不忘初心牢记使命」,关注「信息技术」是因为「恶补数学」会用到,而「恶补数学」是为了「设定集」,而「设定集」是为了「政治和意识形态斗争」……所以绕了一圈回来,还是「实践」文艺理论「激化矛盾制造冲突增加剧情跌宕起伏程度」,看热闹的不嫌事大,就怕打不起来,「唯恐天下不乱」,哪怕是技术话题。

因此,我的回答之用意应该与在首页动辄推荐「真理标准大讨论」的知乎(布)中央不谋而合吖,为啥这么多「政治敏感」「亦当删去」呢?

2018.09.24