Jen Wike Huger 发布的文章

以下是 24 位开源技术专家分享了他们开始编程之旅的故事。

我向我们的贡献者提问了这个问题:“你的第一门编程语言是什么?”不过这个问题并不像看上去那样简单。下面的故事谈到了是谁向你建议了第一门编程语言,是什么促使你学习它。如果你是付费学习的,接下来又发生了什么。这里还涉及到你所在的阶段以及这个世界上正在发生的事情。

让我们倾听这 24 位技术专家的故事吧。


你的第一门编程语言是什么?

BASIC。

你花钱学习的吗?

并不是。

你是自己选择它的吗?

不尽然。

为什么这么说?

那是 1979 年的圣诞节,我的父母(他们分别是学校的一名维护人员和一名公共卫生护士)省吃俭用地攒下了惊人的 1000 美元买下了一台 Tandy/Radio Shack TRS-80。它随附了一份涵盖了完整的 BASIC 编程语言的活页夹。我的父亲认为让我学习开发计算机软件是一个很好的将我从困境中解脱出来的方式。

接下来发生了什么?

我的父母给我和我的兄弟买了与“自学编程”相关的书籍,也订阅了相关的流行杂志。这些资源中提供了许多游戏的打印版的源代码。我们每个星期都花费大量的时间编写程序,然后一行一行地使用电脑自带的检查程序找出我们的打字错误并调试程序。当我们厌倦了游戏以后,我们开始修改它们。我们一开始只是简单地修改零零散散的字符串将一个罗马战斗策略游戏修改为一个太空战斗策略游戏。不过后来随着我们所做修改的复杂度的增加,我们最后开始开发我们自己的恐怖游戏。此后不久,我们开始通过信件分享我们的游戏磁盘,后来也通过当时仅 110bps 网速的电子公告板(BBS)分享我们的游戏。

40 年之后,我可以同全世界共同创作,家庭网络连接性能提升了七个数量级以上,但是我仍然时常怀念那个周六,那一天,在我和我的兄弟共同创造的真实的恐怖游戏当中,我被我的弟弟击败。

—— Jeremy Stanley


你的第一门编程语言是什么?

我的第一们编程语言是 BASIC,我在 7 年级的时候开始接触它。

你是花钱学习的吗?

如果你认为允许在午餐时间在计算机实验室里玩 《 德军总部 3D Wolfenstein 3D 》、《 我的世界 Minecraft 》、《 模拟城市 Sim City 》这些游戏,是对计算机科学足够感兴趣并学习 BASIC 语言的的花费的话,那就算是吧。

你是自己选择它的吗?

我不认为我当时曾确切地认识到还有第二选择。这是当时计算机实验室中仅有的内容,而且一些学长对它的介绍足以让我参与其中。我记得它不是计算机科学课程的一部分。

为什么这么说?

当时,我学习 BASIC 仅仅是因为乐趣。我仅仅用它来创造基于文本的“选择你自己的探险之旅”风格的游戏。从源代码创建一些兼具艺术性与趣味性的东西并让计算机运行它们这件事极大地吸引了我。我此前也使用过计算机,但这是我头一次让它为我做一些事情。

接下来发生了什么?

或许并不是巧合,我后来使用“选择你自己的探险之旅”风格的游戏来学习我后来接触到的每一种编程语言。

这一经历以及在计算机游戏中的首次探索(既有商业游戏也有我自创的游戏)开始了我进一步深入计算机领域的旅程,一直到我 11 年级时我的父母买回了我们家的第一台电脑。三年后,我将这一段旅程转化为了我的第一份计算机领域的工作,我成为了一家研究公司的实习生,这家公司最终录用了我为他们的 IT 支持组的一员,这是我大学毕业后的第一份“真正意义上”的工作。

将近 30 年后,我坚信是 BASIC(以及《模拟城市》)开启了我现在成为 SRE 的旅程,每天编写代码,与计算机集群为伍。

—— Chris Collins


你的第一门编程语言是什么?

我玩过 BASIC 语言,但是我的第一门正式入门语言是 PL/I。我在我大学时的第一次编程课上学习它的。

—— Heidi Ellis


你的第一门编程语言是什么?

我的第一门编程语言是 BASIC 语言。那是在 1981 年。我学习它是因为我买了一台能够启动进入 BASIC 编辑器的家用电脑,一台 TRS-80 彩色计算机。它拥有相当出众的 4K 容量的内存(没写错),而且它还可以在盒式磁带上存储程序。我希望让电脑做一些事情,因此我开始学习如何使用它能够理解的语言向它下达指令。一旦你第一次体验到程序成功运行的欣喜若狂的感受,你会发现我还想再次体验这种感觉。你还需要知道的是,如今已经过去 40 多年了。

—— Matthew Helmke


你的第一门编程语言是什么?

我的第一门编程语言是 BASIC。它是 1977 年大学第一学期中我的计算机科学课程的一部分,因此我既没有自己花钱学习它,也不是自己选的它。不过我始终认为这是非常重大的第一步,因为它使我学会了如何像计算机一样思考(我有一个好老师)。随着我从经济学院毕业,这门课程并没有立即促成一些事情。不过,多年之后,我成为了一名 IT 项目经理。所以我没有做过程序员,不过我管理过一些。

—— Kevin O'Brien


你的第一门编程语言是什么?

BASIC

你花钱学习的吗?

不是。

你是自己选择它的吗?

