updated:
迟到的「给编程初学者的发表信」
发表于01/02/2021 作者Ein Verne | 查看修订历史
这些天翻箱倒柜,翻出来一些大学时候的文档,其中一篇是当时上外教课时打印给我们的材料,虽然可以看得到当时同时上面做过笔记,但现在已经完全不记得有这样一份文档的存在了。但回过头再看文档的内容,每一句话都是非常珍贵的建议,是一个那个时期完全需要读一下的材料,但当时却并没有好好珍惜。给那些想开始编程的人公开信”,如果记得没错的话这份文档交到我手上的时候,应该就是我刚去学习如何编程的时候。如果当时就能够理解这一份文档内容的话,这些多年来我肯定能少走过多的弯路。
在结合到最近陆陆续续看过关于认知的一些书,才发现我自身的问题并非在于看得东西不够多,而是没有完全理解我曾经看过的东西。就如这一份文档那样,现在的时间来看文档上层叠的内容都是当下非常好的建议,而当时的我并不理解,所以自然而然就忘记了这一份文档上的建议。
先来总结一下这一份文档中作者提出来的几个建议:
- 开始创造一些有趣的东西。你需要毫不犹豫的开始做一些事情,而不是纠结于先开始学习,或者设置编辑器。
- 首先,固定算法和数据结构。开始的时候不要在意算法和数据结构。当然作者不是说算法和数据结构不重要,而是在起初的时候,不要在意算法和数据结构的细节,而是在学习和尝试的过程之中体会其的作用,记住算法和数据结构的名字,当真正要用到的时候深入了解,并切身体会它们的特定应用场景。当你真正需要他们的时候,可以用自己的熟悉的语言实现。
- 选择一种好的语言。选择一门你觉得可以在短时间内通过它生产出内容的语言。当完成一个任务并看到看到才是激励继续的动力。
- 不要选择那种需要笨重的IDE才能运行的语言,迅速的产生成果才是唯一的目标
- 选择一个好的编辑器,编辑器之于程序员就相当于弓之于弓箭手。
- Vim,许多Linux发行版的替代编辑器,虽然入门和学习曲线比较陡峭,但是是一个学习了终身收益的工具
- Emacs,同样很有陡峭的学习曲线,但同样强大
- 使用一个可以教你一些东西的操作系统,选择一个可以学习到的操作系统。当前主流的桌面操作系统也只有Windows,Linux和macOS,建议你选择一个合适的Linux发行版,作者的观点是Windows不会教你任何事情,但是使用Linux你能收获更多。我曾经花了一下将将所有的资料和应用切换到Linux Mint,我也使用这个发行版大约6年左右了,虽然确实确实实会遇到一些问题,但正是解决这些问题的过程,让我从中学习到了很多东西,就像Linux的启动过程,Linux下启动应用程序脚本,以及关于磁盘的配置,网络的配置等等。
- 不要将文件复制粘贴到备份内容中。作者在这边推荐了Git,而当年我们在学校学习的还是SVN,真正将Git运用到方方面面我也是这些年来才真正实施的,以前只是拿来作为代码的版本管理,而之后我用Git来管理任何可见的文本,比如博客,比如笔记,比如字幕:配置。再结合GIT中worktree,GIT中的子树等等的功能,可以在任何一台电脑上迅速恢复我的工作环境。
- 知道从哪里获得帮助。知道如何寻求帮助,社群,StackOverflow,IRC,都是可以获取帮助的渠道,而对于我真正学会使用StackOverflow则是要到好几年之后独自学习Cocos-2x的时候,因为参考资料少,官方文档也不全面,StackOverflow帮助了很多,那个时候我才理解到互联网的互帮互助以这样的方式来实现的,那以后也曾经花了替换去积极回答别人的问题。
- 发展您的网络礼节。遵守网络礼仪,学会如何提问,好好地阅读一下提问的哲学对我来说又是在读完这篇文档之后好几年才真正理解的。
- 与人见面,因为书只教您一些日常知识。你不是这个领域唯一的程序员,交一些朋友和他们一切完成一些事情,你可以学到比图书更多的东西。这些年看技术书籍除非一些比较基础的算法大部分的书籍都会在出版之后不久便过时,但是People会随着时间改变。
- 编写开源代码。如果代码有用,别人回来使用或者修正你的代码。你也可以通过其他人添加的代码和提交的修改建议来学习并巩固你的编程技能。为开源项目编写代码不需要一个巨大的项目,你可以从最小的代码开始,一段一段下载YouTube视频的代码。当我看到这一段代码的时候,正好发生了GitHub下架youtube-dl项目,之后经过复杂的程序又恢复的事件,原始作者也正好出现出现被发现的youtube-dl这个项目诞生的背景。[[202011032314-GitHub-take-down-youtube-dl]]
文中的内容大部分内容都在我之后对编程这个领域进一步的认识之后,陆陆续续才发现这每一条建议的可贵之处。的信,但肯定一个专业领域前辈所写的内容对后来者的启发意义都是巨大的。
附录
给那些想开始编程的人的一封公开信
首先,欢迎加入博爱。没有太多人想要创造东西并解决问题。你是一个 黑客。您是想做点有趣的事情的人之一。
“当您不创造事物时,您就会被自己的品味而非能力所定义。”
– WhyTheLuckyStiff
用少量盐把下面的单词拿出来。所有这些都来自我–一个贴标签的程序员。我喜欢让事情起作用,而不是坐在某个东西上并对其进行过度优化。
开始创建一些有趣的东西。那是一个很好的开始!如果您说“需要在学习之前先学习”,那么您将无法开始。每个人都必须从某个地方开始。启动您的编辑器并开始编写代码。
这是一些重要的事情,人们可能会称之为坏建议,但是我确定当我说完原因后,您会支持我。 首先,固定算法和数据结构。 在大多数简单应用程序中,它们没有通用的用例。您以后可以在需要时学习它们。在一段时间内,您将了解在某些情况下应采取的措施。知道他们的名字和他们的所作所为足以能够捡起一些纸,将其除尘并实施。那就是……如果没有可用的库(其他程序员的可重用代码),则可以使用您选择的编程语言来实现。
选择一种好的语言。您认为可以在短时间内产生有用的东西。
因此,不要让C成为您的第一语言。这可能会使您以真正的古怪的方式做事感到满意。C是解决汇编语言问题的方法。它提供了比其著名的前身-汇编语言更好的语法糖。但是今天,C(或C ++)已经不是一种可以很快产生某些东西的语言。我建议您使用动态语言-我不会保留任何选择。选择一种您认为可能会满意的语法(和文档)。为此,您可能要花一些时间尝试几种语言。选择这种语言的目的不是为了让您感觉更好,而且编程很容易。更快地完成工作并能够看到输出,这会激发您的动力。不要选择需要特殊重量级IDE(可帮助您编写和运行代码的工具)的语言来更好地使用该语言进行编程。您只需要一个文本编辑器。
选择一个好的编辑器。
编辑者是程序员,就像弓箭手是弓箭手一样。这是一些入门的编辑器…
- SublimeText 2 –如果您刚刚开始,建议使用。
- Emacs –巨大的学习曲线。复杂的快捷键。为了能够对其进行自定义,您需要学习Emacs Lisp。
- Vim –为简单起见,很多人使用它,并且默认情况下Linux发行版附带它。我使用Emacs已有2年,然后切换到Vim,以逃避emacs复杂的按键操作以及当我的两只小手指开始受伤时。必须知道vim击键。当您进行远程工作并尝试从计算机上的某些服务器上键入代码时,您会知道,命令行中唯一没有安装的编辑器就是Vim。
小心!Emacs和Vim可能真的很老。但是它们都具有一些功能,即使是大多数现代编辑器也没有。
使用可以教您一些知识的操作系统。
Windows不会教你任何东西。使用Windows唯一了解的就是单击。exe文件来安装软件并使用它。乍一看似乎很酷,但是从长远来看,当您必须部署应用程序时,尤其是当您希望成为一名Web开发人员时,您将需要至少Linux的基础知识。Linux还允许您按自己的方式自定义内容。Mac也很酷,但我认为您现在买不起。
不要将文件复制粘贴到备份内容中。
在业余程序员中,通常将文件复制粘贴到某个临时目录中以进行备份。那是他们似乎知道的唯一方法。停下!使用版本控制软件。我强烈建议Git,因为它很流行且易于使用。它拥有良好的社区和资源来支持新来者。(除了Git,还有汞,uri石,化石等。但是从Git开始。我不会因为建议Git的原因而打扰您)。
知道从哪里获得帮助。
加入您可以关联的社区(使用您使用的工具)。StackOverflow是面向程序员的Facebook。没有状态消息和评论。相反,有问题和答案。还学习使用IRC。它是聊天室的一种旧形式,现在被大多数开发人员用来共享信息和互相帮助。
发展您的网络礼节。
知道什么时候问问题。您面临的大多数问题可能已经被其他可能已经在互联网上发布答案的人偶然发现了。在IRC或任何论坛上提问之前,首先要先Google(或者我应该先说blekko),看看是否已经有解决您的问题的方法。IRC需要耐心。请记住,人们是出于善意免费帮助您的。有时,聊天室中的某个人可能需要几个小时才能回复您。因此,请等到他们这样做。此外,要有礼貌。这是一个很小的世界。业力好坏都回来了。
结识人们,因为书只教你一些常规知识(*哦,他们\说书“书”已经死了* )。**
当您修修补补或向做这些的人学习时,会学到一些街头智慧。漫游,遇见人们并打个招呼。您不是您所在位置的唯一程序员。交朋友,并与他们做事。如果您已经注意到,当几个极客聚在一起时,无论对话的起点是什么,它总是最终会变得技术性。它一定会发生。好好享受。编程已有很多年了,我可以告诉你,我从书本和文章中所学到的东西无非是直到我开始与人们见面并与他们取得6年的技术往来为止。所以我总是说我已经编程6年了,因为那是我开始与人会面并感到我真的开始学习的时候。
编写开源代码。
编写开源代码是有回报的。这不仅仅是慈善。您将留下别人可以使用并在未来几年(可能)进行改进的代码。当其他人添加到您的代码或提出更改建议时,它还可以帮助您提高技能。您开源的代码不必很大。它甚至可能是一个有用的小程序,可以下载youtube视频。此外,您会感到惊讶,您的代码通常可以帮助您开始工作并与人们进行有趣的对话。
最后,当岁月流逝时,通过写一封类似的信给其他寻求您帮助的人来回馈这种偏爱。并可能纠正我。
-
对于黑客,由黑客
Akash Manohar
来源:http://blog.akash.im/an-open-letter-to-those-who-want-to-start](https://hexo.io/docs/one-command-deployment.html)