必须自学和编程语言

2022-04-01 10:06:07 浏览数 (1)

第1章 开始自学

★自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。——华罗庚”

华罗庚

现在开始自学 Python !

自学,也要有充足的准备,第一,认识到自学对个人职业生涯的重要性。第二,要有一台计算机(虽然在手机上也可以编程,但目前不推荐),并能熟练操作——不仅仅是用鼠标点来点去,还要掌握 1.5 节所述的技能。第三,能熟练使用搜索引擎,且有搜索的意识,遇到疑问能首先想到搜索,这对部分读者具有挑战性,也是自学的难点。

1.1 必须自学

自学,是成为一名优秀程序员的唯一途径,注意不是“途径之一”,而是“唯一途径”,舍此无他。

有幸遇到过很多优秀程序员,曾向他们请教过有关个人发展的问题,这些青年才俊,毫无例外都谈到了“自学”。用不完全归纳法,可以认为优秀程序是“自学成才”的,或者说具有较强的自学能力。虽然此结论没有得到严格的证明,但它是多年的经验积累——人生经验不同于数学定理,往往不能证明。诚然,如果不认可,亦不能强求。

此外,我也接触了很多试图进入软件开发领域的初学者(多数是在校学生或者毕业不久者),总有一部分人希望老师“手把手”地教,希望老师讲解得更详细,希望老师把各种知识点总结好发给他,…… 。他们特别强调自己是初学者、自己是零基础。但他们忘记了,自己是成年人,是正在或者已经接受过大学教育的成年人。

通常而言,程序员的职业生涯不是三年五载就结束了。姑且按照当前某些媒体热炒的“三十五岁”危机来计算(这是无稽之谈),从大学毕业到危机时期,也大约十年。这十年中,软件开发技术相较于在学校所学,肯定会有很大变化——更何况所学是否匹配于工作实际,也是值得探讨的;这十年中,软件开发技术相较于职业生涯初期也肯定会有很大变化;这十年中,更可能是“不在学校学习,没有老师教”。那么,应该如何应对这十年的变化?毫无疑问,必须自学!自学各种新知识、新技术,甚至于自学老知识、老技术。

如果没有自学,别说“三十五岁危机”,二十五岁也不会安全。如果从业的十年,是自学的十年,所谓“三十五岁”危机,也会迎刃而解。

其实,不仅仅程序员需要自学,其他行业的从业者也需要。

自学建议 为了能让自学坚持长久,可以将"可视化管理"应用到自学过程中,本书在线资料(www.itdiffer.com)中提供了一张针对本书内容的自学管理表,读者可以借用它管理自学过程。”

1.2 编程语言

可以将语言分为两类,一类是自然地随文化演化的语言,称为“自然语言”( Natural Language ),如汉语、英语、法语等;另一类是根据特定目的、用途,人为创造的语言,称为“人造语言”(或“人工语言”,Constructed Language )。编程语言(或“程序设计语言”,Programming Language)是用来定义计算机程序的形式语言,属于人造语言。

通常,编程语言可以划分为:

  • 机器语言
  • 汇编语言
  • 高级语言

1.2.1 机器语言

机器语言( Machine Language )是用二进制代码( 01 )表示的计算机能够直接识别和执行的机器指令集合。如图1-2-1所示,就是用机器语言编写的表示字符串 "Hello World" 的程序(关于字符串,参阅第4章4.2节),是不是很有挑战性?

图1-2-1 "Hello World" 的二进制代码

机器语言的最大优势是运行速度快,但它的劣势也很明显,比如图1-2-2所示的代码,如果不非常仔细地分辨,会认为与上面的无异,其实是有区别的。

图1-2-2 有错误的 "Hello World" 二进制代码

机器语言对人“不友好”,人不能忍受。

又由于机器语言是计算机的设计生产者通过硬件结构赋予计算机的操作功能,所以,不同型号计算机的机器语言会有所差别。这就导致机器语言的通用性差——又一项不足。除了极少数专业人员之外,绝大多数程序员不需要学习机器语言。

1.2.2 汇编语言

汇编语言( Assembly Language )是二进制代码的文本形式,使用便于记忆的书写格式表达机器语言指令。如图1-2-3所示,是一段在 X86 计算机、64 位 Linux 操作系统运行的汇编语言程序。即使不理解这段程序,也能从中看出来,相对于机器语言,对人的友好度已经有了很大提高。

图1-2-3 汇编语言示例

但是,汇编语言非常靠近机器语言,仍然是一条指令对应着一条机器指令,并且某种汇编语言只专用于某类计算机系统,不能在不同系统之间移植。

现在,汇编语言依然有用武之地,因为它有一些独特之处,比如目标程序占用内存少、运行效率高等。当然,享用这些优点的代价就是必须接受较慢的开发速度。

1.2.3 高级语言

“高级编程语言”(或“高级语言”,High-level Programming Language )是面向人的语言—— It is for Humans ——这不是某一种语言,而是一类语言。一般我们把“机器语言”和“汇编语言”归类为“低级语言”,除此之外的都称为高级语言(如图1-2-4所示)

图1-2-4 编程语言分类

高级语言之“高级”的原因是使用了大量的英语单词,对开发者而言,更容易理解。最重要的,高级语言摆脱了“硬件的拖累”,不需要与机器语言的指令对应,借助操作系统实现了对硬件的抽象。即使开发者“对硬件一窍不通”,也能利用高级语言开发程序。

20世纪50年代,Fortran 语言发明,这是一种至今还在使用的高级语言。至今,人类已经发明了好多种高级语言,它们各有千秋,而且这种不断产生新的编程语言的趋势还将持续下去。当然,也会有一些编程语言成为历史。维基百科上有一个词条,列出了当前已知的编程语言(https://en.wikipedia.org/wiki/List_of_programming_languages),建议读者浏览一番,从而体会编程语言的多样性。

自学建议 互联网是最大的参考资料库,为自学提供了应有尽有的资料。在自学过程中如果遇到不理解的概念、术语、名词等,都可以在互联网上找到相关解释说明。自学者,亦必善于搜索、勤于搜索。 现在可用的搜索引擎很多,比如 google.com 、bing.com 、sogou.com 、baidu.com 等(排名分先后,请读者自行体会),不同的搜索引擎有不同的擅长,请恰当使用。”

0 人点赞