编程生涯。 第 2 章 学校或自学

故事的继续 《程序员的职业生涯》.

那一年是 2001 年。 这一年发布了最酷的操作系统——Windows XP。 rsdn.ru 何时出现? C# 和 .NET Framework 的诞生年份。 千禧年的第一年。 这一年新硬件的性能呈指数级增长:奔腾 IV、256 mb 内存。

九年级毕业后,看到我对编程的不竭热情,我的父母决定让我转学到大学主修编程。 他们相信这样会更好,并且他们会在那里教我。 顺便说一句,大学这个词并不适合这所位于工业城镇郊区的机构。 这是一所普通的技工学校,和其他技工学校没有什么区别,门面上没有挂上时髦的“学院”字样的标签。
出色地。 我没有反驳我的父母,也没有质疑他们的决定。 无论如何,我是在进行自我教育,我想在这个新的地方他们会给我一些额外的知识。


上大学前的那个夏天,我开始彻底研究杂志上发表的所有可能的技术 “黑客”。 我把它读了一遍又一遍。 我特别喜欢对真正的黑客的采访以及他们的建议。
大多数很酷的黑客都在 Linux 上。 马自达(Windows)是为拉默斯设计的。 任何读过该杂志的人都会记得其中帖子的风格。 因此,在我脆弱的头脑中,两种想法相互斗争——离开Windows,还是冷静地纯粹使用Linux。
每新一期的 Hacker 杂志都给了我格式化磁盘并安装 Linux Red Hat 7 或 Windows Me 的新理由。 当然,我没有任何训练载体,我只是按照我在杂志或盗版 CD(例如《黑客的秘密》)上读到的内容进行操作。 在本着“Windows XP 又名鹦鹉——这是为家庭主妇准备的”精神的新填充之后,两个操作系统的并行安装也被删除了。 如果你想做严肃的事情,你就必须闭着眼睛在 Linux 控制台上工作。” 当然,我想破解系统,了解网络是如何工作的,并成为当时无所不能的匿名者。

磁盘被毫无遗憾地格式化了,上面安装了类Unix系统的分发包。 是的是的。 我曾经读过一篇对一位真正的黑客的采访,他只从控制台使用 FreeBSD 4.3。 同时,他还负责入侵银行和政府系统。 真是如遭雷击,我安装了5次BSD OS作为主系统。 问题是安装后,除了裸露的控制台之外什么都没有。 甚至声音。 为了安装 KDE2 并打开声音,需要经常敲着手鼓跳舞,并纠正一些配置。

编程生涯。 第 2 章 学校或自学
FreeBSD 4.3 发行版是最黑客操作系统

关于文学

我一拥有电脑,就开始购买编程书籍。 第一个是“Turbo Pascal 7.0”指南。 这并不奇怪,因为我已经从编程课程中了解了一点 Pascal,而且我可以继续自学。 问题是黑客不使用 Pascal 编写。 然后 Perl 语言很流行,或者,对于更酷的人来说,它是 C/C++。 至少他们在杂志上是这么写的。 我读到最后的第一本书是《C 编程语言》——作者是 Kernighan 和 Ritchie。 顺便说一下,我是在Linux环境下学习的
并使用gcc和KDE的内置编辑器来编写代码。

本书出版后,又购买了 UNIX 百科全书。 它重3公斤,打印在A3纸上。
这本书的正面有一个拿着干草叉的卡通恶魔的全身描绘,当时这本书在乌克兰售价为 125 格里夫纳(25 年约为 2001 美元)。 为了买这本书,我向学校朋友借了钱,剩下的钱是我父母加上去的。 然后,我满怀热情地开始学习Unix命令、vim和emacs编辑器、文件系统的结构和配置文件的内部。 几乎 700 页的百科全书被我读完,我离我的梦想又近了一步——成为一名 Kul-Hatzker。

编程生涯。 第 2 章 学校或自学
UNIX 百科全书 - 我读的第一本书之一

我把我慈爱的祖父母和父母给我的所有钱都花在了买书上。 下一本书是《21 天的 C++》。 书名很吸引人,所以我没有看其他质量更高的书。 尽管如此,在大约三周的时间里,我还是从书中复制了所有资源,并且我已经了解了 C++ 的一些内容。 尽管我可能不再理解这些清单中所写的内容。 但还是有进步。

