码迷,mamicode.com
首页 > 其他好文 > 详细

Why Erlang? - partial

时间:2014-07-08 21:54:57      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   strong   

前言

希望不是一个坑。计划采用结构化拖延策略,在死线(7月是计划中的Erlang月)前写完。

 

完美的计划

相对于Java而言Erlang的优势或有意思的地方:命令式语言 V.S. 函数式语言,线程抽象和体系结构,分布式编程支持度

 

残酷而丑陋的实践

示例1 快排

Java实现(数据结构与算法-排序算法-partial http://www.cnblogs.com/zhoujiagen/p/3690243.html)

Erlang实现

bubuko.com,布布扣
 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 %%%===================================================================
View Code

脑洞大开,语言是程序员的武器,具备接近问题本质表达能力的语言不可避免的很简洁。

 

示例2 继承

计算图形的面积,只要计算长方形、正方形和圆的面积。

正统的OO程序员(包括我)用Java实现时需要四个类。

Erlang实现

bubuko.com,布布扣
 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 %%%===================================================================
View Code

好吧,好像用枚举的Java实现也可以很简洁。

另一个例子,虽然我是Python二把刀,但我敢说Python写的数据库访问代码比Java JDBC访问代码短80%。

没别的意思,只是想表达出虽然条条道路通罗马,大多数人还是比较喜欢路程短的道路。

 

 

 

 

Why Erlang? - partial,布布扣,bubuko.com

Why Erlang? - partial

标签:style   blog   http   java   color   strong   

原文地址:http://www.cnblogs.com/zhoujiagen/p/3830617.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!