从 1024 开始,我们漫谈编程的本质
祝各位工程师节日快乐哈~
今年的 1024 也算是自己过得第一个正经的程序员节了,如果实习也算的话那就是第二个,也不知道自己开始关注 1024 是缘从何起,或许是因为从喜欢上 Coding 开始,或许是从喜欢程序员这个职业开始,但是不管如何,从现在开始我会把每一个 1024 都当做是自己的一个小节日,并且尽可能的在每年的这一天都能输出一些比较深度的内容来表达自己对或是编程,或是职业,或是行业的一个思考,来祝大家节日快乐。
那么今天的文章标题是《从 1024 开始,我们漫谈编程的本质》,首先会先真正的了解下 1024 的来历和意义,其次就是对编程这件事情的思考和感悟,探究其本质,我们才能越发的了解和掌握它。
1 为什么是 1024?
1.1 "程序员"节的历史
在网络上收集到的一些资料:
2002 年,俄罗斯程序员 Valentin Balt 收集签名,向俄罗斯联邦政府请愿将 9 月 13 日设定为程序员节。
2009 年 9 月,“程序员节”从此成为了俄罗斯的一个正式节日。 除了俄罗斯之外,其他国家的一些程序员社区也会庆祝这个节日。为什么会选 9 月 13 日呢?因为它是每年的第 256 天(闰年就是 9 月 12 日)。256 这个数字对程序员来说有着特别的意义,1 个字节(等于 8 位元)最多能表示 256 个数值,而且在整年中,256 是 2 的最大幂中小于 365 的值。
1.2 1024 的来历
在中国,为什么变成了 1024 呢?
因为一般计算机采用二进制计数,而 2 的 10 次方是 1024,并且计算机中很多东西和 1024 打交道,比如存储单位换算等等,因此在国内每年的 10 月 24 日被大家亲切称为程序员节。
2 编程和程序的本质
2.1 编程就是与机器对话的方式,程序就是算法与数据结构
首先我们人类为什么要研究计算机,我认为起初就是需要增加效率,让计算机代替人安装一定逻辑去做一些复杂的计算工作,并且由人来控制计算机,那么控制除了开关等按钮以外,我们需要更好更精细化的控制,那么就涉及到了编程,编程简单来说就是编写程序,并且让计算机能够理解和运行我们的程序,因此我们可以把编程亲切的理解为与机器对话的方式,即编程 = 更好的与计算机对话
。
那么编程中做的最重要的事情是什么?
对,就是写程序,在大学上第一节程序设计课的时候(应该是 C 语言程序设计课),老师一定会告诉我们这个公式:程序 = 算法 + 数据结构
。
不出意外的话,算法课和数据结构课的老师也会再分别告诉一次(可能是因为重要的事情要说三遍~),除此之外我认为数据也同样重要,因为我们写程序的目的就是处理和传输数据。
曾经在拜读李智慧老师的博文的时候记得他曾说过的一句话:技术是通用的,算法是公开的,只有数据需要自己去采集。因此在我们所处的“大数据时代”,在编程中对数据的依赖也变得越发重要。
2.2 计算机是如何识别我们的程序代码的?
核心的地方就在于:编译器(英文:Compiler)
因为我们的计算机 CPU 只能识别二进制的指令,但是我们敲出来的代码却都是英文单词或字母以及数字(高级语言),那么 CPU 在执行之前,我们就需要把我们的代码改造成 CPU 能够执行的二进制指令,而这个过程就称之为编译,编译器就是进行计算机进行源代码编译的重要载体。
编译的概念:将高级语言(源语言)编译成汇编语言或机器语言(目标语言)的过程。
关于编译器的原理我推荐大家看下这个视频,全英文讲解十分易懂:【极简编译器原理】
不仅讲述了 CPU 的功能、编译器将源代码转换为计算机可执行的程序,还对编译原理中的源代码 -> Token -> 抽象语法树 -> 汇编代码 -> 可执行二进制文件
的几个不同过程做了动态演示。
2.3 怎样写好我们的程序
关于怎样写好我们的程序,这个在不同场景使用不同的编程语言或设计风格,原则应该是不完全一样的,但是一些通用性却是有的,欢迎大家来读我的另一篇文章:《如何写出更加优雅的代码》
3 难忘的 Hello World
最后,我们重温一下当年初出茅庐时向那个"最简单的世界问好"的感觉
Go 版本:
Java 版本:
Python 版本:
C 语言版本:
省略部分其他同样伟大的编程语言版本的 Hello World......
版权声明: 本文为 InfoQ 作者【Barry Yan】的原创文章。
原文链接:【http://xie.infoq.cn/article/30517f18c37b89f6cacee7253】。文章转载请联系作者。
评论