17611538698
webmaster@21cto.com

编程的乐趣

技术人生 0 1669 2022-09-07 09:36:50


图片


我喜欢编程。


我 11 岁时开始使用 Basic 编程。我算是幸运的一代,是第一个在家中使用个人电脑的人。我最先开始在Epson HX-20上自学 Basic语言 。Epson HX-20 被一些人认为是世界上第一台笔记本电脑。


我现在后悔在大学时卖掉了这段精彩的计算机历史。


我花了几个小时阅读计它附带的用户手册,并编写了第一个程序,我用它来计算每周加班工资。


接着我很快试验计算机的图形编程能力。


后来我越来越发现编程的乐趣,接下来我就被它彻底迷住了。


我的故事


我现在 51 岁,能够用 20 多种不同的编程语言,在进行了近 40 年的编程生涯之后,我很高兴地说现在仍然着迷。


在过去的 20 年里,我一直在向 15 到 80 岁的学生讲述代码职业生涯以及我对编程的无比热爱。


我强调我将“继续编程,直到有人从键盘上撬开我冰冷的手指”。这可能听起来有点病态,但已经清楚地表达了这一点。编程是我的热情所在,我很幸运能从此处得到报酬,然后去做我喜欢做的事。


在过去的 20 年里,我意识到除了自己编写代码之外,我还喜欢教别人如何写代码。


好故事里的英雄

预测未来的最好方法是发明它。

——Alan Kay

本文的配图就是我在 2007 年“每个孩子一台笔记本电脑赠一赠一”计划中购买的 XO 笔记本电脑。屏幕上运行的程序叫作Squeak Etoys。


Alan Kay 是 Etoys 的设计师,而 Etoys 是在 Squeak Smalltalk 语言中开发的。


我是在高盛工作时遇到了 Alan Kay。当我还是一名员工,他被邀请参加GS Panel 的会谈,我经常观看这次演讲并重温这段经历。2015 年 2 月 26 日,当我在这次谈话的同一天见到 Alan Kay ,他很友好地为我的 XO 笔记本电脑签了名。


好故事里往往有英雄。Alan Kay 是我儿时的程序英雄之一。我 11 岁时不知道真人是谁,很想见到他。直到我二十多岁时,终于有机会遇到了Alan。


我知道注定要见到他,他改变我的人生,我也最终遇到我的英雄。


1980 年代


在 80 年代中后期,我学习了一堆编程语言,包括 BASIC、FORTRAN、COBOL、Pascal、Logo、Prolog、Dbase III+ 和 Clipper '87。


我在 1980 年代中期自学了 Dbase III+,然后高中毕业后立即找到了一份工作,担任Clipper Summer '87 的兼职顾问。这帮助我支付了在罗格斯纽瓦克/新泽西理工学院的大学学费。


1990 年代


完成学业后,我在新泽西州蓝十字蓝盾 (BCBSNJ) 的评级和承保部门找到了一份程序员的工作。


我开始使用 Clipper 5.x 进行编程,后来在称为 CA-Visual Objects 的 Windows 版本的 Clipper 中学习和编程。我在 DOS、Windows 3.1、OS/2 和 Windows 95/NT 中度过了我早期的职业生涯。


90 年代中期,BCBSNJ 将其 IT 部门外包给 Integrated System Solutions Corporation (ISSC),后者后来成为 IBM 全球服务部。


我一夜之间成为了 IBM 员工。起初我还有些惴惴不安,但事实证明这是我职业生涯中的绝佳机会。在 IBM 工作将使我走上学习重要编程语言的道路。在此过程中,我才真下发现 Alan Kay 以及他对现代计算的影响。


1994 年 10 月,我参加了一个为期 5 周的 Smalltalk 面向对象编程的沉浸式实践课程。该计划是 IBM 技术大学的一部分。我在佐治亚州亚特兰大用 IBM 的 VisualAge Smalltalk 学习了 OO 编程和设计 5 周。这些课程每天持续 6 到 8 个小时,由 OO 设计和 Smalltalk 方面的优秀行业专家(如Ghica van Emde Boas )教授。我每天花4 到 6 个小时在实验室编码和探索 VisualAge Smalltalk。我还读了 Rebecca Wirfs-Brock 撰写的第一本关于面向对象设计的书。Rebecca Wirfs-Brock 是我的另一个编程英雄。我认为自己很幸运能够签署她的两本 OO 设计书籍。


Smalltalk 进一步巩固了我对编程的热爱。这是一个优美的语言,还有有一个身临其境的学习环境。


回到工作岗位后,我积极寻找一个可以使用 IBM VisualAge Smalltalk 构建的项目。与此同时,我继续使用 CA-Visual Objects 开发应用程序。我现在能够在这种面向对象语言中应用新的 OO 编程和设计技能。我变得精力充沛,也想与他人分享这种能量。


所以我建议派更多的开发人员参加为期 5 周的沉浸式研学项目。一年后,我开始与其他两位参加 Smalltalk 沉浸式计划的开发人员一起用 IBM VisualAge Smalltalk 构建医疗保险注册系统。


我们聘请了来自 IBM 快速解决方案小组的专家导师一起工作。我们利用并学习了他们在项目上构建的持久性框架。这是一次非常棒的学习经历。


随后,我继续重新设计和实现之前在 Clipper 中编写的企业评级和承保系统。在持续了大约三年的努力中,我们聘请了 Distributed Smalltalk 的专家顾问团,他们教会了我们很多关于如何思考构建和测试分布式系统的知识。他们还向我们介绍了编程和 Smalltalk 的历史。Dan Ingalls 是我的另一位编程英雄,他写了一篇令人惊叹的论文,题为“ Smalltalk 背后的设计原则”。


