编程学习不同于编程语言的学习 - lancecourse


我们都是程序员,我们也都是学习者。看到有多少人(学习者)在用头撞墙,以为自己在学习编程,真是令人惊讶。

你可能是在学习一种编程语言,而不是在学习编程本身
不要觉得奇怪,计算机科学并不研究计算机。相反,它是研究使用计算机自动解决问题的。解决问题是计算机科学,而不是编程。这就是为什么许多计算机科学的学生似乎不明白为什么要学习算法或数学。

如果你以前上过计算机科学课,你就不会对我在这里说的话感到惊讶。因为你会注意到,编程与编程语言的关系不大。扪心自问,为什么伪代码在那些课上如此常见?

但是,大多数自以为是的程序员总是落入陷阱。我们学习了几十年的编程语言,才意识到我们到底要做什么:编程。我自己也是一个受害者。

我花了十多年的时间,一点一点地学习各种编程语言。我学得越多,就越难建立一些简单的东西。我曾有过那种找不到合适工具的感觉。但是,问题是,当我甚至不知道要做什么工作时,我忘记了寻找正确的工作,而不是正确的工具。

而编程语言的奇怪之处在于,它们总是在不断发展。编程语言几乎每天都在变化。这是很难跟进的。而且大多数好的程序只使用一种编程语言的一小部分。

先学习编程语言的问题就像在学习木工之前学习如何使用木匠锯、锤子和各种切割机器。木匠需要注意:想法、可行性分析、测量、测试、客户行为,这些东西相比于锤子和钉子,木匠应更感兴趣。当然,在他对工作的科学研究中,他也会花时间检查钉子、着色剂、木材等的质量。

学习编程和学习编程语言之间有什么区别?
编程是通过只给一个系统发出一次指令,让它自由运行。我们每天都在做这一切。我们教我们的孩子,我们的士兵,我们的客户。我们给他们或我们接受指令,让他们自由/独立地以特定的方式生活。你的父母不需要跟随你,指示你在生活中的每一个举动。他们会在生活的许多方面已经对你进行了编程。

大多数学校和教育网站会教授一种编程语言的语法。他们可以添加一些设计模式(而你忽略了设计到底是什么),一些算术计算,变量如何声明和如何使用它们,数据类型和如何声明/创建它们。

但并没有教你推理思考

用这些的方法,虽然迟早你会发现推理方法,但要晚一些。这将使你觉得你浪费了或花了很多时间来学习编程。

我们用编程来解决问题,而编程语言是帮助我们这样做的工具。
 
它们就像工具箱。我们称它们为框架。它们帮助你组织你的思想。

如果你正在学习编程,但你还不能计划和编码一个真正的应用程序,这意味着你学习的是编程语言而不是编程。

有多少次我们遇到的人(学习者)还在想如何创建一个程序。对于一个程序员来说,程序是一个需要解决的问题。在涉及到任何编程语言之前,他通过批判性分析来解决这个问题。当你解决任何问题时,它可以用任何编程语言进行编码。让我们来看看方形的例子。为了使某样东西平方,我们把它本身乘以。我们可以让它在各种语言中实现,比如。

In C
function square(int * x) {
    return x * x;
}
In PHP
function square ($x){
    return $x * $x;
}
In Javascript
function square(x){
    return x * x
}
In Scheme (a Lisp dialect)
(define (square x) (* x x))


你可以注意到,在这些实现中,只有语法是不同的,而解决方案是一样的。
这也是为什么你几乎可以使用任何你更喜欢的编程语言来构建任何类型的软件的主要原因之一。

通过编程更容易发现一种语言
一般来说,问题在于人类的语言。人类的语言充满了限制和错误。它不可能用于指导机器,因为它们不能感觉到。

在学习编程时,你会学习新的专业术语和新的工具,以帮助你以计算机或其他程序员能够理解和同意的方式来写你的逻辑。
 
通常情况下,你会从一个简单的、类似人类语言的符号开始,称为伪代码。这是一个从人类语言到计算机编程语言的良好过渡工具。这样做通常是为了防止你在语言上浪费时间。这样一来,你就可以完全专注于推理。通过这些,你会发现构成一个好的编程工具(语言)的核心部分。你明白到底需要什么。你理解了一种编程语言的核心目标。有了这些,你就会在不知不觉中学会它。