Questions tagged «lisp»

Lisp是一种基于lambda演算的通用功能编程语言(家族),具有将源代码作为数据结构进行操作的能力。

5
Scheme vs Common Lisp:哪些特征在您的项目中有所作为?[关闭]
在StackOverflow和此站点上都不乏含糊的“方案与通用Lisp”问题,因此,我想使这一问题更加集中。问题是针对使用两种语言进行编码的人: 在使用Scheme编码时,您最想念Common Lisp编码经验的哪些特定元素?或者,相反,在使用Common Lisp进行编码时,您从Scheme编码中错过了什么? 我不一定只是语言功能。就问题而言,以下是所有值得错过的东西: 特定的库。 开发环境的特定功能,例如SLIME,DrRacket等。 特定实现的功能,例如Gambit将C代码块直接写入您的Scheme源的功能。 当然还有语言功能。 我希望得到的答案的示例: “我试图在Common Lisp中实现X,如果我拥有Scheme的一流延续性,我完全会做Y,但是我必须做Z,这更痛苦。” “随着我的源代码树的增长以及我链接到越来越多的C库,在Scheme项目中编写构建过程的脚本变得越来越痛苦。在下一个项目中,我回到了Common Lisp。” “我现有一个庞大的C ++代码库,对我而言,能够将C ++调用直接嵌入到我的Gambit Scheme代码中,这完全是Scheme与Common Lisp相比可能存在的任何缺点,甚至包括缺乏SWIG支持。” 因此,我希望获得战争故事,而不是诸如“方案是一种更简单的语言”之类的一般观点。
155 lisp  scheme 

15
LISP在当今世界仍然有用吗?哪个版本最常用?
我尝试每隔一定的时间自学一种新的编程语言。最近,我已经阅读了Lisp及其方言在C / C ++之类的语言中处于完全相反的一端的过程,这使我感到好奇,足以了解更多有关它的信息。但是,我不清楚两件事,我正在寻找有关它们的指导: LISP是否在当今世界仍在实践/使用,还是像FORTRAN / COBOL这样的传统语言?我的意思是,除了维护现有代码外,它是否还用于新项目? 什么是最广泛使用的方言?我遇到了Scheme和Common Lisp这两种最流行的方言,并希望您对哪种是最受青睐/最有用的方言发表意见,如果您能为初学者提供任何建议的资源,将不胜感激。 虽然渴望学习一种与我习惯上的程序语言根本不同的语言,但我不想为某种完全过时的东西投入过多的精力-如果它是专业上的“死胡同”,我仍然会学习它,但只有学术角度...

17
Lisp为什么有用?[关闭]
Lisp显然是AI方面的优势,但是对我而言,Lisp的速度似乎不比Java,C#甚至C都快。我不是Lisp的高手,但我发现很难理解它的优势人们会用Lisp编写商业软件。 但是,它被认为是黑客的语言。 保罗·格雷厄姆(Paul Graham)为什么提倡Lisp?为什么ITA Software选择Lisp而不是其他高级语言?这些语言有什么价值?
64 lisp 

11
为什么Lisp不会更普及?[关闭]
我开始通过SICP视频学习Scheme,接下来我想转到Common Lisp。 这种语言似乎非常有趣,并且大多数人为此写书都主张它具有无与伦比的表达能力。CL似乎有一个不错的标准库。 为什么Lisp不会更普遍?如果确实如此强大,人们应该到处使用它,但要找到Lisp招聘广告几乎是不可能的。 我希望这不仅是括号,因为一段时间后它们不是一个大问题。

