Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【译】需要学习的是编程,而不是编程语言 #1

Open
reng99 opened this issue Nov 21, 2018 · 1 comment
Open

【译】需要学习的是编程,而不是编程语言 #1

reng99 opened this issue Nov 21, 2018 · 1 comment
Labels
blog a single blog translation translate somehing

Comments

@reng99
Copy link
Owner

reng99 commented Nov 21, 2018

我们不仅是程序员,而且是个(与时俱进的)学习者。鲜见的是有多少人认为他们是在学习编程的呢。

你可能在学习编程语言而不是编程本身

别对学习计算机科学(CS)不是研究计算机这种言论感到惊讶。相反的,学习CS是对自动解决问题的研究。解决问题的是计算机科学,而不是编程。这就是为什么许多CS的学生似乎不明白自己为什么要学习算法和数学。

如果之前你有去上过CS的课程,你就不会对我这里说的话感到惊讶。因为你会注意到编程和编程语言没有多大的关系。

但是,大多数自我思考的程序员会掉入这么一个陷阱:在我们意识到自己正真要做的是编程事情的时候,我们已经花了很长的时间来学习编程语言了。我自己就是一个受害者。

我花了十几年的时间学习各种编程语言。我学的越多,发现建立简单的东西就越难。我总有那么种感觉是我没找到合适的工具。但是,问题出在当我还没有意识到我要做的工作时,忘了寻找适合的工作而不是寻找适合的工具。

而且奇怪的一点是:编程语言总是在不断发展的。编程语言几乎每天都有所变化,我们很难跟上其步伐。可是,大多数优秀的程序只是使用了编程语言的一小部分。

学习编程语言的问题就好比在学习木工之前去学习如何使用木工锯,锤子和各种切割机器。木工需要注意:想法、可行性分析、测量、测试和用户行为。老木工对上面提到的注意点更感兴趣,而不是锤子和钉子。在对工作科学研究的期间,他还会花时间去检查钉子、着色板和木材等的质量。

学习编程和学习编程语言有什么区别呢

程序设置系统只需指令它一次就可以自由运行。我们每天都在做这件事情。我们告诉我们的孩子、士兵和顾客。我们给予他们或者我们自己接受到给定的指令去自由/独立地生活。比如,您的父母不需要每天都关注你并且对你人生要走的下一步做指导。他们本来可以在你生活的方方面面为你设定好。

很多学校和教育网站都会教你编程语言的语法。他们会添加些设计模式(当你忽略设计的时候),一些数学计算,如何声明变量并使用它们,数据类型以及如何声明/创建它们等的内容。

这些并不能教会你推理。通过上面的途径,你会学到些推理的方法,但是过不了多久,你会意识到自己浪费了或者花了很长时间去学习编程。

我们是通过编程解决问题,而编程语言只是协助我们的工具。编程语言就像一个个的工具盒,我们称它们为框架。它们帮助我们组织自己的想法。

如果你正在学习编程,但是你还不能够设计并且编码出一个实实在在的应用,那么说明你更多的是在学习编程语言而非编程。

有多少次我们碰到想知道怎么创建程序的人(程序员)。对于他们这些程序员来说,创建程序就是解决一个问题。他们在使用编程语言的时候就通过批判的分析解决了这个问题。但是当你解决了这个问题,你是可以使用多种编程语言去实现的。我们以平方数为例。某数的平方就是这个数字乘以本身。我们可以用各种语言来实现它,如下:

# c
function square(int * x) {
    return x * x;
}
# php
function square ($x){
    return $x * $x;
}
# javascript
function square(x){
    return x * x
}
# In Scheme (a Lisp dialect)
(define (square x) (* x x))

以上,你可以看到在实现的上面只有语法的不同,结果是一样的。这也是你可以使用任何语言,这种语言使你轻松构建任何类型软件的一个重要原因。

通过编程发现语言更容易

问题通常是人类语言。人类语言充满了限制和错误,是不能用来指导机器工作的,因为机器接收不到。

学习编程的时候,你将学习一种新的术语和工具来帮助你编写逻辑方式,这种逻辑方式是被计算机和其他程序员理解并且认同的。

通常,你将从简单且类似人类语言的符号开始,称之为伪代码。它是从人类语言到计算机编程语言的良好过渡工具。这通常为了防止你浪费时间在语言上面。这样你可以关注在推理上面。如此,你会发现组成一个良好的编程工具(语言)的核心部分。你了解什么才是正需要的,了解编程语言的核心目标。通过了解,你会不知不觉下意识去学习这种语言了。

@reng99 reng99 changed the title 需要学习的是编程,而不是编程语言 【译】需要学习的是编程,而不是编程语言 Nov 21, 2018
@reng99 reng99 added the translation translate somehing label Nov 22, 2018
@reng99 reng99 added the blog a single blog label Dec 7, 2018
@TBLGSn
Copy link

TBLGSn commented Mar 24, 2019

@reng99
修改建议:
1 . 你就不会对我这里说的话感到惊讶 → 你就不会诧异于我之前所说的话.
2 . 但是,大多数自我思考的程序员会掉入这么一个陷阱 → 大多数独自思考(而不与其他人交流经验)的程序员会掉入这么一个陷阱
3. 在我们意识到自己正真要做的是编程事情的时候 → 在我们意识到我们真要做的是"编程"这件事时
4. 我自己就是一个受害者。 → 我自己就是这个陷阱的受害者之一。
5. 但是,问题出在当我还没有意识到我要做的工作时,忘了寻找适合的工作而不是寻找适合的工具。 →
但是,问题是,当我甚至不知道该做什么工作的时候,我忘记了去寻找正确的工作而不是正确的工具。
6. 学习编程语言的问题就好比在学习木工之前去学习如何使用木工锯 →
学习编程语言的问题就好比在学习木工手艺之前去学习如何使用木工锯
7. 程序设置系统只需指令它一次就可以自由运行。 → 编程就是只给系统一次指令能使系统自由运行(的一件事情)。
8. 我们是通过编程解决问题,而编程语言只是协助我们的工具。 → 我们通过编程解决问题,而编程语言只是协助我们的工具。
9. 有多少次我们碰到想知道怎么创建程序的人(程序员)。 → 有多少次我们遇到的人(学习者)仍然在思考如何创建一个程序。
10. 对于他们这些程序员来说,创建程序就是解决一个问题。他们在使用编程语言的时候就通过批判的分析解决了这个问题。 → 对于真正的程序员(而不是学习者)来说,一个程序就是一个需要去解决的问题,在使用任何编程语言之前,他就已经通过批判性分析解决了这个问题。
11 . 但是当你解决了这个问题,你是可以使用多种编程语言去实现的。 → 但是,当你解决这个问题时,你能够使用任意的编程语言去编码,(以实现你的方案)。
12 . 结果是一样的→ 解决方案是一样的.
13 . 这也是你可以使用任何语言,这种语言使你轻松构建任何类型软件的一个重要原因。 →
这是为什么您几乎可以使用任何编程语言来轻松的构建任何类型的软件的主要原因之一。
14 . 通过编程发现语言更容易 → 通过编程更容易"发现"一种语言
15 . 一种新的术语和工具 → 新的术语和新的工具
16 . 你了解什么才是正需要的,了解编程语言的核心目标。通过了解,你会不知不觉下意识去学习这种语言了。 → 你(将)理解(到)什么是(你)真正需要的,理解到编程语言的核心目标。然后,你(就会发现)在不知不觉中你学到一门语言。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blog a single blog translation translate somehing
Projects
None yet
Development

No branches or pull requests

2 participants