首页 > 代码库 > 技术更新如此快的情况下,给程序员的一点建议

技术更新如此快的情况下,给程序员的一点建议

昨天老婆说,你永远不知道未来是什么样子,儿子将来的用的技术,与现在的完全是不同的。


这里我还真有点要说的,其实我是真的什么都没教儿子——有点冤。

我只想教他如何吸烟,就我本人来说,因为五岁吸过一根烟,所以才产生了一生的免疫。想抽就抽,不想抽就不抽。

另外,也想教他玩几个电子游戏,因为小时候接触,都会产生一生免疫。


当然,这些直接就被老婆否了。~~,想起有个医生发明了一个论点:吃鼻咖,能加强免疫。他首先想到拿他女儿做实验,你猜怎么着?当然是被他领导否了。

---------------------------------------------------

至于技术,不会教儿子,最好不要当程序员。


不过,话说回来,如果将来他真是什么也不会,就根我一样,还得当程序员的话,我还是有几句要说的。

特别是老婆说的,你不知道将来是什么样子。


这个,我只能说部分认同。

---------------------------------------------------

今天我们就来讨论一下,有什么有什么技术,不会随着时间的推进而改变的?

---------------------------------------------------

答案是非常肯定的。

比如数学和物理这样的基础学科,当然,这两种也在飞速前进,但只要是学的,就不会失效——这点可不同。

比如数学的复变函数,雅各比矩阵,等等吧,都是我们目前各行的基础。


但这个,没有什么现实意义。因为人类社会,能养得起的真正的基础科学家,是有数的——名额有限。


作为一个普通人,什么技术,应当来学习一下,并且能长久保值呢?


这样吧,我们反过来问,近几十年,有没有什么技术层面的东西,没有进步呢?我们是说技术啊,不是社会。社会从来就没变过。


对于程序员来说,有。


首当其冲,就是语言学


有人说,不对啊,翻译机相关的理论,正在不断前进啊。

我不否认,但如果你研究过语言学,就知道,的确是从乔姆斯基写了他那天才的论文《语法结构》后,的确是再也没前进一步。

目前的进步,来自于统计学和计算机运算速度的提高。但只要是基础理论没有突破,就无法突破上限。


由于语言学没有进步,我们计算机语言学,就没有半点进步。

因为计算机是不能理解模糊语言的,你不能把统计语言技术,用于计算机指令。

实际上,我们目前用到的所有的计算机语言,只用到了《语法结构》里,最简单的模型。

《语法结构》是1950s中后期的事情。见我前面写的关于巴斯克这个幸运的人故事。


我们算算,50多年了,没有进步。

这意味着,乔姆斯基还是牛B烘烘地满世界晃。这家伙被称为20世界十大伟大科学家之一,而且是唯一活着的(是不是死了),而且可能是最被低估的。

没他你想想吧,今天的世界是什么样子。今天我们用C语言,好象是理所当然的,但乔姆斯基那个年代,人们认为,人类无法理解自己的语言。哪怕是一点点也不能。

但乔姆斯基说,是理解不了,但至少能理解一点。


这一点就如此强大。


所以说,程序员们,你要想学点真的不会落伍的技术,非语言是一个可行的选择。


等等,跑题了,语言学的书,我也看了一些,很烦的。而且学了也没得大用。有一点,还记得的,就是语言是以V为中心,也就是以动词为中心,这一点,如果你还不知道,今天你知道了,知道学英语你要怎么学了吧?


我们回到现实,说点现实的。

退而求其次,为了省几个脑细胞,我们可以学习一下编译器。

后面,我想写一点与编译器相关的话题——从实用的角度。


编译器、数据库、操作系统,被并称为三大系统,是计算机世界的三大基础。他们是共同被发现、定义,共同进步的。

当然,严格意义上,真正的操作系统晚于编译器。真正的计算机语言,也是在编译器发明之后,在乔姆斯基之后。见巴斯克有故事。


这三大系统,各有特点,比如操作系统,最困难的就是调度冲突问题,为解决CPU硬死锁,直到一个科学家找到一个方法,见《现代操作系统》现在我想不起来了。

数据库,也极为复杂,如分块、寻址(因为数据库是外存的随机存取系统)。当然,数据库的SQL语言,也离不开编译器的啊。


****************************************************

所以说,有兴趣,学习一些编译器相关的知识,永远也不会用不着。因为我们人类的总智慧加在一起,养不起多少种真正的编译器。

我是说真正的编译器。语多编译器是基于C语言来编写的。算不上真正的编译器。

****************************************************

目前互联网时代,已进入泡沫时代,所以,有许多想法,但没有一个是现实成立的人们,建议还是回头学点技术吧。

学习编译器,肯定是没错的。

***************************************************

就这一点,我敢反驳我老婆,再过至少30年,编译器的相关技术不会落伍。而且,只需要学习C和C++以及object-C 的编译器就可以了。object-C是C语言的一种应用,是在C的静态内核上,加入了动态语言。也就是说object-C的解析器,分了两层,一层与硬件相关,一层需要与应用程序一起发布,这以后我们来分析吧。

C语言编译器,有一些特殊概念。因为很多历史原因吧。但总之,你学习C语言编译器就对了。

-----------------------------------------------------------

再退而求其次。

编译器是很好,但太TM困难了。记得一个sizeof,我写的代码,足足有至少三年才算是基本对了。别提了。以后我想写写这个东西。

而且,我是可以供用微软的编译器来校验的情况下。所以,可以想象,最早写编译器的人,多么困难?

就学习语言吧。


比如object-C,70年代产生的东西,直到现在这不是还在用吗?更不要说C语言了。

再如操作系统,UNIX,也是70年代的,iOS内核就是BSD Unix,学学这些东西,肯定不会吃亏。

数据库就不用多说了。它们也是70年代以前就有了~


再如人机界面,其实基础理论,没有什么太大改变。的确iPhone算是一次革命。当然,以前也都是两个小偷从施乐偷来的那些东西。

而google所有的技术,大多与数学,如贝叶斯,统计学相关。

-------------------------------------------------------------------------


这么来看,说技术日新月异,也对也不对。

怎么老是感觉还是那些东西呢?


当然,系统论目前是真正在高速发展的一个学科。虽然这东西没什么神秘,但没有计算机这种工具之前,谈系统是扯蛋成分居多——你演算的速度远不及现实系统演进的速度,搞什么呢?


现在可不同了。什么数字地球,模拟人体(模拟人吃了药以后的药理变化),等等吧,都在进行中。

这的确是未来一个可以考虑的方向。






技术更新如此快的情况下,给程序员的一点建议