标签 编程语言 下的文章

人工智能正在大量“喝水”,你的每个问题都会用掉一瓶水

对人工智能工具的需求不断增长会带来高昂的成本,这不只是昂贵的半导体,还会增加数据中心的耗水量,因为所有这些计算都需要耗费大量电力并产生大量热量。OpenAI 的 ChatGPT 是在微软的数据中心训练的,这导致微软消耗了更多的冷却水。微软在其最新的环境报告中披露,从 2021 年到 2022 年,它的全球耗水量激增了 34%(达到近 17 亿加仑,超过 2500 个奥林匹克规格的游泳池)。有研究估计,每当你向 ChatGPT 提出 5 到 50 个提示或问题时,ChatGPT 会消耗 500 毫升的水来冷却。同期,谷歌的用水量也增长了 20%,这在很大程度上也归功于其人工智能工作。

消息来源:AP News
老王点评:人工智能也需要不断补充水分才能跑啊。?

2023 年顶级编程语言:Python 和 SQL

IEEE Spectrum 发布了第 10 届年度顶级编程语言排行榜。它从三个类别中各选出一种顶级语言:

  • 光谱榜:在软件工程师使用最多的语言
  • 职位榜:雇主需求量最大的语言
  • 趋势榜:流行的语言

Python 在光谱榜(使用最多的语言)中保持第一,它已成为万金油语言,也是某些领域的高手,如人工智能领域。而在职位榜(雇主需求最多)中,SQL 排到了榜首,但具有讽刺意味的是,纯粹的 SQL 程序员是很难找到工作的。相反,雇主们喜欢看到 SQL 技能与其他语言的结合。而在趋势榜上,Python 仍然居首。

消息来源:IEEE
老王点评:Python 登顶并不意外,但是 SQL 能够登上工作需求排行榜首位,还是有点吃惊。所以,你知道该学习什么编程语言了吗?

Meta 计划训练与 GPT-4 相当的人工智能模型

Meta 公司已经购买了更多的英伟达 H100 人工智能训练芯片,以便不需要依赖微软的 Azure 云平台来训练新的聊天机器人。该公司计划在 2024 年初开始训练新的大型语言模型,目标似乎是传闻中 Meta 已经在开发的生成式人工智能功能的自然延伸,预计其功能将与 OpenAI 提供的最先进模型一样强大。据称,Instagram 正在测试一个拥有 30 种性格的聊天机器人,这听起来很像该公司本月即将推出的未公布的人工智能 “personas”。

消息来源:The Verge
老王点评:我比较看好 Meta 在 AI 方面的进展,尤其是他们使用伪开源打破 OpenAI 和谷歌的护城河的做法,颇有影响,虽然我腹诽他们的伪开源。

以下是 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中国 荣誉推出

希望替代 C 的 Zig 语言进入 TIOBE 指数前 50 名

在 TIOBE 2023 年 4 月的最受欢迎的编程语言榜单中,一种它有望成为 C 的现代替代品的通用编程语言 Zig 排名第 46 位,尽管其评分仅为 0.19%。相比之下,谷歌推广的 Carbon 语言,被定位为 C++ 的实验性继任者,仅排名第 168 位。Zig 拥有 C 和 C++ 各种好特性,如用选项类型增强的显式内存管理,并放弃了不那么好的特性,如可怕的预处理。Tiobe 指数建立在课程、第三方供应商和工程师的搜索引擎结果之上。

消息来源:Info World
老王点评:虽然取代 C 语言看起来遥遥无期,但是至少是一个值得感兴趣的选项。

ChatGPT 因撒谎被起诉

澳洲赫本郡的市长 Brian Hood 曾帮助揭露与澳大利亚国家储备银行有关的丑闻,但是,如果你问 ChatGPT 关于他在丑闻中的作用,你会得到相反的事件版本。ChatGPT 谎称 Hood 本人因向外国官员行贿而被定罪,已承认受贿和腐败,并被判处监禁。Hood 打算对 ChatGPT 背后的公司提出诽谤诉讼,这将是第一次有人对 ChatGPT 的内容提出诽谤诉讼。

