论坛首页 综合技术论坛

erlang轻松实现memcached binary协议

浏览 9009 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-08  
一直有一个疑问就是,erlang难道不要求代码的可读性吗,类似的命令式语言语法都比较奇怪(可能这个是从一个过程式语言编程者的角度来看的,但是不可否认它更接近于人类语言,更接近伪码的表达方式)。那么在后期对erlang代码进行维护、重构和一系列优化时,不能说这样奇怪的写法是一个灾难
0 请登录后投票
   发表时间:2009-06-09  
test_destack() ->
    {<<"a">>, [], []} =
        destack([{<<"a">>, [], []}]),
    {<<"a">>, [], [{<<"b">>, [], []}]} =
        destack([{<<"b">>, [], []}, {<<"a">>, [], []}]),
    {<<"a">>, [], [{<<"b">>, [], [{<<"c">>, [], []}]}]} =
     destack([{<<"c">>, [], []}, {<<"b">>, [], []}, {<<"a">>, [], []}]),
    [{<<"a">>, [], [{<<"b">>, [], [{<<"c">>, [], []}]}]}] =
     destack(<<"b">>,
             [{<<"c">>, [], []}, {<<"b">>, [], []}, {<<"a">>, [], []}]),
    [{<<"b">>, [], [{<<"c">>, [], []}]}, {<<"a">>, [], []}] =
     destack(<<"c">>,
             [{<<"c">>, [], []}, {<<"b">>, [], []},{<<"a">>, [], []}]),
    ok.

类似这样的函数是比较头大

不过相比较相同功能和近似同等性能的一个网络服务器端程序

C要近上万行,而erlang只要几百行,你选哪个,况且象上面的写法也不多见,大部分还是挺清晰的

就算是dirty and quickly 的方式也还不错呀
0 请登录后投票
   发表时间:2009-06-10  
楼上所说的大部分还是挺清晰的不知道指的是哪部分? 别说我还是看过erlang基本语法的人,即便是erlang熟手拿到这个也是头大吧.计算机在执行代码时,是不管代码到底是几万行还是几百行的,而是看运行时具体的执行代码以及代码的执行效率,从这个方面来说,有没有数据支持Erlang能优胜c?
0 请登录后投票
   发表时间:2009-06-11  
没人说erlang的执行效率会高过c, 开发效率和天生的分布应该才是优势
0 请登录后投票
   发表时间:2009-06-13  
现在的 软件世界 不是 艺术 是 服务!

服务简单化 实用化 才是 王道!

erlang语法太艺术了!

语言 是为程序员 服务的!

希望能简化!

个人觉得java这样的语言+groovy这样的结合也许是 商业软件走向

其他 语言 自有 自己的 特殊 领域!
0 请登录后投票
   发表时间:2009-06-14  
bachmozart 写道
test_destack() ->
    {<<"a">>, [], []} =
        destack([{<<"a">>, [], []}]),
    {<<"a">>, [], [{<<"b">>, [], []}]} =
        destack([{<<"b">>, [], []}, {<<"a">>, [], []}]),
    {<<"a">>, [], [{<<"b">>, [], [{<<"c">>, [], []}]}]} =
     destack([{<<"c">>, [], []}, {<<"b">>, [], []}, {<<"a">>, [], []}]),
    [{<<"a">>, [], [{<<"b">>, [], [{<<"c">>, [], []}]}]}] =
     destack(<<"b">>,
             [{<<"c">>, [], []}, {<<"b">>, [], []}, {<<"a">>, [], []}]),
    [{<<"b">>, [], [{<<"c">>, [], []}]}, {<<"a">>, [], []}] =
     destack(<<"c">>,
             [{<<"c">>, [], []}, {<<"b">>, [], []},{<<"a">>, [], []}]),
    ok.

类似这样的函数是比较头大

不过相比较相同功能和近似同等性能的一个网络服务器端程序

C要近上万行,而erlang只要几百行,你选哪个,况且象上面的写法也不多见,大部分还是挺清晰的

就算是dirty and quickly 的方式也还不错呀


看不懂说明功力还不够深.那你最精通的来说,你是一上来就能够使用的游刃有余的么?要得到好处,就得付出代价.

我觉得fp中最核心的,或者说最饶人的就是高阶函数传递来,传递去的.容易搞晕.其他还好吧.
0 请登录后投票
   发表时间:2009-06-14  
pipilu 写道
andrew913 写道
我们组的项目核心是用erlang做的,可惜我不会,有空一定要去学学。


用于实现什么功能?

web 服务器监控。


0 请登录后投票
   发表时间:2009-06-14  
dogstar 写道
bachmozart 写道
test_destack() ->
    {<<"a">>, [], []} =
        destack([{<<"a">>, [], []}]),
    {<<"a">>, [], [{<<"b">>, [], []}]} =
        destack([{<<"b">>, [], []}, {<<"a">>, [], []}]),
    {<<"a">>, [], [{<<"b">>, [], [{<<"c">>, [], []}]}]} =
     destack([{<<"c">>, [], []}, {<<"b">>, [], []}, {<<"a">>, [], []}]),
    [{<<"a">>, [], [{<<"b">>, [], [{<<"c">>, [], []}]}]}] =
     destack(<<"b">>,
             [{<<"c">>, [], []}, {<<"b">>, [], []}, {<<"a">>, [], []}]),
    [{<<"b">>, [], [{<<"c">>, [], []}]}, {<<"a">>, [], []}] =
     destack(<<"c">>,
             [{<<"c">>, [], []}, {<<"b">>, [], []},{<<"a">>, [], []}]),
    ok.

类似这样的函数是比较头大

不过相比较相同功能和近似同等性能的一个网络服务器端程序

C要近上万行,而erlang只要几百行,你选哪个,况且象上面的写法也不多见,大部分还是挺清晰的

就算是dirty and quickly 的方式也还不错呀


看不懂说明功力还不够深.那你最精通的来说,你是一上来就能够使用的游刃有余的么?要得到好处,就得付出代价.

我觉得fp中最核心的,或者说最饶人的就是高阶函数传递来,传递去的.容易搞晕.其他还好吧.


不要混淆概念,看不看的懂跟容不容易看懂是两码事。又或者说,fp写出来是不需要被经常维护的,或者被除了开发者的其他人维护的,或者被跟开发者水平差太多的入门人员维护的?
0 请登录后投票
   发表时间:2009-06-15  
我也认为代码写的精妙了,确实不容易看懂.但是我认为这个不是问题.joe也没期待erlang能够成为一种大众化的语言.我想符合大众的语言,我相信是会有的,不急的话,就等吧.
0 请登录后投票
   发表时间:2009-06-15  
大众化的语言已经有很多了,java,python不就是吗

不同的东西定位不同吧

就像java做得足够好的地方是,跨平台,自动内存管理等

但是很多时候通用意味着永远达不到最佳

我的平台就是linux,我就是要用最快的epoll,并且我需要自定义的高效数据结构和最佳的内存管理策略,那么通用的java能达到么

erlang可能在很多场合都不适合,但是在某些场合,确实没有比它更方便的了
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics