我今天才知道:学习编程和学习编程语言是两码事

  • 原文地址:Learning programming is different from learning a programming language[1]

  • 原文作者:zooboole

  • 译者:HelloGitHub-galois

  • 校对:HelloGitHub-削微寒

  • 翻译工具:https://www.breword.com

大多数程序员、初学者都以为自己正在学习编程,其实并不是,而是在走弯路。

你可能正在学习一门编程语言,而不是编程本身

计算机科学不是学习计算机,很震惊吧。相反,它是关于借助计算机来自动解决问题的一门学问。解决问题才是计算机科学,而不是写代码。这就是许多计算机科学专业的学生,似乎不理解他们为什么学习算法和数学的原因。

如果你以前上过计算机科学的课,那么你不会对此感到惊讶。因为你会注意到编程与编程语言几乎没有关系。思考一下,为什么伪代码在这些课程中如此常见。

但大多数程序员总是会落入陷阱。我们学了十几年编程语言,才意识到自己真正需要学的是编程,而我本身就是受害者。

我花了十多年的时间来学习各种编程语言。我学的编程语言越多,构建简单的东西就越困难,我感觉找不到正确的工具。但问题是,当我不知道如何下手时,我忘记了应该去探索要做什么,而不是寻找正确的工具。

编程语言的奇怪之处在于它们总是在变化。编程语言几乎每天都在变化,跟进非常困难。而且大多数优秀的程序仅用到了编程语言的一小部分。

优先学习编程语言的问题就像在学习木工之前学习如何使用木工锯、锤子和各种切割机。木工需要注意:想法、可行性分析、度量、测试、用户使用习惯,老木匠更关注这些。而不是锤子和钉子这些东西。在对工作进行科学研究期间,他还将花时间检查钉子、着色剂、木材等的质量。

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

“编程” 通过给出一条指令来使系统自动运行。我们每天都这样做,我们教我们的孩子、士兵、客户。我们发出或收到指令,要求自由或独立地按照规定的方式进行。你的父母不需要一直跟着你,并指导你生活中的每一步,他们已经在之前生活中的许多方面对你给予过指导(指令)。

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

上面说的那些编程语言的知识不会教你编程。当你发现时,你会觉得学习编程实在浪费时间,大把的时间。

我们用编程来解决问题,而编程语言是帮助我们解决问题的工具。

它们就像工具箱,我们称之为框架。它们可以让你的想法更有条理。

如果你正在学习编程,但仍无法设计和编写一个实际的应用程序,这意味着你要花更多的时间去学习编程而不是编程语言。

我们遇到过很多人,他们仍然不知道如何设计一个程序。对于程序员来说,一个程序是一个需要解决的问题。在涉及任何编程语言之前,需要先认真思考、理解问题。当你无论要解决什么问题时,其实都可以使用任何一种编程语言进行编码(重要的是思考要解决的问题)。

让我们以计算平方为例。计算一个数的平方,对自身进行多次乘法计算。我们可以用多种语言来实现它,例如:

用 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))

你会注意到,语法只决定具体实现,而解决问题的方法是相同的。这就是你几乎可以使用任何你愿意使用的语言,构建任何类型的软件的主要原因之一。

通过编程更容易理解一门语言

人类语言是个问题,因为人类语言充满局限和错误,所以机器无法直接理解。

在学习编程时,你将学习新的术语和新的工具来编写逻辑,这样计算机或其他程序员也可以理解并达成共识。

通常,你将从一个简单的、类似人类语言,被称作伪代码的语言开始。它是从人类语言到计算机编程语言的很好的过渡工具,这样做是为了防止你在编程语言上浪费时间。如此,你就可以完全专注于问题的本身和解决的逻辑。通过这一过程,你将发现一个好的编程工具(语言)的核心部分,你就知道那些是重要的、你所需要的(如果你需要用锤子砸东西,就先学砸东西,钉钉子暂时用不到就先不学)。

这样一来,你就会在不知不觉间就学会一门编程语言(完全掌握锤子的用法)。

参考资料

[1]

Learning programming is different from learning a programming language: https://phpocean.com/blog/article/learning-programming-is-different-from-learning-a-programming-language/80


关注公众号,第一时间收到推送

欢迎热爱技术和开源的小伙伴加入 HG 推出的译文亦舞系列的翻译中来,可添加微信号:HelloGitHub(备注:翻译)。

“分享”让本文被更多人看到、“在看”支持我们

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值