今天和学长聊到编程语言的问题,他说编程语言只是一个工具,不必太局限于一种,数据结构和算法才是核心。
作为一名菜鸟,我想说一下菜鸟的观点。我认为,“编程语言只是一个工具”,这句话是有前提的,那就是真的精通一门或一门以上的语言,能力已经达到了一定的级别,这时,语言已经无法成为限制了。
首先从工具这一点说起,因为不是专业的,解释会有偏差。我个人认为工具是完成某件事情的辅助,比如说我们出门要坐交通工具,但是没有交通工具单纯地走路也一样可以到达目的地。再比如说想和美国人交流要说英语,但是不会英语用肢体语言仍然可以沟通。可是,当编程没有了编程语言要怎么进行?陈列数据结构,想着算法,就能跑出一个程序?的确是有个公式为“程序=数据结构+算法”,但我认为这只是突出数据结构和算法的重要性,就像是精神总会被视为高境界一样。相对的,编程语言更像是物质基础。我无法想象连编程语言都不精通的人会写出高质量的代码。现在的我对于c语言顶多算是熟悉,我在写代码的时候总是小心翼翼,担心什么时候发生了内存错误,程序dump,因为我对c语言了解的远远不够。就算是我了解数据结构,但这并不能保证我不会调用一个非法指针。
接着还是从工具这一点说起,为什么说大牛们可以说编程语言只是一个工具。虽然这一段是我自己推想出来的,但我认为还是符合情理的。他们已经精通了一门或一门以上的语言,形成了自己的模式,知道在哪里该用什么,知道在哪里该注意什么,他们对这些语言了解的就像自己儿子一样,甚至都可以自己造一个儿子出来。对他们来说,语言已经不是需要注意的东西了,更高层次的才是追求。想用什么语言分分钟就能搞定,因为这些都太熟悉了,太相似了。只要设计好程序,什么语言都能来实现。他们有资本说“编程语言只是一个工具”。
总之,我认为,编程语言好比物质,数据结构和算法好比精神。没有物质基础,还谈什么精神层次。那些打着“编程语言只是一个工具”的幌子,什么都学却什么都不精的人实在是太愚蠢了。因为我曾经就是其中愚蠢的一个,又看c又看java又看python又看shell,还学了html和css,到头来什么都能写一点,什么都写的很烂,根本经不起几k的考验。有的时候确实应该认真思考一下,别人云亦云,把别人那一套也用在自己身上。说句不好听的“也不撒泼尿照照自己是啥样”。
再写下去就要做自我检讨了,希望同是菜鸟的伙伴们能静下心来思考一下,“编程语言只是一个工具,不必太执着”到底是不适合我们。