它是内置在 Apple ][ 计算机里的,这台计算机是我母亲在暑假带回来的,我的选择很有限。

为什么这么说?

这台计算机里只有 BASIC 语言和 6502 汇编语言。显然,BASIC 语言看上去对六年级的我更具吸引力。

接下来发生了什么?

我去公共图书馆,找出了所有刊载了 Apple ][ 程序的源代码清单的往期的《Byte》杂志。我花了很多时间输入这些我几乎无法理解的程序,并享受调试其他人代码的乐趣(好吧,我更确定的是,大部分错误都是我带来)。我简直入迷了。几年以后,在高中毕业班的时候,当我知道可以主修某种称作“计算机科学”的课程的时候,我既惊讶又激动。剩下的就是历史了。

—— Erik O'Shaughnessy


你的第一门编程语言是什么?

Fortran IV,你应该已经知道这是多少年前的事情了。

你花钱学习的吗?

不是,这是我大学的计算机科学课程的一部分,因此我想也可以认为我是花钱学习它的。这是在大型机上,因此你在纸上写好你的程序以后,你需要带上空白的 IBM 穿孔卡,然后坐在一台键控打孔机前把你的程序打孔出来,然后将你的穿孔卡片集作为一项“作业”提交上去。然后第二天你就可以拿回你的穿孔卡片,上面带有行式打印机输出结果。如果你的程序没有成功运行,你得不到任何输出,或者如果你制造了某种死循环,你则可能拿到一页又一页的结果。

接下来发生了什么?

在我的大学生涯快结束的时候,学校开始使用 watfor 编译器,这是一款来自加拿大的滑铁卢大学的 Fortran 版本。它的优势在于你可以在终端中使用它,并在大型机中保存你的程序,而不需要使用我们曾经非常喜爱的穿孔卡。因此你可以自行运行你的程序,也可以立即创造死循环的程序。欧耶!

Fortran 之后,吸引了我的眼球的另一门编程语言是 BASIC,它与 Fortran 有很多相似之处,不过能够更好的处理字符串。Fortran 在字符串处理方面太糟糕了。我主要是在 Amiga 计算机上做这些事情的。

在转向 Linux 后,我接下来接触的语言是 Perl,奇怪的是,似乎很容易从 BASIC 语言过渡到 Perl。接着 Perl 之后,就是 Python,一门在语法上更加灵活的语言。

—— Gregory Pittman


你的第一门编程语言是什么?

我 1974/1975 年学习的 Waterloo Fortran IV,这是入学第二年时我上的第一门计算机科学课程,当时我几乎确信我想要主修计算机科学了。这一年的稍晚时间,我们还学习了一些有关 IBM 360/370 汇编器的内容。在那段时间里,在英属哥伦比亚大学的低年级课程中我们使用的是打孔机,我们可以使用一个“学生终端”来连接我们的卡片盒,并得到一张供我们的卡片盒运行一次的“蓝色凭证”,然后走到 IBM 行式打印机后面拿回我们的程序输出。即使旁边明明写了一张提示“不要将你的卡片盒放在打印机上,以免打印机(上盖)开启”,不过如果你还是不注意,将你的卡片盒放到了打印机的上面。此刻,打印机可能刚好用完了纸或者发生了卡纸,于是主动打开了上盖,你的卡片盒将会掉到地上变成一团糟。

在我主修计算机科学的第三学年,我选了一系列的课程 —— 以 PL/I 为特色的第三年主流课程、一学期的 360/370 汇编器课程、两门关于计算机理论的荣誉课程、一门数值分析课程、“密歇根终端系统上的十二种编程语言”,以及一系列数学课。

在我的第四学年,我被应用数学研究所聘为研究助理。此时,我主要为一小群主要对求解微分方程的感兴趣的数学家们编写 Fortran 程序来获取报酬。同时,也是从那时开始,我意识到计算机科学并非我的最爱,我开始转向数学。我仍然继续学习了一些计算机科学课程 —— 优化课程以及更多的数值分析课程。回过头看,这是我走上数据科学之路的第一步。

我毕业之后的第一份工作还是编程,主要是使用 Fortran、PL/I 以及 SPSS 编程,SPSS 是一种统计编程语言。此外,我也学会了如何使用 MPSX(LCTT 译注: 拓展数学编程系统 Mathematical Programming System Extended ),这是 IBM 的一种线性规划通用语言。

—— Chris Hermansen


你的第一门编程语言是什么?

在我高中的时候,作为一项实验,让一位没有任何计算机经验的教师教我们计算机编程。我的学校之前从来没有尝试过这类课程。施乐公司给我们提供了一台 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 ?)以及(用于 APL 语言编程的有各种符号的“怪异”键盘)。在 APL 语言中,退格键不是用来删除已经输入的内容,反而是重写该操作符为其他的操作符。

—— Kevin Cole


你的第一门编程语言是什么?

雅达利 PILOT 语言以及雅达利 BASIC 语言(LCTT 译注: 雅达利 Atari )。我的父母给孩童时期的我买了一台雅达利 1200XL 计算机,我开始只是用他们来玩游戏或者完成一些艺术课程。家里有两盒卡带,我父亲告诉我它们是“适合成人使用的,因为不是为小孩子设计的,我不会对他们感兴趣”。所以,显然我无比好奇。终于有一天我禁不住找出并装载了它们。刚开始的时候我一头雾水,直到我找到一本我父亲买的有关这两盒卡带的书籍。我输入了书上的样例,发现能够实现一些事情的感觉是相当酷的。我当时还不能完全独立地编写程序,不过我可以拿来书中的样例,然后仅仅更改其中的部分内容,直到我能让它完成一些其他的事情或者使之崩溃进而只能撤销这些更改。我曾经计划再次尝试一遍,看看我还能记得多少,不过我一直都没有抽出时间(来做这件事)。

—— JT Pennington


