我今天才知道:学习编程和学习编程语言是两码事
关注▲ W3Cschool▲ ,每天一篇文章,与你共同成长
作者丨zooboole
译者丨galois
校对丨削微寒
大多数程序员、初学者都以为自己正在学习编程,其实并不是,而是在走弯路。
你可能正在学习一门编程语言,而不是编程本身
计算机科学不是学习计算机,很震惊吧。相反,它是关于借助计算机来自动解决问题的一门学问。解决问题才是计算机科学,而不是写代码。这就是许多计算机科学专业的学生,似乎不理解他们为什么学习算法和数学的原因。
如果你以前上过计算机科学的课,那么你不会对此感到惊讶。因为你会注意到编程与编程语言几乎没有关系。思考一下,为什么伪代码在这些课程中如此常见。
但大多数程序员总是会落入陷阱。我们学了十几年编程语言,才意识到自己真正需要学的是编程,而我本身就是受害者。
我花了十多年的时间来学习各种编程语言。我学的编程语言越多,构建简单的东西就越困难,我感觉找不到正确的工具。但问题是,当我不知道如何下手时,我忘记了应该去探索要做什么,而不是寻找正确的工具。
编程语言的奇怪之处在于它们总是在变化。编程语言几乎每天都在变化,跟进非常困难。而且大多数优秀的程序仅用到了编程语言的一小部分。
优先学习编程语言的问题就像在学习木工之前学习如何使用木工锯、锤子和各种切割机。木工需要注意:想法、可行性分析、度量、测试、用户使用习惯,老木匠更关注这些。而不是锤子和钉子这些东西。在对工作进行科学研究期间,他还将花时间检查钉子、着色剂、木材等的质量。
学习编程和学习编程语言有什么区别?
“编程” 通过给出一条指令来使系统自动运行。我们每天都这样做,我们教我们的孩子、士兵、客户。我们发出或收到指令,要求自由或独立地按照规定的方式进行。你的父母不需要一直跟着你,并指导你生活中的每一步,他们已经在之前生活中的许多方面对你给予过指导(指令)。
大多数学校和教育网站都会教授编程语言的语法。他们还会添加一些设计模式(而你可能恰好忽略了设计模式是什么)、一些数学计算、如何声明变量以及如何使用它们,数据类型以及如何声明和创建它们。
上面说的那些编程语言的知识不会教你编程。当你发现时,你会觉得学习编程实在浪费时间,大把的时间。
我们用编程来解决问题,而编程语言是帮助我们解决问题的工具。
它们就像工具箱,我们称之为框架。它们可以让你的想法更有条理。
如果你正在学习编程,但仍无法设计和编写一个实际的应用程序,这意味着你要花更多的时间去学习编程而不是编程语言。
我们遇到过很多人,他们仍然不知道如何设计一个程序。对于程序员来说,一个程序是一个需要解决的问题。在涉及任何编程语言之前,需要先认真思考、理解问题。当你无论要解决什么问题时,其实都可以使用任何一种编程语言进行编码(重要的是思考要解决的问题)。
让我们以计算平方为例。计算一个数的平方,对自身进行多次乘法计算。我们可以用多种语言来实现它,例如:
用 C 语言
function square(int * x) {
return x * x;
}
用 PHP
function square ($x){
return $x * $x;
}
用 JavaScript
function square(x){
return x * x
}
用 Scheme(一种 Lisp 方言)
(define (square x) (* x x))
你会注意到,语法只决定具体实现,而解决问题的方法是相同的。这就是你几乎可以使用任何你愿意使用的语言,构建任何类型的软件的主要原因之一。
通过编程更容易理解一门语言
人类语言是个问题,因为人类语言充满局限和错误,所以机器无法直接理解。
在学习编程时,你将学习新的术语和新的工具来编写逻辑,这样计算机或其他程序员也可以理解并达成共识。
通常,你将从一个简单的、类似人类语言,被称作伪代码的语言开始。它是从人类语言到计算机编程语言的很好的过渡工具,这样做是为了防止你在编程语言上浪费时间。如此,你就可以完全专注于问题的本身和解决的逻辑。通过这一过程,你将发现一个好的编程工具(语言)的核心部分,你就知道那些是重要的、你所需要的(如果你需要用锤子砸东西,就先学砸东西,钉钉子暂时用不到就先不学)。
这样一来,你就会在不知不觉间就学会一门编程语言(完全掌握锤子的用法)。
参考资料
Learning programming is different from learning a programming language: https://phpocean.com/blog/article/learning-programming-is-different-from-learning-a-programming-language/80
-End-
编程狮(W3Cschool)
学编程,从W3Cschool开始
微信扫描二维码,关注公众号