蚊章汇 - 编程语言
type: channel
link: https://linuxcn.bwsl.wang/tag/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/
items: 硬核观察 #1121 人工智能正在大量“喝水”，你的每个问题都会用掉一瓶水
items: 你的第一门编程语言是什么？
items: 硬核观察 #966 希望替代 C 的 Zig 语言进入 TIOBE 指数前 50 名
items: 硬核观察 #820 英伟达采用形式验证来验证软件安全性
items: 硬核观察 #708 程序员奶爸用 AI 解决婴儿喂奶难题
items: 硬核观察 #645 JavaScript 和 Python 继续统治编程语言，但 Rust 在崛起
items: 不同的编程语言是如何读写数据的
items: 硬核观察 | Python 之父对 Rust、Go、Julia 和 TypeScript 的看法
items: 五步学会任何编程语言
items: 《代码英雄》第二季（2）：Hello, World

硬核观察 #1121 人工智能正在大量“喝水”，你的每个问题都会用掉一瓶水
type: item
date: 2023-09-12T03:48:00+08:00
description: 人工智能正在大量“喝水”，你的每个问题都会用掉一瓶水对人工智能工具的需求不断增长会带来高昂的成本，这不只是昂贵的半导体，还会增加数据中心的耗水量，因为所有这些计算都需要耗费大量电力并产生大量热量。OpenAI 的 ChatGPT 是在微软的数据中心训练的，这导致微软消耗了更多的冷却水。微软在其最新的环境报告中披露，从 2021 年到 2022 年，它的全球耗水量激增了 34%（达到近 17 亿加仑，超过 2500 个奥林匹克规格的游泳池）。有研究估计，每当你向 ChatGPT 提出 5 到 50 个提示或问题时，ChatGPT 会消耗 500 毫升的水来冷却。同期，谷歌的用水量也增长了 20%，这在很大程度上也归功于其人工智能工作。消息来源：AP News老王点评：人工智能也需要不断补充水分才能跑啊。?2023 年顶级编程语言：Python 和 SQLIEEE 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 和谷歌的护城河的做法，颇有影响，虽然我腹诽他们的伪开源。

你的第一门编程语言是什么？
type: item
date: 2023-05-22T01:36:02+08:00
description: 以下是 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 项目经理。所以我没有做过程序员，不过我…

硬核观察 #966 希望替代 C 的 Zig 语言进入 TIOBE 指数前 50 名
type: item
date: 2023-04-10T03:20:43+08:00
description: 希望替代 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 还是很有必要的。

硬核观察 #820 英伟达采用形式验证来验证软件安全性
type: item
date: 2022-11-15T01:14:46+08:00
description: 英伟达采用形式验证来验证软件安全性英伟达软件安全副总裁说，“面向测试的软件验证对安全来说根本不起作用，你可以对提供给用户的功能的质量有一个衡量标准，但对于安全问题，就没有什么作用，……很难知道你是否已经完成了。”幸运的是，有可能用数学方法证明你的代码的行为与它的规范精确一致。这个过程被称为“形式验证”。英伟达采用软件形式验证行业解决方案 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老王点评：确实如此，只有一种抗量子的密码理论，很难说会不会被发现潜在的弱点。

硬核观察 #708 程序员奶爸用 AI 解决婴儿喂奶难题
type: item
date: 2022-07-25T20:20:02+08:00
description: 程序员奶爸用 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老王点评：程序员嘛，要么少干活多拿钱，要么可以学技术，你总的至少满足一样。

硬核观察 #645 JavaScript 和 Python 继续统治编程语言，但 Rust 在崛起
type: item
date: 2022-05-24T02:34:00+08:00
description: 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老王点评：虽然消灭蚊子是一件好事，我天天被蚊子咬，但是我担心贸然破坏自然界可能有意想不到的结果。