你的第一门编程语言是什么?

ELAN。这是那一时期相当优秀的编程语言。尤其需要重点说明的是它是与 EUMEL 系统紧密结合的,可以用它做并行计算。

你花钱学习的吗?

它是一项课后活动。

你是自己选择它的吗?

不是。

为什么这么说?

我想学习弹钢琴,我的父母跟我说如果我愿意参加打字课的话我就可以得到一台钢琴。打字课的隔壁就是课后计算机俱乐部,我觉得那有趣多了。不幸地是,时至今日我也不会弹钢琴,计算机使我一直忙到了现在。

接下来发生了什么?

当我上大学的时候,他们还在使用打孔卡和 Fortran。我很庆幸我的高中老师允许我使用学校的并行机编程。此间,我也尝试了 BASIC 语言,但这比不上我学习的 ELAN,而且很枯燥。后来我转向 Pascal,Pascal 也比不上 ELAN。再后来就是 C 语言、Modula-2 语言和 Ada 语言,我最后发现了 Occam,并且使用它在 晶体电脑 transputer 上完成了很多任务。这是相当激动人心的,因为我们可以做更多的并行计算。能够使用 64 台晶体电脑是一件相当酷的事情。同时,接入各种网络配置也令人兴奋。这是几十年前的事情了。我看到了往日的高中生与今日的高中生的不同点。我们当时几乎没有资源(我直到大四的时候才买得起一台电脑),而今天电脑已经习以为常了。而且,电脑与类似 FLL(FIRST Lego League)这样的机器人使得降低编程的门槛成为可能。然而,今天的学生们也被随处可及的电子游戏以及其中炫酷的图像所分心。现成产品(像电子游戏、手机以及平板电脑等)使得今天的学生能够从闲暇时间中抽出用来学习机算机科学的时间很有限。我必须承认,如果在我长大之后也接触到了今天这样的电子游戏,我可能对计算机科学拥有完全不同的看法,并且也不会被我的同学们视作“书呆子”,而是成为一个游戏玩家。

不幸的是,我没有时间玩游戏,我的 RTX3090 显卡在运行人工智能算法。我真正想要的玩具是一台 A100 GPU 以及一套我现在远程使用的 DGX 系统。我认为由于 Google colab 以及其通过 Jupyter 可访问的特点,对人工智能的接触可以下放到高中水平。然而这一切都取决于带领你入门的高中教师。如果你的编程老师只是教你乐高机器人上的块编程,而不是 Python,或者只是教你使用 Scratch 而不是 Google colab。那么我们就没有利用那些学生早年间的潜力,也没有利用这些出众的基础设施。

—— Gregor von Laszewski


你的第一门编程语言是什么?

我在一台 Apple 电脑上接触到了 Logo 编程语言。它由麻省理工的 西蒙· 佩珀特 Seymour Papert 等人在 1967 年开发。这是一种为了教育目的开发的编程语言,是 Lisp 语言的一个子集。

我学习它是当时我参与的一项毕业教育项目的一部分。作为该项目的一部分,我使用 Logo 教一名五年级学生的几何学。在教这名学生 Logo 编程语言和这门课程的时候,我发现我在数学上的麻烦与无助在于无法可视化这些材料。在完成我的研究生课程以后,我使用 Logo 语言继续以相同的课程与编程语言教其他学生们几何与数学。学生们和我在这个过程中学习了数学,并开发了一些优美的图形,我们实际上是为一个“乌龟”机器人编程,在需要放在教室地板上的巨幅纸张上绘制我们的图像。我的编程经历让我开始寻找其他的方式来将数学带入学生的生活中,这让我开始接触 Python 以及 Python 中的“乌龟”模块。后来,我开始教学生们写 Python 程序,这些程序的特点是“屏幕上的”乌龟机器人可以创建优美的图像。与此同时,我也开始向这些学生介绍 Python 编程语言与逻辑思考能力。

—— Donald Watkins


你的第一门编程语言是什么?

ZX81 BASIC。

我还在上小学的时候,大概 10 岁或者 11 岁的样子,我的一个朋友得到了一台 ZX81 计算机。于是我自学了 BASIC 并编写了一些简单的程序尝试在他的机器上运行。1982 年的圣诞节,我得到了属于我自己的 ZX81 计算机,此后不久,ZX81 的硬件跟不上硬件发展了,我于 1993 年晚些时候转向了 ZX Spectrum ,自此之后,我也使用 Z80 汇编语言编写了一些程序。

多年以后,我偶然得到一款早期型的卡西欧掌上型计算器,它可以执行 BASIC 程序。这是 PB 系列的一款设备,有可能是 PB-200,不过我已经记不清具体的型号了。16 岁时在英国,我设法说服了我的老师允许我在我的 数学普通等级考试中) 使用它。我也关注过其他的编程语言,不过直到我在大学开始学习 Ada 之前,我都没有真正学过其他的编程语言。

—— Steven Ellis


你的第一门编程语言是什么?

我的第一门编程语言是 BASIC,那是在 80 年代早期的事了。

我的一个亲戚给他们的孩子买了一台 C64 计算机用来让他们学习计算机。他们只用这台计算机玩游戏,我也被邀请一起玩。不过他们还有一本关于 BASIC 语言的书,我非常好奇并做了尝试。我写了一些简短的代码,我甚至都不知道怎么保存它,不过当我看到计算机如我告诉它的那样工作的时候那仍然令人十分兴奋。这也说明我不是花钱来学习 BASIC 编程的,也不是我的选择,它是我当时能接触到的语言。几年后当我得到我的第一台计算机,一台 XT 兼容机后,我首先用 GW-BASIC 语言写了一些代码,GW-BASIC 是 BASIC 语言在 DOS 系统下的一种方言。

