仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 596|回复: 7
打印 上一主题 下一主题

[学习教程] 了解下JAVA的探究JVM上的LISP

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:18:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。
以后Java范畴最冲动民气的事变莫过于可同意别的编程言语运转于Java假造机上。环绕JRuby、Groovy、Scala另有Rhino(JavaScript引擎)的会商已甚嚣尘上。可为何要墨守成规呢?假如你真的想跳出支流,投身于一种与Java一模一样的的言语,Lisp就不掉为一种很好的选择。如今已有几种可运转于JVM上的Lisp程序计划言语的开源完成,筹办好入手下手我们的探究之旅吧!
Lisp有甚么值得研讨呢?起首,作为已有50年汗青的言语,它促进很多被我们昔日视为天经地义的看法。if-then-else布局、初期的面向对象和带渣滓接纳的主动内存办理的实验都来历于此。今朝Java程序员的热门话题——辞汇闭包(LexicalClosure),最后的探究也是七十年月在Lisp中睁开的。除此之外,Lisp还具有别的很多言语至今都未接纳的特征,这些杰出的头脑势必在将来引发中兴潮水。
本文的方针读者是成心懂得Lisp的Java开辟职员。我们将在接上去的内容中会商以后能够用在JVM上的分歧Lisp方言(dialect),令你疾速懂得Lisp程序计划事情机理和其共同的地方,文章的最初会演示怎样将Lisp代码与Java体系举行整合。
今朝存在很多可用于分歧平台的Lisp体系,有收费的也有贸易的。关于想要入手下手探究Lisp的Java用户,不分开JVM是首选,如许的话起步很简单,还能够很便利的利用一切本人熟习的Java库和相干工具。
CommonLisp和Scheme
Lisp有两种次要方言(dialect):CommonLisp和Scheme。固然计划理念大致类似,可是它们的不同仍旧充足引发孰优孰劣的剧烈争辩。
CommonLisp是1991年完成的ANSI尺度。一致了几种初期Lisp的理念,是可用于多种使用开辟的年夜型情况,其最为出名的使用是野生智能。而Scheme发生于学术界,特地举行了精简化计划,履历证是一种很好的言语,既可用于盘算机迷信教授教养,又能够作为嵌进式剧本言语。你还大概会碰到别的一些对照着名的Lisp:小型的特定于使用的DSLs,如EmacsLisp或AutoCAD的AutoLISP。
下面提到的两种次要方言(dialect)在JVM上都有响应的完成,相较而言Schemes的完成要成熟一些。ArmedBearCommonLisp(www.armedbear.org/abcl.html)十分完全的完成了CommonLisp尺度,但它存在一个成绩,假如你没有安装其余CommonList体系,就不克不及构建分发版本,这对老手多是个坚苦。
在Scheme方面,两个次要的产物是Kawa(www.gnu.org/software/kawa)和SISC(www.sisc-scheme.org——theSecondInterpreterofSchemeCode)。在这篇文章的例子傍边,我们会用到Kawa,它实践上是个框架,能制造可编译成Java字节码的新言语。Scheme只是它的完成之一。特地说一句,Kawa的创立者PerBothner今朝就任于Sun,次要处置JavaFX项目标编译器方面的事情。
别的一个值得一提的竟争敌手是Clojure(clojure.sourceforge.net)。这是一种新的言语,其Lisp方言(dialect)介于Scheme和CommonLisp之间。它是间接为JVM量身打造的,因而在下面提到的一切Lisp傍边,有着最为明晰Java整合计划。它还具有别的一些冲动民气的特征,比方内建的撑持并发和事件内存。Clojure今朝仍旧处于探究测试阶段,因而在它基本上构建程序另有些为时髦早,但它相对是一个值得存眷的项目。
读取—求值—打印—轮回
我们先来安装Kawa。它的分发版是一个独自的Jar文件,能够间接经由过程链接ftp://ftp.gnu.org/pub/gnu/kawa/kawa-1.9.1.jar下载。失掉该Jar包后,就把它加进你的类路径上,如许你就能够经由过程运转以下命令启动REPL了:
javakawa.repl
 #|kawa:1|#
该命令启动了Kawa,并显现一个提醒符。这个中事实有何奇妙呢?REPL(READ-EVAL-PRINT-LOOP)意义是读取—求值—打印—轮回,这是与运转中的Lisp体系举行交互的体例——它“读取”你的输出,举行“求值”运算后,“打印”盘算了局,云云重复“轮回”。开辟Lisp程序的体例,与我们开辟Java程序时所遵守的“写代码、编译、运转”的周期分歧。Lisp程序员必要鼓励他们的Lisp体系,坚持它的运转形态,如许就令编译和运转时的界线含混起来。在REPL中,函数和变量在实行过程当中都是能够修正的,代码也是静态注释和编译的。
先来做点复杂的事变:把两个数字加到一同。
#|kawa:1|#(+12)
 3
这是Lisp表达式的典范布局大概说“格局”。语法都是分歧的:表达式总被放在一对圆括号内,由于用的是前缀标记,以是“+”号要放在两个参量前。再来一个庞大点的布局,把几个格局嵌套在一同,创建一个树状布局:
#|kawa:2|#(*(+12)(-34))
 -3
Scheme的内建函数以同种机理事情:
#|kawa:3|#(if(>(string-length"Helloworld")5)
         (display"Longerthan5characters"))
 Longerthan5characters
下面程序中,用一个if语句来反省某一特定字符串的长度是不是凌驾5个字符,假如像例子中的那样反省了局为真,就会实行紧随厥后的表达式,该语句将会打印一条提醒信息。注重这里的缩进只是为了增添可读性,假如你乐意的话,能够在一行内写下一切的语句。
Lisp代码用的这类括号麋集(parenthesis-heavy)的作风也称为“S表达式(s-expressions)”。它可兼作界说布局化数据的通用办法,就像XML一样。Lisp有良多内建的函数,你能够很便利的使用S表达式格局利用数据,这类便当转而促进Lisp的别的一个壮大上风:既然语法是云云复杂,那末编写发生、修正代码的程序也要比别的言语复杂很多。当我们演示宏(macros)的例子时,会懂得到更多相似情形。
<p>
如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉,
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-20 19:54:28 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
只想知道 该用户已被删除
板凳
发表于 2015-1-29 19:22:54 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
若天明 该用户已被删除
地板
发表于 2015-2-8 03:26:28 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
小魔女 该用户已被删除
5#
发表于 2015-2-18 08:45:45 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
变相怪杰 该用户已被删除
6#
发表于 2015-3-6 01:19:27 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
小妖女 该用户已被删除
7#
发表于 2015-3-13 02:09:05 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
金色的骷髅 该用户已被删除
8#
发表于 2015-3-20 09:56:12 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 00:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表