mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-23 21:20:42 +08:00
502 lines
33 KiB
Markdown
502 lines
33 KiB
Markdown
[#]: subject: "What was your first programming language?"
|
||
[#]: via: "https://opensource.com/article/21/8/first-programming-language"
|
||
[#]: author: "Jen Wike Huger https://opensource.com/users/jen-wike"
|
||
[#]: collector: "lujun9972"
|
||
[#]: translator: "CanYellow"
|
||
[#]: reviewer: "wxy"
|
||
[#]: publisher: "wxy"
|
||
[#]: url: "https://linux.cn/article-15832-1.html"
|
||
|
||
你的第一门编程语言是什么?
|
||
======
|
||
|
||
![][0]
|
||
|
||
> 以下是 24 位开源技术专家分享了他们开始编程之旅的故事。
|
||
|
||
我向我们的贡献者提问了这个问题:“你的第一门编程语言是什么?”不过这个问题并不像看上去那样简单。下面的故事谈到了是谁向你建议了第一门编程语言,是什么促使你学习它。如果你是付费学习的,接下来又发生了什么。这里还涉及到你所在的阶段以及这个世界上正在发生的事情。
|
||
|
||
让我们倾听这 24 位技术专家的故事吧。
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
BASIC。
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
并不是。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
不尽然。
|
||
|
||
*为什么这么说?*
|
||
|
||
那是 1979 年的圣诞节,我的父母(他们分别是学校的一名维护人员和一名公共卫生护士)省吃俭用地攒下了惊人的 1000 美元买下了一台 Tandy/Radio Shack TRS-80。它随附了一份涵盖了完整的 BASIC 编程语言的活页夹。我的父亲认为让我学习开发计算机软件是一个很好的将我从困境中解脱出来的方式。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
我的父母给我和我的兄弟买了与“自学编程”相关的书籍,也订阅了相关的流行杂志。这些资源中提供了许多游戏的打印版的源代码。我们每个星期都花费大量的时间编写程序,然后一行一行地使用电脑自带的检查程序找出我们的打字错误并调试程序。当我们厌倦了游戏以后,我们开始修改它们。我们一开始只是简单地修改零零散散的字符串将一个罗马战斗策略游戏修改为一个太空战斗策略游戏。不过后来随着我们所做修改的复杂度的增加,我们最后开始开发我们自己的恐怖游戏。此后不久,我们开始通过信件分享我们的游戏磁盘,后来也通过当时仅 110bps 网速的电子公告板(BBS)分享我们的游戏。
|
||
|
||
40 年之后,我可以同全世界共同创作,家庭网络连接性能提升了七个数量级以上,但是我仍然时常怀念那个周六,那一天,在我和我的兄弟共同创造的真实的恐怖游戏当中,我被我的弟弟击败。
|
||
|
||
—— [Jeremy Stanley][2]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
我的第一们编程语言是 BASIC,我在 7 年级的时候开始接触它。
|
||
|
||
*你是花钱学习的吗?*
|
||
|
||
如果你认为允许在午餐时间在计算机实验室里玩 《<ruby>德军总部 3D<rt>Wolfenstein 3D</rt></ruby>》、《<ruby>我的世界<rt>Minecraft</rt></ruby>》、《<ruby>模拟城市<rt>Sim City</rt></ruby>》 这些游戏,是对计算机科学足够感兴趣并学习 BASIC 语言的的花费的话,那就算是吧。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
我不认为我当时曾确切地认识到还有第二选择。这是当时计算机实验室中仅有的内容,而且一些学长对它的介绍足以让我参与其中。我记得它不是计算机科学课程的一部分。
|
||
|
||
*为什么这么说?*
|
||
|
||
当时,我学习 BASIC 仅仅是因为乐趣。我仅仅用它来创造基于文本的“选择你自己的探险之旅”风格的游戏。从源代码创建一些兼具艺术性与趣味性的东西并让计算机运行它们这件事极大地吸引了我。我此前也使用过计算机,但这是我头一次让它为我做一些事情。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
或许并不是巧合,我后来使用“选择你自己的探险之旅”风格的游戏来学习我后来接触到的每一种编程语言。
|
||
|
||
这一经历以及在计算机游戏中的首次探索(既有商业游戏也有我自创的游戏)开始了我进一步深入计算机领域的旅程,一直到我 11 年级时我的父母买回了我们家的第一台电脑。三年后,我将这一段旅程转化为了我的第一份计算机领域的工作,我成为了一家研究公司的实习生,这家公司最终录用了我为他们的 IT 支持组的一员,这是我大学毕业后的第一份“真正意义上”的工作。
|
||
|
||
将近 30 年后,我坚信是 BASIC(以及《模拟城市》)开启了我现在成为 SRE 的旅程,每天编写代码,与计算机集群为伍。
|
||
|
||
—— [Chris Collins][3]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
我玩过 BASIC 语言,但是我的第一门正式入门语言是 PL/I。我在我大学时的第一次编程课上学习它的。
|
||
|
||
—— [Heidi Ellis][4]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
我的第一门编程语言是 BASIC 语言。那是在 1981 年。我学习它是因为我买了一台能够启动进入 BASIC 编辑器的家用电脑,一台 TRS-80 彩色计算机。它拥有相当出众的 4K 容量的内存(没写错),而且它还可以在盒式磁带上存储程序。我希望让电脑做一些事情,因此我开始学习如何使用它能够理解的语言向它下达指令。一旦你第一次体验到程序成功运行的欣喜若狂的感受,你会发现我还想再次体验这种感觉。你还需要知道的是,如今已经过去 40 多年了。
|
||
|
||
—— [Matthew Helmke][5]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
我的第一门编程语言是 BASIC。它是 1977 年大学第一学期中我的计算机科学课程的一部分,因此我既没有自己花钱学习它,也不是自己选的它。不过我始终认为这是非常重大的第一步,因为它使我学会了如何像计算机一样思考(我有一个好老师)。随着我从经济学院毕业,这门课程并没有立即促成一些事情。不过,多年之后,我成为了一名 IT 项目经理。所以我没有做过程序员,不过我管理过一些。
|
||
|
||
—— [Kevin O'Brien][6]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
BASIC
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
不是。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
它是内置在 Apple ][ 计算机里的,这台计算机是我母亲在暑假带回来的,我的选择很有限。
|
||
|
||
*为什么这么说?*
|
||
|
||
这台计算机里只有 BASIC 语言和 6502 汇编语言。显然,BASIC 语言看上去对六年级的我更具吸引力。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
我去公共图书馆,找出了所有刊载了 Apple ][ 程序的源代码清单的往期的《Byte》杂志。我花了很多时间输入这些我几乎无法理解的程序,并享受调试其他人代码的乐趣(好吧,我更确定的是,大部分错误都是我带来)。我简直入迷了。几年以后,在高中毕业班的时候,当我知道可以主修某种称作“计算机科学”的课程的时候,我既惊讶又激动。剩下的就是历史了。
|
||
|
||
—— [Erik O'Shaughnessy][7]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
Fortran IV,你应该已经知道这是多少年前的事情了。
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
不是,这是我大学的计算机科学课程的一部分,因此我想也可以认为我是花钱学习它的。这是在大型机上,因此你在纸上写好你的程序以后,你需要带上空白的 IBM 穿孔卡,然后坐在一台键控打孔机前把你的程序打孔出来,然后将你的穿孔卡片集作为一项“作业”提交上去。然后第二天你就可以拿回你的穿孔卡片,上面带有行式打印机输出结果。如果你的程序没有成功运行,你得不到任何输出,或者如果你制造了某种死循环,你则可能拿到一页又一页的结果。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
在我的大学生涯快结束的时候,学校开始使用 watfor 编译器,这是一款来自加拿大的滑铁卢大学的 Fortran 版本。它的优势在于你可以在终端中使用它,并在大型机中保存你的程序,而不需要使用我们曾经非常喜爱的穿孔卡。因此你可以自行运行你的程序,也可以立即创造死循环的程序。欧耶!
|
||
|
||
Fortran 之后,吸引了我的眼球的另一门编程语言是 BASIC,它与 Fortran 有很多相似之处,不过能够更好的处理字符串。Fortran 在字符串处理方面太糟糕了。我主要是在 Amiga 计算机上做这些事情的。
|
||
|
||
在转向 Linux 后,我接下来接触的语言是 Perl,奇怪的是,似乎很容易从 BASIC 语言过渡到 Perl。接着 Perl 之后,就是 Python,一门在语法上更加灵活的语言。
|
||
|
||
—— [Gregory Pittman][8]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
我 1974/1975 年学习的 Waterloo Fortran IV,这是入学第二年时我上的第一门计算机科学课程,当时我几乎确信我想要主修计算机科学了。这一年的稍晚时间,我们还学习了一些有关 IBM 360/370 汇编器的内容。在那段时间里,在英属哥伦比亚大学的低年级课程中我们使用的是打孔机,我们可以使用一个“学生终端”来连接我们的卡片盒,并得到一张供我们的卡片盒运行一次的“蓝色凭证”,然后走到 IBM 行式打印机后面拿回我们的程序输出。即使旁边明明写了一张提示“不要将你的卡片盒放在打印机上,以免打印机(上盖)开启”,不过如果你还是不注意,将你的卡片盒放到了打印机的上面。此刻,打印机可能刚好用完了纸或者发生了卡纸,于是主动打开了上盖,你的卡片盒将会掉到地上变成一团糟。
|
||
|
||
在我主修计算机科学的第三学年,我选了一系列的课程 —— 以 PL/I 为特色的第三年主流课程、一学期的 360/370 汇编器课程、两门关于计算机理论的荣誉课程、一门数值分析课程、“密歇根终端系统上的十二种编程语言”,以及一系列数学课。
|
||
|
||
在我的第四学年,我被应用数学研究所聘为研究助理。此时,我主要为一小群主要对求解微分方程的感兴趣的数学家们编写 Fortran 程序来获取报酬。同时,也是从那时开始,我意识到计算机科学并非我的最爱,我开始转向数学。我仍然继续学习了一些计算机科学课程 —— 优化课程以及更多的数值分析课程。回过头看,这是我走上数据科学之路的第一步。
|
||
|
||
我毕业之后的第一份工作还是编程,主要是使用 Fortran、PL/I 以及 SPSS 编程,SPSS 是一种统计编程语言。此外,我也学会了如何使用 MPSX(LCTT 译注:<ruby>拓展数学编程系统<rt>Mathematical Programming System Extended</rt></ruby>),这是 IBM 的一种线性规划通用语言。
|
||
|
||
—— [Chris Hermansen][9]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
在我高中的时候,作为一项实验,让一位没有任何计算机经验的教师教我们计算机编程。我的学校之前从来没有尝试过这类课程。施乐公司给我们提供了一台 Model-33 型电传打字机和一台 110 波特的声耦调制解调器,这使得我们可以访问他们运行 CP-5 分时系统的 XDS Sigma 7大型机。BASIC 是当时的主流。
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
上学算吗?
|
||
|
||
*接下来发生了什么?*
|
||
|
||
一些学生开始尝试在这台机器上 “瞎戳”,看看如果我们不在提示符位置输入 “BASIC” 会发生什么,这使我们发现这台机器上还内置了 _其他的_ 编程语言!还有其它的东西!如果我没有记错的话,这台机器上至少还有三个独立的 Fortran 编译器 —— Fortran、FLAG(Fortran Load And Go —— FLAG 的编译速度在当时称得上“快”了,简直是快如闪电)。剩下的编译器 EFFORT 则是另一个极端 —— 也可能是 EFORT,只是发 “effort” 的读音,它的编译速度—相—当—慢,不过在我们眼里,它的确看上去拥有极致的代码优化。除此之外,我也短暂尝试过 APL 编程语言(LCTT 译注:这种编程语言的全称是:[A Programming Language][T1] 🤣)以及(用于 APL 语言编程的有各种符号的“怪异”键盘)。在 APL 语言中,退格键不是用来删除已经输入的内容,反而是重写该操作符为其他的操作符。
|
||
|
||
—— [Kevin Cole][10]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
雅达利 PILOT 语言以及雅达利 BASIC 语言(LCTT 译注:<ruby>雅达利<rt>Atari</rt></ruby>)。我的父母给孩童时期的我买了一台雅达利 1200XL 计算机,我开始只是用他们来玩游戏或者完成一些艺术课程。家里有两盒卡带,我父亲告诉我它们是“适合成人使用的,因为不是为小孩子设计的,我不会对他们感兴趣”。所以,显然我无比好奇。终于有一天我禁不住找出并装载了它们。刚开始的时候我一头雾水,直到我找到一本我父亲买的有关这两盒卡带的书籍。我输入了书上的样例,发现能够实现一些事情的感觉是相当酷的。我当时还不能完全独立地编写程序,不过我可以拿来书中的样例,然后仅仅更改其中的部分内容,直到我能让它完成一些其他的事情或者使之崩溃进而只能撤销这些更改。我曾经计划再次尝试一遍,看看我还能记得多少,不过我一直都没有抽出时间(来做这件事)。
|
||
|
||
—— [JT Pennington][11]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
ELAN。这是那一时期相当优秀的编程语言。尤其需要重点说明的是它是与 EUMEL 系统紧密结合的,可以用它做并行计算。
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
它是一项课后活动。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
不是。
|
||
|
||
*为什么这么说?*
|
||
|
||
我想学习弹钢琴,我的父母跟我说如果我愿意参加打字课的话我就可以得到一台钢琴。打字课的隔壁就是课后计算机俱乐部,我觉得那有趣多了。不幸地是,时至今日我也不会弹钢琴,计算机使我一直忙到了现在。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
当我上大学的时候,他们还在使用打孔卡和 Fortran。我很庆幸我的高中老师允许我使用学校的并行机编程。此间,我也尝试了 BASIC 语言,但这比不上我学习的 ELAN,而且很枯燥。后来我转向 Pascal,Pascal 也比不上 ELAN。再后来就是 C 语言、Modula-2 语言和 Ada 语言,我最后发现了 Occam,并且使用它在 <ruby>晶体电脑<rt>transputer</rt></ruby> 上完成了很多任务。这是相当激动人心的,因为我们可以做更多的并行计算。能够使用 64 台晶体电脑是一件相当酷的事情。同时,接入各种网络配置也令人兴奋。这是几十年前的事情了。我看到了往日的高中生与今日的高中生的不同点。我们当时几乎没有资源(我直到大四的时候才买得起一台电脑),而今天电脑已经习以为常了。而且,电脑与类似 FLL(FIRST Lego League)这样的机器人使得降低编程的门槛成为可能。然而,今天的学生们也被随处可及的电子游戏以及其中炫酷的图像所分心。现成产品(像电子游戏、手机以及平板电脑等)使得今天的学生能够从闲暇时间中抽出用来学习机算机科学的时间很有限。我必须承认,如果在我长大之后也接触到了今天这样的电子游戏,我可能对计算机科学拥有完全不同的看法,并且也不会被我的同学们视作“书呆子”,而是成为一个游戏玩家。
|
||
|
||
不幸的是,我没有时间玩游戏,我的 RTX3090 显卡在运行人工智能算法。我真正想要的玩具是一台 [A100 GPU][T2] 以及一套我现在远程使用的 [DGX 系统][T2]。我认为由于 [Google colab][T3] 以及其通过 Jupyter 可访问的特点,对人工智能的接触可以下放到高中水平。然而这一切都取决于带领你入门的高中教师。如果你的编程老师只是教你乐高机器人上的块编程,而不是 Python,或者只是教你使用 Scratch 而不是 Google colab。那么我们就没有利用那些学生早年间的潜力,也没有利用这些出众的基础设施。
|
||
|
||
—— [Gregor von Laszewski][12]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
我在一台 Apple 电脑上接触到了 Logo 编程语言。它由麻省理工的 <ruby>西蒙· 佩珀特<rt>Seymour Papert</rt></ruby> 等人在 1967 年开发。这是一种为了教育目的开发的编程语言,是 Lisp 语言的一个子集。
|
||
|
||
我学习它是当时我参与的一项毕业教育项目的一部分。作为该项目的一部分,我使用 Logo 教一名五年级学生的几何学。在教这名学生 Logo 编程语言和这门课程的时候,我发现我在数学上的麻烦与无助在于无法可视化这些材料。在完成我的研究生课程以后,我使用 Logo 语言继续以相同的课程与编程语言教其他学生们几何与数学。学生们和我在这个过程中学习了数学,并开发了一些优美的图形,我们实际上是为一个“乌龟”机器人编程,在需要放在教室地板上的巨幅纸张上绘制我们的图像。我的编程经历让我开始寻找其他的方式来将数学带入学生的生活中,这让我开始接触 Python 以及 Python 中的“乌龟”模块。后来,我开始教学生们写 Python 程序,这些程序的特点是“屏幕上的”乌龟机器人可以创建优美的图像。与此同时,我也开始向这些学生介绍 Python 编程语言与逻辑思考能力。
|
||
|
||
—— [Donald Watkins][13]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
ZX81 BASIC。
|
||
|
||
我还在上小学的时候,大概 10 岁或者 11 岁的样子,我的一个朋友得到了一台 ZX81 计算机。于是我自学了 BASIC 并编写了一些简单的程序尝试在他的机器上运行。1982 年的圣诞节,我得到了属于我自己的 ZX81 计算机,此后不久,ZX81 的硬件跟不上硬件发展了,我于 1993 年晚些时候转向了 ZX Spectrum ,自此之后,我也使用 Z80 汇编语言编写了一些程序。
|
||
|
||
多年以后,我偶然得到一款早期型的卡西欧掌上型计算器,它可以执行 BASIC 程序。这是 PB 系列的一款设备,有可能是 PB-200,不过我已经记不清具体的型号了。16 岁时在英国,我设法说服了我的老师允许我在我的 [数学普通等级考试中][T4] 使用它。我也关注过其他的编程语言,不过直到我在大学开始学习 Ada 之前,我都没有真正学过其他的编程语言。
|
||
|
||
—— [Steven Ellis][14]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
我的第一门编程语言是 BASIC,那是在 80 年代早期的事了。
|
||
|
||
我的一个亲戚给他们的孩子买了一台 C64 计算机用来让他们学习计算机。他们只用这台计算机玩游戏,我也被邀请一起玩。不过他们还有一本关于 BASIC 语言的书,我非常好奇并做了尝试。我写了一些简短的代码,我甚至都不知道怎么保存它,不过当我看到计算机如我告诉它的那样工作的时候那仍然令人十分兴奋。这也说明我不是花钱来学习 BASIC 编程的,也不是我的选择,它是我当时能接触到的语言。几年后当我得到我的第一台计算机,一台 XT 兼容机后,我首先用 GW-BASIC 语言写了一些代码,GW-BASIC 是 BASIC 语言在 DOS 系统下的一种方言。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
我第一次真正选择的编程语言是 Pascal。我问了一圈,又查了一些书籍,它看上去是在功能与难度之间的一个挺好的妥协。一开始,我用的是 Turbo Pascal,我用它编写了各种简单的游戏与图形。我热爱 Pascal,因此在上大学的时候,我甚至还在用它(FreePascal 和 Lazarus)来进完成测量自动化与地下水污染分布的建模。
|
||
|
||
—— [Peter Czanik][15]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
卡西欧 fx-7200G 的编程语言的 [一个变体][16],我想它可能没有自己的名字。
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
不是。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
也不是。
|
||
|
||
*为什么这么说?*
|
||
|
||
我在 13 岁生日时得到了一台可编程计算器(包装盒上说它是“计算机”……)。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
一年后,上高一的时候,我在甚至没有一本教科书的情况下学习了 Pascal 语言 —— 我们的老师推荐的主要的学习 Pascal 的教材还是大学程度的,他认为这些教材对我们而言还是太难了 —— 因此我们用来理论教学与练习的课程实际上都是使用 BASIC 语言的,因此我也学了一些 BASIC 语言(虽然是无意的,但是从老师的角度来看的确是这样)。
|
||
|
||
我认为我是一名后来者 —— 一些我的同班同学在家里拥有一台内置了 BASIC 的计算机(Commodore 64、Spectrum Sinclair、Amstrad 等等)。上高中之前我已经对 BASIC 有所了解,高一的一年里,我和那些对 BASIC 有点了解又无法欣赏 Pascal 的优点的学生之间关系有点紧张。
|
||
|
||
后来,我上大学了(方向是数学与计算机科学),我们这些学生可以使用 DOS 电脑或者一些苹果公司的 Macintosh,或者是主要连接到 SunOS 4 共享机的一些终端机(文本终端,如果你幸运的话,有 X 终端)。我大二的时候(1993 年),某位朋友向我介绍了 Linux,它可以在家用机器上运行。我已经给自己买了一台新电脑(一台 AMD 386SX 兼容机,直到 8 年后它退役是,我才意识到它是 AMD 的,而不是我之前一直以为的英特尔 386 机器)。得知我的 8088 电脑不适合运行更现代的系统之后,我尝试使用 Linux 系统,在仅有 2MB 内存的情况下安装好 Linux 花了我几个月的时间。此后不久,我升级到了 4MB 内存,我也几乎不再进入 DOS 系统(虽然我仍然将它作为我的第二启动项保留了好几年)。我至今仍然记得当我能够完全在家里运行一个类 UNIX 系统时我的惊讶与激动之情,即便只是 X Window(在升级到 4MB 内存以后)。
|
||
|
||
回到编程语言,在我大学期间,我们学习/使用了 Pascal 语言(第一门入门课程),C 语言(系统编程入门课程)以及一些课程专用的语言,Eiffel 语言(在面向对象课程中学习的),Matlab 语言(为了我的一项研究),等等。
|
||
|
||
我的第一份真正的工作是参与一个基于 Unix 的项目(我们主要使用运行 Ultrix 系统的 DECstation 工作站),我主要是使用 Lisp 语言(Lucid Common Lisp)和 C 语言。我就是在这时学习的 Lisp 语言,虽然我后来没有再使用过它,而且这段经历也给我留下了很多美好回忆。作为一个个人项目,我设法使该项目运行在 Linux 系统的个人电脑上,通过使用一个用于 SCO Unix 的 LCL 副本。我设法使之能在 Linux 下工作,主要是通过 `ibcs2` 组件,和用交叉编译器工具链重新编译的 GNU `libc` 库实现的(在 Linux 上使用 `gcc`/`as`/`ld` 生成用于 SCO 的 COFF 库)。我非常自豪地向我的领导演示这一应用,通常需要一台价值约 3 万美元的工作站,却可以在一台 5 千美元的电脑上运行。然而它从来没有被投入到生产环境中过。
|
||
|
||
—— [Yedidyah Bar David][17]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
TI-BASIC。
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
不是,不过我那时才 10 岁。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
不是。
|
||
|
||
*为什么这么说?*
|
||
|
||
这是 TI-99/4A 计算机上仅有的编程语言了!嗯,这台计算机上也有 “Extended Basic” 语言,不过这只是 BASIC 的一个拓展指令集。你实际上可以在 16Kb 内存中编写像样的游戏。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
下一步就是输入通过纸质杂志上的程序并把它们记录到录音带上。不过我与我哥哥在这一步上做得更加深入 —— 我们通过将结果的声音通过电台广播的方式让别人录制下来!由于清晰的录音和足够的纠错,在 1985 年就实现了通过无线方式分发和下载程序。
|
||
|
||
—— [Thierry Carrez][18]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
GW-BASIC。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
不是。
|
||
|
||
*为什么这么说?*
|
||
|
||
它是针对初学者的标准教学内容。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
我开始在一家公司里做计算机硬件专家。
|
||
|
||
—— [Hüseyin GÜÇ][19]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
BASIC,在 VIC-20 机器上。
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
不是。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
我只是选择了那台电脑。
|
||
|
||
*为什么这么说?*
|
||
|
||
我发现 VIC 计算机至少是跟我在学校里见到的 PET 机器最兼容的机器了。而且它有一个好看的键盘。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
接下来就是编程时间了,因为这台机器也没有其他事情可以做了——我学到了很多。
|
||
|
||
—— [Bob Murphy][20]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
如果我没有记错的话,那是 2004 年还是 2005 年。我还在上学,可能是 5 年级,我接触到了 BASIC。此前,我还学了有关 “Window Logo” 的一些知识。
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
我父母花钱供我上学了。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
根本不是。
|
||
|
||
*为什么这么说?*
|
||
|
||
这是由我学校学习的课程决定的。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
它彻底燃起了我对编程的兴趣,我继续在课外学习班中学习了 C/C++ 语言。我的父母非常鼓励我,并且在设法给我提供了额外的费用。我经常是整个计算机补习机构里最后仅剩的那个“孩子”。我是唯一一个学习编程语言的人,而其他人大多学习 MS Office 或 PhotoShop 等。哈哈。好了,剩下的就是历史了。
|
||
|
||
—— [Kedar Vijay Kulkarni][21]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
Fortran,因为那是很久之前的事了。
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
不是的,我是通过上计算机课程学习的它。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
不,那是仅有的选择。我很幸运我用的是终端而不是打孔卡片,我可怜的丈夫在学习 Fortran 程序的时候用的还是打孔卡片。
|
||
|
||
*为什么这么说?*
|
||
|
||
我是人文专业毕业(英语与人类学双专业),我临毕业的时候实际上必须找一份工作。我想,学一门计算机课会让找工作容易一些。事实证明,就市场需要的技能而言,这一门编程课程是我学到的最有价值的课程。它给我在后续的学习 Python、理解 Git 以及为 Red Hat 撰写和编辑文档时提供了一个很好的基础。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
我回家后在一台我父母购买的 TI-99 计算机上自学了 BASIC 语言(我不确定他们为什么买了它,或许是为了我的弟弟)。早些年的 Fortran 基础让我在 Windows 出现之前能够更加容易使用早期个人电脑,因为我能够搞懂 DOS。这显然是一个简陋的开始。
|
||
|
||
—— [Ingrid Towey][22]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
2001 年,我通过阅读艾迪生-韦斯利出版社的 《Goto Java》 这本书学习了 Java SE 1.2。
|
||
|
||
*你是花钱学习的吗?*
|
||
|
||
没有,我当时还在学校里。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
是的。
|
||
|
||
*为什么这么说?*
|
||
|
||
我想要使用 Java Applets 制作交互式网页。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
我上大学了,接触到了自由和开源软件(FOSS),并且学习了 ANSI C 语言。
|
||
|
||
—— [Joël Krähemann][23]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
我准备就此写一篇文章,不过我已经写了这篇了:《[参与开源软件并不必须要计算机科学学位(2020 年 8 月 6 日)][24]》。
|
||
|
||
这篇文章中的重点如下:
|
||
|
||
我的父母买了一台 Apple II+ 的克隆版,名为 Franklin ACE 1000。我和我的兄弟自学了如何使用 AppleSoft BASIC 编程。我的父母给我们买了一些书,我们如饥似渴地吸收了这些书籍。我通过阅读书上的内容学会了 BASIC 语言的各个方面,然后写了一个练习程序。我最喜欢的娱乐就是编写游戏和仿真程序。
|
||
|
||
我停留在 BASIC 语言上很长时间。但是当我上了大学以后,我开始学习其他的编程语言。我是物理学系的一名学生,作为学习数值分析的先导条件,我们必须学习 Fortran 语言。因为已经学过了 BASIC 语言,我觉得 Fortran 相当容易学习。Fortran 与 BASIC 是非常相似的,尽管根据我的经验,Fortran 的局限性更大。
|
||
|
||
我的哥哥在另一所大学里主修计算机科学,他给我介绍了 C 语言,我立马就爱上了用 C 语言编程!它是一种简明直接的语言,给了我相当大的灵活性,让我能够编写有用的程序。但是我的学位计划里没有足够的空间让我选择一门不适用于我所选择的物理学专业的课程。为此,我转而通过读书结合图书馆的参考指南来自学 C 语言。每当我希望学习新的主题的时候,我就在参考指南中寻找相应的内容,然后实践编写一个相应的程序来锻炼我的新知识。
|
||
|
||
随着时间的推移,我利用我所学的内容来学习其它的编程语言。我编写了大量 Unix Korn 命令行脚本、Linux Bash 脚本和 AWK 脚本。我还用 Perl 写些实用小工具,后来也用 Perl CGI 以及 PHP 做网站开发。我学习了够用的 LISP 语言来调整我的 GNU Emacs 副本,也学习了够用的 Scheme 来参与一个使用 GNU Guile 的项目。
|
||
|
||
—— [Jim Hall][25]
|
||
|
||
***
|
||
|
||
*你的第一门编程语言是什么?*
|
||
|
||
我的第一门编程是 BASIC,准确地说是<ruby>雅达利<rt>Atari</rt></ruby> BASIC 语言。
|
||
|
||
20 世纪 80 年代,我家买了一台雅达利 400 家用计算机。我用它来玩游戏,不过它也自带了一盘 BASIC 语言的卡带。它还包括一个盒式录音机(雅达利 1010)。那些年,程序可以存储在标准的录音带上。雅达利 400 没有内部存储空间,因此我也学会了如何将我的程序保存到录音带上,以及随后如何重新加载它们。除了常见的“Hello World”的程序,我还写了一些可以用操作杆来控制声音与图形的程序。我现在还记得用来设置和读取某些设置属性的 `PEEK` 和 `POKE` 命令,比如颜色或声音设置。
|
||
|
||
*你花钱学习的吗?*
|
||
|
||
不是。
|
||
|
||
*你是自己选择它的吗?*
|
||
|
||
是的,它是雅达利中内置的编程语言,因此我确定尝试一下——我非常喜欢用它编程。
|
||
|
||
*接下来发生了什么?*
|
||
|
||
一段时间之后,我可能对雅达利以及电子游戏失去了兴趣。直到 90 年代中期,当我参加计算机课程以辅修计算机科学时,我才重新对计算机和编程重新感兴趣。这些课程教会了我 C 语言、汇编语言以及很多其他的通用计算机与网络技术。作为我的硕士学位的一部分,我后来又学习了 Java。在我的职业生涯中我只进行过数量不多的正式编程工作,主要是在本世纪 10 年代中期时在 ColdFusion 环境下使用 Java 语言。从编程方面来说,命令行脚本是我的主要领域,主要是在 Bash 与 Windows 瞎,不过只要有需要,我也会进行特定目标的编程。我使用过 <ruby>工作控制语言<rt>Job Control Language</rt></ruby>(JCL)用来在大型机系统之间进行自动文件传输。我也使用过 Python 用来将 REST API 的查询结果返回给企业的监控面板。我仍然认为我早期的 BASIC 编程经历是值得的,因为我获得了对软件和编程的尊重。
|
||
|
||
—— [Alan Formy-Duval][26]
|
||
|
||
|
||
*(题图:MJ/0cf8b9b0-fb92-4131-ab89-ee0880c1b4a9)*
|
||
|
||
--------------------------------------------------------------------------------
|
||
|
||
via: https://opensource.com/article/21/8/first-programming-language
|
||
|
||
作者:[Jen Wike Huger][a]
|
||
选题:[lujun9972][b]
|
||
译者:[CanYellow](https://github.com/CanYellow)
|
||
校对:[wxy](https://github.com/wxy)
|
||
|
||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||
|
||
[a]: https://opensource.com/users/jen-wike
|
||
[b]: https://github.com/lujun9972
|
||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_space_graphic_cosmic.png?itok=wu493YbB (Computer laptop in space)
|
||
[2]: https://opensource.com/users/fungi
|
||
[3]: https://opensource.com/users/clcollins
|
||
[4]: https://opensource.com/users/heidi-jc-ellis
|
||
[5]: https://opensource.com/users/matthew-helmke
|
||
[6]: https://opensource.com/users/ahuka
|
||
[7]: https://opensource.com/users/jnyjny
|
||
[8]: https://opensource.com/users/greg-p
|
||
[9]: https://opensource.com/users/clhermansen
|
||
[10]: https://opensource.com/users/kjcole
|
||
[11]: https://opensource.com/users/jtpennington
|
||
[12]: https://opensource.com/users/laszewski
|
||
[13]: https://opensource.com/users/don-watkins
|
||
[14]: https://opensource.com/users/steven-ellis
|
||
[15]: https://opensource.com/users/czanik
|
||
[16]: https://en.wikipedia.org/wiki/Casio_fx-7000G
|
||
[17]: https://opensource.com/users/didib
|
||
[18]: https://opensource.com/users/thierry-carrez
|
||
[19]: https://opensource.com/users/hguc
|
||
[20]: https://opensource.com/users/murph
|
||
[21]: https://opensource.com/users/kkulkarn
|
||
[22]: https://opensource.com/users/i-towey
|
||
[23]: https://opensource.com/users/joel2001k
|
||
[24]: https://opensource.com/article/20/8/learn-open-source
|
||
[25]: https://opensource.com/users/jim-hall
|
||
[26]: https://opensource.com/users/alanfdoss
|
||
|
||
[T1]: https://link.springer.com/chapter/10.1007/978-1-349-08004-5_6
|
||
[T2]: http://nvidia.zhidx.com/product-11.html
|
||
[T3]: https://colab.research.google.com/
|
||
[T4]: https://en.wikipedia.org/wiki/GCE_Ordinary_Level_(United_Kingdom)
|
||
[0]: https://img.linux.net.cn/data/attachment/album/202305/21/173054v48ytx3jewd4dywt.jpg |