今天,我们将聊一聊编码。 具体一点,我将回答这个问题:到底什么是编码? 我们还将探讨编码时会发生的一些情况。
不过,在阅读之前,我希望你在网站页面空白处右键单击并选择“查看页面源”选项。

操作后,你将看到网页代码的界面。 也就是说,你已经掀开帘子,看到了幕后的语言,这种语言指挥着计算机,让网页看起来非常的棒。

第一次在浏览器中查看代码的经历给了我很大启示。这才是互联网的真实面目!虽然我对大部分内容都不了解,但我看得懂一些熟悉的单词和短语。其中,我认出了一些字体的名称,或多或少地看懂了像素的大小,其余部分我就不认识了。这是我的电脑所讲述的语言,我想。
如果你计划学习编码,那么你需要考虑编码的内部机制。 你要知道编码时究竟发生了什么,当我们说某人正在编码时意味着什么,编码和编程之间的区别,你编码后形成的语言,以及如何开始编码,知道了这些的话将有助于你成为一个更出色的码农。
初学者学习计算机编码
围绕编码有很多误解,所以让我们首先澄清一下。我上面提到过,当我第一次看到网页的源代码时,我以为我看到的是计算机所说的语言。这是解释代码的常见说法,但并不是完全正确的。
您的计算机无法理解语言的细微差别。 事实上,您的计算机唯一能够理解的术语是“是”或“否”。
想象一下,你正在与一群工程师建立一座桥梁。 你在这头,而他们在另一头,你需要沟通才能完成这个项目。 问题是,你的手机死机了,而你的收音机只能接收,你只能用一个手电筒与她们沟通。 亮一次是肯定的意思,亮两次是否定的意思。虽然很费时,但是桥梁也可以建好。
这类似于计算机和人之间沟通的方式。 计算机所说的语言是二进制代码,一种1和0组成的数字语言。 就像手电筒一样,只有两种方式。 计算机只能理解“开”和“关”,不了解其他的东西。 因此,除非你在文本编辑器中键入的是1和0的字符串(但你并没有这样做),否则你并不是真正用计算机语言编写代码。
但如果你不是用计算机语言编写代码,那你在做什么呢?
计算机代码是一种语言
想象一下我们这样来编写代码,你不会二进制语言,计算机也无法理解人类语言。 因此,为了告诉计算机要做什么,你需要设计一个可以充当中介的翻译,这就是代码的作用。人们可以很容易地学习并理解代码,虽然代码是一种非二进制的形式,但计算机仍然可以理解。
就拿你手头上的大多数程序来说,你编写的代码实际上是从计算机所处理的二进制代码中删除的一步。 你编写的代码源自人类语言,计算机内置的程序会将您编写的内容翻译成二进制形式。 这就好比你需要和讲汉语的人说话,但是你只会说英语,而你能找到的唯一的翻译人员只会说汉语和法语。 这时,你需要另一位翻译人员将英语翻译成法语,然后再由第一个翻译人员将法语翻译成汉语,希望信息在此过程中不会丢失。
令我感觉惊讶的是这种方式居然真的成功了。 我们的机器翻译程序只能说二进制语言,这是一个非常复杂的过程,现在我正在往二进制计算机里输入人类的话。
当然,还有更多内容,但在你开始通过代码与计算机对话之前,这些是事情是你必须知道的。
编码与编程:有什么区别?
在我成长的过程中,我父亲和他的同事们都是计算机编程人员。 这让我在很长的一段时间都是这样看待那些为计算机编写代码的人:他们是编程人员。
最近,术语或行业似乎发生了变化。 突然之间,为计算机写代码的人叫做了编码员。 这种转变促使我想知道编程人员和编码人员之间是否存在差异。
许多人说编码人员和编程人员之间根本没有区别,只是称呼不同而已。如果有的话,以我的拙见,说你是一名编码人员比说你是一名编程人员更为笼统。 对我来说,编程人员这个词通常与大学的计算机编程(和计算机科学)课程有关。 然而,编码就像是每个人都可以做的事情。
Cards Against Humanity的产品设计师Jonah Bitautas提出了一个有趣的观点,他认为二者之间存在着差异,根本原因是规模问题。 从本质上讲,编码人员是为计算机编写语言的人,编程人员是监督整个程序编写的人 – 也就是说,整个项目的编程工作。
最后的最后,也没有形成一个关于编码人员和编程人员的正式定义。 因此,这两个术语互换使用是完全没问题的:你可以说“我是一名编码人员”或“我是一名编程人员”,没有人会因此而批评你。 除非你在一些特殊场合,比如 Hacker News – 一家编程新闻网站,在那里有很多经验丰富的(和自以为是的)编码人员在那里闲逛。 那么当然,他们可能会说点什么,不过你无需理会就行了。