9
我应该如何从Lisp开始?[关闭]
我已经编程多年了,以各种方式遍历Blub(BASIC,汇编语言,C,C ++,Visual Basic,Java,Ruby,而没有“ Blub-ness”的特殊顺序),并且我想学习Lisp。但是,在时间有限(家庭,全职工作等)的情况下,我有很多兴趣,而对于当前的Blub(Java),我感到很满意。 因此,我的问题是,假设我是一个真正想学习Lisp的人,那么要取得良好的结果来证明Lisp在Web开发中的优越性,将采取哪些初步步骤?也许我错过了重点,但这就是我最初看到Lisp知识应用的方式。 我在考虑“使用方言A,使用IDE B,按照第C页的说明,在使用顾问D的单子之后质疑您的理智”。我想知道这里的人们认为什么是A,B,C甚至D的最佳值。此外,还讨论了学习如此强大的语言而不是成为Rails的相对价值。专家。 仅添加更多细节,我将在MacOS(或Linux VM)上进行开发-无需基于Windows的方法。 那些浏览的注意事项 我将让这个问题保持一段时间,以便在我能够探索建议之后就可以提供有关建议的反馈。如果您碰巧正在浏览并且觉得自己有需要添加的内容,请这样做。我真的很欢迎您的反馈。 有趣的链接 假设您是从Java背景来的Lisp,那么这组链接将使您快速入门。 使用Intellij的La Clojure插件集成Lisp(视频广播) Web Lisp 实用Common Lisp的在线版本(C / o Frank Shearar) Lisp的土地一(+ (+ very quirky) game based)中的方式,但让这一切如此简单 在MacOS上安装Clojure和Sublime 2是一个很好的入门指南 看看《Clojure在行动》一书。为我工作。


3
使用LISP和Haskell有什么优势?他们会让我成为更好的程序员吗?[关闭]
我知道Lisp和Haskell分别是逻辑和函数编程语言,但这到底意味着什么?它们与其他语言有何不同?我听说学习这些将使您成为一个更好的程序员并改善您的逻辑。这是真的,如果我学习Lisp或Haskell达到了能干的水平,我的编程会得到改善,并且我会更好地处理任何语言的问题吗?我只是想知道看看它们是否值得学习。这些语言在GUI和图形等领域是否有用,还是仅对控制台应用程序有用?
41 haskell  lisp 


4
您的Lisp工作流程是什么样的?[关闭]
我现在正在学习Lisp,它来自于机车BASIC-> Z80汇编器-> Pascal-> C-> Perl-> C#-> Ruby的语言发展。我的方法是同时: 使用SBCL,QuickLisp,closure-html和drakma编写简单的网络抓取工具 观看SICP讲座 我认为这运作良好;我正在开发好的“ Lisp护目镜”,因为我现在可以相当轻松地阅读Lisp。我也对Lisp生态系统的工作方式有所了解,例如Quicklisp的依赖关系。 不过,我真正想念的是对经验丰富的Lisper实际工作方式的感觉。 当我为.NET编码时,我已经使用ReSharper和VisualSVN设置了Visual Studio。我编写测试,实现,重构,提交。然后,当我做完足够的事情来完成一个故事时,我会写一些AUAT。然后,我在TeamCity上发布了Release版本,以将新功能推向客户进行测试和希望的批准。如果它是需要安装程序的应用程序,那么我会使用WiX或InnoSetup,显然是通过CI系统构建安装程序。 因此,我的问题是:作为一名经验丰富的Lisper,您的工作流程是什么样的?您主要在REPL还是在编辑器中工作?您如何进行单元测试?持续集成?打包和部署?当您坐在办公桌前时,一边蒸着一杯咖啡,一边蒸着装裱着约翰·麦卡锡(John McCarthy)的照片,那又是什么呢? 目前,我觉得我正在掌握Lisp编码,但没有掌握Lisp开发...
39 lisp 

