JAVA编程:基于范型的java函数式编程(一)
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。编程|函数注:在您浏览本篇的时分,但愿你对JavaGeneric(范型)可以有所懂得和分明。记:周末在给javaparty讲FP中,良多人仿佛对fp其实不体贴,也以为java中fp的感化不年夜。实在这是个很年夜的看法毛病,范型的开展,对java的函数式编程撑持很年夜,对Functor的影响也十分年夜。Functor在算法、逻辑、前提盘算、划定规矩引擎等等方面,城市有很年夜的作为,这个影响可就会深远的多了。――估且以此篇的初步,叫醒java开辟者对FPinJava的从头熟悉。
周六给javaparty讲了java中的函数编程(FunctionalProgramminginJava),但因为本人筹办的不充实,讲的其实不深切。估且再写点blog增补一下。固然,接上去的日子里,也盘算挤点工夫再深切研究以下Functor,感到这个使用,未来会很普遍,即便java是一个OO言语,是面向形态的命令式编程(Imperativeprogramming)言语。
关于Java言语来讲,FP并非其一个专长。可是Functor倒是一个很不错的新新亮点,固然Functor这个观点其实不新,早在C++的STL就已被提出来了:Afunctorisafunctionthatcanbemanipulatedasanobject,oranobjectrepresentingasingle,genericfunction。――透过这个形貌,我想我们能够较为这么说:Functor=FunctionObject。以是,在OO言语中,地道的Function是不存在的,在Java言语中,Function也是一个对象,这个对象就是Functor。
可是,在java中,Functor却由于java5对范型(Generic)的撑持,终究破土而出,成为一个新新亮点。而我也信任,这个亮点不会只是偶然的闪灼,势必在将来的良多使用中,显现出明亮的一面。
Functor次要由三品种型:谓词(predicate),函数(function),历程(procedure)。谓词的盘算了局只前往布尔值;函数的盘算盘算前往一个对象;历程则只卖力盘算,没有前往了局
predicate
returnabooleanvalue
function
returnanObjectvalue
procedure
dontreturnanything
Functor自己有一元二元三元・・・之分。固然,我对最为罕见的就是一元(UnaryPredicate,UnaryFunction,UnaryProcedure)和二元(BinnaryPredicate,BinnaryFunction,BinnaryProcedure)。
下面都是一些很笼统的观点,那末一个Functor究竟甚么模样呢?
起首让我们来看一个例子,经由过程这个例子来一步步分明Functor的用途,分明甚么是Functor:
publicstatic<T>List<T>select(Collection<T>source,UnaryPredicate<T>selector){
List<T>result=newArrayList<T>();
for(Titem:source){
if(selector.test(item)){
result.add(item);
}
}
returnresult;
}
这个例子就是Functor的典范使用,使用Functor中的一元谓词,机关了一个select算法。
(未完,待今天持续)writedby胡长城(银狐999)
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! Java是一种计算机编程语言,拥有跨平台、面向对java 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 是一种使网页(Web Page)产生生动活泼画面的语言 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 Java 编程语言的风格十分接近C、C++语言。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 是一种将安全性(Security)列为第一优先考虑的语言 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
页:
[1]
2