不同的编程语言是如何读写数据的
type: item
date: 2021-07-20T14:54:11+08:00
description: 每种编程语言都有其独特的完成任务的方式，这也说明了为什么有这么多语言可供选择。在 Jim Hall 的《不同的编程语言如何完成相同的事情》文章中，他演示了 13 种不同的语言如何使用不同的语法来完成同一个任务。经验是，编程语言往往有很多相似之处。一旦你了解了一种编程语言，你就可以通过理解它的语法和结构来学习另一种。本着同样的精神，Jim 的文章比较了不同编程语言如何读写数据。无论数据来自配置文件还是用户创建的文件，在存储设备上处理数据都是程序员的常见任务。以这种方式涵盖所有编程语言是不切实际的，但最近的 Opensource.com 系列文章提供了对这些编程语言采用的不同方法的深入了解：CC++JavaGroovyLuaBashPython读写数据用计算机读写数据的过程和你在现实生活中读写数据的过程类似。要访问书中的数据，你首先要打开它，然后阅读单词或将生词写入书中，然后合上书。当程序需要从文件中读取数据时，你向程序传入一个文件位置，然后计算机将该数据读入内存中并解析它。同样，当程序需要将数据写入文件时，计算机会将新数据放入系统的内存写入缓冲区，然后将其同步到存储设备上的文件中。下面是这些操作的一些伪代码：在内存中加载文件。读取文件内容，或将数据写入文件。关闭文件。从文件中读取数据从 Opensource.com 系列文章的语言中，你可以看到读取文件的三种趋势。C在 C 语言中，打开文件可能涉及检索单个字符（直到 EOF 指示符，表示文件结束）或一个数据块，具体取决于你的需求和方法。根据你的目标，它可能感觉像一个主要是手工的过程，但这正是其他语言所模仿的。FILE *infile; int ch; infile = fopen(argv[1], "r"); do { ch = fgetc(infile); if (ch != EOF) { printf("%c", ch); } } while (ch != EOF); fclose(infile); 你还可以选择将文件的某些部分加载到系统缓冲区中，然后在缓冲区外工作。FILE *infile; char buffer[300]; infile = fopen(argv[1], "r"); while (!feof(infile)) { size_t buffer_length; buffer_length = fread(buffer, sizeof(char), 300, infile); } printf("%s", buffer); fclose(infile); C++C++ 简化了一些步骤，允许你将数据解析为字符串。std::string sFilename = "example.txt"; std::ifstream fileSource(sFilename); std::string buffer; while (fileSource >> buffer) { std::cout << buffer << std::endl; } JavaJava 和 Groovy 类似于 C++。它们使用名为 Scanner 的类来设置数据流或对象，这样就会包含你选择的文件内容。你可以通过标记（字节、行、整数等）扫描文件。File myFile = new File("example.txt"); Scanner myScanner = new Scanner(myFile); while (myScanner.hasNextLine()) { String line = myScanner.nextLine(); System.out.println(line); } myScanner.close(); Groovydef myFile = new File('example.txt') def myScanner = new Scanner(myFile) while (myScanner.hasNextLine()) { def line = myScanner.nextLine() println(line) } myScanner.close() LuaLua 和 Python 进一步抽象了整个过程。你不必有意识地创建数据流，你只需给一个变量赋值为 open 函数的返回值，然后解析该变量的内容。这种方式快速，最简且容易。myFile = io.open('example.txt', 'r') lines = myFile:read("*all") print(lines) myFile:close() Pythonf = open('example.tmp', 'r') for line in f: print(line) f.close() 向文件中写入数据就写…

硬核观察 | Python 之父对 Rust、Go、Julia 和 TypeScript 的看法
type: item
date: 2021-05-25T06:25:42+08:00
description: Python 之父对 Rust、Go、Julia 和 TypeScript 的看法Python 之父 Guido 在最近一次新采访中分享了他对其它编程语言的看法，其中有些很有趣：Rust 在一个特定的领域真正改进了 C++，它使绕过编译器的检查变得更加困难。当然，它以一种近乎完美的方式解决了内存分配问题。在所有的新语言中，Go 可能是最像 Python 的 —— 或者至少是在通用的新语言中。Julia 有太多的细节看起来与 Python 非常相似。Julia 会在某个小众的地方是优越的，因为它的编译器为你优化了代码，而 Python 可能永远不会这样。TypeScript 做了一些 Python 仍在等待解决的事情。我们正在向TypeScript学习。听起来 TypeScript 也在向 Python 学习，就像 JavaScript 在一些领域向 Python 学习一样。嗯，作为目前顶级的编程语言神级人物，Guido 的一些看法挺有意思的。如果有机会得到完整的采访脚本，我们会翻译分享给大家。Linux 5.13-rc3 发布，主要是撤销明大的提交Linus Torvalds 如期发布了 Linux 5.13-rc3 内核。他 说，“这是一个非常平静的 RC3 周，至少在纯提交数量上，这是我们在 5.x 系列中最小的 RC3。”Linux 5.13-rc3 最主要的工作是，撤销了明尼苏达大学研究人员三十几个有问题的补丁，以及因他们的“伪君子提交”研究而引起的清理工作。过去一个月里审查了明尼苏达大学对 Linux 内核的所有补丁，虽然有些补丁部分地解决了真正的问题，但在许多情况下，它们可以进一步改进，或者作用有限。终究明大还是丧失了 Linux 内核社区的所有信任，即便是有些补丁属于可撤销也可不撤销的。此事的是非曲直大家各有不同的看法，但是我觉得 Linux 内核社区或许应该考虑如何建立更健壮的代码审核机制。安全研究人员艰难攻破了波音 747 的机上娱乐系统信息安全公司 PTP 的研究人员在利用了一个可追溯到 1999 年的漏洞后，在一架波音 747 客机的机上娱乐系统上建立了一个持久的 shell。PTP 说，“攻破它比我们预期的要困难得多，主要是因为这个机上娱乐系统已经有 25 年的历史了，缺少许多我们认为在最近的系统上理所当然的功能。”该系统是如此古老，其管理服务器运行在 Windows NT4 SP3 上。许多现代工具和技术都不起作用，甚至连 Kali Linux 的前身 Backtrack 也没有成功。最终，研究人员使用 Metasploit 的 TFTP 服务器模块进入机器，获得了命令行访问权，并从那里获得了管理密码的哈希值并将其破解。虽然说系统越老漏洞越多，但是过于老的系统，你可能都没有足够工具去破解它。