接下来发生了什么?

我第一次真正选择的编程语言是 Pascal。我问了一圈,又查了一些书籍,它看上去是在功能与难度之间的一个挺好的妥协。一开始,我用的是 Turbo Pascal,我用它编写了各种简单的游戏与图形。我热爱 Pascal,因此在上大学的时候,我甚至还在用它(FreePascal 和 Lazarus)来进完成测量自动化与地下水污染分布的建模。

—— Peter Czanik


你的第一门编程语言是什么?

卡西欧 fx-7200G 的编程语言的 一个变体,我想它可能没有自己的名字。

你花钱学习的吗?

不是。

你是自己选择它的吗?

也不是。

为什么这么说?

我在 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


你的第一门编程语言是什么?

TI-BASIC。

你花钱学习的吗?

不是,不过我那时才 10 岁。

你是自己选择它的吗?

不是。

为什么这么说?

这是 TI-99/4A 计算机上仅有的编程语言了!嗯,这台计算机上也有 “Extended Basic” 语言,不过这只是 BASIC 的一个拓展指令集。你实际上可以在 16Kb 内存中编写像样的游戏。

接下来发生了什么?

下一步就是输入通过纸质杂志上的程序并把它们记录到录音带上。不过我与我哥哥在这一步上做得更加深入 —— 我们通过将结果的声音通过电台广播的方式让别人录制下来!由于清晰的录音和足够的纠错,在 1985 年就实现了通过无线方式分发和下载程序。

—— Thierry Carrez


你的第一门编程语言是什么?

GW-BASIC。

你是自己选择它的吗?

不是。

为什么这么说?

它是针对初学者的标准教学内容。

接下来发生了什么?

我开始在一家公司里做计算机硬件专家。

—— Hüseyin GÜÇ


你的第一门编程语言是什么?

BASIC,在 VIC-20 机器上。

你花钱学习的吗?

不是。

你是自己选择它的吗?

我只是选择了那台电脑。

为什么这么说?

我发现 VIC 计算机至少是跟我在学校里见到的 PET 机器最兼容的机器了。而且它有一个好看的键盘。

接下来发生了什么?

接下来就是编程时间了,因为这台机器也没有其他事情可以做了——我学到了很多。

—— Bob Murphy


你的第一门编程语言是什么?

如果我没有记错的话,那是 2004 年还是 2005 年。我还在上学,可能是 5 年级,我接触到了 BASIC。此前,我还学了有关 “Window Logo” 的一些知识。

你花钱学习的吗?

我父母花钱供我上学了。

你是自己选择它的吗?

根本不是。

为什么这么说?

这是由我学校学习的课程决定的。

接下来发生了什么?

它彻底燃起了我对编程的兴趣,我继续在课外学习班中学习了 C/C++ 语言。我的父母非常鼓励我,并且在设法给我提供了额外的费用。我经常是整个计算机补习机构里最后仅剩的那个“孩子”。我是唯一一个学习编程语言的人,而其他人大多学习 MS Office 或 PhotoShop 等。哈哈。好了,剩下的就是历史了。

—— Kedar Vijay Kulkarni


你的第一门编程语言是什么?

Fortran,因为那是很久之前的事了。

你花钱学习的吗?

不是的,我是通过上计算机课程学习的它。

你是自己选择它的吗?

不,那是仅有的选择。我很幸运我用的是终端而不是打孔卡片,我可怜的丈夫在学习 Fortran 程序的时候用的还是打孔卡片。

为什么这么说?

我是人文专业毕业(英语与人类学双专业),我临毕业的时候实际上必须找一份工作。我想,学一门计算机课会让找工作容易一些。事实证明,就市场需要的技能而言,这一门编程课程是我学到的最有价值的课程。它给我在后续的学习 Python、理解 Git 以及为 Red Hat 撰写和编辑文档时提供了一个很好的基础。

接下来发生了什么?

我回家后在一台我父母购买的 TI-99 计算机上自学了 BASIC 语言(我不确定他们为什么买了它,或许是为了我的弟弟)。早些年的 Fortran 基础让我在 Windows 出现之前能够更加容易使用早期个人电脑,因为我能够搞懂 DOS。这显然是一个简陋的开始。

—— Ingrid Towey


你的第一门编程语言是什么?

2001 年,我通过阅读艾迪生-韦斯利出版社的 《Goto Java》 这本书学习了 Java SE 1.2。

你是花钱学习的吗?

没有,我当时还在学校里。

你是自己选择它的吗?

是的。

为什么这么说?

我想要使用 Java Applets 制作交互式网页。

接下来发生了什么?

我上大学了,接触到了自由和开源软件(FOSS),并且学习了 ANSI C 语言。

—— Joël Krähemann


你的第一门编程语言是什么?

我准备就此写一篇文章,不过我已经写了这篇了:《参与开源软件并不必须要计算机科学学位(2020 年 8 月 6 日)》。

这篇文章中的重点如下:

我的父母买了一台 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


你的第一门编程语言是什么?

我的第一门编程是 BASIC,准确地说是 雅达利 Atari BASIC 语言。

20 世纪 80 年代,我家买了一台雅达利 400 家用计算机。我用它来玩游戏,不过它也自带了一盘 BASIC 语言的卡带。它还包括一个盒式录音机(雅达利 1010)。那些年,程序可以存储在标准的录音带上。雅达利 400 没有内部存储空间,因此我也学会了如何将我的程序保存到录音带上,以及随后如何重新加载它们。除了常见的“Hello World”的程序,我还写了一些可以用操作杆来控制声音与图形的程序。我现在还记得用来设置和读取某些设置属性的 PEEKPOKE 命令,比如颜色或声音设置。