编码语言的类型
编码语言是有许多种的。 一些语言是通用的(或多用途的),但大多数都是具有特定的功能的语言。 例如,CSS主要功能是使界面看起来很美观。 JavaScript是一种相对古老的语言,可以使网页的功能性更强大。 还有一些很好的语言可以满足你一些非常特定的需求,但你真正需要开始学习的只是一些常见的语言。
HTML
当我要求你查看网页的源代码时,你所看到的是以HTML编写的代码。 HTML是超文本标记语言的缩写形式,被看做是互联网的骨架。 它告诉网页应该显示什么以及根据给定的样式表设置合适的位置和方式。 它还会告诉浏览器在哪里可以查找你希望包含在项目中的图像和视频的内容,以及在哪里可以找到你正在操作的样式表。
有一点需要注意:从技术上来讲,HTML不是一种“编程语言”,因为它不使用例如像Python那样基于逻辑的表达式。 HTML是一种标记语言——不过,就像编码人员、编程人员与开发人员之间的辩论一样——你不可能因为将它称为编程语言而受到批评,特别是如果你是新手的话。
CSS
CSS是样式表。打开一个CSS文件,你就会看到很多关于字体系列,字体颜色和字体格式样式的术语(如粗体,下划线或斜体)。 当你的浏览器加载页面时,HTML会告诉它“使页面的这一部分看起来像标题。 好吗?”它还会告诉“这里是让你了解标题应该是什么样的。”这将始终是一个CSS文件。
Javascript
Javascript是为网页带来交互性的语言。 例如,当你单击网站上的按钮时,JavaScript会使按钮看起来像你正在点击它一样。 网页和动画上的视频播放器控件通常也是Javascript。
Ruby对比Python
我们实际上已经有一篇关于Ruby和Python之间差异的文章,但简短来说,这两种编程语言经常用于开发Web应用程序。
也就是说,二者创建的程序允许网页进行高水平的交互性操作。 例如,如果你想构建一个机器人来为你的客户创建一个自动支付系统,你可能会使用到其中一个。它们是可以学习并用来工作的好选择,因为它们非常通用,并且在网上有很多现存的代码可以让你开始接触它们。

如何学习编码?
学习编码语言和学习说新的(人类)语言之间有许多相似之处。 最令人沮丧的相似之处在于,与学习任何语言一样,你必须花时间练习!
有些人是天生的编码人员,就像有些人在听了几部歌剧后就会说意大利语一样。然而,对于我们绝大多数人来说,编码的学习是一个反复试炼的过程。 编码是一项技能,这需要时间,有人指导的话就更好了。
幸运的是,有许多经济实惠的在线课程可以让你学习编码!如果您不熟悉编码并且不知道从哪里开始,我建议你学习Programming For Non-Programmers。这套课程将让你学习那些理解编码世界所需的词语和观点。
如果你准备直接学习如何编码,那么就学习Python,也就是潮流孩子们现在所做的事情。 Python是一种很棒的语言,你可以使用它来构建几乎任何你想要制作的网站或应用程序。 不相信吗? Google, Uber和Netflix等等只是少数使用Python的公司。
手头有点紧? 现在有许多可以免费学习编码的网站,所以你没有任何借口不学习。