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

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

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


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


别对学习计算机科学(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))


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


通过编程发现语言更容易


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


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


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



相关文章
|
5月前
|
C++ 开发者 Python
物理光学的编程
物理光学的编程
76 0
|
12月前
|
存储 数据格式
|
3月前
|
JavaScript 前端开发 Java
IT入门知识第二部分《编程语言》(2/10)
IT入门知识第二部分《编程语言》(2/10)
31 0
|
3月前
|
机器学习/深度学习 人工智能 前端开发
哪个编程语言更适合初学者并能快速掌握?
【7月更文挑战第2天】哪个编程语言更适合初学者并能快速掌握?
107 56
|
5月前
|
C语言
C 语言解 常见编程题(上)
C 语言解 常见编程题
66 0
|
5月前
|
C语言
C 语言解 常见编程题(下)
C 语言解 常见编程题
61 0
|
5月前
|
设计模式 算法 Java
什么是编程领域的 verbosity
什么是编程领域的 verbosity
|
人工智能 前端开发 搜索推荐
程序初学者推荐学习的三种热门编程语言
在当前的社会需求中,市场上运用最多的、最为广泛的、最热门的、最常用的编程语言可以大致分为一下三种:C语言、JAVA语言、Python语言。
|
程序员
编程会是你自由职业的一种选择吗
欢迎来到我的小院,前几天有个曾经我带过小弟问我,大侠我最近想从事自由职业,你能帮我参谋参谋嘛,我很高兴他来咨询我。思考后,我写了这段建议,希望可以帮助到他,同时也能给想从事自由职业的年轻人一些参考。
编程会是你自由职业的一种选择吗
|
设计模式 自然语言处理 JavaScript
7 行代码 3 分钟:从零开始实现一门编程语言
本文介绍了多种解释器实现。通过修改最后一个解释器,你应该可以快速测试关于编程语言的新想法。如果你希望有一种语法不一样的语言,就可以构建一个解析器,把 s-表达式转储。这样,你就可以干净利落地将语法设计与语义设计分开。
506 0
7 行代码 3 分钟:从零开始实现一门编程语言