你花钱学习的吗?

不是。

你是自己选择它的吗?

是的,它是雅达利中内置的编程语言,因此我确定尝试一下——我非常喜欢用它编程。

接下来发生了什么?

一段时间之后,我可能对雅达利以及电子游戏失去了兴趣。直到 90 年代中期,当我参加计算机课程以辅修计算机科学时,我才重新对计算机和编程重新感兴趣。这些课程教会了我 C 语言、汇编语言以及很多其他的通用计算机与网络技术。作为我的硕士学位的一部分,我后来又学习了 Java。在我的职业生涯中我只进行过数量不多的正式编程工作,主要是在本世纪 10 年代中期时在 ColdFusion 环境下使用 Java 语言。从编程方面来说,命令行脚本是我的主要领域,主要是在 Bash 与 Windows 瞎,不过只要有需要,我也会进行特定目标的编程。我使用过 工作控制语言 Job Control Language (JCL)用来在大型机系统之间进行自动文件传输。我也使用过 Python 用来将 REST API 的查询结果返回给企业的监控面板。我仍然认为我早期的 BASIC 编程经历是值得的,因为我获得了对软件和编程的尊重。

—— Alan Formy-Duval

(题图:MJ/0cf8b9b0-fb92-4131-ab89-ee0880c1b4a9)


via: https://opensource.com/article/21/8/first-programming-language

作者:Jen Wike Huger 选题:lujun9972 译者:CanYellow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

开源爱好者们对他们所喜爱的 Linux 内核模块进行了评价。

 title=

Linux 内核今年就要满 30 岁了! 如果你像我们一样对此特别重视,那么让我们本周用几个特别的文章来庆祝 Linux。

今天,我们先来看看来自社区对“你不能没有哪个 Linux 内核模块?为什么?”的回答,让我们听听这 10 位爱好者是怎么说的。

1

我猜一些内核开发者听到我的回答后会尖叫着跑开。不过,我还是在这里列出了两个最具争议性的模块:

  • 第一个是 NVIDIA,因为我的工作笔记本和个人台式机上都有 NVIDIA 显卡。
  • 另一个可能产生的仇恨较少。VMware 的 VMNET 和 VMMON 模块,以便能够运行 VMware Workstation。

Peter Czanik

2

我最喜欢的是 zram 模块。它在内存中创建了一个压缩块设备,然后它可以作为交换分区使用。在内存有限的情况下(例如,在虚拟机上),还有如果你担心频繁的 I/O 操作会磨损你的 SSD 或者甚至更糟糕的基于闪存的存储,那么使用基于 zram 的交换分区是非常理想的。

Stephan Avenwedde

3

最有用的内核模块无疑是 snd-hda-intel,因为它支持大多数集成声卡。我可以一边听音乐,一边在 Linux 桌面上编码一个音频编曲器。

Joël Krähemann

4

如果没有我用 Broadcom 文件生成的 kmod-wl,我的笔记本就没有价值了。我有时会收到关于内核污染的信息,但没有无线网络的笔记本电脑有什么用呢?

Gregory Pittman

5

我不能没有蓝牙。没有它,我的鼠标、键盘、扬声器和耳机除了用来挡住门板还有啥用?

Gary Smith

6

我要冒昧地说 都是。 说真的,我们已经到了随机拿一块硬件,插入它,它就可以工作的地步。

  • USB 串行适配器能正常工作
  • 显卡可以使用(尽管可能不是最好的)
  • 网卡正常工作
  • 声卡正常工作

所有这些模块整体带来大量可以工作的驱动程序,令人印象深刻。我记得在过去那些糟糕的日子里,我们曾经大喊 xrandr 魔法字符串才能来使投影仪工作。而现在,是的,当设备基本不能正常工作时,才真的罕见。

如果我不得不把它归结为一个,那就是 raid6。

John 'Warthog9' Hawley

7

对于这个问题,我想回到 20 世纪 90 年代末。我是一家小公司的 Unix 系统管理员(兼任 IS 经理)。我们的磁带备份系统死了,由于“小公司”预算有限,我们没有急于更换或现场维修。所以我们必须得把它送去维修。

在那两个星期里,我们没有办法进行磁带备份。没有一个系统管理员愿意处于这种境地。

但后来我想起了读过的 如何使用软盘磁带机,我们刚好有一台刚换下来的塔式电脑,它有一个软盘磁带机。

于是我用 Linux 重新安装了它,设置了 ftape 内核驱动模块,进行了一些备份/恢复测试,然后将我们最重要的备份运行到 QIC 磁带上。在这两个星期里,我们依靠 ftape 备份重要数据。

所以,对于那些让软盘磁带机在 1990 年代的 Linux 上工作的无名英雄,你真是太厉害了!

Jim Hall

8

嗯,这很简单。是 kvm 内核模块。就个人而言,我无法想象在没有虚拟机的情况下完成日常工作。我愿意相信我们大多数人都是这样。kvm 模块在使 Linux 成为云战略的核心方面也发挥了很大作用。

Gaurav Kamathe

9

对我来说,是 dm-crypt,它是用于 LUKS 的。参见:

知道别人无法看到你的磁盘上的内容是非常棒的,例如,如果你的笔记本丢失或被盗时。

Maximilian Kolb

10

对于密码学基础,很难超越 crypto 模块和它的 C API,它是如此简洁明了。

在日常生活中,还有什么比蓝牙提供的即插即用更有价值的吗?

Marty Kalin

