华山论剑之编程语言

风云再起

有人的地方,就有江湖,有码农的地方,那里就有编程语言的分争。

二十年前,中国90%的程序员=写C语言的人。编程语言三分天下。
而现在,井喷一般出现了300种编程语言。主流圈子里有一个鄙视链的。科普BSL的意思:具体是无非是看英超的瞧不起看德甲的,看德甲的看不起看意甲的,看意甲的当然受不了看中超的,也许他们都看不起中超。
所以,编程语言中搞与机器语言关系近的就看不起底层的,底层就看不起表示层的,他们也有共同点,那就是看不起用HTML开发的。
有人说“Java天下第一”就有人跳出来“PHP是最好的语言,不接受反驳!”
江湖险恶环生,你看不起kotlin吧,可是全面兼容了java这个靠山,扶摇直上三千里。
Java帝国在Web编程领域受到了PHP, Python, Ruby 持续攻击, 被搞的灰头土脸, 但是帝国的基因和运气实在是好, 竟然又搭上了手机开发和大数据快班车, 成功开辟了新战场。

C语言显然沉寂很久了,它的“徒弟”们在圈里横行霸道。
尤其是C++,python,js,java,php。割据兵器谱,叱诧TIOBE。
注:TIOBE是一种开发语言排行榜,“兵器谱”会定期更新。类似于福布斯一样。武林大会盟主之排位实在是行业的风向标。

高徒列传

如果说自古功夫出少林,那么编程语言出于C。

看过《黑客与画家》想到,如果从绘画角度来论编程语言:
C,是用点线面,黑白灰的造型能力,代表作都是素描或中国画.工具包括铅笔(笔),橡皮(墨),白纸(宣纸),简单吧.
C++,是水彩图,你可以用大小不一的毛笔,和N种颜料的调色板了.
java和c#等后续语言,让这里创作变的多元化了,油画,版画,工艺画,工具则变的有了更多种。
python的话,就打开新时代的艺术创作了,当今天的漫画家和插画家,全面应用数位板,压感笔,配合photoshop,批量引入各种素材资源。

→远去的神话–C++

学完C++的人,很少说自己精通
网友A:“吃完自己收拾的是C++程序员,留在桌子上等别人收拾的是Java程序员。”

越早的语言,对内存的使用越要严格.
举例来说,越往古代,礼法也越多.
平辈,长辈之间说话,称谓和废话很多.
会交际的人,一定说的废话是最多的.因为,交际是起于废话的.
“您吃了”,”天气不错”,”最近工作顺利吗?”
可是,这些话就像是c/C++里的,free,析构函数,*pch_XXX=NULL;或空语句等.
在编译器面前,少了如上的这些”废话”,系统就像严厉的长辈(相当于你的太爷在世),让你吃不了兜着走.
做个”懂礼貌”的程序员,会让你写的代码更安全.

→闲话python

人生苦短,我用python

足见coder对它的喜爱,现在玩点什么高大上的都需要这个“神奇胶水”。这条蟒蛇伏在系统中等着你的招呼。
他已经观察了系统很久,也观察了你很久。你准备好粮食和水(第三方模块的安装),然后,启动它,让他出洞或入地掘金或飞上九宵。python没有复杂的“礼貌”和喜欢挑细节毛病的编译器。
王朔说:

第一个人说的,叫“知识分子”。第二个,第三个,还有不知道隔了多少代隔了多少辈,俗称“八杆子打不着的”,都叫“知道分子”。

中国春秋时期的诸子百家,早已哲学过了,做人做事,出世入世。中国一部分孔子门生,一部分老子影响。自然科学发展到今天,奇点邻近,突破太难。
程序员们,扪心自问,你知道了些什么?用android开发app,用框架开发应用。你知道的是什么,只是一些工具和名词。又有多了解android的底层和框架的内部组织?又或者说,你是否有必要去知道?
软件开发中算法更是,一将功成万古枯。所以,事实上留给你的区域很有限的,可能有人认为我比较消极,但发现比发明越发重要,那么坐上python,让你随时引据经典,前人或者牛人的知识总结打包放在你面前自助pick。

→java帝国

说它不好,会被吐沫淹死。
是造生态的专家,短板很少,简直是无所不能。
排行榜几乎没跌出过前五,大厂喜欢,大牛们天天用。

本人读书时,专业课程的最高分就是java,那时做Web就是用JSP,封装就是EJB。做企业应用方向就J2EE,移动方向J2ME。
而现在你如果列java的应用框架,可以有一大箩筐。
各招聘网站上,铺天盖地的关键字与java有关。

后浪的诞生–golang

不管如何,有一款打破BSL的,把链变成环的那就是golang。
听过新闻说,golang打算用go写编译器,即“排除掉C的代码”也称为自举。而且有很大的进展。
这让C很不舒服,的确有些“欺师灭祖”之嫌。这也是我的原始想法。
golang在见过林林总总的或高级/低级,或强类型/弱类型,或表示层/后台层,或编译的/解释的的语言后出生了,老爹是google,吸引众家之长为了是取代C++。辅佐大臣是docker,以太坊。
任何的新生语言如果没有以下的特征,就没有生命力,甚至相当于直接流产:(不讨论小语种,G=golang)

  • 开源
  • 拥有GC(C的法律允许它的臣民直接操作内存,执行效率极高,但是又对内存分配回收不管不顾,全部扔给子民们去处理。人生苦短,别浪费岁月在回收内存垃圾上了)
  • unicode编码支持(G默认是UTF-8)
  • 一招鲜(如果非要让G突出一点,那么绝对是为“并发”而生)
  • 拥抱互联网以及融入现有的生态(如果互联网的安全是“地气儿”那么G可以接上,君不见,玩云的公司也都玩G)

以上几点G做的相当好,再一起简单吐槽一圈“前浪”吧:
吸收着python语法特性的营养和解释性运行的特技。python说自己性能高,G就笑了!
见过java的繁重JVM和编译器,G就有了GC和不依赖三方的开源编译器,别忘记java的编译器还在oracle的手里。
C++哈,你终于来了,python可以笑你没有语法糖,java可以笑你没有手机和移动互联网,而G不说别的,你听过协程吗?
这时台下面举手的还有一大波儿想举手发言,什么js,php……,enough!今天的发布会就到这里。

→与C互访

简单就是美

为此G不屑于C++的花式包装。让全世界的G代码,看起来都是自己写的。
就目前来讲,调用C的最简单方案绝对是G。这便是C的基因。

原理:https://www.sohu.com/a/306764682_100111840
编译的时候会在PATH中寻找gcc,这也说明G事实上可以嵌入汇编语言

G调用C实战:

→敌我不分还是反朴归真

好吧,骂声之后,冷静下来。另一个维度升起。
近十多年,从未看过在一种“徒弟”语言中那么的尊重C这位“老师”。
所以,PHP,python,java等跳出来攻击G时,是一种狭隘的自我保护。
G才是那个能让师傅荣光焕发的,误解它的原因,可能是他太过出色,光环已然超载了老师。
他更适应这个时代,是未来一段时间内开发语言的“新宠”。