64

如何向外行解释什么是编程?

 5 years ago
source link: http://www.10tiao.com/html/697/201807/2656331029/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如果你是一个在软件开发公司工作的非编程人员,你可能会想知道程序员到底做什么。而且你可能每天听到新的流行语。这个帖子就是写一些你脑子里所想到的这些问题。 无论你是销售人员、医生、律师、业务负责人还是会计师,只要你曾经在脑海你想过如何学习编写代码,本帖将是一个好的开始的地方。


编程是什么?

简单的说,“编程就是指导计算机执行任务的行为”。编程通常被认为是编码。


那么,什么是计算机程序?计算机程序就是计算机所执行的一系列的指令。


上面所定义的计算机指的是任何能够执行代码的设备。可能是智能手机、ATM 机、黑莓 PI、服务器等等。


一个关于编程的好的类比

首先,我们的日常生活是有规律可寻的。宇宙的运行某种程度上来说是可预测的;例如白天黑夜、季节变换、日出日落。人类在早上起床然后去上学或者上班的循环里周而复始。工作上我们从别人那里获得指令,比如上级。再比如烹制一道菜可以分解成有限的几个步骤。


再次,比如当我们使用智能手机的时候,有部分代码运行的在后台不可见的。再比如在电脑上将鼠标从一个地方移动到另一个地方,看起来很简单,但实际上,这需要运行很多行代码。又如在 Google Docs 上输入文字这样一个看似简单的操作,在后台也需要运行相当多的代码。代码随处可见。

计算机程序也可以称为代码。不要使用"codes"这个词来称呼代码(因为“code”只能用单数形式)。好了,这不是一堂英语课,我们言归正传。


计算机的自然语言

就像人类一样,机器也有属于他们的自然语言。但计算机无法理解人类的语言。计算机的自然语言实际上是二进制代码(binary code)——1 和 0。它们代表了两种状态:有(1)和无(0)。


它就是电子设备的自然语言。但是要让人类用这种二进制代码来交流的话,我们一定会抓狂的!


进入程序设计语言

为了和这些只讲二进制语言的机器交流,我们需要一种与我们的自然语言(比如英语、法语、阿拉伯语或斯瓦希里语。)比较接近的语言。程序设计语言就是一种和人类语言相近的语言。但是它们跟加结构化而且必须完全学会才能够使用它们。


程序设计语言可能是高级程序设计语言或是低级程序设计语言。高级语言与机器语言的差别要比低级语言更大。这种“大的差别”通常被称之为抽象(abstraction),这一点我们在这个系列中不会深入讨论。这样我们就不会分心(distracted)了:)


计算机需要一种方法来理解我们的语言。为此,我们需要一个翻译器(Translator)。


什么是翻译器

源代码是指以特定编程语言编写的代码。 更多内容在第 2 部分。


翻译器有责任将您的源代码转换为机器语言。 这也被称为二进制化。 记住 1 和 0。 我们可以将二进制文件称为目标代码,程序或今天的常用词:应用程序。



翻译器可以是以下任何一种:

 ● 解释器

 ● 编译器

 ● 混合解释编译器

 ● 汇编器


解释器

一些语言是被解释的。 翻译器逐行处理源代码,程序或应用程序运行每一行代码。 这意味着解释从运行代码开始,直到它遇到错误。 然后解释器停止工作,报告错误。 更多内容在第3部分。

Python 是解释型编程语言的一个很好的例子。


编译器

编译器的工作方式跟解释器不一样。编译器会通过编译过程将所有源代码全部转换成为二进制文件。然后执行该二进制文件。如果源代码中存在错误,在编译的时候编译器会检测出来并予以标示。这将会中断编译过程,并且不会生成二进制文件。


解释器是一行行的翻译源代码并执行的,只有当前行的源代码执行完后才能进行下一行代码的翻译。而编译器则是一次性将所有源代码翻译成一个文件(二进制),并执行这一整个文件。