在评论中与我们分享。你的生活中不能没有什么 Linux 内核模块?


via: https://opensource.com/article/21/8/linux-kernel-module

作者:Jen Wike Huger 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在结束了一天的远程会议、邮件往来、写代码和其他协作工作后,你在晚上如何放松自己呢?

 title=

这个奇怪的时代一方面给我们放慢脚步的机会,但另一方面来说,却比以前更忙了,尤其是当你除了照顾自己还要照顾家人的时候。俗话说,空杯子倒不出酒。所以,让我们看看在关上电脑或者完成最后一件工作之后,能为自己做些什么?

1、走出家门,做几次深呼吸,不要在乎是不是下雪天,让新鲜的空气从肺部充满全身。如果可以的话,在院子里走走,或者去街上逛逛。

2、如果有时间的话,给自己沏杯茶,红茶含有咖啡因,最好不要晚上喝,可以喝绿茶或者花果茶,然后在你穿上鞋(或许还有外套)时让它稍微凉一下。把茶倒在保温杯里,在小区周围散散步。不用设置目标或者目的地,就随便走走。如果你时间不充裕的话,可以定一个 15 分钟的闹钟。

3、放一首突然想到的歌,或者听之前想听但是一直没机会听的歌。

4、如果你有时间的话,别在椅子上继续坐着,可以站起来跳一段舞活动活动,或者到床上平躺着,躺着的时候什么也不要想,放空自己,让大脑休息休息。研究表明,给大脑一段空白时间后可以更好的思考。

5、打开你的 电子书应用 或者拿起一本纸质书,看纸质书相对来说对眼睛好点。享受轻松的阅读,如果不能长时间阅读的话,起码给自己留出能阅读一个章节的时间。

6、制做一些美食。享受把从杂货店买到的基本的食材按照菜谱做成一份美味佳肴的成就感和兴奋感。

你也可以在晚上把其中一些综合起来做,好好放松。如果你是 IT 人,那么无论是在 早上、中午、晚上用这些方式放松都很有效,因为现在我们都是在家工作,远程办公,没有和同事面对面交流时的闲暇。

那么,你的晚上放松方式是什么?


via: https://opensource.com/article/20/11/evening-rituals-working-tech

作者:Jen Wike Huger 选题:lujun9972 译者:Arzelan 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

喜欢列表?看看这个便捷的开源应用程序列表,以管理你所有的列表!

奇妙清单(Wunderlist)是一款清单应用,受到很多人的喜爱,但从 2020 年 5 月 6 日起,它就永远停止了。它的网站鼓励现有用户下载并使用“微软待办”来代替它。这很诱人,因为它可以轻松导入你多年来制作的所有这些列表。不过话又说回来,也许这是个机会,可以“近藤麻理惠”一下这些列表,并削减一些事务。(你真的需要 30 个列表吗?很显然,我觉得我需要,所以我不做评判。)

我有各种各样的清单,从“2020 年花园的植物”到“给丈夫的礼物”。有些是清单,有些是待办事项清单,有些是为了清单而清单。

对我和我丈夫来说,最有用的清单是我们共享的杂货清单。我们都有手机上的应用程序,我们都把东西添加到列表中,但在他去购物之前,我们分别在手机上审查它(是的,你没看错),他把东西放进购物车时,他就会勾掉它。这让整个过程变得出奇的高效,我想我们节省了一些钱,因为我们喜欢坚持按清单购物。

虽然奇妙清单的用户很喜欢它,但它并不是完全独一无二的。还有无数的列表应用。对于奇妙清单,我特别喜欢它将简洁性和设计感结合在一起,而且它成功实现了一些有用的功能,比如与他人分享和协作,列表的动态复选框,以及在移动和网页界面上的良好用户体验。我也很喜欢用它来做一个不“活跃”文档的列表:一个我不会每周都回顾或定期进展的列表,就像我用来进行头脑风暴的许多列表一样(包括我一直想写的小说...)。

从这些年来我们发表的许多精彩文章中,我整理了一系列奇妙清单的开源替代方案,从简单的任务管理和待办事项清单到复杂的笔记记录和流程管理,这些列表工具可能会满足你的需求。或者,如果你是那个在丢得到处都是的纸条和便签上书写任务和备注的人,这可能是尝试这些数字工具之一的好时机。

Tasks:可与 OwnCloud 配合

Tasks 是一款自由开源的应用,你可以从 F-droid 安装。Tasks 是一款只适用于手机的应用,但它可以同步到各种地方,非常灵活。你可以将你的列表保存到 NextCloud 或 OwnCloud、Google Tasks、Apple Reminders 以及几乎所有你有账户的 CalDAV 服务器上。

Tasks 的默认视图是每日视图,所以你输入的任何任务都被假定为从今天开始的任务。如果你像我一样,想维护几个不同的列表,你可以用标签来实现。当你创建一个标签时,你就为任务创建了一个类别。你可以为它指定一种颜色和一个图标,这样每个任务列表都是独一无二的。

这需要一点时间来适应,但标签有很多优点。因为所有的任务都是有标签的,你可以通过点击你想过滤的标签来查看任务组,但你也可以按天甚至按地点过滤。这意味着,当你去采购杂货时,你的杂货列表会成为活跃的默认列表,而当你回到家时,你的日常生活列表又会成为活跃的列表。

通过将你的数据同步到你的一个在线账户,你可以与亲人、合作者和同事分享列表。

另一个伟大的功能是,如果你每天早上上班时都有相同的任务,或者每周杂货清单中有 20 个相同的项目,你可以创建定期重复的任务。

评测者:Seth Kenlon

 title=

OpenTasks:适于长列表

