学习程序设计语言到底学的是什么?


经常在网上看到人们讨论语言的优劣,自然语言的各大门派之间口水,唾沫横飞。我并不是不赞成你们争论语言的优劣,只是觉得很多时候很多人争论得确实没有什么水平,这样给很多刚入门的或者还没有入门的计算机程序爱好者很多误导,而且这个包袱一般会在他们身上压很多年,有些人甚至一辈子都没有丢下这个包袱。这就造成的后果之严重几乎不敢想象。完全造成很多东西的片面的认识,自然学习的时候也是偏离轨道的。时光的宝贵我不解释,我想每个人都不希望将时间浪费在那些没有意义的事情上。今天我在此“胡乱造谣,希望这个谣言可以传播的很远很深,并且得到每一位听者的认同和思考”。

  

本来想长篇大论的。可是感觉写太多怕自己写着写着就不知道自己在写什么了。所以就决定直奔主题。我想当我把这些说完了,其他的疑问就自然不攻自破了。这就是我们的主题是:我们学语言学的是什么?我觉得我们学习任何一门语言应该学习这三种东西,一,语言的哲学。二,程序设计艺术。三,行业技术。广义上学习语言把握这三根命脉足以。其实还有侠义上的。暂时不说。下面我粗略的解释下。(下面的内容几乎没有举一个例子,只是觉得自己不是大师,没有能力将这些东西用实例说得清楚明了。也不是卖什么关子。当然你说我是在这玩些虚虚实实的东西,故弄玄虚我觉得没什么,本来很多东西就是仁者见仁,智者见智。我在此只是说些自己的想法和大家交流。因为我热爱思考,并且我相信热爱思考的人和真理的距离是最近的。

 

一,语言的哲学

 

记住一句话几乎所以的东西都是在某种特定的环境下应运而生的(也就是说没有什么东西凭空而降的)。我们的语言也不例外。我们的语言也是在某种特定的需求下产生的。我敢肯定不是计算机科学家抽风在家无聊而设计一种程序设计语言来玩的。就算是这样,这里也有一个需求“为了打发无聊的时间,玩一下?”(呵呵,,这是开玩笑的。)首先我相信每一种语言的创始人肯定都一等一等的大师。这点我们不应该去怀疑。他们在起初酝酿设计一个新的语言的时候,肯定是由于某种原因(我们说是基于某中需求)下才有了这么个想法,他觉得应该有这么一门怎样怎样的语言。可以让我们什么什么工作可以更好的开展,或者让什么更容易实现,或者是让我们的世界更炫更酷。大师们的脑海了面出现很多画面,这门语言(他想创造的语言)应该怎样怎样?于是开始了工作。实现自己这个伟大的计划。那么好。语言的轮廓就开始慢慢的清晰了。大师每天思考这里应该怎样?怎样才更好。这个功能要不要?不过我们要注意一点语言产生的更本需求是语言的主哲学。语言从前到后几乎都是围绕着这个哲学(某种需求)建造。至于每一个东西都是要实现,那么在具体的实现中会碰到各种各样的问题。这时候我们的语言衍生出很多很多的小哲学。我觉得现在很多人有一个毛病:很容易接受一样东西。我并不是说他学习的能力有多么多么的强,而是从来不问或者很少问为什么的,在很多东西面前过分的坦然。我想我们要做到的是尽可能多的认识到语言的每一个动作和细节产生的原因和用途。多问什么?为什么当初大师创造这么些东西呢?这样有什么好处和弊端?我们应该注意些什么呢?或者说为什么原来在某某语言的特性为什么在这种新的语言没有了?有着苏格拉底式的问或者反问的精神。其实当你在思考这些问题的时候,你就开始慢慢的和语言的哲学靠近。当我们真正的弄懂了这些问题的时候。我们基本上可以这么定义你上了一层次了。我们学习语言真的不是简简单单的学习那些粗浅的语法。我们不仅要学会用,还要用得明白,知其然还要知其所以然。我们应该抱着一个十万个为什么的心态?敢问!!!敢想!!!其实很多时候就是我们通常所说的“懂原理”。这就是为什么别人在推荐书的时候总是推荐那些大师的作品,因为他们书的字里行间都透漏着语言的哲学。解释很多看似你或许不需要掌握也可以的东西。当然不同的语言有不同的哲学,那我们是不是要学习所有的语言呢?当然不需要,一是我们的精力本身的限制,二是很多语言是有很多相近的哲学,因为语言本身都是在相互的学习和进步。别看今天某种语言的流行和优雅,都是因为吸取了很多前辈语言的很多哲学才有他的今天。在我的心中一个程序员这一生至少要学习三种类型的语言:1,学习一种面向过程编程的语言;2,学习一种面向对象的语言;3,学习一种脚本语言。(之所以选择这三门语言是这三种语言之间哲学的不相同点比较多。相对而言的。当然这三种类型并不是严格的三种不同的类型,我的意思是某种语言可能是面向对象的语言又是一种脚本语言)。并且争取学习都不仅仅停留在语法方面,更多的是体会语言背后的哲学。至于有些人只会一门语言的人但还是怎么怎么厉害?我不想反驳。我想你看完了,也许还是会明白的。

 

二,程序设计艺术

 

我这里不是讨论程序设计艺术的含义,所以我先声明我在文章所指的意思。程序设计艺术:抽象现实世界的问题,用计算机程序表示并尽可能优美的解决它的能力。这种能力有多么重要,不用多说了。我也不想多说什么,基础这一块我们要学好数据结构和算法分析。其次就是多思考多实践,敢想,敢实现,敢创新。让自己的方法尽可能的优美和优雅。切记不要天天“Hello World!!!”。还有更多的就不解释了。

 

三,行业技术

 

我们在第一条就聊到了任何一门语言都是在某种需求下产生的。那么也就决定了语言都有特定应用的行业,我们还要做的就是深入的了解和认识这相关的行业。积累这个行业所需要的各种技术。

 

   当然我们可能不是什么时候都有条件?比如说你是个学生,你可能在接触应用到行业的技术比较少,那么我们加强我们前面两条的学习。其实就够。当然有机会最好尽可能的接触行业知识,这样真强实战估计更能让我们理会其中的奥妙。但是我还是希望作为学生时代的同学们前两项是必须要努力做到的。切不可急于应用而舍本逐末。

 

   如果我们学好了语言的哲学我们不怕语言的跟替,因为我们学会更多的是一种思想,而很多时候我们需要转变的只是表达方式。如果我们学会了程序设计的艺术,那么我们掌握解决问题的能力,那就是有能力,我还需要怕什么。做到这两点我们基本上就做到了手中有剑,心中有剑(因人而异)。最后我需要做的就是加深自己在所在行业知识就可以游刃有余了。切记勿走马观花,学的种类很多就是没有一门精通的。因为我坚信很多东西如果你没有到达一定的深度,他什么也不能带给你,最多增加你嘴边的说辞而已而很多时候技术又不是生活,仅仅了解是绝对不够的。好了,我也唠叨完了,最后祝福所有程序猿!谢谢你们为改变世界而每天努力的工作和熬夜!!!!!!(最后一句虽然明知有语病,但我恳请让我这么表达。)

 


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值