2021-01-21

十年内自学编程


彼得·诺维格


为什么大家都这么着急?


走进任何一家书店,你就会看到如何 自学爪哇 24 小时内 除了无休止的变化提供教 C, SQL、Ruby、算法等在几天或几小时内完成。 亚马逊高级搜索 |标题: 教学, 自己, 小时, 因为: 20 发现了512本这样的书前十名中,有九本是编程书籍(另一本是关于簿记的)。类似的结果来自将"自学"替换为"学习"或"小时"与"天"。


结论是,要么人大都急于学习 关于编程,或编程是不知何故非常容易 学习比什么都重要。 费雷森 等。 在他们的书里点头 如何设计程序, 当他们说 "糟糕的编程很容易。 白痴 可以学习它 21 天, 即使他们是 傻瓜."阿布特鲁斯鹅漫画也有 他们采取.


让我们分析一下标题是什么样的 在 24 小时内C++一些孩子 可能意味着:


自学: 在24小时内,你将没有时间写几个 重要的计划,并学习你的成功和失败 他们。 您没有时间与经验丰富的程序员合作, 了解生活在一个C++。 简而言之,您 不会有时间学太多。 所以这本书只能谈一个 肤浅的熟悉,不是深刻的理解。正如亚历山大·波普说的 一点学习是件危险的事情。


C++: 在24小时内,你也许能够学习一些语法 C++(如果你已经知道另一种语言),但你不能 学习如何使用语言。 总之,如果你是,说,一个 基本程序员,你可以学会写程序的风格 基本C++语法,但无法了解C++是什么 其实好 (和坏) 。 那有什么意义呢? 艾伦 佩利斯 曾经说过:"一种语言,不会影响你的方式 考虑编程,不值得知道"。 一个可能的点是 你必须学习一点点C++ (或更可能的东西 像 JavaScript 或处理),因为您需要与 用于完成特定任务的现有工具。但你不是 学习如何编程;你正在学习完成那个任务


24 小时内: 不幸的是,这还不够,作为下一个 节显示。


十年内自学编程


研究人员(绽放 (1985), 布莱恩和哈特 (1899), 海斯 (1989), 西蒙与大通 (1973)) 已显示它 需要大约十年的时间,以发展专业知识,在任何各种 领域,包括国际象棋、音乐创作、电报 操作,绘画,钢琴演奏,游泳,网球和研究 神经心理学和拓扑学。 关键是 协商 实践: 不只是一遍又一遍, 但挑战自己 任务超出了你目前的能力,尝试一下, 分析您的性能,同时和之后这样做,并纠正 任何错误。 然后重复。 再重复一遍 似乎没有 真正的捷径:甚至莫扎特,谁是音乐神童在4岁,采取了 13年前,他开始制作世界级的音乐。 在 另一种流派,披头士乐队似乎爆裂到现场与 一串#1和1964年埃德·沙利文秀的出场。 但他们一直在利物浦和汉堡打小俱乐部, 因为 1957年,虽然他们有大规模呼吁早期,他们的第一个伟大的 关键的成功, 辣椒中士,于1967年发行。


马尔科姆 格拉德韦尔 他推广了这个想法, 虽然他专注于 10,000 小时, 而不是 10 年。 亨利·卡蒂埃-布雷森(1908-2004)还有另一个指标:"你的前10,000张照片是你们最差的。(他没有 预计使用数码相机,有些人可以在一周内达到这个目标。 真正的专业知识可能需要一生的时间: 塞缪尔·约翰逊 (1709-1784) 说:"在任何部门,卓越都可以 只通过一生的劳动获得;它不得在 较低的价格。 乔瑟 (1340 - 1400) 抱怨 "莱夫这么短, 工艺 这么久的勒恩。希波克拉底 (c. 400BC) 是众所周知的摘录 "阿尔斯朗加, 维塔布雷维斯",这是较长的报价"阿尔斯龙加,维塔的一部分 布雷维斯, 偶尔练习, 实验周利库苏姆, iudicium 困难",在英语中呈现为"生命是短暂的,[the]工艺 长, 机会转瞬即逝, 实验背信弃义, 判断 困难。 当然,没有一个数字可以是最终的答案:它似乎不合理 假定所有技能(例如编程、下棋、跳棋和音乐演奏) 可以都需要完全相同的时间来掌握,也不是所有的人 需要完全相同的时间。作为 教授。 K。安德斯·爱立信 说,"在大多数领域,这是显着多少时间,甚至最 人才需要达到最高水平。10,000 小时的数字只是让您感觉到,我们谈论的是每周 10 到 20 小时,有些人会认为这些人是天生的天才人才,仍然需要达到最高水平。


