一、简介
在我们生活的这个时代,编码是无价的。它有能力提升你的职业生涯,你的未来前景,甚至你的智力。计算正在推动历史上最大的资本扩张之一,而现在是学习编码的最佳时机。
为什么要学编码?
我第一次认真接触编程是在大学。我们必须学习一门叫做 C 调的编程语言课程。我第一次不得不上这门课时没及格,第二次不得不重新上时勉强及格。考虑到那次失败,我远离编码的时间最长。我认为这是我根本不具备的天赋。后来,我继续将我的职业从工程转向视觉效果,因为我想在一个有更多创造性表达空间的领域工作。但是在视觉特效工作中,我开始意识到整个操作实际上是通过计算的力量来实现的。从使用的软件到促进生产的管道管理……编码无处不在。它允许电影公司为票房收入数亿美元的电影提供令人兴奋的效果。
在意识到编码在我的领域中的力量后,我决定踏上一段旅程去了解更多。最后自学了 Python,一种在视觉特效中广泛使用的编程语言。这样做是非常令人满意的。它不仅让我在视觉效果方面的工作更有成就,并创造出获奖的效果,还让我能够过渡到一个更有回报的软件开发职业。
编码与编程
您一定在相似的环境中听过编码和编程这两个术语,并且可能想知道它们之间有什么区别。在过去的几年中,编码已经成为使编程更容易为大众所接受的术语。基本上,前提是你可以在不实际编程的情况下编码并为数字经济做贡献。
让我给你举个例子:你可以使用 HTML 和 CSS 这样的网络语言,它们不是编程语言。因此,当用这些语言编码时,你并不是真的在编程,而是在设计或构建网站(下一节将详细介绍它们的用法)。但是你也可以用 JavaScript 编码,这是一种真正的编程语言。编程语言允许你让计算机“做”事情。每次你在编程的时候,你也在编码。但是当你编码的时候,你可能不是在编程。编码是一个更通用的术语,用于描述所有向计算机传达意图的情况。
基本上你可以把编程看作是编码的一个子集。但是说实话,这两个术语现在几乎可以互换使用。这本书的主要目的是教你如何编程。我们将使用编程语言 JavaScript 为编程目的进行编码。
关于 HTML 和 CSS
看着我学习编程的道路,我发现向初学者教授编码的一些努力有点欠缺。该领域的主要问题之一是使用 HTML 和 CSS 作为入门语言。
这些语言的问题在于它们甚至不是编程语言!HTML 是一种标记语言,用于以 web 浏览器可以理解的方式定义文档的结构。例如,HTML 教你如何为浏览器编写文本,这样浏览器就能知道哪部分是文档标题,哪部分是段落,等等…
同样,CSS 也不是编程语言。它是一种样式语言,允许我们对 HTML 文档进行样式化,使它们看起来更美观,并且理想地使它们比以前更友好。此外,即使 CSS 可以用来创建令人难以置信的好看的结果,它通常是非常不直观的工作,甚至对程序员来说也很难推理。学习 CSS,你不仅仅是在学习编程,如果设计网站不是你唯一的目的,你很可能会从事一项对初学者来说并不有趣的活动。
推动使用这些语言来教授编码是可以理解的。毕竟,考虑到 web 应用程序的巨大优势和它们在某些情况下的巨大利润,人们发现自己想要为 Web 构建自己的项目。如果你要建立一个网站,你需要在一定程度上使用这些语言。但是以这些语言为起点可能会对什么是编码产生误解。当您构建程序或应用程序时,编码可能是一项非常有益且引人入胜的活动,因为可能性的领域要大得多。如前所述,我们需要使用编程语言来构建程序,所以显而易见的问题是:“是什么让一种语言成为编程语言?”
你可以在维基百科上找到一个半正式的定义。但对我来说,一门语言要被认为是编程语言,它需要有某些控制结构,允许我们表达一些基本的操作。即使这个定义对初学者来说也没有什么意义。意思是在编程语言中有允许计算机执行逻辑操作的结构。下面是这种结构的一些例子,我们将在后面看到更多:条件允许程序根据给定的条件输出不同的结果,变量存储值或循环允许程序在期望的时间内重复操作。如果现在这些都没有意义,请不要担心;这本书的目的是让我们了解所有这些基本的编程概念。
几乎所有的编程语言都有这种基本结构,使我们能够构建更加复杂的应用程序。想想英语,或者你可能知道的任何其他语言。有动词、名词和形容词。利用这些积木,人们可以说最简单的事情,或者继续写令人惊叹的小说。这些都是 HTML 和 CSS 中缺少的构件,这使得人们错过了使用编程语言可以实现的目标。
在本书中,我们将学习所有这些基本结构,这些结构允许我们使用编程语言 JavaScript 向计算机传达我们的意图。
为什么要学 JavaScript?
有许多编程语言。这本书将教你如何通过使用非常流行的编程语言 JavaScript 来编码。
JavaScript 是最广泛使用的编程语言之一,因为它内置于每个 web 浏览器中。因此,几乎所有的网页和应用程序都在某种程度上使用 JavaScript。近年来,JavaScript 不仅开始用于网页中的用户交互编程,还用于服务器端后端应用、物联网(IOT)设备或 Android 或 iPhone 等平台的移动应用。尽管 JavaScript 知识起源于 web 开发,但它现在也适用于大量其他领域。
鉴于 JavaScript 的流行和无处不在,如果您遇到困难,找到关于它的资源和信息真的很容易。它背后有一个庞大而充满活力的社区。在流行的问答网站 StackOverflow 中,有超过一百万个问题与 JavaScript 相关。如果你最终用这种语言编码并陷入了一个问题,很可能其他人也有同样的问题,在这个网站上发布了一个问题,并得到了一个你可以借鉴的答案。
我不会详细说明是什么使编程语言成为动态或静态的,但是作为一种动态编程语言,JavaScript 代码比静态语言更简洁,也更容易编写。清单 1-1 和 1-2 是一些例子,在屏幕上显示单词“hello world”的简单语句是用不同的语言编写的。请注意,使用 JavaScript 编写相同的代码要短得多。
// Hello World in C++ (pre-ISO)
#include <iostream.h>
main()
{
cout << "Hello World!" << endl;
return 0;
}
Listing 1-1Displaying Hello World to the screen in C++ (Source: http://helloworldcollection.de/)
// Hello World in Java
class HelloWorld {
static public void main( String args[] ) {
System.out.println( "Hello World!" );
}
}
Listing 1-2Displaying Hello World to the screen in Java (Source: http://helloworldcollection.de/)
用 JavaScript 在屏幕上显示 Hello World:
console.log('Hello World');
学习 JavaScript 的另一个好处是,因为它是网络语言,你将能够以一种非常简单的方式与其他人分享你的创作。我认为在学习一项新技能时,能够这样做并得到反馈是一个重要的考虑因素。
总而言之,学习编程有很多原因,JavaScript 是一个很好的选择,因为它:
- 更容易写;
- 是大众化的,无处不在的;
- 具有广阔的应用领域。
为什么我们有不同的语言?
你一定想知道为什么有不同的语言,如果它们都有相似的特性。
这是一个很好的问题。不同的语言之所以存在,是因为它们在设计时考虑了不同的原则。它们中的一些可能更难输入,但是它们给你更多的控制你的程序的稳定性和速度。其他的可能更简洁,但是执行起来可能更慢。有些语言更适合某些任务。JavaScript 非常适合全栈 web 开发,Matlab 非常适合数学计算,C++在游戏编程方面占主导地位,Julia 用于数据科学。不过,这并不意味着你不能在这些领域使用其他语言。Unity 游戏引擎为游戏开发提供 C#。数据科学可以首选 Python。GoLang 或许多其他语言可以用于后端 web 开发。有时归结为开发人员更喜欢使用什么以及他们已经知道什么。有时它归结于给定项目的限制。
我曾经在视觉特效行业工作,我们在该领域使用的软件包可以使用 Python 或 C++实现自动化。考虑到我们所使用的工具所支持的内容,这些对于该领域来说都是很好的语言选择。除了知道一种编程语言实际上使你更有可能学会另一种语言这一事实之外,在视觉效果方面知道 Java 在很大程度上是没有用的,因为它们彼此之间共享相似的原则。
选择哪种语言作为你的第一语言有时会是一个艰难的选择,因为有很多可行的选择。有时选择是由应用程序域决定的。如果你想用虚幻引擎开发一个游戏,也许你应该学习 C++。但是,如果这是你第一次接触编程语言,你可能会面临如此陡峭的学习曲线,这可能会令人沮丧。
JavaScript 是作为你的第一编程语言学习的一个很好的选择。如前所述,它被广泛使用,并且具有广阔的应用领域,允许您尝试许多不同的应用程序。它背后有一个庞大而活跃的社区,并且有一个非常简洁的语法,使它更接近人类语言。
用 p5.js 学习 JavaScript
学习编程最具挑战性的方面之一是找到引人入胜的例子,这些例子不仅有趣、令人印象深刻,而且能说明手头的主题。一旦你掌握了窍门,编程是一项非常有益和吸引人的活动,但是对于一个初学者来说,一个专业程序员必须解决的大多数问题可能看起来无趣或者非常无聊。这就是为什么这本书在讲授这本编程入门书时使用了一个 JavaScript 库,一个名为 p5.js 的插件。p5.js 将允许您创建引人入胜的交互式和可视化作品,您在创建时会从中获得乐趣,它还将让您为软件开发打下坚实的基础。这个库的可视化本质将允许我们以图形的形式真实地看到脚本的结果,并发展对编程结构的深入理解。
p5.js 是一个编程库。编程库可以被认为是为特定目的而构建的代码集合,因此每当您需要执行与该目的相关的操作时,您都可以使用库,而不是自己构建该功能。库构建并扩展了语言的核心功能。对于 JavaScript,有超过 10 万个库允许您执行各种各样的操作。因此,在尝试实现您自己的功能之前,检查是否有人已经为您的需求创建了一个开源甚至是付费的库总是一个好主意。这个想法是,对于一个特定的问题,一个库将是一个久经考验的解决方案,你可以放心地利用它,而不是设计你自己的解决方案,这可能会给你正在开发的程序带来不可预见的问题。对于 JavaScript 来说尤其如此,因为核心语言没有任何内置的标准库;因此开发工作严重依赖外部库来解决常见问题。下面是几个有趣的库的例子,让您了解一下现有的库:
- Faker.js (
https://github.com/Marak/Faker.js
):产生海量虚假数据。 - 法郎(
https://github.com/wooorm/franc
):检测给定文本的语言。 - jimp (
https://github.com/oliver-moran/jimp
):图像处理库。 - cylon.js (
https://cylonjs.com/
):机器人技术、物理计算和物联网的机器人框架。
p5.js 是一个创造性的编码库,基于草图的思想。就像素描可以被认为是快速原型化想法的最简单的绘图方法一样,p5.js 的概念是编写最少的代码来将您的视觉、交互或动画想法转化到屏幕上。p5.js 是流行的库 Processing 的 JavaScript 实现,它基于 Java 编程语言。
值得一提的是,Java 和 JavaScript 是完全不相关的语言。JavaScript 以 Java 命名的原因是过去做出的一个不幸的品牌和营销决策。
p5.js 的简洁本质使它成为一个非常容易学习的库。但是不要让这种简单性欺骗你,让你相信 p5.js 的能力有限。p5.js 背后有大量令人印象深刻的功能、历史和社区,如果您想使用代码创建艺术、设计、动画或交互式作品,这将是一项有价值的学习投资。一个 p5.js 程序可以有几行到几千行代码。由于 p5.js 构建时考虑了简单性,所以有时小的 p5.js 程序被称为草图。尽管这是一个很聪明的描述方式,但我个人并不喜欢这种措辞,因为它混淆了你所做的毕竟是编程的事实。
你可以找到 p5.js 的实际应用,比如创建数据可视化(图 1-1 )。
图 1-1
Data visualization with p5.js
或者可以用来创作抽象的生成艺术(图 1-2 )。
图 1-2
Abstract generative art with p5.js
您甚至可以创建动画或交互式视觉效果。我们将在本书结束时使用 p5.js 构建一个互动游戏!
版权属于:月萌API www.moonapi.com,转载请注明出处