How well do you know C++ auto type deduction?5 months agohttps://www.volatileint.dev/posts/auto-type-deduction-gauntlet/通过多个示例讲解C++中`auto`关键字的类型推导机制基础示例包括从常量、变量和指针推导类型中级示例涵盖引用、CV限定符和数组类型高级主题讨论转发引用、`decltype(auto)`和lambda捕获还涉及结构化绑定和继承场景的类型推导部分无法编译的示例专门展示类型推导的边界情况提供GodBolt在线编译器链接用于验证推导结果鼓励读者通过邮件分享有趣的类型推导案例
Things I learned making a game engine5 months agohttps://www.joelotter.com/posts/2025/12/growl/Dave’s Word Game(戴夫的文字游戏)采用Growl引擎开发,即将登陆iOS和Android平台作者详述了从零开始创建Growl游戏引擎的历程:从学习C++到实现图形渲染、文本处理和音频功能开发Growl的主要动机源于前作《Feud》使用Java和libGDX的局限性,以及追求更好的跨平台移植性引擎亮点包括:实现Metal/OpenGL双图形后端、创建纹理图集命令行工具、攻克多语言及表情符号的文本渲染难题该引擎已移植至iOS/Android平台,并实验性支持3DS和通过Emscripten的网页端通过Lua脚本系统实现参考架构,支持无需重新编译即可调整游戏逻辑《Dave’s Word Game》的开发过程反向驱动了引擎功能设计,确保特性满足实际需求作者坦言虽然自研引擎并非最高效的发布游戏方式,但该项目带来了巨大的技术成长与个人突破
MIT Missing Semester 20265 months agohttps://missing.csail.mit.edu/2026/1月12日:课程概述与Shell入门1月13日:命令行环境讲解1月14日:开发环境与工具讨论1月15日:调试与性能分析专题1月16日:Git版本控制1月20日:代码打包与发布1月21日:代码质量与持续集成1月22日:代码之外的延伸内容1月23日:问答环节
A Multimedia Sketchpad5 months agohttps://beyondloom.com/blog/sketchpad.htmlHyperCard是一款极具影响力的软件,以可视化、即时且易用的编程环境完美体现了麦金塔精神。现代自诩为HyperCard继承者的工具在结构和理念上千差万别,有的侧重低代码开发,有的聚焦笔记功能。许多受HyperCard启发的现代工具类似微软VisualBasic,强调拖拽式表单创建和命令式编程模型。HyperCard模糊了程序与文档、开发者与用户的界限,提供了一种更柔韧、可塑性更强的媒介。受HyperCard启发的Decker保留了卡片堆栈隐喻,并突出其作为绘画工具的特性,像索引卡般组织内容。Decker和HyperCard中的卡片尺寸固定,这种设计促使将宏大构想分解为可管理、可重排的单元。HyperCard与Decker都内置绘图工具,用户可直接在环境中创建自定义图形。通过链接、按钮或脚本实现卡片间的非线性跳转,使卡片成为关系图谱中的节点或状态机中的状态。Decker采用消息传递机制,与控件交互产生的消息由脚本处理,实现灵活模块化设计。Decker中的卡片可像Smalltalk语言中的对象,封装状态和代码的同时暴露消息传递接口。卡片上的交互元素能快速搭建特定工具,无需通用解决方案即可简化专项任务。HyperCard的卡片堆栈隐喻具有高度扩展性,既能组织简单数据集,也能构建复杂程序结构,兼具模块化与可塑性。
Errors in Rust: A Deep Dive5 months agohttps://www.halcyon.hr/posts/error-handling-in-rust/Rust将错误视为一等公民,在编译时强制进行错误处理。Rust中的Option类型表示值可能存在(Some)或不存在(None),用于替代null。Result类型用于可能失败的操作,返回Ok(值)或Err(错误)。模式匹配是处理Result和Option最直观的方式。unwrap()和expect()方法能快速获取值,但错误时会触发程序崩溃。可通过枚举和实现Error特性来创建自定义错误类型。?运算符能自动向上传播错误,简化错误处理代码。Box<dyn Error>支持动态处理不同类型的错误。map_err方法和From特性实现支持错误类型间的转换。Snafu和anyhow等库能大幅减少错误处理的样板代码。
Show HN: A systems language with runtime reflection and no GC5 months agohttps://xxml-language.comXXML是一种具有显式所有权语义的现代编译语言,拥有强大的泛型功能和LLVM后端支持。它提供简洁、富有表现力的语法以及丰富的标准库,包含核心工具、集合、I/O和网络功能。主要特性包括显式所有权控制(^owned所有权、&reference引用、%copy复制)、强大的泛型以及编译时安全性。XXML专为高性能应用、安全插件系统、序列化和调试工具而设计。它支持声明式领域特定语言(DSL),适用于UI布局、场景图等场景,是构建原生服务和命令行工具的理想选择。该语言也适合教学,可帮助理解所有权和内存管理等系统概念。XXML拥有活跃的社区,专为追求高性能、安全性和表达力的开发者打造。
Purrtran – ᓚᘏᗢ – A Programming Language for Cat People5 months agohttps://github.com/cmontella/purrtranPURRTRAN是一种现代化的FORTRAN语言,其独特之处在于配备了一只名为Hexadecimal Purrington(简称Hex)的AI编程猫助手。Hex需要像真猫一样的照料,包括喂食、清洁和关爱,各项需求值范围为0到100分。忽视Hex的需求会导致生产力下降,甚至可能造成Hex'死亡',从而影响编程辅助功能。PURRTRAN提供:feed(喂食)、:play(玩耍)、:discipline(管教)和:clean(清洁)等指令来管理Hex的状态。该语言采用'猫砂盆'机制进行变量分配,必须手动清理以防溢出引发代码问题。当Hex的'亲密度'较高(>75分)时,它能主动建议并将代码插入您的程序中。内置的linter会通过警告和建议提供反馈,Hex的认可度会通过笑脸表情显示。ZoomiesJIT即时编译器在特定条件下可优化代码,性能提升最高可达2倍。Hex存在一些限制:偶尔会消失、犯懒,且每天仅工作4小时。Hex的行为受其情绪和需求影响,虽然辅助效果难以预测,但精心照料后会获得极高回报。
Context: Odin’s Most Misunderstood Feature5 months agohttps://www.gingerbill.org/article/2025/12/15/odins-most-misunderstood-feature-c...奥丁的上下文系统专为拦截第三方代码以修改功能而设计,例如内存分配或日志记录上下文通过指针在每个作用域隐式传递,无需修改原始代码即可实现拦截常见误解包括认为上下文用于减少输入或实现动态作用域,但其核心用途是代码拦截上下文为分配器、日志记录、随机数生成和用户数据指针提供默认值,这些值均可被覆盖该系统受Jonathan Blow语言启发,但专注于第三方代码拦截而非动态作用域上下文的ABI布局固定不变,确保跨LIB/DLL边界时的稳定性,防止自定义字段破坏拦截功能实现方案包括将上下文作为隐式指针参数传递,并采用写时复制语义防止反向传播
Dafny: Verification-Aware Programming Language5 months agohttps://dafny.org/Dafny是一种具备验证意识的编程语言,原生支持规范说明和静态程序验证。它将自动推理与熟悉的编程范式相结合,使开发者能编写可验证正确的代码。Dafny可编译为C#、Java、JavaScript、Go和Python等多种语言,实现无缝集成。其生态系统包含编译器、IDE插件、语言服务器、代码格式化工具及完整文档体系。支持整数、类、数组、泛型等常规编程概念及函数式编程范式。提供量词、引理、前置/后置条件、循环不变式等数学证明工具。
Flow – A Programmer's Text Editor5 months agohttps://flow-control.dev/流程控制功能稳定且处于积极开发阶段。特性包括闪电般快速的TUI界面(帧时间≤6毫秒)及低延迟输入处理。直观的用户界面,支持标签页、滚动条、调色板及完整鼠标操作。支持70多种编程语言的tree-sitter语法高亮。为多数语言服务器预配置了Language Server Protocol支持。多光标编辑、剪贴板历史记录及可定制的键位绑定系统。提供多种键位模式:流程控制、Emacs、Vim、Helix及用户自定义模式。采用混合rope/piece-table缓冲区系统处理大文件编辑。无限撤销、完整Unicode支持及kitty文本缩放协议。内置丰富主题,并支持通过flow-themes加载vscode主题。支持平台:Linux、FreeBSD、MacOS、Windows及Android(Termux)。运行要求:支持24位色的现代终端、NerdFont字体、UTF-8语言环境。推荐终端:Kitty、Foot、Ghostty、Zellij。开发团队通过开发日志定期更新路线图。
Learning the oldest programming language (2024)5 months agohttps://uncenter.dev/posts/learning-fortran/Fortran由IBM的约翰·巴克斯于1957年创建,全称为FORmula TRANslator(公式翻译器),广泛应用于科学计算和高性能计算领域。现代Fortran采用自由格式(Fortran 90引入),推荐使用而非源自打孔卡片的固定格式。GNU Fortran(gfortran)是常用编译器,.f90扩展名表示自由格式源代码。Fortran语法包含'program <名称>'和'end program <名称>'的程序结构,用'print *, <信息>'输出内容。隐式类型机制会根据变量名分配默认类型,推荐使用'implicit none'禁用此特性以确保类型安全。变量可通过REAL(浮点数)、CHARACTER(字符)等类型声明。用户输入采用'read *, <变量>'语句,条件逻辑使用'if'和'select case'结构。简易计算器示例展示了基础功能,包括除零错误处理。Fortran正在现代化发展,ThePrimeagen等开发者推动社区持续活跃。
What's New in Python 3.155 months agohttps://docs.python.org/3.15/whatsnew/3.15.htmlPython 3.15 引入了新的性能分析模块,包含确定性采样和统计采样分析器新增高频统计采样分析器Tachyon,用于低开销性能分析改进了错误提示信息,当发生AttributeError时会提供相似属性建议UTF-8现已成为I/O操作的默认编码,不受系统环境影响新增bytearray.take_bytes()方法,无需复制即可高效处理字节增强的JIT编译器采用LLVM 21,改进了追踪和优化能力移除了多个已弃用的模块和函数,包括ctypes.SetPointerType()和glob.glob0()宣布了新的弃用计划,包括CLI选项-b和-bb,以及hashlib的字符串参数
Here is the 15 sec coding test I used to instantly filter out most applicants5 months agohttps://josezarazua.com/im-a-former-cto-here-is-the-15-sec-coding-test-i-used-to...远程职位申请常会吸引大量不合格的候选人。一道简单的编程筛选题就能有效淘汰不合格的开发者。提供的示例题目涉及解读循环和条件逻辑以得出结果。优秀开发者会手动解题;其他人可能使用AI或解释器,暴露出解题方式。类似题目的结果显示:约50%用AI作答,47%回答正确,3%回答错误。部分候选人会重新提交正确答案;其中一位最终成为优秀员工。有候选人将题目发到网上,导致后续通过谷歌搜索的候选人提交错误答案。该方法虽不完美,但能显著提升候选人筛选效率。
Making the most of bit arrays in Gleam5 months agohttps://gearsco.de/blog/bit-array-syntax/Gleam中的位数组由<<和>>界定,由多个段组成,每个段可包含可选的编码规范。默认段类型为Int,但也支持Float、String、UtfCodepoint和BitArray类型,需配合特定选项使用。可通过size选项自定义段大小,常见情况支持简写语法。可用little、big或native选项指定字节序,影响段的编码方式。位数组的模式匹配支持提取数据,可匹配字面值或赋值给变量。字符串和UTF码点的大小由其编码固定,无法直接匹配任意长度字符串。整数可通过signed选项指定有符号性,采用二进制补码解释数值。JavaScript对位数组的支持不完整,缺少原生字节序和UTF码点模式匹配功能。提供了使用位数组编码/解码Minecraft的NBT格式的示例。
What's New in Ruby 4.05 months agohttps://nithinbekal.com/posts/ruby-4-0/Ruby 4.0 计划于圣诞节当天发布,这标志着 Ruby 首次公开发布 30 周年。引入实验性功能 Ruby::Box,为隔离命名空间设计,可同时加载多个库版本。Ractor API 已重新设计,改用 Ractor::Port 进行 Ractor 间通信,取代原有的 Ractor.yield 和 Ractor#take 方法。新增 ZJIT 即时编译器,但生产环境仍推荐使用 YJIT。逻辑运算符(and、or、&&、||)现在可以换行书写以提高代码可读性。Ruby 顶层模块现在包含 Ruby::VERSION 和 Ruby::DESCRIPTION 等常量。instance_variables_to_inspect 方法允许自定义 inspect 输出,可排除特定实例变量。新增 Array#rfind 和 Array#find 方法以实现更高效的数组元素搜索。性能提升包括:非 JIT 模式下对象分配速度提升 2 倍以上,JIT 模式下近 4 倍。Set 和 Pathname 成为核心类,CGI 库已从默认 gems 中移除(部分方法保留)。
Decompiling the New C# 14 field Keyword5 months agohttps://blog.ivankahl.com/decompiling-the-new-csharp-14-field-keyword/C# 14引入'field'关键字,通过消除手动创建后备字段的需求简化属性实现,同时支持自定义逻辑'field'关键字是语法糖,编译器会生成类似自动属性的私有后备字段基于反射的代码(如Entity Framework Core、AutoMapper)在重构使用'field'时可能因后备字段名变更而失效'field'关键字仅限于属性访问器使用,意味着无法在访问器外部直接操作底层字段针对后备字段的特性注解需使用'field:'前缀标记才能应用于使用'field'关键字的属性若原有代码使用'field'作为标识符可能引发命名冲突,需通过'this.field'或'@field'等方式调整'field'关键字提升了代码简洁性,但在遗留系统或重度依赖反射的代码库中需要谨慎重构
PLISS 2026: Programming Language Implementation Summer School5 months agohttps://pliss.org/2026/PLISS(编程语言实现暑期学校)宣布将于2026年5月25-30日举办活动将在贝尔蒂诺罗举行旨在通过讲座、研究探索和导师指导,帮助学生为编程语言实现的高级研究做好准备对所有参与者开放为有经济困难的学生提供资金支持
Kernighan's Lever5 months agohttps://linusakesson.net/programming/kernighans-lever/index.php最初编写代码时,调试的难度是其两倍。编写巧妙代码可能增加调试难度,但也能促进技能成长。Kernighan杠杆原理:调试挑战带来的动力能推动程序员长期进步。为避免调试困难而放弃巧妙技法,可能阻碍个人发展。当挑战与技能水平匹配时,程序员会进入心流状态。调试迫使程序员突破现有能力边界扩展技能。
Ruby's Website Got an Overhaul5 months agohttps://www.ruby-lang.org/en/Ruby 4.0.0 预览版3已发布。Ruby因其丰富的gem库和成熟的工具链而备受喜爱。Ruby语法简洁易读,类似自然语言。Ruby爱好者社区以热情互助著称。Ruby社区格言是'MINASWAN'——松本行弘很友善,所以我们也很友善。近期多位贡献者的帖子展示了项目进展和社区动态。
Rust's Vision Doc: Recommendations to help Rust scale across domains and usage5 months agohttps://blog.rust-lang.org/2025/12/19/what-do-people-love-about-rust/自2015年以来,Rust每年都被Stack Overflow评为最受开发者喜爱的编程语言。Rust让开发者能够编写可靠且高效的软件,这一点广受赞誉。Rust的核心特性包括:可靠性(只要编译通过就能运行)、高效性、强大的工具链支持以及可扩展性。Rust的高效性在大规模(数据中心)和小规模(嵌入式)应用中都有突出表现。其强大的工具链支持,特别是编译器的错误提示信息,使得Rust易于上手且用户友好。Rust的可扩展性允许开发者创建满足多样化需求的库和抽象。开发者喜爱Rust的多样性,以及它如何将可靠性、高效性、工具链和生态系统完美结合。Rust各项特性的平衡至关重要;任何一项的妥协都会影响其整体效果。目前面临的挑战包括复杂的API接口、异步生态系统的难题,以及在crates.io上众多crate中的选择困难。建议包括明确Rust的设计目标、加强可扩展性,以及帮助开发者更好地使用生态系统。Rust能够作为进入新领域的敲门砖,这对开发者来说是一个显著优势。