首页 > 代码库 > Why Erlang? - partial
Why Erlang? - partial
前言
希望不是一个坑。计划采用结构化拖延策略,在死线(7月是计划中的Erlang月)前写完。
完美的计划
相对于Java而言Erlang的优势或有意思的地方:命令式语言 V.S. 函数式语言,线程抽象和体系结构,分布式编程支持度
残酷而丑陋的实践
示例1 快排
Java实现(数据结构与算法-排序算法-partial http://www.cnblogs.com/zhoujiagen/p/3690243.html)
Erlang实现
1 -module(lib_misc). 2 3 %% API 4 -export([for/3, qsort/1]). 5 6 %%%=================================================================== 7 %%% API 8 %%%=================================================================== 9 % simulate ‘for‘ syntax contructor - inner DSL 10 for(Max, Max, F) ->11 [F(Max)];12 for(I, Max, F) ->13 [F(I)|for(I+1, Max, F)].14 15 % quick sort16 qsort([]) ->17 [];18 qsort([Pivot|T]) ->19 qsort([X || X<-T, X < Pivot])20 ++ [Pivot] ++21 qsort([X || X<-T, X > Pivot]).22 23 24 %%--------------------------------------------------------------------25 %% @doc26 %% @spec27 %% @end28 %%--------------------------------------------------------------------29 30 %%%===================================================================31 %%% Internal functions32 %%%===================================================================
脑洞大开,语言是程序员的武器,具备接近问题本质表达能力的语言不可避免的很简洁。
示例2 继承
计算图形的面积,只要计算长方形、正方形和圆的面积。
正统的OO程序员(包括我)用Java实现时需要四个类。
Erlang实现
1 %%%------------------------------------------------------------------- 2 %%% @author <lenovo@ZHOUJIAGEN> 3 %%% @copyright (C) 2014, 4 %%% @doc 5 %%% 6 %%% @end 7 %%% Created : 6 Jul 2014 by <lenovo@ZHOUJIAGEN> 8 %%%------------------------------------------------------------------- 9 -module(geometry).10 11 %% API12 -export([area/1]).13 14 %%%===================================================================15 %%% API16 %%%===================================================================17 area({rectangle, Width, Height}) ->18 Width * Height;19 area({square, Side}) ->20 Side * Side;21 area({circle, Radius}) ->22 3.14159 * Radius * Radius.23 24 %%--------------------------------------------------------------------25 %% @doc26 %% @spec27 %% @end28 %%--------------------------------------------------------------------29 30 %%%===================================================================31 %%% Internal functions32 %%%===================================================================
好吧,好像用枚举的Java实现也可以很简洁。
另一个例子,虽然我是Python二把刀,但我敢说Python写的数据库访问代码比Java JDBC访问代码短80%。
没别的意思,只是想表达出虽然条条道路通罗马,大多数人还是比较喜欢路程短的道路。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。