故事的继续
那一年是 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 并打开声音,需要经常敲着手鼓跳舞,并纠正一些配置。
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。
UNIX 百科全书 - 我读的第一本书之一
我把我慈爱的祖父母和父母给我的所有钱都花在了买书上。 下一本书是《21 天的 C++》。 书名很吸引人,所以我没有看其他质量更高的书。 尽管如此,在大约三周的时间里,我还是从书中复制了所有资源,并且我已经了解了 C++ 的一些内容。 尽管我可能不再理解这些清单中所写的内容。 但还是有进步。
如果你问我哪本书对你的职业生涯影响最大,我会毫不犹豫地回答——《编程的艺术》——D. Knuth。 这是大脑的重新布线。 我无法确切地告诉你这本书是如何进入我手中的,但它对我未来的职业生涯产生了最深远的影响。
编程的艺术——必读
我主要在广播市场买书,那里只在周日开放。 早餐费又省了几十格里夫纳,我买了一本关于 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++编译器。
那时,我已经获得了调制解调器的互联网连接,并且我花了很多时间在最受程序员欢迎的网站上 - rsdn.ru。 C++ 在那里占主导地位,每个专业人士都可以回答我无法处理的问题。 这让我很受伤,但我明白了
我和这些大胡子家伙相差甚远,所以我需要研究一下“From and To”的优点的内里。 这种动机引导我开展了我的第一个严肃项目——我自己的 1998 C++ 标准编译器。 您可以在这篇文章中找到更详细的历史和来源
学校或自学
但让我们回到 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