1-2课:安静的程序,淘气的程序和编写程序

1-2课:安静的程序,淘气的程序和编写程序

静态程序——程序的源代码

上一章我们讲到了程序的源代码,你是不是很好奇它和程序到底是不是一回事儿啊?

严格来讲,“程序”和“程序的源代码”并不是一回事情噢。

程序的源代码是指用编程语言编写出来的程序的逻辑,是静态的文本,我们暂且可以叫 TA 安静的程序,一般被存储为以特定字符串为后缀的文件。

比如下面就是一个 Python 程序(程序员世界中最著名的打印“Hello World”的程序),被保存为FirstProgram.py (py是python文件的特定后缀)。

def main():
    print("Hello World")

if __name__ == "__main__" :
    main()

是不是有点看不懂,没关系,听我给你娓娓道来,这个程序的名字叫做 FirstProgram ,FirstProgram.py 文件里面的内容就叫做 FirstProgram 程序的源代码, FirstProgram 程序源代码的功能是在运行该程序的计算机的显示器屏幕上打印“Hello World”字样。

你可以把上面的代码拷贝到一个文本文件里,然后将该文件存储为“FirstProgram.py"——注意后缀,后面没有“.txt”。

enter image description here

让程序跑起来——运行程序

光有了程序的源代码还不行,因为静止的程序什么都干不了。要让程序干活,就得让它先跑起来。

这时,我们就需要程序的运行环境

涉及到运行环境,不同的编程语言的具体需求不一样,这里又涉及到编译执行、解释执行等概念,不要着急,这些后面会讲到。

在此处,我们只需要知道, Python 的运行环境是一个专门的软件,需要下载安装就可以了。

如果你想和我们一起上这门课,那就一起先来到 Python 的官网下载安装Python的运行环境吧:

点击可下载安装 Python 的运行环境

打开 Python 下载页面你会发现里面有好多版本,我推荐你安装 Python3 最新版。其实任何以 Python3 开头的版本都可以,不过对于这类软件,大家都习惯于去追最新版。

而且最新版就在下载页面最显眼的地方,好找,比如下图是2019年5月的下载页头部,你读到这儿的时候,可能版本已经有所不同,不过最新版的位置总是大同小异:

enter image description here

注意:不要选 Python2 因为 Python2 和 Python3 对源码的要求有些不同。

当然,你如果非要装 Python2 ,别怪我没有提醒你,本课所有的例子都是用 Python3 写的噢,如果装了 Python2 ,部分代码需要改写才能运行,这样会更加麻烦,不如下载 Python3 省事儿噢。

Python 运行环境下载到你自己的台式机或者笔记本后(相信大多数人不会想用手机编程吧哈哈),安装它,设置好环境变量(这个只要根据安装提示进行,不知道怎么设置就什么都不要改,用默认的路径和选项就好)。

然后在命令行下进入 PythonSourceCode 目录(这个目录是自己建立的),把 FirstProgram.py 放到目录下,然后在命令行输入python FirstProgram.py 就能看到效果了:

enter image description here

在我们键入“python FirstProgram.py”到屏幕上显示出“Hello World”,看起来是一瞬间的事情,但实际上,后面却经历了一个“漫长”的过程,你的计算机的各个部件几乎都参与了这个过程:

  • 首先,运行环境将程序代码读入内存,将一个完整的程序描述拆解成指令和数据两部分。
  • 然后,指令被送到CPU,CPU逐条执行指令,对数据产生影响:
  • 在这个过程中,根据程序的逻辑,输入输出设备(I/O设备)可能会接受用户的输入(本程序没有用户输入),并将输出呈现给用户(本程序的将“Hello World”打印到屏幕就是输出);
  • 直到所有指令执行完毕。
  • 最后,所有指令执行完毕后,指令和数据被移出内存。 (计算机是不是真的很辛苦,一个小小的动作,背后有这么复杂的步骤)

这些设备、内存、 CPU 之间的信息交换都是通过主板上的总线来实现的。

enter image description here

点击了解更多《编程算法同步入门》

跑动的程序——运行时程序

在程序的运行过程中,那些动态的、临时性存在于计算机核心部件中,并通过外围设备和用户进行交互的指令和数据才是真正的程序!

程序的源代码是一些静态的文字和符号,以文本文件形式存储在计算机的存储部件上。就算是打印或者手抄在普通纸张上也可以,源代码还是源代码,本身不会变化,只是不能直接被运行环境读取运行了而已。

而确切意义上的程序,则是在计算机执行源代码(或者由源代码编译而成的二进制码)的过程中,一个动态的流程和记录。对应到物理世界,程序的实际存在形式是硅晶、金属上流动的电波和不同高低的电压。

不过在日常生活中,“程序”一词往往被用来指代程序源代码,而且指代源代码的机会远比引用它的本意要多。我们也不用故意找别扭,那就干脆约定一下,在下面的课程中我们用“程序”来指代静态的源代码,而用“运行时程序”指代动态的程序