消息来源:MSN
老王点评:AI 的“事实幻觉”一直是个问题,虽然 AI 已经一再做出免责声明,但是法律似乎对此并无实践。

多款 Wi-Fi 路由器能被 ICMP 嗅探突破安全机制

国内安全专家发现,至少在 55 款 Wi-Fi 路由器中发现的一个漏洞可被不法分子利用,在通过无线网络发送数据时偷窥受害者的数据。这些设备采用了高通或海思的网络处理单元(NPU),该缺陷使得设备无法阻止伪造的 ICMP 重定向信息,从而规避了 Wi-Fi 的 WPA 安全措施,劫持和观察受害者的无线连接。这说明链路层的无线帧加密的设计功能,可以被 IP 层的 ICMP 错误处理的正常执行所干扰。在他们测试的 122 个 Wi-Fi 网络中,有 109 个(89%)容易受到这种攻击。

消息来源:The Register
老王点评:总之不要完全依赖网络层的安全性,应用层的 HTTPS 还是很有必要的。

英伟达采用形式验证来验证软件安全性

英伟达软件安全副总裁说,“面向测试的软件验证对安全来说根本不起作用,你可以对提供给用户的功能的质量有一个衡量标准,但对于安全问题,就没有什么作用,……很难知道你是否已经完成了。”幸运的是,有可能用数学方法证明你的代码的行为与它的规范精确一致。这个过程被称为“形式验证”。英伟达采用软件形式验证行业解决方案 SPARK 来证明软件的安全性。在几年前进行过概念验证后,现在许多英伟达产品在使用 SPARK 组件发布。

消息来源:AdaCore
老王点评:形式验证是个好方法,但是不是那么容易掌握和推行。

JavaScript、Java、Python、Kotlin 和 Rust 开发者增长惊人

根据 SlashData 去年夏天从 163 个国家的 26000 多名开发者调查统计而成的第 23 期《开发者国家报告》,JavaScript 仍然是最大的编程语言社区,全球估计有 1960 万开发者每天都在使用 JavaScript;在过去的两年里,Java 社区的规模已经从 830 万增加到 1650 万,而同期开发者只增加了 50%;Python 在过去两年中增加了约 800 万新的开发人员;Kotlin 和 Rust 社区的规模在过去两年里都翻了一番。

消息来源:ZDNet
老王点评:开发人员越来越倾向于使用主流开发工具,所以流行的越发流行,但是这样就会扼杀一些创新。

密码学家建议考虑非晶格的后量子密码算法

目前许多密码学系统的安全性是基于大数的因数分解的,但因数分解的一个怪癖使其容易受到量子计算机的攻击。因此人们对上世纪 90 年代提出的“晶格密码学”寄予厚望,美国 NIST 选择的四个后量子密码学标准有三个采用晶格密码学。RSA 算法名称中的 S,Adi Shamir 对此表示担忧,“从某种意义上说,我们是把所有鸡蛋放在同一个篮子里”。今年夏天早些时候,一个有前途的后量子密码学方案不是用量子计算机,而是用一台普通的笔记本电脑破解的。

消息来源:Slashdot
老王点评:确实如此,只有一种抗量子的密码理论,很难说会不会被发现潜在的弱点。

程序员奶爸用 AI 解决婴儿喂奶难题

国外一位程序员喜得贵子之后,颇受婴儿喂奶之苦 —— 我想养过孩子的人都有过这种体验。但是作为 AI 工程师,他花费了 50 个小时开发了一套 AI 系统,通过识别婴儿状态来判断是否该喂奶了,并通过手机发送通知给他去喂奶 —— 而不是给他老婆,从而可以让老婆有个良好睡眠。甚至,他还进一步开发了一套全自动喂奶装置,虽然还不太尽如人意,但是已经让全世界奶爸们感到了希望,纷纷催促他开源。

