如何选择你的第一门编程语言

480 位读者喜欢这篇文章。
How university open debates and discussions introduced me to open source

Opensource.com

学习编程的原因因人而异。你可能有一个想要制作的程序,或者你只是想尝试一下。所以,在选择你的第一门编程语言之前,问问你自己:你希望那个程序在哪里运行?你希望那个程序做什么?

你学习编码的原因应该影响你选择第一门语言。

在本文中,我交替使用 "code"、"program" 和 "develop" 作为动词,同时交替使用 "code"、"program"、"application" 和 "app" 作为名词。这是为了反映你可能听到的语言用法。

了解你的设备

你的程序将在哪里运行是你选择语言的一个决定性因素。

桌面应用程序是在台式机或笔记本电脑上运行的传统软件程序。对于这些程序,你将编写只能在单台计算机上一次运行的代码。移动应用程序,即 App,在运行 iOS、Android 或其他操作系统的便携式通信设备上运行。Web 应用程序是像应用程序一样运行的网站。

Web 开发通常基于 Web 的客户端-服务器架构被分解为两个子类别

  • 前端编程,即编写在 Web 浏览器本身中运行的代码。这是面向用户的部分,或者程序的 "前端"。它有时被称为 "客户端" 编程,因为 Web 浏览器是 Web 的客户端-服务器架构的客户端一半。Web 浏览器在你的本地计算机或设备上运行。

  • 后端编程,也称为 "服务器端" 编程,编写的代码在服务器上运行,服务器是你无法物理访问的计算机。

要创建什么

编程是一个广泛的学科,可以用于各种领域。常见的例子包括

  • 数据科学,
  • Web 开发,
  • 游戏开发,以及
  • 各种类型的工作自动化。

现在我们已经了解了你想要编程的原因和地点,让我们来看看两种非常适合初学者的语言。

Python

Python 是最受首次程序员欢迎的语言之一,这并非偶然。Python 是一种通用语言。这意味着它可以用于广泛的编程任务。几乎没有什么是你不能用 Python 做的。这让范围广泛的初学者能够实际使用该语言。此外,Python 还有两个关键的设计特性,使其非常适合新程序员:清晰、类似英语的 语法 和对代码 可读性 的强调。

语言的语法本质上是你为使语言执行而键入的内容。这可以包括单词、特殊字符(如 ;$%{})、空格或任何组合。Python 尽可能使用英语,这与其他通常使用标点符号或特殊字符的语言不同。因此,Python 的阅读方式更像是自然的、人类的语言。这有助于新程序员专注于解决问题,并且他们花费更少的时间来处理语言本身的细节。

与清晰的语法相结合的是对可读性的关注。编写代码时,你将创建逻辑 "代码块",即为某些相关目的协同工作的代码段。在许多语言中,这些块由特殊字符标记(或分隔)。它们可能包含在 {} 或其他字符中。块分隔字符的组合以及你以几乎任何方式编写代码的能力会降低可读性。让我们看一个例子。

这是一个小函数,名为 "fun",它接受一个数字 x 作为输入。如果 x 等于 0,它会运行另一个名为 no_fun 的函数(它做一些不好玩的事情)。该函数不接受任何输入。否则,它会使用相同的输入 x 运行函数 big_fun

"C 语言 定义的这个函数可以这样写

void fun(int x)
{
    if (x == 0) {
        no_fun();
    } else {
        big_fun(x);
    }
}

或者,像这样

void fun(int x) { if (x == 0) {no_fun(); } else {big_fun(x); }}

两者在功能上是等效的并且都会运行。{}; 告诉我们块的不同部分在哪里;但是,一个明显更易于人类阅读。将它与 Python 中相同的函数进行对比

def fun(x):
    if x == 0:
        no_fun()
    else:
        big_fun(x)

在这种情况下,只有一个选项。如果代码不是以这种方式结构化的,它将不起作用,因此如果你有可以工作的代码,你就拥有可读的代码。另外,请注意语法的差异。除了 def 之外,Python 代码中的单词都是英语,对于广泛的受众来说都是清晰的。在 C 语言示例中,voidint 不太直观。

Python 还有一个出色的生态系统。这意味着两件事。首先,你有一个庞大的、活跃的语言用户社区,当你需要帮助和指导时可以向他们求助。其次,它有大量的预先存在的库,它们是执行特殊功能的代码块。这些范围从高级数学处理到图形到计算机视觉到几乎任何你可以想象的东西。

Python 作为你的第一门语言有两个缺点。首先是它有时很难安装,尤其是在运行 Windows 的计算机上。(如果你有 Mac 或 Linux 计算机,则 Python 已经安装。)虽然这个问题并非无法克服,并且情况一直在改善,但它可能会阻止一些人。第二个缺点是对于那些特别想构建网站的人。虽然有使用 Python 编写的项目(例如 DjangoFlask)可以让你构建网站,但没有太多选项可以编写将在 Web 浏览器中运行的 Python。它主要是一种后端或服务器端语言。