所以你想成为一名程序员


以下是我的编程成功秘诀:


获取 兴趣 在编程,并做一些,因为它是有趣的。 确保 它一直足够有趣,这样你才愿意投入你的十年/10,000小时。


程序. 最好的学习方式是 学习 通过做. 简单地说,技术上,"最高水平 未达到给定域中个人的性能 自动作为扩展体验的函数,但级别 即使经验丰富的个人可以提高绩效, 经过深思熟虑的改进。 (第366位) 和"最有效的学习需要一个明确定义的任务与 适合特定个体的难度级别, 信息性反馈,以及重复和更正的机会 错误。(第20-21号) 这本书 实践中的认知:日常思维、数学和文化 生活 是一个有趣的 参考这个观点。


与交谈 其他程序员;阅读其他程序。 这更重要 比任何书籍或培训课程。


如果你想,把在四年 大学 (或更多在 研究生院)。 这将让您访问一些需要 凭据,它会让您更深入地了解该领域, 但如果你不喜欢学校, 你可以 (与一些奉献) 得到 类似的经验,你自己或工作。无论如何,单靠书本学习不会 就足够了。"计算机科学教育不能使任何人成为专家 程序员比研究刷子和颜料可以使 某人是专家画家,"埃里克·雷蒙德说,作者 新 黑客词典.我雇佣过的最好的程序员之一 只有高中学位;他产生了很多 伟大 软件, 有他自己的 新闻组,并做了足够的股票期权购买自己的 夜总会.


工作在 项目与 其他程序员。成为最好的程序员 在某些项目上;是其他人最差的。 当你是最好的 你可以测试你的能力,领导一个项目,并激励 别人有你的愿景。 当你是最差的,你学到什么 大师做,你学习他们不喜欢什么做(因为他们 让你为他们做)。


工作在 项目 后 其他程序员。 了解其他人编写的程序。看看需要什么 了解和修复它时, 原始程序员不 周围。考虑如何设计程序,使其更易于使用 那些会支持你的人


至少学习半打 编程语言. 包括一个 强调类抽象的语言(如Java或C++),一个 强调功能抽象(如 Lisp 或 ML 或 Haskell),一 支持句法抽象 (如 Lisp), 一 支持声明性规范(如 Prolog 或 C++ 模板),以及 一个强调平行性 (如克洛朱尔或去) 。


请记住,有一个"计算机在"计算机科学"中。知道 计算机执行指令需要多长时间,获取 从内存中的字(有和没有缓存错过),从磁盘读取连续单词,并查找到磁盘上的新位置。(答案在这里。)


参与语言 标准化 努力。 可能是安西C++委员会, 或者它 可以决定您的本地编码风格是否会有 2 或 4 个空间 缩进级别。 无论哪种方式,你了解什么其他人 喜欢在语言,他们感觉多么深,甚至一点点 关于他们为什么会这样。


有好感 下车 语言标准化工作作为 尽快。


这一切在心中, 它值得怀疑的, 你能得到多远, 只是 书籍学习。 在我的第一个孩子出生之前,我读了所有的 如何 自 书,仍然觉得自己像一个无知的新手。 30个月后 当我的第二个孩子到期,我回到书 复习?不。 相反,我依靠我的个人经验,这 原来更有用,更让人放心 对我来说比写数千页 由专家。


弗雷德·布鲁克斯,在他的文章中 无银弹 确定了一个三部分的计划,找到伟大的 软件设计师:


尽早系统地确定顶级设计师。


指派一位职业导师负责潜在客户的发展,并仔细保存职业档案。


为成长的设计师提供互动和刺激的机会。


这假定有些人已经具备了 成为一个伟大的设计师;工作是正确地哄他们一起。 艾伦 佩利斯 说得更简洁:"每个人都可以被教导雕刻: 米开朗基罗必须被教导如何不。因此,它是与 伟大的程序员"。 佩利斯说,伟人有一些 超越他们训练的内部质量。 但是,在哪里 质量来自? 是天生的吗? 或者他们通过 勤奋? 作为奥古斯特古斯托 (虚构的厨师在 拉塔图耶)说,"任何人都可以做饭,但只有无所畏惧 可以是伟大的。 我认为它更多的是愿意奉献一个大 一个人一生审议实践的一部分。 但也许 无畏 是一种总结的方法。或者,作为古斯托的批评者, 安东·埃戈说:"不是每个人都能成为一个伟大的艺术家,但一个伟大的 艺术家可以从任何地方。


因此,继续购买 Java/Ruby/Javascript/PHP 书籍;你会 可能从中得到一些利用。 但你不会改变你的生活,或者 您作为程序员在 24 小时或 21 天内获得真正的整体专业知识。 努力在24个月内不断改进怎么样? 现在你开始找个地方了...