7
C#开发人员-我尝试过Lisps,但我不明白。
经过几个月的关于Lisp,CL和Clojure的学习和使用,我仍然看不到有什么理由代替C#编写任何令人信服的理由。 我真的很想提出一些令人信服的理由,或者有人要指出我缺少的东西确实很大。 Lisp的优势(根据我的研究): 紧凑,富有表现力的符号-不仅是C#,是的...但是我似乎也可以用C#来表达那些想法。 对函数式编程的隐式支持-具有LINQ扩展方法的C#: mapcar = .Select(lambda) mapcan = .Select(lambda).Aggregate((a,b)=> a.Union(b)) 汽车/第一= .First() cdr / rest = .Skip(1)....等 Lambda和高阶函数支持-C#具有此功能,并且语法可以说更简单: “(lambda(x)(body))”与“ x =>(body)” Clojure中的“#(”与“%”,“%1”,“%2”很好 与对象分离的方法分派-C#通过扩展方法具有此功能 多方法分派-C#本身没有这种方法,但是我可以在几个小时内将其实现为函数调用 代码就是数据(和宏)-也许我没有“获得”宏,但是我没有看到一个不能将宏的概念实现为函数的示例。它不会改变“语言”,但我不确定这是一种优势 DSL-只能通过功能组合来实现...但是可以工作 无类型的“探索性”编程-对于结构/类,C#的自动属性和“对象”都可以很好地工作,并且您可以轻松地升级为更强大的类型 在非Windows硬件上运行-是吗?在大学以外,我只认识一个不在家中运行Windows或至少在* nix / Mac上运行Windows VM的人。(再说一次,也许这比我想像的要重要,我刚刚被洗脑了……) 自底向上设计的REPL-好的,我承认这确实非常好,我在C#中错过了它。 我在Lisp中缺少的东西(由于C#、. NET,Visual Studio,Resharper的混合使用): 命名空间。即使使用静态方法,我也喜欢将它们绑定到“类”以对它们的上下文进行分类(Clojure似乎有这个,CL似乎没有。) 强大的编译和设计时支持 类型系统允许我确定我传递的数据结构的“正确性” 拼写错误的内容会实时下划线;我不必等到运行时就知道 建议自动进行代码改进(例如使用FP方法代替命令式方法) GUI开发工具:WinForms和WPF(我知道Clojure可以访问Java GUI库,但是对我来说它们是完全陌生的。) GUI调试工具:断点,插入,逐步,值检查器(文本,xml,自定义),监视,按线程调试,条件断点,调用堆栈窗口,可以跳转到任意级别的代码在堆栈中 (为公平起见,我在Emacs + Slime方面的工作似乎提供了其中的一部分,但我偏爱VS GUI驱动的方法) …
37 clojure  lisp 

6
Lisp仍然具有其他编程语言未采用的任何特殊功能吗?
Lisp仍然具有其他编程语言未采用的任何特殊功能吗? Lisp是指所有Lisp编程语言的整体。有人告诉我Lisp多么惊人,并且知道许多语言都受到Lisp的启发。但是Lisp是否仍然具有任何其他语言无法完成的专有设计功能? 我问这个问题的原因是,最近,我自己是一名业余程序员,所以我开始学习Clojure只是为了好玩,结果是我发现了很多与Lisp相关的帖子和​​评论,但只说了一件事:“ Lisp是独一无二的”,但其他现代编程语言已经采用并窃取了Lisp的许多想法,例如条件,递归和作为一等公民的功能。甚至元编程也可以用多种语言完成。 我错过了什么吗?“ Lisp还是不一样”吗? 或我很幸运,因为其他现代语言从Lisp窃取了所有的好东西,因此不必深入研究Lisp的括号,而“ Lisp是不同的”。

5
设计自上而下还是自下而上是更可取的?
据我了解,自上而下的设计是通过将抽象的高级概念细化为较小的混凝土和易于理解的部分,直到定义了最小的构建块。另一方面,自下而上定义了较低级别的部分,然后逐渐构建较高级别的块,直到形成整个系统。 实际上,最好将两种方法结合起来:从高级规范开始,以完全指定领域知识,其关系和约束。一旦清楚地了解了问题,便会创建最小的构建块来构建系统。 过程: 创建需求规范 创建设计规范(带有图表) 实行 交付 重复(在迭代开发中,我们不重复每个阶段的全部工作,而是重复每个阶段的一点工作,并每天开会以满足客户的动态需求) 看起来对我来说是完全正常的(以规格作为计划)。它有其缺陷,但这就是为什么我们要进行迭代开发:为什么要花时间在一个阶段上,而不是花时间进行需求分析,以研究领域知识中可能发生变化的所有可能事物(可能每天),而是进行一些分析,进行一些设计然后实施。 另一种方法是,每次迭代都是一种小型瀑布式的方式,在几天(或一周)内进行分析。设计同样如此。其余时间用于实施。自上而下的方法与迭代开发相结合有天生的错误吗? Paul Graham 在他的论文《自下而上编程》中似乎鼓励完全自下而上地构建,或者鼓励自下而上地对其进行编程,但是不建议进行需求分析/设计阶段: 经验丰富的Lisp程序员对程序进行了不同的划分。除自上而下的设计外,它们还遵循可称为自下而上的设计的原则-更改语言以适应问题。 就我所知,他的意思是Lisper仍然执行自上而下的设计,但程序自下而上,是真的吗?他写道: 值得强调的是,自下而上的设计并不意味着仅以不同的顺序编写相同的程序。自下而上工作时,通常会得到不同的程序。您将获得一种具有更多抽象运算符的更大语言,以及一个用它编写的较小程序,而不是一个单一的整体程序。取而代之的是门,而不是门。 这是否意味着在用Lisp编写程序期间,您最终会获得通用工具?
31 design  c++  lisp 

