所有的编程技术都会成为历史

大四的时候,我用当时最新的 ASP.NET 技术给我叔写了一个服装制衣厂管理软件,这个软件用了差不多 10 年,中间几乎没有维护过,到现在还在工作。前几天突然联系我说,这个软件能不能迁移到 Win7 上使用(之前是在 XP 上),我想了想,肯定没问题啊,即使不行,在 Win7 里跑个 XP 的虚拟机也行。

最后,我还是给 ASP.NET 和 IIS 跪了,出各种莫名其妙的错误,从出错的内容里根本看不出任何可追踪的信息。 一个工作了近 10 年的系统,中间迁移重装过几次,工作的很好的系统,突然告诉我一个莫名其妙的错误,我猜八成是 .NET 或 IIS 的 Bug,关于 ASP.NET 的技术我已经忘光了,而且我再也不想在 .NET 上浪费光阴了。

于是我想,当时看来挺不错的技术,几年后,或者十年后,会变成怎样。

比如,著名的后端即服务(baas)的框架 Parse 在 2013 年时被 Facebook 收购。前不久,在 2016 年 1 月,Facebook 因自身业务需求, 宣布将于 2017 年 1 月 28 日正式关闭 Parse 服务。

那些本以为使用了大公司服务就可以高枕无忧的开发者,又要开始忙碌起来,捣鼓起怎么迁移的事情,而且可以想象,有不少开发者使用 Parse 开发的 App 已经运行几年,本来可以忘记这事了,突然被强制要求回去维护,代价可不小。

如今,多如牛毛的编程语言,各式各样玲琅满目的编程框架,常常让初学者困惑。「我该学什么编程语言?」「这个技术会不会过时?」这样的问题常常困惑着初学者。

我的答案是,所有编程技术都会成为历史。没有人能够预知未来的趋势,我们只能根据自身情况做出一个相对好的选择。我也走过不少弯路,在没必要的技术上花费了很多时间。

第一个让我入门的编程语言是 QBasic,在我读初二的时候。它让我明白了原来我可以通过写代码控制计算机执行一些操作和运算。为什么会选 QB?当时我还小,连计算机为何物都不清楚,由我们学校的老师硬塞过来。原因只有一个:当时的计算机竞赛是用 QB 的。

当时我被屏幕上跳动的字符所吸引,可是当时学习资源非常匮乏,在我们的小县城连一本 QBasic 教程也很难找到。学校的编程小组纯粹是为了应付竞赛,而我对能否通过编程做出有意思的东西更感兴趣。后来编程竞赛变成了 Pascal,于是又学了 Pascal。

在盗版光盘店里,老板的一句话让我开始学习 Visual Basic,这也是我的第一次主动选择。因为会 QB,理解起 VB 会容易很多。而且,使用 VB 可以做出各种图形界面的软件。我所有关于 VB 的学习资料都来自于一本厚厚的 Visual Basic 编程宝典。

上大学后,因为选的土木工程专业,唯一的编程课程是 Fortran。当我意识到我可以比边上同学花更少时间理解和上手 Fortran,我想我是不是应该在编程方面多下点功夫,而不是继续读着不喜欢的专业混到毕业。于是我重新拾起了 VB,报考了计算机二级 VB,非常轻松的通过了。

我不断意识到,我可能更适合编程。由于当时上大学,网络也普及了,可以在网络上获取一些学习资料,同时学校图书馆里也有不少关于编程的书,我开始接触到一些新的东西。当时使用 ASP 做网页的技术很火,当我加入学校的一个编程组织时,ASP.NET 开始炒起来,于是我跟风开始学 ASP.NET。

而我当时最熟的是 VB,所以看 C# 很不习惯,特别不理解为什么代码里需要那么多花括号。于是我在开始的相对长的一段时间里,我是使用 VB.NET 来进行 .NET 开发的。当时的我并不理解 VB 和 C# 的区别,觉得既然微软发明了这两种语言,选择自己喜欢的就好了。后来才发现身边的朋友全在用 C#,而我成了一个异类。每次和他们沟通都要在脑海里进行编程语言的转换。终于有一天我受不了了,也学起了 C#。从此 VB 再没有用过了。

找工作时好多公司都是招 C++ 程序员,而我又不太会,于是找了一份可以使用 C# 的工作。工作后,才发现自己和周围科班出身的同事的差距。于是开始补各种基础知识:计算机原理、数据结构、算法、C/C++ 语言。为了验证学习的效果,我报考并通过了 08 年软件设计师的考试。

后来和同事沟通时,第一次听说了 Python 这门语言,还有 Ruby On Rails。在这两者中我选择了学习 Python,然后一发不可收拾的爱上了这门语言。

而关于微软的技术,除了 .NET 3.0 刚出来的时候关注过一阵,之后出的各种:WCF,WPF,Silverlight…… 等技术时,我只是在一边看着,成功的闪避了,没有在上面浪费过时间。

后来做游戏开发的时候,已经是专职 C++ 和 Lua 程序员了。之后在业余时间,开始捣鼓起 Go 语言。

对了,关于 Java,我从未看过任何一本相关的书,都是按照写 C# 的思维来写 Java,除非老板拿枪指着,我也不会拿 Java 去写代码。 当然,写 Android 时会被迫使用 Java。

目前前端很火,我却不太感冒,各种前端框架停留在能简单使用的状态。Javascript 依葫芦画瓢还是可以的。

我当时花了不少时间研究和使用,到现在几乎被淘汰的技术还有 Google 的 Google App Engine。如果当时我把学 GAE 的时间拿去学 Ruby 该有多好啊。

总结一下我正统的学习编程语言的历程:

QB -> Pascal -> VB -> C# -> C/C++ -> Python -> Lua -> Go

前三个我已经忘的一干二净,但是在当时的情景下,对我的帮助和影响还是巨大的。

当然,我还在继续前进。下一个编程语言,我准备学习 Swift,纯粹为了好玩,因为「所有的编程技术都会成为历史」,如果一门编程语言能够给你编程语言之外的启发,也就足够了!

微信扫一扫交流

作者:CoderZh
微信关注:hacker-thinking (一个程序员的思考)
本文出处:https://blog.coderzh.com/2016/04/05/programming-languages/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。