令人激动的环节:编程

编程的步骤

我们已经知道了什么是程序,编程就是从无到有创造出一个可以正常运行的程序的过程

这个过程通常包括一下这几个步骤,一定要看仔细了噢:

Step-1 编写:把程序写出来。

既然要“编写”,自然要涉及到语言文字,否则写什么呢?

就目前而言,在大多数情况下,我们编写程序都使用高级编程语言。既然有高级,当然就有低级,之后我们会有专门将编程语言的章节,在这里就不多说浪费时间啦。 总而言之呢,程序是用某种特定的语言描述出来的。

Step-2 编译(*):编译是将编程语言描述的、人类可读的程序源代码(source code, 或简称code)转化为二进制代码(binary code)的过程。

这一步并不是一定要进行,关键是在于你选用的编程语言是编译执行的还是解释执行的,如果是前者,就要进行本步,否则的话是不需要哒。

本课程选用的 Python 语言是后者,用 Python 写的代码是不需要编译的。

Step-3 测试 : 也就是试运行程序。

一方面看看我们写的程序是否可以运行了,另外一方面要看它是不是按照我们最初的设计运行的。这个环节通常令人心情紧张!

Step-4 问题修复(*): 如果上一步发现了问题,也就是程序员们常挂在嘴上的Bug,当然不能放任不管,需要将问题修复才能正式投入使用。

这一步理论上当然也是可选的,如果测试没有发现问题自然就不用修复什么了。

把程序写出来

编程对应的英文可以叫做 Programming ,不过更通常地被叫做 Coding ,这两种叫法很多时候可以通用。有时后者比较偏重强调第一步:程序的编写。

和之前“程序”的静态动态概念混用类似,虽然编程实际上指的是一个从空白到有一个程序正确运行的全过程,但很多时候“编程”会被用来简化地指 Step-1:编写程序

相比于Step2 ~ Step4有许多自动化工具辅助,编写程序这一步基本是纯人工的,这就就是为什么大多程序员自嘲为码农,就是码字的农民了。

程序编辑器

虽然编程语言里一般其中都会包含部分英语单词,但是还是有大量的内容是数字以及各种符号组成的,因此程序代码乍看起来和一般的自然语言文字很不同,更像是编码(Code)——这也就是为什么编程会被叫做Coding的原因。

虽然不同编程语言写出来的程序一般会以不同的后缀名来存储,比如C语言写的程序源码文件是*.c; C++是 *.cpp; C#是.cs; Java是.java; Python是*.py…… 不过说到底,这些其实都是文本文件。

所以理论上,要编程,打开一个 Notepad ,然后直接往里面敲字符,敲完了再存成固定后缀的文件就可以了!

如果你愿意,当然可以用 Notepad :

enter image description here

或者任何你自己喜欢的文本编辑器(比如在 Linux/Unix 圈很流行的 vim 或者 emacs 编辑器)。

这种方法很酷,不过不太方便。

集成开发环境

在这里给大家推荐一类超级好用的软件,新手必备,那就是:IDE(Integrated Development Environment) ——中文名叫作“集成开发环境”

这类软件大多与编程语言绑定的,也就是说某一个IDE主要支持一种语言(当然也不绝对哟)。

IDE 除了提供编辑器,还提供编译运行以及 debug 环境( debug 简单来说就是发现程序有bug以后,能快速找到bug所在位置的过程)。而且,在编写程序的过程中,一般 IDE 会提示有没有语法错误等,对于初学者来说,简直是无敌方便。

流行的语言一般有多种 IDE ,很多人在选编程语言的时候要先站一遍队 (Java vs Python),选语言版本的时候再站一遍队 (Python2 vs Python3),选 IDE 的时候又要站一遍队——也许是觉得在一个名目之下党同伐异好玩吧,但其实,这些都没什么必要~

学习本课的同学应该都是没怎么接触过编程的,想来还没有沾染动不动就“站队“的习气,对 IDE 可能也没有什么认识,不过不要紧啦

在此我就为大家推荐一款:PyCharm 。在其官网: 点击官网地址,就可以下载啦

enter image description here

PyCharm 有付费的专业版和免费的社区版,鉴于我们的课程内容真的非常滴简单,所以免费的就完全ok了。

点击了解更多《编程算法同步入门》

分享交流

我们为本课程付费读者创建了微信交流群,以方便更有针对性地讨论课程相关问题。入群方式请到第 2-1 课末尾添加小助手的微信号,并注明「同步入门」。

阅读文章过程中有任何疑问随时可以跟其他小伙伴讨论,或者直接向作者提问(作者看到后抽空回复)。你的分享不仅帮助他人,更会提升自己。

上一篇
下一篇
内容互动
写评论
加载更多
评论文章