13
语言不受欢迎的开发中的问题(例如维护)
我正在团队中单独使用clojure(lisp)开发一些应用程序。它从小应用程序开始。没问题。但是,由于它具有功能并扩展了区域,因此它已成为重要的程序。 我担心维护等问题。我们团队中没有人知道Clojure或Lisp,也不对诸如此类的语言感兴趣。 因此,用不受欢迎的语言进行编程不是错误的做法吗?(为了我自己的乐趣?)我应该使用更多流行的语言吗?(至少像python) 我确定我是否要离开团队,而不是说我要离开。:)-没有人​​会维护它。该程序将被销毁,部分程序将使用其他语言进行开发。 尽管我非常喜欢使用clojure进行开发,但我发现这可能不适合我的团队。 你怎么看待这件事?我认为许多喜欢不受欢迎的语言的程序员都在关注类似的问题。

11
您是否将LISP(的方言)用于实际应用?在哪里,为什么?[关闭]
尽管LISP(以及方言,例如Scheme,Common LISP和Clojure)是相当不错的编程语言,但它们并没有获得太多的行业支持。(目前看来,他们正在获得一些吸引力)。 现在,这与问题没有直接关系,您将在生产程序中使用LISP方言吗?什么样的程序,为什么?还包括与其他代码(例如C)集成在一起的用法,但是请注意,这就是您在回答中所要表达的意思。广泛的概念是首选,但具体的应用也很不错。

5
为什么用Lisp学习Lisp口译员如此重要?
我已经看到了许多针对新程序员的CS课程和学习建议,呼吁有抱负的程序员学习专门用Lisp编写的Lisp解释器。所有这些站点都表示类似以下内容:“具有智力上的启示”,“这是每个认真的程序员应有的启发经验”或“它向您展示了硬件/软件的关系”以及其他含糊的陈述,尤其是本文摘自这个著名的方法。 我的问题的普遍看法是,lisp如何实现上述目标,为什么选择lisp?为什么不使用其他语言? 我之所以这样问是因为我刚刚完成了使用scheme编写的方案解释器(摘自SICP http://mitpress.mit.edu/sicp/),现在我正在使用scheme编写python解释器,而我正努力地拥有这个传奇的顿悟那应该专门来自前者。我正在寻找两种语言之间的具体技术细节,我可以在他们的方案解释器中利用它们来了解程序的工作方式。 进一步来说: 为什么对以其所解释的语言编写的解释器进行研究如此强调-是将原始语言和所构建的语言保持直觉仅仅是一项伟大的心理锻炼,还是存在只能根据其本质找到解决方案的特定问题?原始语言? Lisp口译员如何为未来的软件设计展示良好的体系结构概念? 如果我使用其他语言(如C ++或Java)进行此练习,会错过什么? 什么是最常用的,从这个练习外卖或“心理工具”?** **我选择我做,因为我的答案已经注意到,我已经从这个练习更多的技巧获得了在我的脑海设计解析工具,比其他任何一个工具,我想找到解析,可能对计划更好的工作,不同的方法解释器比python解释器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.