Tabs vs. Spaces: The War Is Over10 months agohttps://xn--gckvb8fzb.com/tabs-vs-spaces-the-war-is-over/关于代码缩进使用制表符还是空格的争论已经持续了几十年。一项针对流行编程语言的调查显示,90%的语言更倾向于使用空格而非制表符进行缩进。诸如Go、Odin、Hare和汇编语言等例外情况,它们推荐或要求使用制表符。Go通过工具强制使用制表符,完全排除了使用空格的可能性。对空格的偏好反映了技术领域向标准化发展的更广泛趋势。尽管大多数人倾向于使用空格,但由于个人偏好的存在,这场争论可能永远无法完全平息。
Resizable Structs in Zig10 months agohttps://tristanpemble.com/resizable-structs-in-zig/介绍Zig语言中'运行时可调整大小结构体'的概念对比Zig中用于连续数据存储的基础类型:数组与多元素指针解析Zig中的切片——作为多元素指针和长度的语法糖探讨当前Zig结构体的局限性:其大小需在编译时确定指出Zig工具链的空白:支持不同类型元素的运行时可变连续存储通过Zig标准库案例展示运行时可变结构体的实际需求场景现有解决方案需手动管理字节切片,存在出错风险提出'可变长度数组'类型方案以简化运行时大小数据管理利用Zig的编译时功能实现'可调整结构体'工具类型的构想已在GitHub发布最小可行性实现,包含初始化/获取/调整大小/释放等API方法向社区征集反馈和真实用例以完善设计
Teach Yourself Programming in Ten Years10 months agohttps://norvig.com/21-days.html许多书籍承诺能在短短几天或几小时内教会Java、C、SQL、Ruby等编程语言,反映出人们急于求成的学习心态。研究表明,要真正精通任何领域(包括编程),需要约十年有意识的刻意练习,而非浮于表面的学习。真正的精通需要不断挑战自我、分析表现并持续改进,莫扎特和披头士乐队等案例都印证了这一点。编程成功的关键在于享受过程、在实践中学习、与他人协作,并通过不同项目和语言积累经验。理解计算机科学基础(如运算耗时原理)对成为优秀程序员至关重要。仅靠书本学习远远不够,实践经验和与其他程序员的交流才是成长的核心要素。选择编程语言应考虑社区支持度、简洁性和交互式学习机会,初学者推荐Python或Scheme语言。杰出程序员往往具备某种天赋特质或愿意投入大量时间练习,正如Fred Brooks和Alan Perlis等专家强调的那样。
Janet: Lightweight, Expressive, Modern Lisp10 months agohttps://janet-lang.orgJanet是一种支持函数式和命令式编程的语言,兼容Windows、Linux、macOS和BSD系统。整个Janet语言(含核心库、解释器、编译器、汇编器和PEG)体积不足1MB。仅需单个C源文件和头文件即可将Janet嵌入应用程序。适用于系统脚本、嵌入式开发、快速原型设计和动态系统构建。基于标准C99实现,可轻松移植到新平台。具备线程、网络、事件循环、子进程处理和PEG库等特性。示例代码展示了O(n²)时间复杂度解决3SUM问题。内置REPL环境支持交互式编程和脚本执行。命令行选项支持脚本运行、REPL入口和调试功能。社区资源包括GitHub代码库、Zulip聊天频道和Janet文档站。
Show HN: The Aria Programming Language10 months agohttps://github.com/egranata/ariaAria是一种现代、动态的脚本语言,设计初衷是易于学习和使用。它采用C语言风格语法,并受到Python和Rust的影响,注重简洁性与高效开发。标准库虽精简,但足以解决有趣的问题。目前Aria仅支持Linux系统,欢迎贡献代码以支持其他操作系统。示例演示了如何从Web API获取数据并处理JSON。运行Aria脚本非常简单,GitHub API示例已直观展示。鼓励用户尝试Aria并参与贡献,更多信息可访问语言官网。
Pony: An actor-model, capabilities-secure, high-performance programming language10 months agohttps://www.ponylang.io/discover/Pony是一种开源、面向对象、采用Actor模型、具备能力安全机制的高性能编程语言。您可以通过Pony Playground在浏览器中直接体验Pony语言。Pony独特的功能优势使其值得考虑采用。Pony的早期发展历程记载于《Pony早期历史》一文中。
Do variable names matter for AI code completion? (2025)10 months agohttps://yakubov.org/blogs/2025-07-25-variable-naming-impact-on-ai-code-completio...描述性变量名可提升AI代码补全性能实验在500个Python代码样本上测试了8种AI模型,对比7种命名风格描述性命名准确匹配率达34.2%,混淆命名仅16.6%描述性命名的莱文斯坦相似度更高(0.786 vs 混淆命名0.666)描述性命名的语义相似度更优(0.874 vs 混淆命名0.802)命名风格效果排名:描述性 > 全大写蛇形 > 蛇形 > 帕斯卡 > 极简 > 混淆描述性命名虽多消耗41%的标记量,但语义性能提升8.9%清晰的变量命名同时有利于人类阅读与AI系统理解
KernelScript eBPF-centric programming language10 months agohttps://github.com/multikernel/kernelscriptKernelScript是一种处于测试阶段的领域特定编程语言,专为以eBPF为核心的开发而设计它通过单一代码库统一了eBPF、用户空间和内核空间的开发旨在简化Linux内核定制化和应用特定优化解决了编写eBPF程序时的诸多挑战,如手动内存管理和复杂的构建系统提供多目标单文件编译、自动尾调用编排等特性支持所有主流eBPF程序类型,并具备类型化上下文包含专为系统编程设计的丰富类型系统内置支持所有eBPF映射类型采用简洁的函数语法并支持辅助函数通过模式匹配实现现代化控制流能够协调多个eBPF程序协同工作可编译为eBPF C代码和用户空间程序,配套完整的自动化工具链提供示例代码和全面文档,降低学习门槛
7 Tips to Successfully Micromanage Programmers (2018)10 months agohttps://medium.com/@marcusblankenship/7-ways-to-effectively-micromanage-your-pro...程序员通常更喜欢明确的指令和微观管理,以避免无休止的讨论。有效的微观管理包括详细的规范、严格的截止日期和频繁的进度检查。主人翁心态:强调决策权,同时提醒程序员他们的可替代性。提供详尽的规范,包括架构、框架和命名约定,以指导工作。定义严格的工作流程,不鼓励协作,以专业化角色并保持效率。设定紧迫的截止日期,并使用压力策略确保项目按时完成。保持持续沟通,包括深夜电话和邮件,以维持工作势头。安排非工作时间的沟通,以显得敬业而无需实际熬夜工作。
CodeCrafters (YC S22) is hiring first Marketing Person10 months agohttps://www.ycombinator.com/companies/codecrafters/jobs/7ATipKJ-1st-marketing-hi...CodeCrafters(YC S22)为经验丰富的软件工程师打造编程挑战。该职位负责全面主导CodeCrafters的市场营销工作。获Y Combinator及Instagram、Dropbox创始人支持。客户包括来自谷歌、GitHub、Stripe等公司的资深工程师。
Programmers Aren't So Humble Anymore–Maybe Because Nobody Codes in Perl10 months agohttps://www.wired.com/story/programmers-arent-humble-anymore-nobody-codes-in-per...Perl在世纪之交被广泛使用,为网站和生物信息学提供支持。Perl以其混乱而灵活的语法和格言'条条大路通罗马'而闻名。Perl的创造者Larry Wall将语言学原理应用于该语言,拥抱进化和灵活性。Perl受欢迎程度下降归因于其复杂性以及Python等更简洁语言的兴起。Perl的哲学强调在面对复杂技术系统时的谦逊和适应性。Perl与Lisp等语言形成对比,更有机且以人为中心,而非数学上的优雅。编程语言必须对人类可读,而不仅仅是对机器可读,这是Perl所体现的原则,尽管它有'只写不读'的名声。Perl的遗产提醒我们在编程语言设计中要优先考虑人性化因素。
Carbon Language: An experimental successor to C++10 months agohttps://docs.carbon-lang.dev/Carbon 是一个实验性的 C++ 后继语言,专为性能关键型软件设计,并与 C++ 实现无缝互操作。其目标包括:构建现代化语言基础、实现版本间轻松升级、以及提供通向内存安全的路径。Carbon 致力于为 C++ 开发者提供平缓的学习曲线,并支持从 C++ 的可扩展迁移。该项目目前处于实验阶段,重点开发 Carbon ↔ C++ 互操作工具链。Carbon 提供带有检查定义的现代化泛型系统,相比 C++ 模板更具优势。内存安全是优先事项,未来计划推出安全的 Carbon 子集。开发者可通过在线工具链尝试 Carbon,或下载实验性的 nightly 版本。Carbon 鼓励社区贡献,并营造了包容友好的开发环境。
Show HN: Astro dev blog template with 60 interactive colorschemes10 months agohttps://multiterm.stelclementine.com这篇博客展示了自定义的Astro主题/模板MultiTerm。功能包括交互式主题切换器、RSS订阅、站点地图、标签系统和Markdown扩展支持。涵盖的主题包括Python上下文管理器和with语句的使用。TypeScript的keyof运算符和映射类型在高级类型操作中的应用。JavaScript原型继承及其实际应用场景。Go语言如何通过接口实现多态性。
Design Patterns You Should Unlearn in Python10 months agohttps://www.lihil.cc/blog/design-patterns-you-should-unlearn-in-python-part1/Python中的设计模式经常不必要地重新实现四人帮模式。许多模式解决的是Python不存在的问题,反而使代码更难阅读和维护。Python中的单例模式可能导致意外行为和子类化问题。在C++中,单例模式是解决缺乏模块化和全局状态管理的方案。Python的模块提供了比单例模式更简单的替代方案。Python中的建造者模式通常用不必要的样板代码使对象创建复杂化。Python的默认参数和工厂函数提供了比建造者模式更直接的解决方案。
Code Monkey or CAD Monkey?10 months agohttps://blog.nawaz.org/posts/2016/Jan/code-monkey-or-cad-monkey/许多人表示不愿意整天对着电脑工作,但办公室工作往往需要如此。作者分享了从技术岗位(工程/物理)转向编程工作的经历。技术岗位虽然充满有趣的挑战,但工作内容重复单调,且使用低效的软件工具。高级技术技能通常意味着更少的工作机会和更差的工具,因为市场需求较小。技术岗位的同事对重复性工作容忍度高,管理层对相关抱怨态度敷衍。在技术岗位中,改进软件和效率的努力往往得不到实质回报。编程工作提供了更多自主权、更好的工具,并强调在编码前先解决问题。编程工作减少了电脑操作(打字/点击),更多时间用于在纸或白板上思考。程序员重视工作流程优化,这类改进会获得认可,与技术岗位形成鲜明对比。尽管编程工作未必更有智力趣味性,但其薪资和工作条件更优越。工作环境和工具对职业满意度的影响,常常超过技术挑战本身。讽刺的是,非编程类技术岗位可能让人比典型编程工作更依赖电脑。
TypeScript 5.910 months agohttps://devblogs.microsoft.com/typescript/announcing-typescript-5-9/TypeScript 5.9 正式发布,引入了多项新特性与优化方案新增特性包括支持 `import defer` 语法、`--module node20` 参数以及 DOM API 的摘要描述功能开发者体验增强包含可展开的悬停预览(实验性功能)和可配置的悬停信息最大长度性能优化涉及映射器实例化缓存机制和文件存在性检查中闭包创建的规避重要行为变更包括 `lib.d.ts` 更新和类型参数推断逻辑调整TypeScript 6.0 将作为向 7.0 版本过渡的关键节点,重点聚焦未来更新的适配准备
Perl Is Dead. Long Live Perl and Raku (2020)10 months agohttps://raku-advent.blog/2020/12/02/day-1-perl-is-dead-long-live-perl-and-raku/Perl并未消亡,只是因其复杂性被部分程序员误解。由Larry Wall设计的Raku语言在改进Perl缺陷的同时,保留了其核心价值。Raku的表达力可能令人望而生畏,但掌握后能获得丰厚回报。Raku优先考虑编写人类可理解的代码。Raku的学习资源包括官方文档、书籍和社区支持。Raku社区氛围友好,提供IRC频道和邮件列表等支持渠道。
The Summer of Codex9 months agohttps://paylias.xyz/blog/building-with-codex大语言模型正呈指数级进步,其效用取决于用户熟练程度作者最初对在8万行Go代码库中使用AI犹豫不决,但逐步将其应用于架构优化、缺陷修复和单元测试作者发现大语言模型的输出速度和确定性令人上瘾,但为避免过度依赖而克制购买付费订阅OpenAI的Codex最初定价过高,后通过Plus订阅变得可用,能实现后台任务处理和PR创建详细提示词示例展示了如何用Codex修改Customer资源以支持企业客户,大幅节省时间Codex成功实施变更,使作者能快速审核、合并并推送更新,同时保持工作生活平衡通过恰当提示词和记录编码偏好的AGENTS.md文件,Codex可高效处理CRUD接口等重复编码任务作者通过研究Foundry提示指南和Lyra提示等技术来提升提示词工程能力代码编辑器中的自动补全建议仍有改进空间
28th International Obfuscated C Code Contest9 months agohttps://www.ioccc.org/2024/index.html第28届国际混乱C代码大赛(IOCCC)2024年度获奖名单正式公布赛事在暂停四年后重新举办,提交系统和官网均获得重大改进本届共评选出23名获奖者,创下历史新高(原纪录为15名)得益于新工具和流程优化,评审周期仅用33天效率显著提升参赛作品在质量和数量上均有突破,多数作品远小于代码体积限制亮点作品包括微型LLM推理引擎、礼貌型UTF-8文本编辑器及Intel 4004模拟器本届更注重创意与代码混淆艺术性,而非单纯追求代码体积最小化下届赛事(IOCCC29)计划2025年12月举办,将采用简化的参赛规则组委会鼓励未获奖选手继续打磨作品再次投稿官网同步提供了获奖作品的编译指南及问题反馈渠道
Seed7 – The Extensible Programming Language9 months agohttps://seed7.netSeed7 是一种由 Thomas Mertes 设计的通用编程语言。相比 Ada、C/C++ 和 Java,它是一种更高级的语言。Seed7 是开源的,包括其解释器、示例程序和编译器。编译器将 Seed7 程序转换为 C 代码,然后再编译为机器码。Seed7 允许轻松声明新语句和运算符。它支持带有类型结果和参数的函数,比模板或泛型更优雅。在有益的情况下使用面向对象,支持接口和多分派。Seed7 包含了来自 Pascal、Ada、C、C++ 和 Java 的概念。特性包括可扩展性、一等类型、库中的预定义构造以及静态类型检查。支持无垃圾收集的自动内存管理、异常处理和调试。通过 OVERFLOW_ERROR 处理整数溢出,并提供无限制大小的数字(bigInteger、bigRational)。支持函数、运算符和语句的重载。包含各种预定义类型,如数组、哈希、集合、结构体、颜色、时间等。源代码可移植,无需修改。提供与多种数据库兼容的独立于数据库的 API。可在 Linux、Unix 版本和 Windows 下运行。许可证:解释器和示例程序使用 GPL,运行时库使用 LGPL。