五步学会任何编程语言
type: item
date: 2020-11-20T06:59:35+08:00
description: 只需一点编程经验，你就可以在短短几天内（有时更少）学会一种新编程语言。有些人喜欢学习新的编程语言，也有一些人觉得学习一种都是可望不可及的事情。在本文中，我将向你展示如何像程序员一样思考，这样你就可以自信地学习任何一门你想要学习的编程语言。事实上，一旦你学会了如何编程，你使用的编程语言就不再是一个障碍，而更像是一种形式。实际上，这就是教育家们倡导 让孩子尽早学习编程 的众多原因之一。不管他们的入门语言有多简单，这种编程的逻辑和儿童们（或成人学习者）以后可能遇到的其他语言的逻辑有着想通之处。只需有一点编程经验（你可以从我们这里的几篇介绍性文章中获得），你就可以在短短几天内（有时更短）学习任何编程语言。这并不是魔法，你也确实要为此付出一些努力。诚然，学习一种编程语言每个的可用库，或者学习打包代码以及进行交付的细微差别，需要的时间远远不止几天。但是，就入门来说，比你想像中的要容易许多，剩下的则要通过不断练习来完成。当有经验的程序员静下心来学习一门新的编程语言时，他们会寻找五样东西。只要你知道了这五件事，你就可以开始编码了。1、语法语言的语法描述了代码的结构。这包括如何逐行编写代码，以及用于构造代码语句的实际单词。例如，Python 以使用缩进来指示一个代码块在哪里结束以及另一代码块在哪里开始而闻名：while j < rows: while k < columns: tile = Tile(k * w) board.add(tile) k += 1 j += 1 k = 0 Lua 只是使用关键字 end：for i,obj in ipairs(hit) do if obj.moving == 1 then obj.x,obj.y = v.mouse.getPosition() end end Java、C、C++ 之类的编程语言使用花括号：while (std::getline(e,r)) { wc++; } 编程语言的语法还包括包括库、设置变量和终止行等内容。通过练习，你将学会在阅读示例代码时下意识地识别语法需求（和惯例）。实践当学习一门新的编程语言时，要努力理解它的语法。你不需要去记住它，只需要知道如果忘记了以后去哪里查找。使用好的 IDE 也很有帮助，因为很多 IDE 在出现语法错误时会提醒你。2、内置函数和条件就像自然语言一样，编程语言可以识别的合法单词是有限的。这个词汇表可以使用其他库进行扩展，但是核心语言知道一组特定的关键字。大多数语言并没有你想的那么多关键字。即使在像 C 语言这样非常低级的语言中，也只有 32 个关键字，比如 for、do、while、int、float、char、break 等等。了解了这些关键字，你就可以编写基本的表达式，也就是构建程序的代码块。许多内置的关键字能帮助你构建条件语句，这些条件语句影响整个程序的流程。例如，如果你想编写一个允许单击和拖动图标的程序，那么你的代码就必须检测用户的鼠标指针何时位于图标上。只有当鼠标光标位于图标外部边缘相同的坐标时，才执行导致使鼠标抓取图标的代码。这是一个经典的 if / then 语句，但不同的语言可以用不同的方式表达。Python 使用 if、elif和 else 的组合来实现条件语句，但是并不显式的关闭语句：if var == 1: # action elif var == 2: # some action else: # some other action Bash 使用 if、elif、else，并且使用 fi 来结束语句：if [ "$var" = "foo" ]; then # action elif [ "$var" = "bar" ]; then # some action else # some other action fi 然而 C 和 Java, 使用 if、else 和 else if，用花括号把它们括起来：if (boolean) { // action } else if (boolean) { // some action } else { // some other action } 各种编程语言虽然在关键字的选择和语法上有细微的变化，但基本是相同的。学习如何在编程语言中定义条件语句，包括 if / then、do...while 和 case 语句。实践要熟悉编程语言能够理解的关键字集。在实践中，你的代码将不仅仅包含编程语言的关键字，可以肯定的是，有包含很多简单函数的库来帮助你做一些事情，诸如将输出打印到屏幕或显示窗口之类。然而，驱动这些库的逻辑始于编程语言的内置关键字。3、数据类型代码是用来处理数据的，因此你必须学习编程语言如何识别不同类型的数据。所有编程语言都能理解整数，大多数的语言能理解小数和单个字符（a、b、c …