引用


布鲁姆, 本杰明 (ed.) 培养青年人才,巴兰廷,1985年。


布鲁克斯 弗雷德 无银弹, IEEE 计算机, 第 20 卷, 第 4 号, 1987 年, p. 10 -19。


布莱恩, W. l. – 哈特, N. "关于电报语言的研究: 习惯等级的获取。 心理学评论, 1899, 8, 345-375


海斯,约翰 完整的问题解算器 劳伦斯·埃鲍姆,1989年。


蔡斯, 威廉 G. 和西蒙, 赫伯特 A. "国际象棋中的感知" 认知心理学, 1973, 4, 55-81.


熔岩,约翰, 实践中的认知:日常思维、数学和文化 生活,剑桥大学出版社,1988年。


答案


典型 PC 上各种操作的大致计时:


执行典型指令1/1,000,000,000 秒 = 1 纳米秒从 L1 缓存内存获取0.5 纳米秒分支预测错误5 纳米秒从 L2 缓存内存获取7 纳米秒静音锁定/解锁25纳米秒从主内存获取100纳米秒通过 1Gbps 网络发送 2K 字节20,000 纳米秒从内存中按顺序读取 1MB250,000 纳米秒从新磁盘位置获取(查找)8,000,000 纳米秒从磁盘按顺序读取 1MB20,000,000 纳米秒发送包我们到欧洲和回来150 毫秒 = 150,000,000 纳米秒


附录:语言选择


有几个人问他们应该先学什么编程语言。 没有一个答案,但请考虑以下几点:


使用你的朋友.当被问及"什么操作系统应该 我使用, Windows, Unix, 或 Mac? 你的朋友使用。 从学习中获得的优势 朋友将抵消操作系统之间的任何内在差异,或 编程语言之间。 还要考虑你未来的朋友: 程序员社区,你将成为其中的一部分,如果你 继续。 您选择的语言是否拥有庞大的增长社区 还是一个小垂死的? 是否有书籍、网站和在线论坛 得到答案? 你喜欢那些论坛里的人吗?


保持简单. 编程语言,如C++ 和 Java 是专为专业开发由大型团队 经验丰富的程序员谁关心运行时效率 他们的代码。 因此,这些语言具有专为这些情况设计的复杂部分。 你关心的是学习编程。 你不需要这种并发症。 你想要一种被设计成易于学习和记忆的语言。 单个新程序员。


玩。 哪种方式,你宁愿学习弹钢琴: 正常,互动的方式,你听到每个音符,只要你点击一个键, 或 "批" 模式, 你只听到笔记后, 你完成了一整首歌? 显然,交互式模式使钢琴的学习更容易,也为 编程。坚持使用交互式模式的语言并使用它。


鉴于这些标准,我关于第一次编程的建议 语言将是 Python 或 方案. 另一个选择是Javascript,不是因为它为初学者设计得很好, 但因为有这么多的在线教程,如 汗学院的教程. 但您的 情况可能会有所不同,还有其他不错的选择。如果您的 年龄是一位数,你可能更喜欢 爱 丽 丝 或 吱吱 声 或 块 (年龄较大的学习者也可能喜欢这些)。重要 事情是, 你选择和开始。


附录:书籍和其他资源


有几个人问他们应该学什么书和网页 从。 我再说一遍, "单靠书学习是不够的", 但我可以 建议以下事项:


方案: 结构和 计算机程序的解释(阿贝尔森和苏斯曼) 是 可能是计算机科学的最佳介绍, 它确实 教编程作为理解计算机科学的一种方式。 你可以看到 讲座的在线视频 在这本

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 十年内自学编程 彼得·诺维格 为什么大家都这么着急? 走进任何一家书店,你就会看到如何 自学爪哇 24 小时内 除...
    han741阅读 192评论 0 1
  • Teach Yourself Programming in Ten Years Peter Norvig Why ...
    赵凯阅读 347评论 0 0
  • 彼得 · 诺维格 为什么每个人都这么匆忙? 走进任何一家书店,你会看到如何在24小时内自学Java,以及提供无尽的...
    陈兵洋阅读 151评论 0 0
  • Java语言与程序 程序是什么 程序就是现实逻辑的表达 现实逻辑清晰 你的程序表达逻辑也清晰 程序本质就是三个东西...
    徐榮康阅读 187评论 0 0
  • Zynq7000术语详解 相信大家刚看到Zynq手册的时候,对着那么一大堆缩略语肯定是一头雾水,特转来一篇文章,为...
    xiliangzhao阅读 218评论 0 0