消息来源:Reddit
老王点评:真是技术解救程序员,如果你觉得你的编程技术没帮到你,那只是你的技术还不够好。

国内 Go 语言爱好者发起新编程语言:凹语言

国内三位 Go 语言爱好者发起了一种实验性的新编程语言:凹语言™(读作“Wa”)。但从其官网看,这个语言似乎从 2019 年就开始设计了。目前代码已经发布在 Github,并且提供了简单可执行的示例,不过该项目采用了“保留所有权利”的版权声明(可能是还没来得及确定许可证)。在语言设计中遵循了 Go 语言克制的风格,大量借鉴了 Go 的设计思想和具体实现。比较有趣的特性包括:披着 Go 和 Rust 语法外衣的 C++ 语言;其 WaGo 语法是 Go 的真子集;支持中文/英文双语关键字,任一关键字均有等价的中文及英文版。

消息来源:凹语言
老王点评:一个好玩的业余项目,不够最让我印象深刻的反而是这个语言的名字。

大多数开源开发者都在关注新的工作机会

根据一份基于面向全球 1400 名应用开发者、IT 管理人员、运营和业务管理专业人才的问卷报告显示,尽管还算满意,但 44% 的开发者仍在关注工作选择;另外 10% 的受访者对他们目前的工作不满意。2/3 的受访者声称分配给他们的工作量增加。调查还显示,1/3 的受访者会考虑离开目前的职位,以便有机会使用更尖端的技术,比 2021 年仅 16% 的比例高出一倍。

消息来源:Info World
老王点评:程序员嘛,要么少干活多拿钱,要么可以学技术,你总的至少满足一样。

JavaScript 和 Python 继续统治编程语言,但 Rust 在崛起

根据 SlashData 去年年底的对 166 个国家的 20000 多名开发者的调查,目前最受欢迎的编程语言是 JavaScript,其次是 Python。仅在过去半年,Python 就净增加了 330 万开发人员。而 Rust 的采用在过去两年里几乎翻了两番,达到 220 万开发者。PHP 的增长最少,在 2021 年第三季度和 2022 年第一季度之间,净增加了 60 万名新开发者。但 PHP 是仅次于 JavaScript 的网络应用程序中最常见的语言。Go 和 Ruby 是后端开发中的重要语言,Go 在过去一年中的增长速度超过了两倍,现在有 330 万开发者。

消息来源:InfoWorld
老王点评:所以,现在该去学什么语言了?其实我看,不论什么语言,能用的上的语言就是好语言。但是如果只是泛泛的使用,那无论是学那种语言都没什么用。

Linux 5.18 释出

Linus Torvalds 在内核邮件列表上宣布释出 Linux 5.18。新版的主要新特性包括:C 语言标准从 C89 切换到 C11;改进了随机数生成器;英特尔即将推出的软件定义芯片驱动,可以通过付款解锁处理器附加功能;内存管理接口 DAMOS;严格 memcpy() 边界检查;支持英特尔 CPU 的间接分支跟踪;改进 AMD Zen CPU 进程调度性能等等。

消息来源:KernelNewbies
老王点评:这个版本其实有很多特征值得关注,之前我们也陆续提到了一些,比如使用的 C 语言标准的升级,比如随机数生成器和软件定义芯片功能。

科学家正在修改蚊子的基因以减小雌蚊数量

一个名为“目标疟疾”的组织已经开发出基因驱动,以阻止蚊子产生雌性后代。这很重要,有两个原因:只有雌性才会咬人,而没有雌性,蚊子的数量就会骤减。其核心目的是大大减少死于疟疾的人数,根据世界卫生组织的数据,2020 年有 627,000 人死于疟疾,估计疟疾每年会使非洲大陆的经济产出减少 120 亿美元。不过该技术还没有允许公开使用,目前只是在实验室进行实验。

消息来源:BBC
老王点评:虽然消灭蚊子是一件好事,我天天被蚊子咬,但是我担心贸然破坏自然界可能有意想不到的结果。