还记得计算机程序的定义吗?就是计算机所执行的一系列的指令。


一个正在执行的程序通常被称为进程。这样的程序需要占用计算机或智能手机一定的资源,如内存、硬盘空间还有文件系统。正在执行的程序也可以说成正在运行。


当我们执行一个计算机程序的时候,我们使用“运行(run)”这个词来描述。程序运行所花的时间一般被称为该程序的运行时。


计算机程序通常也被叫做应用程序(Apps)。我们经常会把程序和它们所运行的、或者设计运行的平台或者环境联系起来。比如 web 应用程序是运行在 web 浏览器上的,谷歌电子表格(Google Spreadsheet)就是一个例子。还有移动应用程序,是运行在智能手机上的,如 CandyCrush。另外还有桌面应用程序,如 Evernote 的桌面应用。


再说一遍,解释型源代码是直接从源文件上执行的。而编译型源代码则是先转换成二进制文件。之后再执行该文件。编译型源代码编译成功后,在运行时仍有可能发生错误。详见第3部分。


混合解释编译器

混合解释编译器是解释器和编译器的组合。流行的混合编程语言是 Java 。Java 首先将你的源代码编译为称为字节码(Bytecode)的中间格式。


字节码然后由称为虚拟机的运行时引擎解释和执行。这使得混合翻译器能够在各种操作系统上运行字节码。


Assemblers 汇编器

汇编器是将底层的汇编语言翻译成二进制。


对于这个系列,我们只关注高级语言。


分析转译器的一个好方法就是把它们看成一个程序。你需要下载或获取它们,将其安装在计算机系统上并了解其基本工作流程。


常见问题

这里有一个初学者通常都会问的问题:我应该先学哪门语言?


现在有数百种编程语言。他们按流行度、社区活跃度、长期支持、教育用途和商业用途排名。也可以按技术性来排序,比如是否是函数式的、命令式的、静态的、强类型或弱类型的。


某些语言比其它的更合教学。这些语言以教学为目而不是以商业用途为目的。比如那些给孩子们用于学习编写代码的语言。


也存在非常强大,易于安装和学习的语言。


Python 就是其中之一。我一般会建议初学者学习 Python。



在学习一门新语言的时候你就应该知道语言翻译器。这是安装配置在你的计算机系统中的一个程序。


我非常推荐从如何使用 CLI(Command Line Interface,命令行界面) 开始学习。CLI 是一个终端或 Shell。你可以把终端看作 GUI(Graphical User Interface,图形用户界面)。


在 GUI 中,你会通过鼠标与计算机进行交互。同时也会依赖目录以及其它你事情的视觉表现。


但是,如果使用 CLI,你会通过命令与计算机进行交互,你需要在提示信息或闪烁的鼠标后输入命令

$_


在 Windows 下,随机终端就是命令提示符。而对于 Mac 和 Linux 用户,已经存在 Bash 终端。如果想在 Windows 下有相同的体验,就安装 Git Bash 或者 PowerShell。


继续前进

你现在已经不知不觉进入到了编程中。你需要做好准备开始写第一行代码了。:)


你需要从下面这些内容开始:

 ● 计算机系统
这时候你需要的不是复杂或昂贵的计算机,你只需要一台工作正常的就行。


 ● 安装 CLI
我推荐你从这个速成教程开始学习使用 CLI。


 ● 安装文本编辑器
我们会在第二部分回到这个主题


 ● 学习一门编程语言
在这个系列中你会学习一些基础,建立适用于多数编程语言的基础知识。


现在我们已经了解了基本编程知识,也介绍了翻译器。那么你知道开始编程时你需要的基础工具有哪些?


一台计算机,一个文本编辑器,一个 shell(终端),一个编译器/解释器。


摘自开源中国,译者 Tocy, , vampire88, aaronday

英文原文:A Gentler Introduction to Programming



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK