标签:style blog http java color strong
前言
希望不是一个坑。计划采用结构化拖延策略,在死线(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 sort 16 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 %% @doc 26 %% @spec 27 %% @end 28 %%-------------------------------------------------------------------- 29 30 %%%=================================================================== 31 %%% Internal functions 32 %%%===================================================================
脑洞大开,语言是程序员的武器,具备接近问题本质表达能力的语言不可避免的很简洁。
示例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 %% API 12 -export([area/1]). 13 14 %%%=================================================================== 15 %%% API 16 %%%=================================================================== 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 %% @doc 26 %% @spec 27 %% @end 28 %%-------------------------------------------------------------------- 29 30 %%%=================================================================== 31 %%% Internal functions 32 %%%===================================================================
好吧,好像用枚举的Java实现也可以很简洁。
另一个例子,虽然我是Python二把刀,但我敢说Python写的数据库访问代码比Java JDBC访问代码短80%。
没别的意思,只是想表达出虽然条条道路通罗马,大多数人还是比较喜欢路程短的道路。
Why Erlang? - partial,布布扣,bubuko.com
标签:style blog http java color strong
原文地址:http://www.cnblogs.com/zhoujiagen/p/3830617.html