译注:本文来自phpocean,使用机翻后由Mr.Wei校对。[语言往往给程序员带来的成就感往往让其忘了初衷,当你不再买各种《XXX从入门到精通》就说明你要么放弃了要么明白了。_]
我们都是程序员,我们都是学习者。看到有多少人(学习者)把时间浪费在毫无意义的事情上(bashing their head against the walls),以为自己在学习编程,这真是令人惊讶。
您可能正在学习一种编程语言,而不是编程本身
知道计算机科学不研究计算机,不要感到惊讶。相反,它是使用自动化解决问题的研究。问题解决是计算机科学,而不是编程。这就是为什么许多计算机科学专业的学生似乎不明白他们为什么要学习算法或数学。
如果你以前上过计算机科学课,你不会对我在这里说的话感到惊讶。因为您可能已经注意到,编程与编程语言的关系不大。问问自己为什么伪代码在这些课程中如此常见。
但是,大多数自我思考的程序员总是落入陷阱。我们学习编程语言几十年之后,才真正意识到我们必须做的工作是:编程。我自己就是一个受害者。
我花了十多年时间一点一点地学习各种编程语言。我学得越多,就越难建立简单的东西。我有一种找不到合适工具的感觉。但问题是,当我甚至不知道要做的工作时,我忘了寻找合适的工作而不是正确的工具。
编程语言的奇怪之处在于它们总是在进化。编程语言几乎每天都在变化。很难跟进。大多数好的程序只使用编程语言的一小部分。
首先学习编程语言的问题就像在学习木工之前学习如何使用木工锯子、锤子和所有的切割机一样。木工需要注意的事项:想法、可行性分析、测量、测试、客户行为。高级木匠会对那些东西比锤子和钉子更感兴趣。在工作的科学研究期间,他还会花时间检查钉子、着色剂、木材等的质量。
学习编程和学习编程语言有什么区别?
编程就是通过只给系统一次指令来自由操作系统。我们每天都这样做。我们教育我们的孩子,我们的士兵,我们的顾客。我们给予他们或接受指示以自由/独立的方式生活。你的父母不需要跟随你,指导你在生活中的每一个举动。他们已经在生活的许多方面给你编程(设定了程式)了。
大多数学校和教育网站都会教授编程语言的语法。它们会添加一些设计模式(尽管您忽略了确切的设计是什么)、一些算术计算、如何声明变量以及如何使用变量、数据类型以及如何声明/创建它们。
这不能教你推理。使用这种方法,在后来您将学会推理方法。这会让你觉得自己在浪费时间,或者花了很多时间去学习编程。
我们用编程来解决问题,而编程语言就是帮助我们解决问题的工具。
它们就像工具箱。我们称之为框架。它们帮助你组织你的思想。
如果您正在学习编程,但仍然无法计划和编写真正的应用程序,这意味着您对编程语言的了解要多于对编程的了解。
有多少次,我们遇到的人(学习者)仍然不知道如何创建一个程序。对于程序员来说,程序是一个需要解决的问题。他通过批判性分析解决了这个问题,甚至在涉及到任何编程语言之前。当您解决任何问题时,它可以用任何编程语言编写。我们以求平方为例。为了求平方,我们自己乘以它。我们可以用各种语言来实现它,比如:
在C语言中
function square(int * x) {
return x * x;
}
在PHP语言中
function square ($x){
return $x * $x;
}
在Javascript语言中
function square(x){
return x * x
}
在Scheme语言中
(define (square x) (* x x))
您可以注意到,语法只有在实现中起作用。结果是一样的。这也是为什么你几乎可以使用任何编程语言的主要原因之一,在这种语言下,你可以更轻松地构建任何类型的软件。
通过编程探索一门语言更容易
问题通常是人类语言。人类的语言充满了局限性和错误。因为机器没有感觉,所以不可能用它来指导机器。
在学习编程时,您将学习一种新的术语和新工具,以帮助您以计算机或其他程序员能够理解并同意的方式编写逻辑。
通常,您会从一个简单的、类似人类语言的符号“伪代码”开始。它是人类语言向计算机编程语言过渡的好工具。这通常是为了防止你在语言上浪费时间。这样你就会完全专注于推理。通过这些,您将发现组成一个好的编程工具(语言)的核心部分。你知道到底需要什么。您了解编程语言的核心目标。有了它,你在不知不觉中学会了它。