找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 362957|回复: 0

通过看书自学编程能成功吗?十年时间自学编程,给你一个答案! ...

[复制链接]

该用户从未签到

发表于 2021-1-16 20:55:17 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Felleisen 等人在他们的书《How to Design Programs》中提到,「糟糕的编程很容易,即便是白痴都可以在 21 天内学会」时,请对这一观点表示赞同。

                               
登录/注册后可看大图


让我们来分析一下在 24 小时内学会 C++意味着什么:
自学:24 小时内,你将没有时间写几个重要的程序,并从成功和失败中吸取教训。你将没有时间和一个有经验的程序员一起工作,并理解在 C++环境中编程会是什么样子。简而言之,你将没有时间去学习多少东西。所以这本书只能说是肤浅的熟悉,而不是深刻的理解。正如 Alexander Pope 所说,只学会一点点点东西是危险的
C++:在 24 小时内,你也许能够学习 C++的一些语法(前提是你已经知道了另一种语言),但是你不能学到多少关于如何使用这门语言的知识。简而言之,如果你是一个基层的程序员,你可以学习用 C++语法编写 BASIC 程序,但是你不能学习到 C++真正的优缺点。那又有什么意义呢?Alan Perlis 曾经说过:「一种不影响你编程思维方式的语言,是不值得学习的。」有一种可能是,你必须学习一点 C++(或者是 JavaScript 之类的东西),因为你需要用现有的工具接口来完成特定的任务。但这种情况下,你不是在学习如何编程,而是在学习如何完成这项任务。

                               
登录/注册后可看大图


在 24 小时内:不幸的是,这根本不够,正如下面所说的那样。
当然,没有一个数字可以作为最终的答案,假定所有的技能(如编程、下棋、跳棋和音乐演奏)都需要完全相同的时间来掌握,或者所有人都需要完全相同的时间是不合理的。正如 K. Anders Ericsson 教授所说,「在大多数领域,即使是最有才华的人也需要很多时间才能达到最高水平,这是非常值得注意的。10000 小时这个数字让你感觉到,我们说的是一周 10 到 20 个小时。」

                               
登录/注册后可看大图


你想成为一名程序员

以下是我的编程秘诀:
(1)对编程感兴趣,因为兴趣而编程。请保持足够的兴趣,以便你愿意投入你的 10 年或者 10000 小时。
(2)编码。最好的学习方式是实践。更严格地说,「在特定领域中,一个人的最高水平不是由于经验的积累自动获得的,而是经过深思熟虑的改进,经验丰富的人也可以提高水平。」,「最有效的学习需要有一个明确的任务,对特定的人来说难度适中,还要有信息反馈以及重复试错和纠正错误的机会。」「Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life」这本书正是这一观点的有趣参考。
(3)与其他程序员交谈;阅读其他程序。这比任何书籍或培训课程都重要。

                               
登录/注册后可看大图


(4)如果你愿意,可以在大学(或研究生院)呆四年。这将使你有机会获得一份需要证书的工作,让你对这个领域有更深的了解,但如果你不喜欢学校,你可以自学或在工作中获得类似的经验。无论如何,光靠书本知识是远远不够的。「The New Hacker's Dictionary」的作者 Eric Raymond 说:「计算机科学教育不能使任何人成为一个专业的程序员,就像学习刷子和颜料不可以使某人成为一个专业的画家一样。」我雇用过的最好的程序员之一只有高中学历,他开发了许多优秀的软件,拥有自己的团队,并且拥有足够买下一个夜店的股票期权。
(5)与其他程序员一起做项目。在某些项目上你是最好的程序员,而在某些项目上你是最差的程序员。当你是最好的时候,你可以锻炼主导一个项目的能力,并用你的远见激励别人。当你是最坏的时候,你可以学习大师们做什么,观察他们不喜欢做什么(因为他们会让你为他们做自己不喜欢的事情)。

                               
登录/注册后可看大图


(6)接手其他程序员的项目,理解别人写的程序。当原来的程序员不在时,学习需要怎样理解和修复程序。想想如何设计你的程序,让那些在你之后的人维护它们更容易些。
(7)学习至少六种编程语言。包括一种强调类抽象的语言(如 Java 或 C++),它强调函数抽象的语言(如 Lisp 或 ML 或 Haskell),一种支持句法抽象的语言(如 Lisp),一种支持声明性规范的语言(如 Prolog 或 C++模板),一种强调并发性的语言(像 Clojure 或 Go)。
(8)记住「computer science」中有一个「computer」。知道计算机执行一条指令、从内存中提取一个字符(有或没有缓存)、从磁盘中读取连续的字符以及在磁盘上寻找新的位置需要多长时间。
(9)参与语言标准化工作。它可能是 ANSI C++委员会,也可以是决定你自己的本地编码风格是有 2 个或者 4 个空间缩进。无论哪种方式,你都可以了解到其他人对一种语言的喜好,他们的感受有多深,甚至可能了解他们的感受。有很好的判断力,尽快适应语言的标准化
考虑到这一切,仅仅通过书本学习你能走多远是个值得怀疑的问题。
笔者是一名CC++的程序员,如果你想更好的提升你的编程能力,好好学习C/C++编程知识成为高薪软件开发工程师的话!那么你很幸运~


                               
登录/注册后可看大图


欢迎转行和学习编程的伙伴,希望能够对大家有帮助~
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-11-1 20:29

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表