如果你问我哪本书对你的职业生涯影响最大,我会毫不犹豫地回答——《编程的艺术》——D. Knuth。 这是大脑的重新布线。 我无法确切地告诉你这本书是如何进入我手中的,但它对我未来的职业生涯产生了最深远的影响。

编程生涯。 第 2 章 学校或自学
编程的艺术——必读

我主要在广播市场买书,那里只在周日开放。 早餐费又省了几十格里夫纳,我买了一本关于 C++ 或 Perl 的新书。 选择范围相当大,但我没有导师,所以我什么都学。 我请卖家给我推荐一些关于编程的东西。 据我所知,他从书架上拿走了《编程的艺术》。 第一卷”。 这本书显然已经被使用过。 封面的角是弯曲的,背面有一个明显的划痕,正是比尔·盖茨留下评论的地方:“如果你读过这本书,你绝对应该把你的简历寄给我,”有他的签名。 我从杂志上了解到盖茨,我认为给他发送一份简历会很好,尽管所有的黑客都在批评他。 这本书售价 72 UAH。 (15 美元),我很快乘电车赶回家学习新材料。

当然,我读到的东西有多么深奥、多么基础,我15岁的时候是无法理解的。 但我还是很努力地完成每一个练习。 有一次我什至正确地解决了一道难度等级为 25 或 30 的问题。那是数学归纳法的一章。 虽然我不喜欢学校的数学,也掌握得不好,但我已经克服了。 高德纳的分析——我坐了几个小时。
接下来,第二章介绍了数据结构。 这些链表、二叉树、栈、队列的形象和画面至今还历历在目。 在我 12 年的商业开发生涯中,我使用过大多数通用语言。
它们是 C/C++、C#、Java、Python、JavaScript、Delphi。 无论该语言被称为什么,其标准库都包含 Donald Knuth 在他的三卷书中描述的数据结构和算法。 因此,学习新东西并不需要太多时间。

第一卷很快就被读完了。 我用 C 语言重写了 Knuth 书中给出的算法,虽然并不总是有效,但练习得越多,就越清晰。 不乏热情。 看完第一卷,我毫不犹豫地跑去买了第二卷和第三卷。 我暂时把第二个放在一边,但我彻底地处理了第三个(排序和搜索)。
我清楚地记得我如何写满整个笔记本,“解释”排序和搜索算法。 就像数据结构一样,二分搜索和快速排序以闪电般的速度在我的大脑中形象化,记住它们在高德纳第三卷中的示意性外观。
鞭子到处都是念的。 即使当我出海时,附近没有电脑,我仍然在笔记本上写下算法并通过它们运行数字序列。 我仍然记得我花了多少痛苦来掌握堆排序,但这是值得的。

下一本书对我影响很大的是《龙之书》。 它也是“编译器:原理、技术、工具” - A. Aho、R. Seti。 在她之前,Herbert Schiltd 负责 C++ 高级任务。 这就是这些点聚集在一起的地方。
感谢 Schildt,我学会了编写解析器和语言解释器。 然后龙之书促使我编写自己的C++编译器。

编程生涯。 第 2 章 学校或自学
龙之书

那时,我已经获得了调制解调器的互联网连接,并且我花了很多时间在最受程序员欢迎的网站上 - rsdn.ru。 C++ 在那里占主导地位,每个专业人士都可以回答我无法处理的问题。 这让我很受伤,但我明白了
我和这些大胡子家伙相差甚远,所以我需要研究一下“From and To”的优点的内里。 这种动机引导我开展了我的第一个严肃项目——我自己的 1998 C++ 标准编译器。 您可以在这篇文章中找到更详细的历史和来源 habr.com/en/post/322656.

学校或自学

但让我们回到 IDE 之外的现实。 尽管那时我越来越远离现实生活并沉浸在虚拟生活中,但我的年龄和普遍接受的规范仍然迫使我上大学。 这真是一种折磨。 我完全不知道我在这个机构里做什么,也不知道我为什么要听这些信息。 我脑子里有完全不同的优先事项。 学习 Visual Studio 6.0,尝试使用 WinApi 和 Delphi 6。
一个很棒的网站,firststeps.ru,它让我为自己迈出的每一步感到高兴,尽管我不了解整体情况。 例如在同一技术中MFC或ActiveX。
那大学呢? 这是浪费时间。 总的来说,如果说到学习这个话题,我的学习成绩很差。 直到六年级我都是优秀学生,然后我的成绩是C,到了八、九年级我经常逃课,为此我从父母那里得到了虚幻的腰带。
因此,当我来到大学时,也没什么热情。
- 编程在哪里? 我问自己一个问题。 但上半年他不在。 但还有计算机科学、MS-DOS 和 Office,以及普通教育科目。

