该文章介绍了一个用Rust从零构建Lisp解释器的实战教程。项目零外部依赖,核心数据结构基于enum和Rc<RefCell>,实现了词法分析、解析器、闭包、尾调用优化和宏系统等特性。教程包含74个步骤、44张SVG架构图和42个测试用例,中文README约8000行,适合Rust新手学习所有权和类型系统。
文章讨论了现代硬件需求的增加,特别是AI领域对计算资源的依赖,导致硬件价格上涨,消费者面临更少选择和更高成本。同时,介绍了Lua作为HTML模板引擎的优势,强调其简洁性和灵活性。最后,探讨了Lisp语言的设计模式及其在编程中的应用,强调抽象和模块化的重要性。
本文介绍了作者使用纯 Emacs Lisp 构建零依赖的 Org 静态站点生成器(ossg)的过程。项目利用 Emacs 内置的 org-export 功能,强调不依赖外部工具。作者从字符串模板出发,逐步改进为使用 Lisp 闭包控制输出,解决了模板扩展性差的问题。通过两遍编译器实现跨路由链接,优化性能,并引入增量热重建机制,显著提高构建速度。
Clojure 咨询公司 Flexiana 在愚人节发布了 Infix 库,允许用中缀运算符书写数学表达式,挑战 Lisp 的前缀表示法。尽管前缀法一致性高,但可读性差,许多程序员对此感到困惑。Infix 库通过宏实现中缀语法,提升了代码可读性,引发了关于语法糖价值的争论。
本文介绍了Emacs Lisp的热重载方法,包括五种:使用eval-defun(C-M-x)更新变量,使用setq(M-:)快速重置变量,使用load-file重新加载文件,使用unload-feature和require进行干净重载,以及重启Emacs。推荐的工作流程是逐个求值修改过的代码,重新激活模式,必要时进行干净重载。
Lisp 语言在元编程方面表现优异,因其代码即数据的特性使得宏操作更为自然。与其他语言相比,Lisp 方言在运行时元编程和宏特性上具有明显优势。其他语言如 Ruby 和 Python 的元编程能力受限于其语法结构,无法实现同样的灵活性。整体来看,语言的元编程能力与其语法的数据化程度密切相关。
文章探讨了人类语言的统一与分裂,借用「巴别塔」故事和「Lisp诅咒」概念,指出AI技术使人类重新理解彼此,但也导致编程语言的个体化分裂,可能引发沟通障碍。
作者购入eltr.ac域名,计划将个人身份与作品分开,利用该域名创建静态网站,使用Clojure和Hiccup库编写HTML,构建简单的静态网站生成器,探索Lisp编程的优雅性。
本文探讨了Common Lisp的变量机制,比较了Lisp-1与Lisp-2的区别,解释了绑定、词法作用域与动态作用域的原理及其混合使用。Common Lisp的函数与数据命名空间分离,词法作用域在函数定义时确定,而动态作用域依赖于调用链。通过示例展示了两种作用域的不同表现。
用Lisp写slides Jun 2, 2018 0. Lisp, Scheme, or Racket? Lisp,诞生于1958年,世界上第二古老的编程语言,仅次于Fortran。在之后的漫长岁月里,Lisp发生了很多改变,也产生了很多所谓的“方言”,当现在的我们提到Lisp时,我们更多地是指Lisp系的语言。在这些“方言”中,最著名的莫过于Common...
本文介绍了Lisp的本质及其代码生成能力,强调了其语法抽象和元编程特性。通过XML和Ant构建系统,展示了代码作为数据的视角。文章探讨了从手动编码到低代码平台的不同代码生成层次,并讨论了生成式AI的局限性与应用。Lisp的灵活性和强大功能使其在编程领域独树一帜。
Lisp是一种优雅且灵活的编程语言,对计算机科学影响深远,奠定了函数式编程和宏系统的基础。freeCodeCamp.org的YouTube频道提供了一门关于Common Lisp的初学者课程,涵盖REPL、列表、宏和闭包等主题,适合希望提升编程技能的人。
JavaScript是网页开发的核心技术,Node.js将其扩展为强大的服务器环境。学习资源包括Node.js、Lisp解释器和Angular框架,帮助开发者掌握现代技能。GetVM扩展提供互动编码环境,简化学习过程。
作者开发了一种名为JSOP的编程语言,使用JSON格式编写程序,灵感来自LISP,强调代码和数据的统一。JSOP支持基本数据类型和编程功能,并通过宏定义实现元编程。虽然不实用,但展示了JSON作为编程语言的可能性。作者希望获得反馈。
一些公司仍使用(S)FTP进行文件传输。对于Common Lisp,cl-ftp库虽然未维护,但功能良好。示例代码展示了FTP文件发送。对于SFTP,作者使用lftp工具,并通过环境变量管理密码。作者还开发了lftp-wrapper工具,简化文件传输过程,满足开发需求。
C++宏功能有限,容易出错;Rust宏强大但使用复杂;Lisp宏功能强大且简单;Lisp宏系统更具优势;C++和Rust宏系统有独特的优势和应用。
本文讨论了计算的本质和编程语言的抽象性,指出计算的本质从未被正式定义。抽象是编程语言的关键,通过创建语言,我们创造了适应需求的数据和过程的抽象方式。LISP语言通过宏实现了编译时的任意计算,模糊了语言和技术之间的界限。编程语言将继续发展,成为人类创造的一种艺术。
编程语言的演变反映了计算的本质。虽然我们使用C++、Java等语言进行开发,但新语言如Rust和TypeScript也在不断涌现。编程语言的设计旨在简化抽象,使开发者更高效地表达思想。LISP通过宏定义进一步抽象化,模糊了语言与技术之间的界限。编程语言将继续演变,成为人类创造的艺术。
本文讲述了作者编写编译器的经历和思考,通过四个步骤实现了将lisp编译成js代码的编译器。作者强调了抽象的重要性。
保罗·格雷厄姆在2021年的文章中回顾了自己的人生经历,探讨了哲学、人工智能和绘画。他创办了电子商务网站viaweb,并在被雅虎收购后选择回归艺术。格雷厄姆强调创业的本质是增长,并分享了创办Y Combinator的经历,推动初创公司发展。他始终坚持写作,认为关注被忽视的工作能带来真实发现,最终又回到写作和研究Lisp。
完成下面两步后,将自动完成登录并继续当前操作。