Juconcurrent 学而不思则罔,思而不学则殆。

C语言学习杂记(1)—语言畅想

2016-01-07

    当婴儿呱呱坠地,一个生命就开始了他的征尘。环境与兴趣、学习与传授、成长与贡献,每一个名词都是围绕着语言而展开。语言,记录了历史中的精彩点滴,也延续了人类文明的发展和传承。他并不是一个固定死板的黑匣子,而是一个随着时间而变化和演进的玲珑塔。     现实生活是使用语言进行交流的,而虚拟的计算世界同样如此。     计算机的语言,有的是补充,有的是创新,有的是模拟,有的是方便……。所有这些语言之中,最具跨时代意义的,是C语言。它在计算时代之初便具有不可替代的桥梁,承前启后,向前它承接汇编语言和机器语言的底层高效性,向后它过渡了各种纷繁的面向对象编程语言。     我们常说,语言具有通用性。当学会了一门语言之后,我们可以快速地学会另外一门语言。表面上,它的确如此,但是我们却忽略了一个重要的点,那就是如何算是“学会”?计算机是用数据进行表达的,如何把这些散乱的数据缕清、整理成册,并运用现实中解决问题,然后加以扩展,以解决更多的问题?我们应该深入到计算内部去!而最能体现其深入的,便是操作系统。     硬件之上便是操作系统,早期的操作系统是使用汇编,但是人们逐渐发现汇编代码太过偏向底层,代码稍微多点,便难以阅读和维护,而且它并不是站在人的角度来看待问题。于是,慢慢地在汇编之上便诞生了“中级语言”。现在几乎所有的操作系统的核心都是建立在汇编和C语言之上。这也从另外一个层面体现出了C的重要性。C诞生的时候,还没有比较成熟的面向对象思想,人们更多地是站在机器的角度来看待问题,一个功能就是一段逻辑,一段逻辑就是一个“函数”,而函数奠定了C的基础,算是其第一等公民。函数并不是孤立的,函数之间是可以进行通信的,而通信的方式就是“函数参数”。函数参数之间是“值传递”,还是“引用传递”,这取决于实际的场景。C语言支持这两种方式,尤其是引用传递,它大大降低了内存的消耗。     计算机里面,最基本的单元莫过于文件。文件既不会随着机子断电而消失,也不会占用更多的内存资源,是持续化最好的体现。C语言对于汇编指令进行了抽象,提取出了一些基本的操作接口,这些操作接口的语义,在其他很多语言中也能看到其影子。     C除了支持基本类型,更在其上进行了扩展。结构、联合等数据表示,更是面向对象编程的思想来源。     知识的海洋是宽广的,她囊括了很多人的思想源泉,每一滴都弥足珍贵。我们在其中徜徉、追逐、吸纳、循环,需要不定时地停下前进的步伐,驻足思考。这个特性或功能是怎么产生的?它解决了什么问题?它是现实环境中什么东西的抽象和延伸?每一次语言的更迭,都是一种思维的提升,或天马星空的描绘,或时间沉淀的爆发。简单、高效、解决问题体现了语言的价值;思考、创新、不懈努力体现了人的价值。     而C语言,其中的翘楚,正是我们打开计算机这个神秘国度的语言之门!


Content