OpenTasks 是一款优秀的任务管理工具,可以创建带有各种设置的个人任务。它在创建任务时支持多种字段,从基本的东西,如名称和描述,到更复杂的项目,如选择任务是私人、公共还是机密。OpenTasks 与其他替代品最大的不同之处在于它在应用的主屏幕上使用了选项卡。这些选项卡可以让你快速看到到期的任务、即将开始的任务、按优先级排序的任务,以及按当前完成进度排序的任务。许多其他应用程序支持做这样的事情,但 OpenTasks 很快就能轻松访问这些列表。

阅读完整的 OpenTasks 评测,作者:Joshua Allen Holm。

 title=

Mirakel:嵌套列表的绝佳之选

Mirakel 是一款任务管理应用,它拥有现代化的用户界面,并支持你在这样一款程序中可能想要的几乎所有格式。Mirakel 在基础层面上支持多个被称为“元列表”的列表。创建一个单独的任务有大量的选项,有截止日期、提醒、进度跟踪、标签、备注、子任务和文件附件,所有这些都构成了任务条目的一部分。

阅读完整的 Mirakel 评测,作者:Joshua Allen Holm。

 title=

Todo:简单有效,随处可用

Todo.txt 是我不断反复推荐的两个待办事项和任务管理应用之一(另一个是 Org 模式)。而让我不断推荐的原因是,它简单、便携、易懂,而且有很多很棒的附加组件,即使一台机器有这个程序而其他机器上没有,也不会破坏它。而且由于它是一个 Bash shell 脚本,我从来没有发现不支持它的系统。阅读更多关于如何安装和使用 Todo.txt

阅读完整的 todo.txt 评测,作者:Kevin Sonney。

 title=

Joplin:最佳私人列表

Joplin 是一个 NodeJS 应用程序,它可以在本地运行和存储信息,允许你加密任务,并支持多种同步方法。Joplin 可以作为控制台或图形应用程序在 Windows、Mac 和 Linux 上运行。Joplin 还拥有 Android 和 iOS 的移动应用,这意味着你的笔记随处可用,而不需要大费周章。Joplin 甚至允许你用 Markdown、HTML 或纯文本来格式化你的笔记。

阅读完整的 Joplin 评测,作者:Kevin Sonney。

 title=

CherryTree:最好的 Evernote / OneNote / Keep 替代品

CherryTree 是一个 GPLv3 许可的应用程序,它以节点的形式组织信息。每个节点都可以有子节点,让你轻松组织你的列表和思想。而且,子节点可以有自己的子节点,具有独立的属性。

阅读完整的 CherryTree 评测,作者:Ben Cotton。

 title=

附赠:Wekan,给看板粉丝

看板 kanban 是当今敏捷流程的主流。我们中的许多人(包括我自己)不仅用它们来组织我们的工作,还用它们来组织我们的个人生活。我认识一些艺术家,他们使用 Trello 这样的应用程序来跟踪他们的委托清单,以及正在进行和已经完成的工作。但这些应用往往与工作账户或商业服务挂钩。让我们看看 Wekan,这是一个开源的看板,你可以在本地或你选择的服务上运行。Wekan 提供了与其他看板应用相同的功能,比如创建面板、列表、泳道和卡片,在列表之间拖放,分配给用户,给卡片贴标签,以及做几乎所有你在现代看板中期待的事情。

阅读完整的 Wekan 评测,作者:Kevin Sonney。

 title=


via: https://opensource.com/article/20/5/alternatives-list

作者:Jen Wike Huger 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这些主意都用到了有关的开源技巧。

人们可以做些什么来拯救地球?这个问题可能会让人感到压抑,因为有时我们感觉个人可以做的贡献太少了。但是作为地球公民,我们从来不是一个人。所以,我向我们的作家社区征集了一些开源软件或硬件可以帮助改变现状的方法。以下是他们的回复。

九种利用开源的方法来拯救地球的方式

1、在你的终端禁用闪烁的光标

这听起来可能有点傻,但是那个无关紧要的闪烁的光标可能导致每小时两瓦特的额外电力开销。如果要禁用光标闪烁,可以通过更改终端设置: 编辑 Edit > 偏好设置 Preferences > 光标 Cursor > 光标闪烁 Cursor blinking > 禁用 Disabled

由 Mars Toktonaliev 推荐

2、减少有关动物产品和加工食物的消费

这样做的一种方法是在你的手机中添加这些开源的 App:Daily Dozen、OpenFoodFacts、OpenVegeMap 和 Food Restrictions。这些 App 可以帮助你准备一份健康的素食饮食计划,为你找到素食主义者和严格素食主义者可以就餐的餐厅,还可以帮助你把你的饮食需求告诉别人,即使他们不和你讲同一种语言。如果想要了解更多有关这些的 App 的信息,你可以阅读《4 款“吃草”的开源应用》。

由 Joshua Allen Holm 推荐

3、让旧电脑重焕新生

怎么做?当然是用 Linux。通过给那些自己得不到新电脑的人创造一台新电脑来传递爱心,同时也可以避免让这台电脑进到垃圾填埋场。可以在 The Asian Penguins 看看我们是怎么做的。

由 Stu Keroff 推荐

4、在你不使用设备时关闭它们

你可以使用带有主插座和控制插座的“智能插座板”。把你的电脑连接到主插座上,这样的话当你打开电脑时所有你连接到控制插座上的设备如显示器,打印机等也都会打开。一个更简单的、技术含量更低的方法是使用一个带有计时器的插座板。我在家里就是用的这个。你可以用计时器上的开关设定一个定时开关电源的时间表。这样可以在没有人在家时自动关闭网络打印机。或者以我的用了六年的笔记本电脑为例,我通过一个交替使用外接电源(插座打开)和使用电脑电池(插座关闭)的电源计划延长了电脑电池的寿命。

