在IT领域,谈论最多的可能就是程序。可以把整个领域比作一个“大锅饭”,每个程序员都想从中分得一杯羹。不过,程序可能真的不是那么好写的。
下面来谈谈一点个人感想。
如果要学写程序,最先接触的大部分是C语言这是毫无疑问的。C语言语法颇多,甚至有些令刚初学起来的人望而生畏——C语言怎么这么难呢?
其实学好一门程序设计语言,跟写好一段代码,差距是非常大的!并且,个人以为,写好一段代码,并不一定是只有这一门语言能写,当今凡是存在过的语言,几乎都能实现。关键的是,写代码跟学程序语言,真的没有什么必然联系!
我们知道,学计算机语言是为了把我们需要复杂的运算去交给计算机处理。因此,在此之前,我们就需要告诉计算机,我们给它“安排了什么工作”,这之间的传播媒介,就是计算机语言。
所以,说到底,语言只是起到媒介的作用
但是程序则不然。程序虽然是由语言构成,但是它只是利用语言这个工具,详细地命令计算机如何去计算,这与我们学的C语言语法截然不同。
程序=算法+数据结构,程序跟语言没有必然联系
写好程序,仿佛一场修行。跟做其它任何事情一样,都是不断学习,不断提高的一个过程。
个人推荐拿程序员和歌手做一个类比。歌手分很多类,同样,程序员也分很多种。不同类的歌手讲究不同的唱腔,鼻音,气息,肢体语言,还有隐含在歌词中的感情。不同的程序员讲究的则有不同的框架,数据结构,算法,还有写在一些代码行后面的注释。这些,我们都可以看做是一个叫做“内功”的东西。
一首歌,一百位歌手唱出来可能会有一百种感情。但是同样,一个功能的实现,一百个程序员写出来,也会有一百种写法。
我们能很容易的判断出这个歌手是否唱的不错,因为这可以通过听觉直接感受。同样,我们也能很容易判断这段程序是否写的不错,因为这也可以通过计算机的运算效率直接领会。
一首歌,我们可能会循环很多遍,会有那么一段时间,听不厌倦。
在程序员眼里,一个算法,可能会不断练习更多遍,甚至有的时候,旁观一切截然不知,几乎走火入魔。
这是程序的魅力,也是上天给我们程序员的恩赐。
其实,在这个世界上,只要用心,就能够体会到很多东西,你曾经从未经历过,你想一直这么经历下去,你会慨叹曾经自己渺小,你会惊讶世界万物的伟大与神奇。
如何走进程序的世界?说到这里,仿佛才是刚刚进入正题。
程序没有太多“奇淫巧技”,有的只是,好坏。抛开高深的算法和数据结构暂且不谈,假如你现在正刚刚好学完C语言,你想写一些程序。你可能会碰到“我知道怎么做但是似乎就是写的不对”这样的问题。
其实,写作亦是如此。每个人心中都会有故事,每个人都有因看了一些书经历过一些事而曾想过把心里的话写下来的经历。可是写过的人可能会有共鸣,我的心里明明感触很深,但写在纸上,却显得那么生涩,那么死板,丑的可能连自己都嫌弃。
这并不是自己缺少天赋,只是缺少练习的时间,缺少沉淀的过程。
写程序就是这样,写得多了,也许就会觉得非常舒畅痛快。但是如果卡在某一个地方,也许就会痛苦万分。因此,我想说的是,写程序,也是一场修行。沉浸在程序里面的痛苦开心,只有自己知道,只有志同道合的同伴队友知道,只有在这一行里面跟你有过相同经历的人知道。除此之外,你跟其他人说的天花乱坠,绝处逢生,恐怕,也生不出花来。
在目前的大学,信息类的专业学生,就算以后是从事软件行业的人,也极度缺乏写程序的修行。个人感觉,这种修行,能在一个人的表面自然而然地展现出来。而这种缺乏,除了跟人类生活节奏快很难静下心来的原因之外,还有很多表面镀金的“诱惑技术”。这些“诱惑技术”包括Java、HTML5、PHP、Python、大数据、云计算、人工智能、机器学习等等。
很多人在看似通过一两年辛苦学习换来的他们自以为掌握了这种前沿技术中沉迷,不能看通。
我们需要真正看通的是,要分得在IT界中的一碗羮,就需要重新认识,真正走进程序的世界。因为真正的程序,是数据结构和算法,不是这些只能红极一时的“诱惑技术”。
如今数据结构这门课在每一所大学的信息类专业中都会开,但真正学进去的我想恐怕并没有多少。就算清华北大也是如此。要知道,数据结构在程序中是必不可少的,但是由于代码开源,可以copy的原因,很多人就直接依赖于百度,渐渐地,忽视了对数据结构的学习和掌握。
再说算法,这是一个沉重的话题。要知道,纸上得来终觉浅,算法的能力不是一两次的看懂,一两个学期的学习,就能够掌握的。并且,较为可悲的是,在很多IT行业公司中,因为算法不常用,老板面试员工不看重,渐渐导致大学生在走入社会之前就对算法彻底忽略,过分去追逐“诱惑技术”。不得不说,这是一个较为悲哀的现状。
所以说到底,我们要走进程序的世界,就必须苦修行,修行什么?
修行数据结构,修行算法。这是程序员必不可少的“内功”。我们必须十分重视!