JavaScript

如果你知道你学习编程的主要原因是构建网站,那么 JavaScript 可能是你最好的选择。JavaScript 是 Web 的语言。除了作为 Web 的默认语言之外,JavaScript 作为初学者语言还有一些优势。

首先,没有什么需要安装的。你可以打开任何文本编辑器(例如 Windows 上的记事本,但不是像 Microsoft Word 这样的文字处理器)并开始键入 JavaScript。该代码将在你的 Web 浏览器中运行。大多数现代 Web 浏览器都内置了 JavaScript 引擎,因此你的代码几乎可以在任何计算机和许多移动设备上运行。你可以在 Web 浏览器中立即运行你的代码这一事实提供了非常快速的反馈循环,这对新程序员来说是一件好事。你可以尝试一些东西并非常快速地看到结果。

虽然 JavaScript 最初是一种前端语言,但名为 Node.js 的环境允许你编写在 Web 浏览器或服务器上运行的代码。现在 JavaScript 可以用作前端或后端语言。这导致了它的受欢迎程度的提高。JavaScript 还有大量的软件包,可以为核心语言提供额外的功能,使其可以用作通用语言,而不仅仅是 Web 开发的语言。与 Python 类似,JavaScript 拥有一个充满活力的、活跃的生态系统。

尽管有这些优势,但 JavaScript 对于新程序员来说并非没有缺点。JavaScript 的语法 不像 Python 那样清晰或类似英语。它更像上面的 C 语言示例。它也没有将可读性作为关键设计原则。

做出选择

选择 Python 或 JavaScript 作为你的第一门语言都很难出错。关键因素是你打算做什么。你为什么要学习编码?你的答案应该对你的决定影响最大。如果你希望为开源做出贡献,你会发现大量使用这两种语言编写的项目。此外,许多主要不是用 JavaScript 编写的项目仍然将其用于前端组件。在做出选择时,不要忘记你的本地社区。你是否有使用这些语言的朋友或同事?对于新的编码员来说,获得实时支持非常重要。

祝你好运,编码愉快。

标签
picture of Kojo Idrissa aka TransitionKojo
我是一名新的软件开发人员(1 年),我从会计和大学教学转行而来。自从该术语被创造以来,我就一直是开源软件的粉丝,但我以前的职业生涯不需要做太多的编码。

5 条评论

说得很对,在 Python 和 Javascript 之间做出选择非常困难。它们都是非常强大的语言。无论选择哪种语言,从一个很棒的教程开始是快速入门最重要的先决条件之一。https://hackr.io 可以用来查找最好的在线编程教程。
祝你好运。不要放弃!

这里没有提到 JavaScript (又名 ECMAScript) 的异步特性。 很多不错的客户端开发可以在无需关心异步的情况下完成,因为浏览器事件循环倾向于向程序员隐藏这种复杂性。 但在 Node.js 环境中就不是这样了,异步和回调从一开始就是必需的。 想象一下,如果写出以下代码会造成怎样的困惑...

fs.open (file);
console.log("文件已打开。");
fs.write ("Hello, world");

然后收到...

"文件已打开。",紧接着是一个试图写入未打开文件的异常。

关于最初的问题:你想让程序在哪里运行? 你想让程序做什么? 并且坚持目前给出的选择,我强烈建议新手限制 JavaScript 的使用在浏览器端,而 Python 用在服务器端。 JavaScript 最初就是为浏览器设计的,将其应用于服务器端 (Node.js) 会增加概念上的复杂性,应该在一开始就避免。

我永远不会向新的程序员推荐 JavaScript。 它是一种不必要地低效、马虎的语言,并且随着代码量的增加,它会变得越来越混乱。 它之所以存在于所有浏览器中,是因为法令,而不是因为它本身优秀; 没有提供任何替代语言来进行公平竞争。

即使是汇编语言也会是更好的选择,至少学生可以亲身体验是什么让 CPU 运行更快或更慢。

对于第一门语言,我认为两件事很重要:学习好的原则和获得积极的反馈。 这里需要一个平衡,我认为 Python 在这方面做得很好。 与 JavaScript 复杂的语法相比,Python 的入门门槛非常低 —— 你如何向一个新手解释所有大括号和分号的必要性? 更别提解释源代码是如何进入由浏览器渲染的网页文档中的了……对于第一次接触代码的人来说,这太多了。

此外,对于 Python 初学者来说,资源非常丰富,无论是像 www.brainstemschool.com 这样的电子书,还是像 code.org 或 Khan Academy 这样的教程和练习。

JavaScript 也有很多资源,但我认为初学者没有足够的背景知识来使其有意义和有动力。

“在这种情况下,只有一种选择。如果代码不是这样结构的,它就无法工作”

你错了。 你的有趣的 Python 函数至少可以用其他 2 种方式编写。
def fun(x)
no_fun() if x == 0 else big_fun(x)

fun = lambda x: no_fun() if x == 0 else big_fun(x)

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.