【译】需要学习的是编程,而不是编程语言
我们不仅是程序员,而且是个(与时俱进的)学习者。鲜见的是有多少人认为他们是在学习编程的呢。原翻译传送门is here
你可能在学习编程语言而不是编程本身
别对学习计算机科学(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))
复制代码
以上,你可以看到在实现的上面只有语法的不同,结果是一样的。这也是你可以使用任何语言,这种语言使你轻松构建任何类型软件的一个重要原因。
通过编程发现语言更容易
问题通常是人类语言。人类语言充满了限制和错误,是不能用来指导机器工作的,因为机器接收不到。
学习编程的时候,你将学习一种新的术语和工具来帮助你编写逻辑方式,这种逻辑方式是被计算机和其他程序员理解并且认同的。
通常,你将从简单且类似人类语言的符号开始,称之为伪代码。它是从人类语言到计算机编程语言的良好过渡工具。这通常为了防止你浪费时间在语言上面。这样你可以关注在推理上面。如此,你会发现组成一个良好的编程工具(语言)的核心部分。你了解什么才是正需要的,了解编程语言的核心目标。通过了解,你会不知不觉下意识去学习这种语言了。
- 后话:翻译得不好得地方还请看官指出,欢迎多多交流@~@!原文Learning programming is different from learning a programming language
【译】需要学习的是编程,而不是编程语言相关推荐
- 你应当如何学习C++(以及编程)(rev#1)
你应当如何学习C++(以及编程)(rev#1) By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) JavaScript是世界上最受误解的语言,其实 ...
- 初学者,你应当如何学习C++以及编程-转
Javascript是世界上最受误解的语言,其实C++何尝不是.坊间流传的错误的C++学习方法一抓就是一大把.我自己在学习C++的过程中也走了许多弯路,浪费了不少时间. 为什么会存在这么多错误认识?原 ...
- 你应当如何学习C++(以及编程)
你应当如何学习C++(以及编程)(rev#1) By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) Javascript是世界上最受误解的语言,其实 ...
- python网络编程要学吗_总算发现如何学习python网络编程
为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...
- 学习C/C++编程有什么条件,没基础能学C++开发吗?来了解一下吧!
最近指导初学编程的小伙伴学习C/C++编程,但是在学习的过程中有小伙伴询问了不少的问题,下面小编就和大家分享一下学习C/C++编程有什么条件以及没有基础能否学习C++软件开发. 相信大家在学习编程之时 ...
- 从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用
从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用 原文地址:http://blog.yundiantech.com/?log=blog&id=10 前面介绍了使用F ...
- 初学者值得一看:什么是编程/C语言,编程学习建议,编程解疑与误区注意
文章目录 :star: 初学者值得一看:什么是编程/C语言,编程学习建议,编程解疑与误区注意 1.什么是编程语言 2.什么是C语言与我的强烈建议 - 先学C,而不是c++,java等 3.C语言的发展 ...
- 启发国内学子学习少儿机器人编程教育
近几年,少儿编程十分火热,作为人工智能时代的新兴科目,少儿编程成为许多家长提升孩子思维与能力不二之选."双减"意见落地,除教培行业外,也受到了家长们的热切关注.我们都知道,&quo ...
- 学习(Java Web)编程技术要点及方向; 完成项目的要决
本文亮点: 传统学习编程技术落后,应跟著潮流,要对业务聚焦处理. 要Jar, 不要War:以小为主,以简为宝,集堆而成. 去繁取简 Spring Boot,明日之春. 集堆综合技术如 jHipster ...
- 读刘未鹏老大《你应当怎样学习C++(以及编程)》
标签(空格分隔): 三省吾身 原文地址:你应当怎样学习C++(以及编程) 本人反思自己这些年在学校学得稀里糊涂半灌水. 看到这篇文章,感觉收获不少.仿佛有指明自己道路的感觉,当然真正困难的还是坚持学习 ...
最新文章
- Re: 求助:5道算法题
- ai怎么画循环曲线_AI插画设计,用AI制作一个只可爱的短腿柯基插画
- Java状态模式实现工作流_关于使用“状态模式”做工作流概要。
- html background缩放,background-size使用详解
- [渝粤教育] 广东-国家-开放大学 10259k2_经济学基础_21秋考试
- 【项目管理】管理良好沟通
- 微信小程序 【笔记003】小程序的事件处理
- js实现sleep休眠
- linux sort命令 性能,Linux sort 命令简单使用
- SpringBoot-从入门到放弃(二) 开发环境的搭建
- 什么软件能解答c语言的题,C语言课本习题及解答.pdf
- commons-fileupload文件上传
- linux 挂载windows共享目录 is not a valid block device
- Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单标识符
- vs2015编译ffmpeg
- eps如何建立立体白模_EPS 三维测图系统(垂直摄影)快速入门手册.pdf
- java script特效_javascript 常用特效(40种)
- Ubuntu完美安装QQ
- 宾馆如何实现WiFi无线上网短信认证?
- 安全需求可划分为物理安全、网络安全、系统安全和应用安全,下面的安全需求中属于系统安全的是(67),属于应用安全的是(68)。...