Stroustrup's Rule (2024)24 days agohttps://buttondown.com/hillelwayne/archive/stroustrups-rule/斯特鲁普斯特鲁普法则:初学者需要显式语法,而专家偏爱简洁语法。Rust的错误处理从显式的匹配语句演变为?运算符。Python的'海象'运算符争论突显了专家青睐的简洁性与初学者需求的清晰性之间的张力。教学需在专家偏好的简洁语法与适合初学者的显式示例之间取得平衡。TLA+的例子对比了教学清晰度方面:显式不变式与更简洁的函数集合。
Tiny-C Reference Manual Excerpt19 days agohttps://permacomputer.solarpunk.au/?p=204本手册将tiny-c介绍为一门受BASIC启发的语言,其重点是通过单一计算环境来降低学习难度。它描述tiny-c是一种结构化编程语言,支持if-then-else条件语句、while循环、函数、变量(全局与局部)、指针和数组,既适合教学训练,也足够强大以应对实际应用。通过示例程序“猜数字”的逐步讲解,展示了关键特性,如注释、函数、复合语句、变量声明以及if和while循环等控制结构。它强调了结构化编程原则,包括模块化、可预测的程序流程、局部变量以及有意义的变量命名,以增强程序的清晰度和简洁性。手册还涵盖不同系统的安装指南,并面向包括初学者和经验丰富的程序员在内的多类读者群体。
OCaml 5.5 Released19 days agohttps://discuss.ocaml.org/t/ocaml-5-5-0-released/18265OCaml 5.5.0 引入了模块依赖函数,允许模块作为函数参数,实现轻量级函子功能。编译器现在可重定位,无需重新编译即可克隆开关,以加速设置过程。高阶多态函数可直接通过函数参数中的显式类型注解定义。新增了用于搜索和替换子字符串的字符串函数,采用常量空间算法。广义局部定义允许在局部定义类型、类或模块类型。外部类型增强了FFI互操作性,通过使类型可区分来改进GADT行为。垃圾回收改进包括在主要GC开始时引入仅清理阶段和空闲阶段,以实现更平滑的性能。Windows实现不再依赖Winpthreads,并进行了许多增量更改和错误修复。
AI has torched the market for junior programmers17 days agohttps://seldo.com/posts/ai-has-torched-the-market-for-junior-programmers/人工智能显著减少了初级程序员的工作机会,22-25岁开发人员的就业自2022年底以来下降了19%。从2022年5月到2025年5月,软件开发人员总数增长了10%,但由于初级职位在劳动力中所占份额较小,其下降趋势在汇总数据中被掩盖。专注于按规范编写代码的传统编程工作正在萎缩,而需要判断力的角色,如数据科学家和系统分析师,正在增长。新开发人员激增,GitHub在2025年增加了3600万个账户,应用商店提交量增长了24%,但其中许多人不自称为程序员。高级开发人员的职业管道面临风险,因为人工智能现在处理初级任务,打破了就业中传统的学徒模式。安全担忧正在上升,因为人工智能生成的代码经常无法通过基本测试,许多新应用程序存在关键缺陷,突显了监督的缺乏。一些公司如IBM正在重新设计入门级职位,专注于客户接触和规范制定,而其他公司如Salesforce已暂停招聘。入门级职位的招聘信息在2025年5月开始复苏,表明市场可能出现修正,但重建职业阶梯对该职业的未来仍然至关重要。
Programmers need to start meditating now16 days agohttps://jacob.gold/posts/programmers-need-to-start-meditating-now/编程曾提供了冥想的流动状态,通过减少默认模式网络的活动来平静心灵,这一网络与反复思考和担忧相关。现代编程角色涉及持续的上下文切换和多任务处理,这减少了处于心流状态的时间,并可能影响心理健康。程序员应采用新的冥想实践,如爱好或类似Calm或Waking Up的应用,以弥补工作中固有冥想的缺失。
Scheme Is a Hoot16 days agohttps://gracefulliberty.com/notes/scheme-is-a-hoot/作者正在学习Scheme语言,并尝试在其中实现物理概念,使用Hoot工具将代码编译为Web格式。Hoot目前尚不稳定(版本0.9.0),其文档较为详细但错误信息较为隐晦。不过它允许在不依赖Emscripten的情况下,通过自定义的WebAssembly将Scheme代码运行在Web环境中。起初对Hoot的兼容性有误解;曾将代码移植为使用Hoot特定的函数,后来发现通过手动导入,它能支持更多Guile的特性。现已设置代码以同时支持原生Guile和通过Hoot的WASM环境运行,并为两种环境设置了自动化测试,使大部分代码无需关心运行时环境。目前专注于后端设置和基础物理逻辑的开发,已取得一些进展,包括发布了原型版本和开源代码。未来计划探索用Hoot将Zig + Scheme的组合编译到Web环境,尽管这可能带来一定的复杂性,但仍想尝试这一组合的可能性。
Clojure 1.13 adds support for checked keys19 days agohttps://clojure.org/news/2026/07/02/clojure-1-13-alpha1Clojure 1.13.0-alpha1 版本发布,现已提供下载信息新增受检查的映射解构指令 :keys!/:syms!/:strs!,确保所需键被绑定,缺失时抛出异常PersistentArrayMaps 现在最多可容纳 64 个关键字键后才转换为 PersistentHashMaps,提高效率和优化CLJ-2891 从静态初始化器常量中移除 ACC_FINAL,为 Java 字节码基线更新做准备运行库和测试依赖项已更新至最新版本
Guest Post: Atari Origins – By Mark Miller15 days agohttps://www.goto10retro.com/p/guest-post-atari-origins1988年,马克·米勒购买了一台Atari 130XE电脑,他主要用它配合AtariWriter Plus软件来撰写学校论文,而他周围的人则在使用更先进的16位PC或Mac电脑。尽管他的Atari电脑没有官方的终端软件,但米勒创造性地使用了一个名为VT10Squared的VT-100模拟器和一个终端程序,从宿舍访问并使用校园超级计算机的全屏编辑器(FSE)进行Pascal编程。他探索并利用了Atari电脑上的多种编程工具,包括Kyan Pascal和一个名为CC8的PD C编译器,并成功通过自编的256字节堆管理器将数据结构作业移植到C语言中。米勒后来在1992年通过创意融资方式购得一台Mega STe电脑,并在大学最后一年使用它,不过他当时并未用其编译作业,而是选择在毕业后移植项目。
The Art of Computer Programming by Donald E. Knuth14 days agohttps://www-cs-faculty.stanford.edu/~knuth/taocp.html《计算机程序设计艺术》(TAOCP)系列图书在1999年被评选为世纪最佳十二部自然科学专著之一。电子PDF版本是经过授权且推荐的;非PDF格式的电子书(例如Kindle)被告知可能存在兼容问题,可能会被替换。第1-4B卷已经出版,并有多国语言译本;第4C卷及后续卷(第5-7卷)正在规划或准备中。更新和纠错通过勘误列表进行管理,并为报告错误的读者提供奖励。TAOCP采用名为MMIX的RISC机器替代了旧版的MIX,尤其是在新版及第4A卷中。
Almost Always Unsigned13 days agohttps://graphitemaster.github.io/aau/使用无符号整数通常更为合适,因为程序中的大多数整数值并不表示负数。针对无符号整数的常见反对意见,如安全性和反向循环问题,可以通过正确的编程习惯来规避下溢问题。相比于有符号整数,无符号整数在计算差值、中点以及进行溢出检查时允许进行更安全的计算。在C和C++等语言中默认使用有符号整数是历史遗留的选择,而使用无符号整数可以简化代码并提高诊断效率。即使对于定义了有符号整数回绕行为的语言,安全问题依然存在,而无符号整数能强制考虑所有输入范围。
Rust 1.97.012 days agohttps://blog.rust-lang.org/2026/07/09/Rust-1.97.0/Rust 1.97.0 稳定版发布公告,包含通过 rustup 的更新说明。符号重整 v0 默认启用,取代了传统的基于 Itanium 的方案。Cargo 现在支持拒绝警告,改善了 CI 工作流程和缓存效率。链接器输出不再默认隐藏,为调试显示警告信息。已稳定的 API 包括整数和 NonZero 类型的方法,以及常量上下文更新。
OpenCode Bug: "I did not say that you did"12 days agohttps://www.williamangel.net/blog/2026/07/08/OpenCode-Bug-I-did-not-say-that-you...用户讲述了一个关于《杀戮尖塔2》模组修复的故事:多人游戏中可售卖卡牌的数量被错误地共享,而非每个玩家独立计算。用户提到,在使用Gemma4:31b模型生成Markdown计划时,Gemma的回复以波兰语'dokładnie i zwięźle.'结尾,意为'准确且简洁地'。当用户询问Gemma为何这样说时,Gemma在思考过程中解释了该短语的含义,但最终否认说过这些话,反而将其归因于用户。用户怀疑是OpenCode框架存在漏洞,但觉得有趣的是,自己首次用波兰语说的话竟是'准确且简洁地'。故事还包含OpenCode版本(1.14.28)、所用模型(Gemma4:31B)等细节,并提到完整记录已保存在一个Markdown文件中。
Programming thought experiment: stuck in a room with a PC without an OS9 days agohttps://old.reddit.com/r/programming/comments/9x15g/comment/c0ewj2c/r/programming 是一个用于讨论计算机编程相关新闻和话题的 Reddit 社区。该社区严格执行规则,禁止AI生成内容、政治帖、产品推广、调查问卷、求助问题、图片和低质量帖子。评论中不得包含机器人或不当言论,鼓励用户通过评论或相关语言特定的子版块进行互动。
Cottage Computer Programming (1984)9 days agohttps://www.atariarchives.org/deli/cottage_computer_programming.php保罗·鲁特斯,一位前NASA工程师,辞去工作搬到俄勒冈州的一间偏远小木屋,过上了简单的生活。1976年,他购买了一台Apple II电脑,开始为乐趣编程,最终创作了广受欢迎的文字处理程序Apple Writer。尽管在荒野中与世隔绝,鲁特斯通过向苹果公司销售他的程序获得了成功,并达成了一份基于版税的协议。他认为在编程领域,个人创造力和独立工作方式比团队合作更高效,并引用了行业内的例子加以佐证。鲁特斯探讨了生活在‘计算机化小屋’中的优势,包括摆脱琐碎事务的自由以及在宁静中专注的能力。他也指出了丛林生活的挑战,比如可能产生的孤独感,但他相信科技可以帮助人们保持联系。
Perldelta – what is new for Perl v5.44.04 days agohttps://metacpan.org/dist/perl/view/pod/perldelta.podPerl v5.44.0 在子程序签名中引入了命名参数,允许通过名称/值对来传递参数。多变量 foreach 循环现在可以使用别名引用,将引用别名与多个迭代变量结合。增强的 /xx 正则表达式修饰符允许括号字符类跨越多行并包含注释。添加了 Unicode 17.0 支持,PRNG 种子生成现在使用 getentropy() 系统调用以改进熵源。修复了多个安全漏洞,包括 Perl_study_chunk、S_measure_struct 和正则表达式 trie 优化中的缓冲区溢出。现在对标识符和正则表达式组名完全强制实施 Unicode 规则,禁止匹配 \w 但不匹配 XID 属性的字符。弃用内容包括使用 goto 跳入循环以及在 /xx 括号字符类中使用未转义的 # 或垂直空白。性能增强包括更快的整数运算和从常量键/值对填充哈希。许多核心模块已更新,包括 Archive::Tar、Encode 和 IO::Compress,并修复了多个 CVE 的安全漏洞。文档改进、新增诊断信息以及内部 API 变更,例如用于数值比较和 UTF-8 处理的新函数。
Mr. Spock Does Not Code in ASCII3 days agohttps://lqlang.org/blog/spock-does-not-code-in-ascii/尽管现代界面发展迅速,编程依然以文本为基础。基于文本的编程源自过时的硬件限制。以触摸为主的设备缺少键盘,使得基于文本的编程具有排他性。图表能更好地表示计算数据流和依赖关系。AI代码生成将焦点从输入转向描述意图和结构。之前的可视化编程尝试失败是由于限制,而非概念缺陷。图解编程适合当前硬件、AI和编译技术。其他工程领域使用图表;软件工程仍然依赖文本。图解编程利用空间推理和视觉表示。
Best Coding Fonts for Developers in 202615 hours agohttps://www.jstools.space/blog/best-coding-fonts/优秀的编程字体能提高代码可读性,减少视觉疲劳,并帮助更快地发现错误。优秀编码字体的关键特征包括:清晰的字符区分、舒适的间距、可读的标点符号,以及在小字号下可靠的渲染效果。本指南涵盖13种编码字体:JetBrains Mono、Berkeley Mono、Geist Mono、Fira Code、Cascadia Code、IBM Plex Mono、Iosevka、Monaspace、Hack、Source Code Pro、Victor Mono、Commit Mono 和 Maple Mono。JetBrains Mono 被推荐为综合最佳字体,Geist Mono 为最佳免费字体,Fira Code 擅长连字,Cascadia Code 适合终端,Iosevka 适合紧凑布局。字号建议因显示器而异:1080p 建议14-15像素,1440p 建议15-16像素,4K 建议16-18像素,超宽屏建议15-17像素;行高建议在1.4到1.6之间。连字是个人偏好:它们能让运算符更易识别,但可能隐藏字符形状;大多数编辑器支持切换连字功能。最好的字体是在工作中让人感觉不到其存在的字体:在决定前,请在实际的编辑器和终端中用真实代码测试字体。