除此之外,我性格内向,非常谦虚。 这群杂七杂八的新人显然没有激发人们的信心。 这是相互的。 于是,各种嘲讽随之而来。 我忍了很久,直到实在受不了,在课堂上就打了其中一个犯人的脸。 是的,所以他飞到了他的办公桌前。 感谢我的父亲——他从小就教我打架,如果我真想打的话,我可以使用体力。 但这种情况很少发生;更多时候我忍受着嘲笑,等待最高沸点。
顺便说一句,罪犯对所发生的事情大吃一惊,但仍然感到自己的优越感,向我发起报复性战斗。 已经在教育机构后面的空地上了。
这并不是孩子们在学校里挥舞拳头。 有一位贵族马哈奇,鼻子被打断,流了很多血。 这家伙也不是个胆怯的人,勾拳和上勾拳都很熟练。 大家都还活着,从此再也没有人欺负过我。
在这所“程序员学院”。 很快我就完全失去了去那里的欲望。 因此,我不再去那里,父母的威胁对我没有任何影响。 奇迹般的是,我在大学的停留时间算作学校的十年级,而且我有权利进入十一年级。

一切都会好起来的,但 11 年级的成绩并不比大学好多少。 我回到了家乡的学校,遇到了一些从一年级起就一起学习的朋友,希望家乡一切都好。 只有一个细微差别:这些家伙看起来更像电视剧中的强盗,而不是我小学时的朋友。 每个人都涌入健身房来增加肌肉质量。 我像竹子。 瘦长且非常瘦。 当然,这样的恶霸同学,一只左手就能把我绑起来。
随着时间的推移,这种情况开始发生。 到这里我的战斗技巧就不再发挥任何作用了。 对于我和我曾经的母校班上的其他男孩来说,体重类别非常不同。 此外,我的思想的独特性也得到了体现。

我也没有胡思乱想,离开了学校。 我感到舒服的地方是在电脑显示器前,房间的门关着。 这是有道理的,直觉上我觉得我在做正确的事情。 而这个学校就是一个无用的活动,甚至要忍受这些一天天变得越来越复杂的嘲讽……就是这样,我已经受够了。
在课堂上又发生一次冲突后,以我为主角,我离开了学校,再也没有去过那里。
在大约 3 个月的时间里,我坐在家里,利用空闲时间学习 C++/WinAPI/MFC 和 rsdn.ru。
最后,校长实在受不了,给家里打了电话。
- “丹尼斯,你想学习吗? 或者你会离开吗? 决定。 没有人会让你陷入困境。” - 导演说
“我这就走。”我自信地回答。

又是同样的故事。 离学校毕业还有半年的时间完成学业。 别让我没有外壳。 父母放弃了我,让我自己去找导演谈判。 我来到学校校长那里。 当我进去时,她对我大喊,让我摘下帽子。 然后她严肃地问道:“我该拿你怎么办?” 坦白说,我自己也不知道该怎么办。 我对目前的状况感到非常满意。 最后她发言:
——“那么我们就这样做吧。 我和我们夜校的校长说好,你就去那里。”
- “是的”

对于像我这样的自由泳爱好者来说,夜校真是天堂。 你想去就去,要么就不去。 班上有45人,其中只有6-7人来上课。 我不确定名单上的每个人都还活着并且都是自由的。 因为只有当着我的面,同学们才偷别人的摩托车。 但事实仍然是事实。 我可以无限地提升我的编程技能,并在我真正需要的时候去学校。 我最终完成了它并通过了期末考试。 他们要求不多,我们还办了毕业典礼。 毕业本身就是一个单独的寓言。 我记得当地的土匪和同学拿走了我的手表。 而在颁发证书的过程中,一听到自己的姓氏,我就小跑着去拿文件,像一颗子弹一样飞出了学校,免得再遇到麻烦。

夏天就在眼前。 唐纳德·高德纳 (Donald Knuth) 腋下搂着海滩、大海、阳光,并做出了编写自己的大项目(编译器)的决定性决定。
待续...

来源: habr.com

添加评论