柯里-霍华德对应揭示了数学证明与计算机程序之间的深刻联系:每个证明都对应一个程序,每个程序都对应一个证明。本文通过具体示例展示了逻辑命题如何对应类型,证明如何对应程序,以及逻辑推理规则如何对应编程语言结构。
#programming-languages
30 条相关内容
让解释器更快 [视频]
2.0本视频探讨了如何优化解释器性能,涵盖多种加速技术如即时编译(JIT)、字节码优化、内联缓存等策略。通过分析解释器的工作原理与瓶颈,展示了在不改变语言语义的前提下,如何显著提升执行速度,适合对编程语言实现和性能调优感兴趣的开发者。
本文提出了一种算法化的方法,用于重构"通过求值实现正规化"(Normalisation by Evaluation)技术,该技术常用于函数式编程语言中类型检查器的实现。该方法通过算法视角重新阐释了这一经典技术,为理解和实现类型系统提供了新的视角。
本文介绍了如何利用Lean 4定理证明器来验证深度学习模型和算法的正确性,为构建可靠的人工智能系统提供形式化验证方法。
本文探讨了将Rust风格的借用机制与线性Haskell相结合的可能性,提出了一种在纯函数式编程语言中实现安全内存管理的创新方法。通过引入借用概念,可以在保持函数式纯度的同时获得类似Rust的所有权系统优势。
Crystal语言在十年后依然保持其独特魅力,将Ruby的优雅语法与接近C的性能相结合,为开发者提供了既高效又愉悦的编程体验。该语言通过静态类型系统和本地代码编译,在保持开发效率的同时实现了卓越的运行性能。
本文介绍了帮助开发者掌握地道Rust编程风格的学习资源,包括官方指南、社区推荐和实践案例,旨在提升代码质量和可维护性。
本文探讨了面向对象编程中子类型与子类化之间的关键区别,揭示了将两者混淆所导致的常见设计问题,并分析了这种混淆如何影响软件的可维护性和正确性。
尽管内存安全编程日益受到关注,但Rust语言的采用率出现停滞。行业趋势显示开发者正在探索其他内存安全解决方案,而Rust面临生态系统成熟度和学习曲线等挑战。
依赖类型真的被擦除了吗?
2.0本文探讨了依赖类型在编译过程中是否真的被完全擦除,分析了类型擦除的概念及其在依赖类型系统中的实际应用情况。
本文探讨了构建高性能动态语言解释器的关键技术,包括字节码设计、即时编译优化、内存管理和性能分析工具等核心实现策略。
作为一名Rust开发者,本文探讨了C++的优点与缺点。作者从Rust开发者的视角分析了C++语言特性、生态系统以及开发体验,对比了两者在内存安全、并发编程和工具链等方面的差异。
The article discusses how the pandas library in Python can feel awkward for users transitioning from R, and explores whether Haskell might offer a more elegant alternative for data manipulation tasks.
Rust编程语言因其内存安全、高性能和并发特性,被广泛应用于系统编程、WebAssembly、区块链、游戏开发、操作系统、浏览器引擎、云计算基础设施等领域,成为现代软件开发的重要工具。
本文探讨了Odin编程语言在维基百科上遇到的争议,涉及编辑战、内容删除以及社区对编程语言条目中立性的讨论。作者分析了这一事件如何反映了开源项目在公共知识平台上面临的挑战。
本文探讨了 BQN 编程语言与 C 语言在性能方面的比较,分析了两种语言在实现效率、执行速度以及资源消耗等方面的差异和权衡。
本文探讨了在函数式编程中如何将递归模式与效果系统结合,通过代数数据类型和范畴论概念实现可组合的递归算法,同时处理副作用。
这篇文章探讨了编程语言的"怪异"特性,认为那些看似奇怪的设计选择往往反映了语言设计者对计算本质的深刻理解,这些特性虽然初看起来违反直觉,但可能揭示了更优雅的编程范式。
我又开始写Go了
0.5作者宣布自己重新开始使用Go语言进行编程,这标志着他回归到Go生态系统的开发工作中。
Crystal 语言在诞生 10 年后依然因其出色的性能表现和愉悦的开发体验而备受青睐。它结合了 Ruby 的优雅语法与接近 C 语言的运行速度,为开发者提供了高效且愉快的编程体验。
人们容易混淆语言实现保证
2.0本文探讨了TLA+语义保证与模型检查器实现之间的差异,解释了为什么初学者在使用PrintT等副作用操作符时会遇到困惑,以及这种抽象泄漏如何影响编程体验。
基于RosettaCode数据对19种流行编程语言的令牌效率进行比较分析,从Clojure到C语言存在2.6倍的差异。
受限语言更易于优化
2.0暴露原始指针会使优化器的工作变得极其困难。高级语言能够约束程序,使更多优化变得可靠有效。
Rust 的核心
2.0Rust 语言内部似乎潜藏着一个更精简的语言内核,正试图挣脱束缚展现其本质。这暗示着 Rust 的设计哲学中蕴含着某种简洁而强大的核心思想。
一种面向智能体的编程语言
2.5随着智能体编程的兴起,作者认为未来将出现更多新的编程语言。这些语言需要为智能体优化设计,包括提供无需LSP的上下文、避免基于空格的语法、支持显式流控制、采用结果而非异常处理等特性,使智能体能够更高效地理解和生成代码。
伟大的钟摆
2.0文章回顾了过去17年编程趋势的周期性变化:从PHP和动态语言的盛行,到CoffeeScript等工具的兴起,再到如今静态编译和类型系统重新流行,单体架构也正在回归,展现了技术发展的钟摆效应。
作者开发了一个简单的网页工具,能够从Rosetta Code网站抓取所有编程语言并随机选择。通过这个工具,作者发现了Arturo语言并以此经历创作了一篇短篇小说。
Ada中的面向对象编程
2.0本文探讨了Ada编程语言如何支持面向对象编程范式,包括封装、继承和多态等核心概念在Ada中的实现方式。
编程语言的逃生舱口
2.0本文探讨了编程语言中的"逃生舱口"概念——这些特性允许开发者突破语言的核心假设以增加功能。从Rust的unsafe代码到C++的内联汇编,作者分析了这些功能如何平衡语言能力与可预测性,并讨论了使用逃生舱口可能带来的问题。
本文探讨了数组的概念模型,将一维数组视为定义在整数区间上的函数,并扩展到多维数组和表格。作者通过函数式编程的视角解释了APL风格的多维数组与表格之间的本质区别,特别是异构数据结构如何限制了表格的多轴扩展能力。