博客
关于我
Lisp的“失败”就是由于它太成功了
阅读量:580 次
发布时间:2019-03-11

本文共 1676 字,大约阅读时间需要 5 分钟。

我是一个编程爱好者,最近被Lisp这门语言深深吸引。耳闻Lisp被称为历史上最强大的编程语言,许多顶尖程序员都用它来进行项目开发。受其影响,我决定开始学习Lisp。

刚开始接触Lisp时,面对它的前缀表达式和大量括号,我感到有点吃力。但随着我逐渐学习函数式编程,内心的阻力逐渐消解。 пис手机+

Lisp的真正魅力在于其宏能力。当我开始学习宏时,就被它的“变态”能力深深震撼。这不仅仅是一门编程语言,它更像是一种创造其他语言的工具。定义代码作为数据处理,是一种前所未有的灵活性。

想起Java的循环能力,特别是早期的只支持for循环而没有for-each,真是让人头疼。Java程序员认为循环是编程的基础,却没有更高效的选择。Lisp程序员认为无法用循环解决问题,于是用宏自行编写一个for-each,以一种更牛X的方式实现。

Lisp的元编程能力使它能够像塑造泥土一样塑造语言。无论是要开发文本编辑器、CAD应用,还是处理订单和查询数据库,Lisp都能变成专门的领域语言(DSL)。这种灵活性让人感觉它不是用来解决问题的工具,而是用来创造工具的工具。

雇主每天面对的各种技术问题,如处理订单、查询数据库,Lisp可以快速转化为专用语言,这在效率和代码简洁性方面都无可匹首。

然而,这种灵活性也带来了问题。Lisp的镜像能力导致代码变得碎片化。一个符号可能代表变量、函数或操作符,这使得代码难以理解,每个小语言之间细微差别不断。

相比之下,其他语言如Python、JavaScript等在处理业务逻辑时更为直观。它们保持了一种清晰的layer结构,避免了Lisp式碎片化带来的混乱。

Lisp虽然创造力无穷,但可能在商业化应用中的确面临挑战。其高度的灵活性和可定制化确实受到其他语言的反映,但具体能否在大型项目中获得广泛采用,还需要时间来证明。

技术奇遇记:Lisp作为一名编程爱好者,最近还是被这门“古董语言”给折服了。Lisp在编程语言的生命周期中占据了一席之地,不过在现代主流语言中渐渐蒙上了阴影。但这门语言的思想却深深影响了当代编程的发展。

Lisp setValueIterator function natively, 在Lisp中,以至于它能够内置支持迭代结构,完全没有需要像Java程序员那样期待for-each的神来之地。在这点上,Lisp的能力远远强于Java。

另一个让我着迷的特性是Lisp的宏哲学,它鼓励程序员深度定制语言。这不仅仅意味着改动语言的一些小细节,更是重新定义语言结构,以适应特定的应用场景。也许这正是Lisp能在领域特定语言演变中如此成功的原因之一。

编程过程中的常见想法往往是:“如果我有这样的操作符,那该多好。” Lisp从不这样问,而是提供一个级别的自由,允许你自己定义和重新定义语言的结构。在此过程中,语言与程序一同演进,最终呈现出彼此完美契合的状态。

Lisp的这类自我革命能力,不仅体现在语言层面,更体现在编程习惯上。我开始意识到,写Lisp程序不只是写代码,更像是在编织一个迷人的图案。

这种“失败”的背后反而暗藏着成功的种子。Lisp的思想在主流编程语言中找到了体现,无论是Python著名的列表推导式、还是JavaScript的异步特性,背后都能看出Lisp的身影。就连现代的Scala,都在Racket这门古老的儿子那儿受到了启发,既支持OO, 又支持函数式。

Lisp的处理方式与众不同,它更愿意选择作为问题域语言(DSL)的存在方式,而不是一刀切将一个大问题拆分成小任务。这种全面的定制化能力,倒不是让Lisp成为“失败”的理由,而证明它有能力满足不同场景下程序的需求。

如今Lisp的日子并不好,但这并不影响它对编程思维的深远影响。无论是现代主流语言,还是各种成śli BREAKTHROUGH,Lisp都在那里,默默地为程序员树立典范—在代码与语言之间寻找完美的平衡。

这哥们儿的“失败”不过是一次性交锋,“失败”本身也难以定义。只看主流语言的受粉状态,Lisp的各种创造性="">

转载地址:http://qvvvz.baihongyu.com/

你可能感兴趣的文章
postgis数据库优化_postgresql 性能优化
查看>>
postgis求面积、交集等相关函数
查看>>
postgis相关函数
查看>>
Postgres Docker版本安装mysql_fdw 插件
查看>>
Postgres invalid command \N数据恢复处理
查看>>
Postgres like 模糊查询匹配集合
查看>>
Postgres 自定义函数内实现 in 操作符的递归查询
查看>>
Postgres 返回当前时间前后指定天数的集合
查看>>
postgres--vacuum
查看>>
postgres--wal
查看>>
postgres--流复制
查看>>
postgres10配置huge_pages
查看>>
PostgreSQL 10.0 preview sharding增强 - pushdown 增强
查看>>
PostgreSQL 10.0 preview 变化 - pg_xlog,pg_clog,pg_log目录更名为pg_wal,pg_xact,log
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 15章 并行查询_15.2. 何时会用到并行查询?...
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.23. 行和数组比较
查看>>
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 21 章 数据库角色
查看>>
Qt开发——网络编程UDP网络广播软件之服务器端
查看>>
Postgresql 12.9如何配置允许远程连接
查看>>
PostgreSQL 9.6 同步多副本 与 remote_apply事务同步级别 应用场景分析
查看>>