我目前主要是一个D程序员,我正在寻找添加另一种语言到我的工具箱,最好是一个支持元编程的黑客,只是不能用像D这样的静态编译语言来完成。我已经读了一下Lisp我很想find一种允许Lisp做的很酷的语言,但是没有Lisp的奇怪语法等等。 我不想开始一场语言的火焰战争,我确信Ruby和Python都有他们的权衡,所以我会列出对我个人来说重要的东西。 请告诉我,Ruby,Python还是其他一些语言对我来说最好。 重要: 好的元编程。 能够在运行时创build类,方法,函数等。 优选地,代码和数据之间的最小区分,Lisp样式。 干净,清晰,语法清晰,一致,直观的语义。 基本上是一个深思熟虑,有趣的使用,现代语言。 多种范例。 对于每个项目,甚至项目中的每一个小的子问题,没有一个范例是正确的。 一种有趣的语言,实际上影响了人们对编程的思考方式。 有一些重要: 性能。 如果performance不错,但是如果performance真的是优先考虑的话,我会用D代替。 充分certificate。 不重要: 社区大小,图书馆的可用性等。这些都不是语言本身的特点,而且都可以很快改变。 工作可用性。 我不是一个全职的专业程序员。 我是一名研究生,编程与我的研究是切线相关的。 任何主要由非常大的项目devise的function都是由百万条代码猴子来完成的。
我已经开始使用emacs编辑HTML标签和javascript内容的HTML文件的痛苦的第一步。 我已经安装了nxhtml并尝试使用它 – 即设置为使用nxhtml-mumamo模式的.html文件。 但我不喜欢它。 当我编辑代码的Javascript部分时,Tab缩进不像编辑C / C ++代码时那样工作。 它开始把选项卡放在行内,如果你尝试点击行前面的空白处的tab,它会插入选项卡,而不是重新制表行。 另一个我不喜欢的方面是它不像通常的C / C ++模式那样进行语法着色。 在编辑HTML文件时,我更喜欢默认java模式的行为,但不能很好地与HTML代码一起玩。 🙁 1)是否有更好的方式来编辑HTML文件的Javascript部分? 2)有没有办法让nxhtml的JavaScript部分使用默认的Java模式? 问候, 中号
我已经有了一段时间的Web开发人员,并且最近开始学习一些函数式编程。 和其他人一样,我将这些概念中的很多应用到我的专业工作上,都遇到了很大的麻烦。 对我来说,主要原因是我看到FP之间的剩余无状态目标之间的冲突似乎与我所做的大多数Web开发工作已严重依赖于数据库,这是非常以数据为中心的事实相冲突。 有一件事让我成为OOP方面更有成效的开发者,就是发现了MyGeneration d00dads for .NET,Class :: DBI for perl,ActiveRecord for ruby等对象关系映射器。这使我可以远离从写插入和select语句整天,并专注于作为对象容易地处理数据。 当然,我们仍然可以在需要权限时编写SQL查询,但是在幕后很好地抽象出来。 现在,转向function性编程,就像在这个例子中 ,像Links这样的许多FP Web框架似乎需要编写大量的样板化sql代码。 networking锁看起来好一点,但它好像使用了一种OOP模型来处理数据,并且仍然需要为数据库中的每个表手动编写代码,如本例中所示 。 我想你使用了一些代码生成来编写这些映射函数,但是这看起来好像是一个不假思索的样子。 (请注意,我没有非常仔细地查看Weblocks或Links,我可能会误解它们是如何使用的)。 所以问题是,对于Web应用程序的数据库访问部分(我相信这是相当大的),或者其他需要与sql数据库接口的开发,我们似乎被迫下了以下path之一: 不要使用函数式编程 以恼人的,不抽象的方式访问数据,涉及手动编写大量SQL或类似SQL的代码ala链接 强制我们的function性语言变成伪OOP范例,从而消除了真正的函数式编程的一些优雅和稳定性。 显然,这些select都不是理想的。 是否find了解决这些问题的方法? 这里真的有一个问题吗? 注意:我个人最熟悉FP前端的LISP,所以如果你想给出任何例子并且知道多种FP语言,lisp可能是首选的语言select PS:有关Web开发其他方面的问题,请参阅此问题 。
对于那些在Haskell和Lisp方面有经验的人,我很好奇在Haskell和Lisp中编写代码是多么“愉快”(用一个可怕的术语)。 一些背景:我现在正在学习Haskell,之前曾经在Scheme和CL上工作过(还有一些进入Clojure)。 传统上,你可以认为我是dynamic语言的粉丝,他们提供的简洁和快速。 我很快就爱上了Lisp的macros,因为它给了我另一种避免冗长和样板的方法。 我发现Haskell 非常有趣,因为它向我介绍了我不知道存在的编码方式。 它肯定有一些方面,似乎有助于实现敏捷性,如易于编写部分function。 然而,我有点担心失去Lispmacros(我想我失去了它们;事实上被告知我可能还没有学到它们呢?)和静态分类系统。 那些在这两个世界上都做了大量编码的人,会不会介意经验的不同,你更喜欢哪一个,如果说偏好是情境的话?
我真的觉得我应该学习Lisp,并且有足够的资源来帮助我做到这一点。 我不会因为复杂的语法而拖延,但是在“传统的商业编程”中,我会发现使用它来代替程序语言是有意义的。 那里有一个用Lisp编写的商业杀手级应用程序吗?
我从其他Lisp(特别是Scheme)那里获得了一些知识。 最近我一直在阅读关于Clojure 。 我看到它有“符号”和“关键字”。 我熟悉的符号,但不包含关键字。 其他Lisp有关键字吗? 除了具有不同的符号(即:冒号)之外,关键字与符号有什么不同?
我已经尝试了Lisp(实际上是Scheme),并发现它是一个非常漂亮的语言,我有兴趣了解更多。 然而,似乎Lisp从来没有用在严肃的项目中,而且我没有看到它在任何工作岗位上被列为期望的技能。 我有兴趣听到任何使用过Lisp的人,或者在“现实世界”中看到过它,或者知道它是否被认为是纯粹的学术语言。
我需要一些帮助来理解Paul Graham的“ What Made Lisp Different” 。 variables的新概念。 在Lisp中,所有variables都是有效的指针。 值是什么types,而不是variables,分配或绑定variables意味着复制指针,而不是指向。 符号types。 符号不同于string,因为您可以通过比较指针来testing相等性。 使用符号树的代码的符号。 整个语言总是可用的。 在读取时间,编译时间和运行时间之间没有真正的区别。 您可以在编译时读取,读取或运行代码的同时编译或运行代码,以及在运行时读取或编译代码。 这些意味着什么? 它们在C或Java等语言中有什么不同? 除了Lisp族语言以外的其他语言现在是否有这些构造?
在Clojure中做GUI的最好方法是什么? 有一些function的Swing或SWT包装的例子吗? 还是与JavaFX声明性GUI描述的一些整合,可以很容易地使用一些macros观包装到sexpression式 ? 任何教程?
球拍是Scheme的后裔。 Racket与R6RS有什么不同? 它增加了什么,或带走了什么,或者只是不同? 我知道Racket不仅仅是一种语言,它是一个语言平台。 但我指的是主要的球拍方言。