2014 New Year’s First Blog
新年开篇博客,依旧是流水账。
读到一篇强文,《关于两个世界体系的对话》。common practice 往往是针对某种语言或者特定技术为背景,然而,很多时候,common practice 都具有其相似性,所谓一通百通(俺可没到这境界);诸如 pythonic 之类的说法,很多时候不过是语法糖;一方面是 control-flow-based 或者 object-oriented 设计思路的成熟与大同小异(当然,很多时候精妙的设计还是会让人眼前一亮),另一方面是 computer architecture 的长期相对稳定。但如果 computer architecture 发生了天翻地覆的变化会怎样,会带来哪些改变,能解决哪些问题(practical or just-for-fun)?很有趣的问题不是吗?
此文里,就提到了一种 data-flow architecture,见 wikipedia 摘要:
Although no commercially successful general-purpose computer hardware has used a dataflow architecture, it has been successfully implemented in specialized hardware such as in digital signal processing, network routing, graphics processing, telemetry, and more recently in data warehousing. It is also very relevant in many software architectures today including database engine designs and parallel computing frameworks.
根据这篇文章的说法(没细究,目前仅仅是不明觉厉):Haskell 是一种 dataflow machine,通过 continuation monad 和 lazy evaluation 将 event-driven 的条件触发代码段,组合成类似于线程的顺序语义。
既然如此,是否能够用 specialized hardware 完成类似 Haskell 试图构建的东东?简单搜索,就发现有前辈已经做了相关的工作,Reduceron 就试图通过 FPGA 实现 Haskell machine(原始论文,Github repo):
FPGA Haskell machine with game changing performance. Reduceron is Matthew Naylor, Colin Runciman and Jason Reich's high performance FPGA softcore for running lazy functional programs, including hardware garbage collection. Reduceron has been implemented on various FPGAs with clock frequency ranging from 60 to 150 MHz depending on the FPGA.
Reduceron 项目里,有一个 York Lava 子项目(memo 链接,从 memo 里可以看到,这并非他们的原创,而是相似于 Chalmers Lava(坐落于瑞典第二大城市哥德堡的 Chalmers 大学的 Lava 项目,原始论文,团队核心成员的 project intro),试图用 Haskell 的一个子集,来做为硬件描述语言(类似 Verilog HDL)。是不是很酷?
顺便看了同一个作者的一篇《Erlang 编程方法论:错误处理,单元隔离,语句优先级,并发模型,调用机制,分布式,状态管理》。观点很犀利。与犀利断言对照阅读:Quora 上关于 Erlang vs Haskell 的一篇问答,同样值得一读。
除了研究价值和「放眼未来」的体验,Erlang 和 Haskell 真的有在被实际使用么?关于 Haskell 的实际使用,找到一家名为 Silk 的公司,使用 Haskell 做后端(Haskell 相对于 Erlang 而言,目标更着眼于 general purpose programming language,但是对 web programming 而言,用 Haskell 做除了后端以外的事情,还是觉得怪怪的),工程博客上一篇《Why we use Haskell》;Erlang 则在国内都被广泛使用着(看云风在 2011 年的一篇开发笔记就可略知一二,他希望用 ZeroMQ 实现进程间消息传递,另一个核心成员则决定用 Erlang 语言级别的消息传递机制 + C/Python driver 的方式来做)。
再说另一件事。前阵子还发现一家公司,杭州瑞瀛科技(Rexense),抛开拗口的中英文名称不谈,这公司很值得研究。其他细节不表,感兴趣的欢迎围观。
最后,新年伊始,免不了略显俗套的新年决(愿)心(望)。不过这东西和愿望差不多,太直白的说出来就不太好了。贴一张网上看到的搞笑新年决心,此君之鉴,做为反面案例,与诸位共勉。
posted on 2014-01-04 18:36 mirrorwheel 阅读(253) 评论(0) 编辑 收藏 举报