由 Jim Hall 推荐

5、减少供暖通风系统(HVAC)的使用

在夏天,透过窗户的阳光可以为室内提供很多热量。使用 Home Assistant 可以基于一天中的时间的,甚至是基于太阳高度角自动调节窗帘和遮阳棚。

由 Michael Hrivnak 推荐

6、出门就把恒温器关闭或调低

如果你的家用恒温器具有“离开”功能,你很容易忘记在出门时启用它。借助自动化,任何连接到网络的恒温器都可以在你不在家时自动节省能量。Stataway 就是一个这样项目。它通过调用你的手机的 GPS 坐标来决定是将你的恒温器设置为“在家”还是“离开”。

由 Michael Hrivnak 推荐

7、为未来储蓄算力

我有一个主意:创建一个可以读取可选的能量阵列(如风能或太阳能)的输出的脚本。这个脚本应该将计算集群中的服务器从睡眠模式更改为激活模式,直到过量的电能(超出可以储存的部分)被用尽。然后在高产能时段使用这些过量的电能来进行需要大量计算的项目,比如渲染。这个过程本质应该是免费的,因为使用的能量无法被储存起来挪作它用。我相信现有的监控、能量管理和服务器阵列工具一定可以实现这个功能。那么剩下的只是一些整合上的问题,就可以让整个系统工作起来。

由 Terry Hancock 推荐

8、关掉你的灯

根据 人工夜空亮度图集 World Atlas of Artificial Night Sky Brightness 的说法,光污染影响了全世界超过 80% 的人口。这一结论在 2016 年(遵循 CC-NC 4.0 协议)发表在公开访问的期刊《 科学进展 Science Advances 》上。关闭外部照明是一个可以使野生生物、人类健康受益并让我们享受夜晚的天空的快速途径,而且可以减少能量消耗。访问 darksky.org 来查看更多减少外部照明影响的方法。

由 Michael Hrivnak 推荐

9、减少你的 CPU 数量

就我个人而言,我记得我以前有很多在地下室运行的电脑作为我的 IT 游乐场/实验室。我现在对于能源消耗更加注意了,所以确实大大地减少了我的 CPU 数量。我现在更喜欢利用虚拟机、区域和容器等技术。另外,我很高兴有小型电脑和 SoC 电脑这种东西,比如树莓派,因为我可以用一台这样的电脑做很多事情,比如运行一个 DNS 或者 Web 服务器,而无需使整个屋子变热并积累昂贵的电费账单。

P.S. 这些电脑都运行于 Linux、FreeBSD,或者 Raspbian 系统!

由 Alan Formy-Duvall 推荐


via: https://opensource.com/article/19/4/save-planet

作者:Jen Wike Huger 选题:lujun9972 译者:MFGJT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Linux 爱好者们分享了他们犯下的一些最大错误。

终身学习是明智的 —— 它可以让你的思维敏捷,让你在就业市场上更具竞争力。但是有些技能比其他技能更难学,尤其是那些小菜鸟错误,当你尝试修复它们时可能会花费你很多时间,给你带来很大困扰。

以学习 Linux 为例。如果你习惯于在 Windows 或 MacOS 图形界面中工作,那么转移到 Linux,要将不熟悉的命令输入到终端中,可能会有很大的学习曲线。但是,其回报是值得的,因为已经有数以百万计的人们已经证明了这一点。

也就是说,这趟学习之旅并不是一帆风顺的。我们让一些 Linux 爱好者回想了一下他们刚开始使用 Linux 的时候,并告诉我们他们犯下的最大错误。

“不要进入[任何类型的命令行界面(CLI)工作]时就期望命令会以合理或一致的方式工作,因为这可能会导致你感到挫折。这不是因为设计选择不当 —— 虽然当你在键盘上敲击时就像在敲在你的脑袋上一样 —— 而是反映了这些系统是历经了几代的软件和操作系统的发展而陆续添加完成的事实。顺其自然,写下或记住你需要的命令,并且(尽量不要)在事情不是你所期望的时感到沮丧。” —— Gina Likins

“尽可能简单地复制和粘贴命令以使事情顺利进行,首先阅读命令,至少对将要执行的操作有一个大致的了解,特别是如果有管道命令时,如果有多个管道更要特别注意。有很多破坏性的命令看起来无害 —— 直到你意识到它们能做什么(例如 rmdd),而你不会想要意外破坏什么东西(别问我怎么知道)。” —— Katie McLaughlin

“在我的 Linux 之旅的早期,我并不知道我所处在文件系统中的位置的重要性。我正在删除一些我认为是我的主目录的文件,我输入了 sudo rm -rf *,然后就删除了我系统上的所有启动文件。现在,我经常使用 pwd 来确保我在发出这样的命令之前确认我在哪里。幸运的是,我能够使用 USB 驱动器启动被搞坏的笔记本电脑并恢复我的文件。” —— Don Watkins

“不要因为你认为‘权限很难理解’而你希望应用程序可以访问某些内容时就将整个文件系统的权限重置为 777。”—— Matthew Helmke

“我从我的系统中删除一个软件包,而我没有检查它依赖的其他软件包。我只是让它删除它想删除要的东西,最终导致我的一些重要程序崩溃并变得不可用。” —— Kedar Vijay Kulkarni

你在学习使用 Linux 时犯过什么错误?请在评论中分享。


via: https://opensource.com/article/19/4/linux-rookie-mistakes

作者:Jen Wike Huger 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出