Lisp的永恒之道(强烈推荐)

2023-11-27 02:32

本文主要是介绍Lisp的永恒之道(强烈推荐),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

因为也懂点LISP,会很多语言。本文的分析相当精彩,忍不住要转载。

具体全文参考:http://www.cnblogs.com/weidagang2046/archive/2012/06/03/tao_of_lisp.html

下面是精彩摘要:


Lisp的柔性与S表达式有着密切的关系。Lisp并不限制你用S表达式来表达什么语义,同样的S表达式语法可以表达各种不同领域的语义,这就是语法和语义解耦。如果说普通语言的刚性源于“语法和语义紧耦合”,那么Lisp的柔性正是源于“语法和语义解耦”!“语法和语义解耦”使得Lisp可以随意地构造各种领域的DSL,而不强制用某一种范式或是领域视角去分析和解决问题。本质上,Lisp编程是一种超越了普通编程范式的范式,这就是Lisp之道:面向语言编程(LOP, Language Oriented Programming)。Wikipedia上是这样描述LOP的:

Language oriented programming (LOP) is a style of computer programming in which, rather than solving problems in general-purpose programming languages, the programmer creates one or more domain-specific languages for the problem first, and solves the problem in those languages ... The concept of Language Oriented Programming takes the approach to capture requirements in the user's terms, and then to try to create an implementation language as isomorphic as possible to the user's descriptions, so that the mapping between requirements and implementation is as direct as possible.

LOP范式的基本思想是从问题出发,先创建一门描述领域模型的DSL,再用DSL去解决问题,它具有高度的声明性和抽象性。SQL、make file、CSS等DSL都可以被认为是LOP的具体实例,下面我们再通过两个常见的例子来理解LOP的优势。

例1:在股票交易系统中,交易协议定义若干二进制的消息格式,交易所和客户端需要对消息进行编码和解码。

消息格式是一种抽象的规范,本身不对语言做任何的限制,你可以用C,C++,Java,或者Python。普通的实现方式是按照消息格式规范,在相应的语言中定义消息结构,并编写相应的编解码函数。假设为一个消息定义结构和实现编解码函数的工作量为M,不同消息类型的数量为N,这种方式的工作量大致为M*N。也就是说每增加一种消息类型,就需要为该消息定义结构,实现编解码函数,引入bug的可能性当然也和M*N成正比。如果仔细观察不难发现,各个消息结构其实是高度类似的,编解码函数也大同小异,但是普通语言却找不到一种抽象机制能表达这种共性,比如,我们无法通过面向对象的方法定义一个基类把消息结构的共性抽象出来,然后让具体的消息去继承它,达到复用的目的。这正是由于普通语言的抽象维度限制所致,在普通语言中,你只能从函数、接口等维度对事物进行抽象,而恰好消息格式共性所在的维度与这些抽象维度并不匹配。

这篇关于Lisp的永恒之道(强烈推荐)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426820

相关文章

Python中的属性装饰器:解锁更优雅的编程之道

引言 在Python的世界里,装饰器是一个强大的工具,它允许我们以一种非侵入性的方式修改函数或方法的行为。而当我们谈论“属性装饰器”时,则是在探讨如何使用装饰器来增强类中属性的功能。这不仅让我们的代码更加简洁、易读,同时也提供了强大的功能扩展能力。本文将带你深入了解属性装饰器的核心概念,并通过一系列实例展示其在不同场景下的应用,从基础到进阶,再到实际项目的实战经验分享,帮助你解锁Python编程

什么才是相处之道

人与人的相处需要很多的技巧,也许很多人都不懂,可是,不懂不要紧,只要你有心,努力去学习就行,在学习中逐渐积累自己与人相处的经验,让自己在与人相处中逐渐游鱼得水。其实,相处之道很简单,就是互相信任,互相理解,可是现代的社会,这些还存在吗?

设计之道:ORM、DAO、Service与三层架构的规范探索

引言: 实际开发中,遵守一定的开发规范,不仅可以提高开发效率,还可以提高项目的后续维护性以及项目的扩展性;了解一下本博客的项目设计规范,对项目开发很有意义 一、ORM思想 ORM(Object-Relational-Mapping)在对象模型和关系型模型之间做一个映射(转换)。 目的是为了解决面向对象编程语言的发展和关系型数据库的发展不匹配的问题 可以理解为: 将Java中的数据结

《程序员修炼之道》读书笔记(8):注重实效的项目

第8章:注重实效的项目 随着项目开动,我们需要从个体的哲学与编码问题,转向为项目级别的问题。 本章将讨论影响项目成败的几个关键区域。 41《注重实效的团队》 本书在先前讨论了帮助程序员个体更好的方法,这些方法对团队也有效。 下面将针对团队,来重述前面部分章节。 不要留破窗户。团队不应该容忍那些小小的、无人修正的不完美。煮青蛙。团队更容易被煮熟,因为每个人都觉得别人会在监视环境的变化。交流

Linux tcp timewait相处之道

关于Time wait 的特殊细节 熟悉tcp网络编程的同学对于timewait 状态可以说是既熟悉又陌生。在繁忙的server端,该状态经常会使得server无法bind,或者耗尽可用的port资源。此时此刻,心里往往不知所以,万般无奈。本文结合实验,spec和代码原理,解释了timewait 的几种处理方案。 参考文献 1) unix networking programming 2) C

【python学习】深度解析 Python 的 .env配置与最佳实践:温格高的环境变量配置之道

1. 文章简介 在开发和部署 Python 项目时,环境变量配置对于管理敏感信息如数据库连接字符串、API 密钥至关重要。本文将以温格高(2023年环法冠军)的项目为例,详细介绍如何通过 .env 文件简化环境配置,并分享多环境管理、Docker 集成等热门功能。我们还将覆盖一些小技巧和常见错误,帮助你避免开发中的踩坑。 2. 使用 .env 文件的好处 温格高团队正在开发一个记录自行车赛事

【C++】基于 OpenCV 的人脸识别(强烈推荐)

原文网址:http://www.jianshu.com/p/96be2417cc98 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库。它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包。根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展览的技术实现中,都有 OpenCV 的身影。 OpenCV 起始于

【性能优化之道】每秒上万并发下的Spring Cloud参数优化实战!

性能优化之道】每秒上万并发下的Spring Cloud参数优化实战 2018年11月12日 08:30:29 石杉的架构笔记 阅读数:466 欢迎关注个人微信公众号:石杉的架构笔记(id:shishan100) 周一至周五早八点半!精品技术文章准时送上!!   往期文章 1. 拜托!面试请不要再问我Spring Cloud底层原理! 2.【双11狂欢的背后】微服务注册中心如何承载大型系

蒸馏之道:如何提取白酒中的精华?

在白酒的酿造过程中,蒸馏是一道至关重要的工序,它如同一位技艺精细的炼金术士,将原料中的精华提炼出来,凝聚成滴滴琼浆。今天,我们就来探寻这蒸馏之道,看看豪迈白酒(HOMANLISM)是如何提取白酒中的精华的。 一、蒸馏:白酒酿造的魔法时刻 蒸馏,是白酒酿造中的关键环节。在这个过程中,酿酒师们通过巧妙的操作和精细的技艺,将原料中的酒精和风味物质提取出来,为后续的陈酿和勾调提供基础。蒸馏不仅要求