我和我精通的C语言

April 17, 2018

前段时间,腾讯面试,自己写了篇简历,让同学帮忙看看,

  • 精通的编程语言最好改成熟练掌握,一般没有人会说精通的

  • 好的,要低调

于是,我修改了自己简历上那两个字元。

但是,我改变不了自己就是精通的现实。


从第一次接触编程语言开始,我就一直在寻找,寻找一个适合我的,能够让我写出优秀程序的语言。

T语言作为我接触的第一个编程语言,可以说是有喜也有悲。我之所以学习它,唯一的原因,是因为,我只知道它的存在。我之所以把它深入的学习下去,唯一的原因,是因为,它是中文的。

但是,T语言更多的时候,是让我悲伤。编写效率低下,代码侦错困难,执行效率低下,没有完整的参考手册,以及还要忍受魔兽争霸引擎的种种限制和种种bug。


我大学以后,接触了C。

在那之后,我就再也没有放弃他的打算。


说C语言不好,说C语言没有越界检查的人,我只能说,C不适合你。

说C语言把所有代码的权力都交给了程序员,让代码容易出错。这种人,我只能说,C语言并不适合他们。

说C语言是面向过程的,不是面向对象的,扩展性差。这种人我只能说,他们没有学过C。


就如朋友说的一样,中国的程序员,会掉包的满大街都是。他们拿到一个课题,想的第一件事情不是:自己有没有能力写出来,而是:网上有没有别人封装好的包。

我说真话,只会掉包,这样的工作,是程序员该做的事情吗?

不,做这些工作的,是码农。

随随便便一个上过大专,经过短期培训的人,都可以答到这样的水平。没有思想的掉包,麻木的写着别人给的接口。

这样的工作,不是我应该做的。


从一开始,我给自己的定位就不同。我不是要在别人秩序的基础上搭建自己的江山,而是要创建一个完全属于自己的帝国。

试想,当年微软在写Win3.0的时候,有包给他调用吗?有代码给他参考吗?甚至,有可视化的IDE吗?

没有。

但是,微软写出来了,微软写出了自己的帝国。

在那个运行内存是1MB的年代,在那个连C++的标准都还没有出现的年代。微软写出了被世界认可的代码。

虽然业界常言Windows系统安全性差。但是,安全性不会是当年Windows的开发重点。


腾讯面试的时候,HR问了我一个问题。

你学习C语言如此精通,可是,却没有太多需要C语言程序员的公司,你不觉的自己很尴尬吗?

是的,我的导师也说过,我这是畸形发展,我查过的在南京的公司,也没有需要C语言程序员的地方。但是,我当时是这样子回答的:

C语言,虽然会被历史淡忘,但是绝对不会被历史遗忘和淘汰。而在多种新兴语言中,C语言有自己独有的特色,有自己不论其他编程语言所不能替代的地方。不管过去多少年,不过未来世界如何发展,绝对会有需要C语言程序员的地方。

而,只有精通C语言之人,才会是真正千里马。


大学这几年,学习了编程语言,精通了一门编程语言后,感觉自己已经没有继续学习其他语言的欲望。

因为,只要给我一个说明文档,我可以用C语言写出其他的语言的编译器。

我不知道这是不是写代码的最高境界,但我知道,自己绝对是炉火纯青了。


当年大一,要求自己把代码写出来。

后来大二,希望自己把代码写工整。

现在大三,自己又该去追求甚么呢?


C语言我可以很肯定地说,自己掌握了90%以上的编程技巧,自己能够写出优秀的,可以和微软程序员所写的代码匹敌的代码。

当写代码到某种境界,就会发现,阻止自己继续前进的,不是编程语言,而是一开始对自己所写的程序的认知。

我也慢慢的开始学会了对程序进行规划。


现在的自己,不会像大一,害怕调用某个库函式出现问题而不敢使用,害怕自己的代码中存在缺陷而不能实现功能,害怕自己写的某个函式中存在bug而不敢把程序写大,害怕link时出现错误而不敢写多文件工程。

我已经知道了大多数库函式中存在的问题,也知道程序怎样写可以减少bug,更知道C语言编译器那些古古怪怪的毛病。


现在的自己,要在精通C语言的基础上学习软体的架构。


我,不是程序员,是软体工程师。

我会和我精通的C语言一起,架构出自己的帝国。