《代码英雄》第二季（2）：Hello, World
type: item
date: 2020-09-09T06:45:36+08:00
description: 代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。什么是《代码英雄》 代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽（Red Hat）精心制作的原创音频播客，讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。本文是《代码英雄》系列播客第二季（2）：Hello, World的音频脚本。导语：每一种新的编程语言的诞生，都是为了做一些以前无法完成的事情。如今，有非常多编程语言可以选择，但哪些才是你真正需要了解的？本集将深入探讨编程语言的历史。我们将会了解到被称为 “神奇葛丽丝” 的天才 —— 海军少将葛丽丝·哈伯。多亏了她，开发者不再需要数学博士的学历就能使用机器代码编写程序。参与录制的还有 Jupyter 项目的 Carol Willing，她是 Python 基金会的前理事；以及《 纽约时报杂志 New York Times Magazine 》和《 连线 Wired 》的撰稿人 Clive Thompson，他最近正在撰写一本关于程序员如何思考的书。00:00:07 - 各种语言：“你好，世界。”00:00:12 - Saron Yitbarek**：你好，世界。现在我们发出的是信号还是噪音？我们日日夜夜无休止地写代码，做测试工作，我们追求的事情只有一个：我们是否传递了我们的信号？00:00:29 - 各种语言：你好。00:00:29 - Saron Yitbarek：或者我们的信号是不是丢失了？难道我们一直在制造无意义的杂音吗？00:00:40：我是 Saron Yitbarek，这是代码英雄第二季，来自红帽原创播客。今天的话题将在“翻译”中挖掘。这关于编程语言的故事：它们是怎么来的，如何选择其中一个语言来学习。我们将深入研究如何与机器对话。探究这些语言是如何演化的，以及我们如何用它们来让我们的工作变得更好。00:01:08 - Sari：Daisy，daisy，来告诉我你的正确回答。00:01:11 - Saron Yitbarek：如果你像我一样是一个开发者，你可能也经受着去精通多种语言的压力。最起码你得会 Java，更好一些得懂 Python、Go、JavaScript、Node，甚至能够用 C++ 思考。也许为了增加可信度，可能你还要熟悉古典的 COBOL。甚至你还得学点新东西，比如 Dart。实在太累了。00:01:36：奇怪的是，我们正在讨论的计算机只讲一种语言：机器语言，以二进制形式飘过的 1 和 0。说到底，我们学习的每个语言都是殊途同归。不管有多抽象，它都是用来简化我们工作的道具。00:02:03：这就是我希望你们记住的，故事开始了，从那一刻，那一个经典辉煌的时刻，一个女人说：“你知道么？我是人类，我不想用二进制来讨论思考，我就想用英语去编程。”00:02:22：在今天可能看来是一个简单的概念。但曾几何时，使用人类的方式与计算机对话这个主意 —— 说轻点是一个笑话，严重点就是亵渎。00:02:37：代码英雄第二季，将讲述成就我们基础的螺丝钉展开。这一讲的英雄是一个女主人公，如果你想要进一步了解故事，你必须知道她的经历。在此给你们隆重介绍：软件界的第一夫人。00:02:58 - 发言人：尊敬的先生们和女士们，我非常荣幸的给你们介绍 葛丽丝·玛丽·哈伯 Grace Mary Hopper 准将，谢谢。00:03:02 - 葛丽丝·哈伯：我曾到加拿大的圭尔夫大学演讲，那时候我必须在多伦多的机场办理入境手续。我把护照递给移民官，他打量了护照和我说：“你是在哪里工作的？”00:03:17：然后我说，“美国海军。”00:03:20：她再次深深的打量我一下。然后他说：“你一定是海军里最老的。”00:03:28 - Saron Yitbarek：她就是 1985 年担任海军少将的葛丽丝·哈伯。在麻省理工学院发表了著名的演讲时，她 79 岁。即使在那时，她也是一个传奇人物。她是独立编程语言之母，实现通过编译器，用人类语言替代数学符号编程这一伟大成就的女性。00:03:51：她获得了国家技术奖章，她去世后（1992 年），被追授国家自由勋章。以上记录纯属真实，他们称她w为“神奇葛丽丝”。00:04:03 - Claire Evans：如果有人能够被称为天生的程序员，那么这个人一定是葛丽丝。00:04:06 - Saron Yitbarek：这是 Claire Evans，一个科技记者和《 宽带 Broad Band 》一书的作者，而这本书讲述了科技领域的女性先锋。Evans 描绘了早期的计…