千年虫+


2000 年,我决定放弃作为 Smalltalk 开发人员的美好编码生活,转而使用 Visual Basic 和更多企业流行的语言(如 Java)进行编程,因为这是当时行业关注的重点。


我以前的分布式 Smalltalk 导师告诉我去学习 Java 并成为它的专家,后来我做到了。我对未来的可能性感到高兴,但很遗憾我不得不用 Visual Basic 和 Java 编写代码。我用飞行的 DeLorean 时间机器换了一辆 Schwinn 自行车和一辆福特卡车。


2001 年我加入高盛 (GS)。最初作为应用程序架构师,晋升为副总裁,在伦敦生活了一年,成为 Controllers Technology 的 CTO,晋升为 Tech Fellow,建立了一支才华横溢的核心平台团队,在 GitHub 上为 GS 创建了一个不断发展的形象,并被提升为董事总经理。


一转眼就是十三年。在 GS 期间,我用 Java 将近 15 年,并用 Java 创建了一个集合库,该库在 2012 年作为 GS Collections 开源,并最终在 2015 年底成为Eclipse Collections 。


为什么要创建Eclipse Collections?主要原因是经过55年的 Java 编程,我厌倦了一遍又一遍地重复相同的编码模式。我看到 Java 中缺少很多东西,我在使用 Smalltalk 编程时用过很多高级特性,Java中没有。当时我发现向开发人员解释他们在 Java 中缺少什么变成一项挑战。


后来我决定用 Java 构建其缺少的一些功能。多年来,我教过许多 Java 开发人员有关 Smalltalk、OOP、OOAD、Lambdas、TDD、重构的知识。这些都是我在 1990 年代在 Smalltalk 中学到的东西。


编程是乐趣


这些年来我教给开发人员的最重要的一课是编程很有趣。如果你正在编程,但没有乐趣,那么你可能做错了。这可能不是你的错,你可以请求帮忙。当编程很有趣时,我们最有创造力。


创造力是游戏!我们需要创造性地解决我们今天面临的复杂问题。


我对 Eclipse Collections 充满热情。这是因为通过使用 Eclipse Collections,我可以教 Java 开发人员如何在使用 Java 在编程时获得真正的乐趣。这些年来,我遇到了很多 Java 开发人员,他们要么成为管理者,要么完全放弃编程,因为这门语言似乎打败了他们对编程的热爱。


最初几年我非常讨厌用 Java 编程,但我从未失去对编程的热爱。我当然怀念在 Smalltalk 和 Clipper 中编程,因为使用它们更有趣、更高效。


我花了几年时间在 Java 规范请求 (JSR) 335 专家组 (EG) 上与 Brian Goetz、Doug Lea、Dan Heidinga、Rémi Forax、Sam Pullara、Tim Peierls、Bob Lee、Kevin Bourrillion、Andrey Breslav 等专家一起工作。我们都想通过引入 lambda 来改进 Java 语言,让编程变得更有趣、更高效。


现在回想起来,我可以说我帮助 JSR 335 EG 为 Java“创造了未来”。从 Java 8 开始,现在 Java 编程变得更有趣了,而且工作起来也更简单了。但是仍然有很多开发人员尚未体验到这种快乐。


我仍然喜欢 Smalltalk,而且我相信一直都会。我现在也喜欢用 Java 编程了。我本可以认输,选择一种不同的语言来编程,或者转向一个完全不同的职业。我相信编程很有趣,我与社区中才华横溢的技术专家一起努力让 Java 变得更有趣,这不仅是为了我自己,也是为了数百万 Java 开发人员。


分享就是关怀


做你爱做的,爱你所做的事。尽可能获得报酬,然后与他人分享编程乐趣。激励和激励子孙后代实现他们所能做的一切。那么,也许你会像我一样理解和欣赏编程的乐趣。


未来


经过 40 年的编程,我决定更积极地编写代码。我的个人使命是尽可能多地分享有关 Java、Eclipse Collections 和 Smalltalk 的信息。我现在每个月写 1-2 篇博客。我想尽自己的一份力量让未来更美好,并为子孙后代保持编程的乐趣。


七年前,我的第一位计算机英雄——艾伦·凯(Alan Kay)给了我一份很棒的礼物。他为我签名的 XO 笔记本电脑是我永远珍惜的东西。艾伦当时不知道,因为他刚认识我,但他在笔记本电脑上写的东西对我来说就像一个预言。他写道:“未来会更好。” 。


那时,我的妻子正准备在一个月后进入医院接受干细胞移植,以对抗 AML。我需要写关于相信的东西。当我把这台签名的笔记本电脑带回家并与妻子分享这个故事时,流下了眼泪,我和妻子分享了Alan 的乐观天赋。


在你工作或个人生活,以及任何时间,有时候会遇到完全糟糕透顶的事。现在的疫情似乎证明了许多人的情况,但我内心的乐观主义者相信艾伦所写的必将是真实的。“未来会更好”,但前提是我们要非常努力地做到这一点。如果我们一起努力工作、合作和相互投资,我们就可以创造一个更美好的未来。


我在 Java 编程中学到的在 Smalltalk 中没有体验到的乐趣之一,是与大型、协作和支持社区一起工作的乐趣。Java 社区的强大令人难以置信。这是不断给予开发者的礼物。我很荣幸能成为这个充满活力的社区的一员。我们将一起继续为整个 Java 社区创造更美好的未来。


编程的乐趣还在继续。


作者:唐纳德·拉布

编译:洛逸

原文:https://donraab.medium.com/the-joy-of-programming-64cd5949bc78

评论