第一台计算机物理基础是半导体的开关操作,数学基础是二进制运算,计算机所支持的各项能力,比如多媒体、网络、数据、运算等都是CPU反复加操作完成的。在整个IT发展过程中,我们通过程序语言与CPU的对话,让CPU明白我们意图,并按照意图执行下去,经历了很漫长的过程。
一、程序语言的大致发展过程
第一阶段:我们按照CPU的套路说话,也就是汇编语言。我们来做绝大多数事情,拆解逻辑、简化方程、编码各类文件等等,CPU替代算盘进行高速的加操作,完成诸如弹道计算、原子模拟、流体解算等工作。但是,程序员生产力很低,与CPU沟通低效,为了干更多的事情,我们追求人容易看懂的语言(CPU读不懂)来写程序,弄一个中间的东西将人能懂得语言转换成机器能懂得语言。
第二阶段:按照我们的思维,逐过程告诉CPU怎么做。不同厂商追寻不同的思路,创造出了很多人类基本可读的语言,前提是这个人类要经过大量的学习,并严格按照语言规则进行书写,表达自己的想法。比如C语言、B语言、Pascal、Fortran等,并借助各种东西,做出适应当时各种操作系统的应用。看似一切大好,面对复杂的大型项目,搞起来很费劲,相同的工作要反复做,代码重用,结构扩展都比较麻烦,催生出下一代语言。
第三阶段:按照一些人类社会模式,更接近人的思维方式与CPU沟通。把社会中实体、遗传、变异、接口等概念引入,形成面向对象语言,比如Java、C#等等。程序员可以更关注应用要处理的事务,而不是语言本身。
二、现代程序语言内部组成
我前后学过VB、C#、JavaScript、Python等不同风格、应用环境的语言,总体上感觉,我们充分利用CPU高性能蛮力解决日常问题(当然也有优化、仍然蛮力进行),就语言本身,通常具备以下东东。
数据类型:CPU只能玩开关量,不能直接理解各种数据类型,比如负数、复数、小数、日期、字符串等等,随着位数发展,CPU处理数据类型的范围也在扩大,又分了单精度、双精度等等。
语法规则:程序语言要经过一个翻译器才能让CPU读懂,翻译器本身是个程序,程序员就苦逼地按照翻译器能翻译的模式去写代码,不然翻译器不知道什么时候开始,什么时候结束,甚至会出现奇异,所以语法规则能有效地避免这种问题发生。
控制语句:通过控制语句流转程序走向,经典的有判断、循环、跳转等等,这样增加了灵活处理能力。
与友邻打交道:CPU执行运算任务,需要从文件、数据库、网络、其他组件等地方获取输入,同时将执行完的结果输出到不同地方,那么就需要补充程序语言如何操作文件、数据库、网络等知识,这和程序语言本身无关,但非常有用。
三、有什么好的途径
介绍程序语言相关的数据,通常都很厚,常常让人望而却步,涉及的东西多,内容广,成体系,深究起来,门道多,难入手。在学习时,程序语言跟自然语言一样,结合自身实际,模仿和应用起来,以一些实际问题为牵引积极地做起来即可,在被虐中成长。