程序员之路

2019-02-11  本文已影响3人  半步江南

以前的我很好奇,到底如何才算一个程序员?在我的想象中,那是电影中不断敲击键盘的黑客才能配得上的称号,又或者是创造window系统的那些神人才能坦然接受的身份。当然偶尔见到程序员淡然的敲击键盘,同时,屏幕上的字符不断翻滚也让我觉得犹如魔法,虽然不知道他们在做什么,但是却佩服不已。
而后了解的越多,越发现,这世上没有魔法,屏幕上的字符疯狂翻滚,可能只是一个make指令,电影里黑客敲击键盘同样可能只是在调用脚本,因为我不相信在时间紧迫的几分钟之内,有人可以用汇编去写代码,这之后的编译与链接都需要时间,而且没有时间再调试,所以那上下翻飞的手指,只不过证明这个人打字飞快,准确率奇高。而这一点,所有人经过一个月的训练都能做到。window系统更没有什么神奇的,那是对硬件的调用加上复杂的的cpu时间控制分配的逻辑,加上好看的界面,如果真的要比,window的确没有linux那么简洁、好用,脱胎于freebsd的苹果系统,与linux同出与unix,算是亲戚,也是类似的原理。所以我已经知道会敲键盘的人,不一定是厉害程序员,那么多厉害的程序背后,堆砌着无数勤劳、乐于研究的普通程序员的汗水,而程序天才可能是打字奇慢的数学家,他们用论文提供了代码的逻辑,用思想指引着万千爱好者前行。
每一个愿意思考的人,都可以轻易的成为程序员。
若没有自己的思考,无论多少年的编程经验,都只是一个拼凑者,那是无数的模块与接口的拼装经验,那是对所有函数使用了如指掌的使用经验,犹如开车一般熟练,又对发动机的原理一无所知。
我之前以为懂TCP/IP的原理,只不过P2P提供的链接之自由却仍然是魔法的感觉,直到在脑海里把字节从内存中读取出来,通过网卡把这些字节转变为电信号,通过交换机与路由器不断的把信号广播出去,找到那个也在使用同样协议的终端,完成一个TCP/IP链接,随之展开通讯。说起来简单,不过这个过程中有字节序的调整,有对电信号转换的规则,有IP与MAC的寻址规则,甚至在TCP/IP这个协议的实现中都有些早期遗留的错误,如果不是兴趣,我也不知道如何敢去看这些东西,c语言的实现之繁琐,以现在python之类的角度看,简直就是灾难,但如果有时间,我宁愿用汇编去写东西,也不想去调用一个不知道如何实现的python库。前段时间写爬虫,用到python的urllib库,忍不住用了一晚上时间,把那些不知所云的urllib源码彻底研究一通,终于搞明白那些不知所云的opener和handler在干什么,这就是用库的代价,黑盒是难以忍受的。
一年多的时间,主动被动的学了多少种语言我不细细的想肯定数不过来,c、python、JavaScript、lisp、bashshell、go、ruby、intel汇编、AT&T汇编,HTML、css、SQL这种简单的加上各种框架如vue之类的就不仔细数了,前端的这点东西纷乱繁多让人厌烦,简单又不简单,复杂又不复杂,乱七八糟一堆。最后真的发现语言没什么可学的,c语言下面对应着汇编上面对应着python、javascript,只要用c实现的语言只在于规则的多少,想看总是能看明白,lisp是个另类,优美的不行,啥也干不了,但就是喜欢,至少做运算很好,为了用lisp干点有意义的事,顺便看了看java,因为想用clojure,跟我平时一样,一不小心又成了杂家。
说回来,最有意思的是画加法器,用电路使劲画,就能做加法,看着电路变成集成电路板一样。因为要做个程序员都是从我画出加法器开始的,所以一开始就对底层充满了求知欲,就像上面罗列的那些语言,如果真的写过汇编,自然对c很有感觉,如果尝试写过操作系统,一定对编译器链接器很有感情,有了这些再看那些脚本语言就算不想学,也差不多上来就能写。

上一篇 下一篇

猜你喜欢

热点阅读