资讯领域巨头大力推荐的网络计算编程工具在此!
2013-04-22 10:00 程序 数据 网络编程

2013 年3 月,在纽约所举办的Structure : Data :: Guru Paneled 专家座谈会议上,请来目前产业界的领导厂商,畅谈他们在实务上所遭遇到的问题,以及对资讯科学未来发展趋势的看法。本篇文章中提及几个在座谈会议上备受关注的程序语言,提供给已经在写程序、想要学习写程序,以及对此议题有兴趣的读者参考。

程序开发人员总是著迷于最新与可能产生典范移转的技术与工具。无论是程序语言、编译器/直译器,以及平台的发展,都期望它们好还要更好,而且,不只是要能应用,最好还能自己开发出Killer Application(杀手应用)的产品或服务。

然而,程序开发的工具总是随着消费者的喜好与创新技术的演变,导致受欢迎的情况总是上上下下。例如,这星期的调查结果可能是Scala 位居畅销排行榜榜首位置,下星期就异主为Go 语言成为榜首。

MapReduce 软体架构与Sawzall 语言用来处理大数据处理

为了解决大数据(Big Data)资料处理问题,Google 提出了MapReduce 软体架构,将资料处理过程分成两个可以并行化处理的阶段:Map 和Reduce。

Map 是把大资料拆成有规律的小资料(规律,是指把资料以key-value 格式备用);而Reduce 是汇整,也就是汇整统计所有相同的key 出现的次数。但是,使用MapReduce 撰写程序不同于过去的方式,因为资料来源多且复杂,使得重复性的基本操作普遍存在,为了避免这些问题,Google 提出了Sawzall 语言。

Sawzall 属于脚本语言(Script Language),主要用于对大规模分散式资料进行处理。另一个常被拿来与其比较的是Yahoo 所推出的Pig 语言。

Quantcast 的总监Silvius Rus 赞扬Sawzall,是宣告式语言(Declarative Language)与程序性语言(Procedural languages??)之间的桥梁。

Metamarkets 的CEOMichael Driscoll 是会议的主持人,接着解释为什么Silvius Rus 所言是重要的。他提出,宣告式语言(Declarative Language),是由一群宣告所组成。宣告是一种符号逻辑,是一些推理的事实或规则,而不是指定叙述或控制流程,主要目的是推论(Inference),属于人工智能的高阶语言。程序设计师只要描述“做什么(What to do)”,而不需要告诉电脑要“怎么做(How to do)”。

程序性语言(Procedural languages??),是由一连串顺序性的叙述所组成,主要概念是透过指定运算改变变数的状态以完成所要执行的工作。由于程序设计师必须用叙述描述问题的解决步骤,所以,听起来很像在做数学题目。

Sawzall 在宣告式语言(Declarative Language)与程序性语言(Procedural languages??)之间做了很好的调适,它是一个功能很好,且具有影响力的程序语言,而且它在MapReduce 平台上运行的很顺畅。

Kafka 和Storm 是信息处理利器

Kafka 是一个用于截取与管理资料流(Data Stream)的即时框架(Real-Time Framework),也就是信息发布与订阅的分散式管理系统。像Twitter 和Square 就是用Kafka 来做日志档的管理,以便即时监控与处理事件的发生。

Storm 则是用于处理这些信息资料流的框架,它与Kafka 之间的关系,就像是Hadoop 分散式系统与MapReduce 之间的关系,也就是Kafka 用来储存信息,Storm 则用来处理这些信息,但是,Kafka 和Storm 的速度即时多了。”

Clojure 是应用在JVM 上的程序语言

Clojure 是一种函数式语言(Functional Language),是由函数呼叫指令所形成的运算式所组成。Clojure 语言是Lisp 语言家族中的成员,而Lisp 语言最早是在20 世纪50 年代末,由麻省理工学院(MIT)为了研究人工智能而开发的。Clojure 和其他Lisp 家族语言的不同是,它可以执行在JVM(Java Virtual Machine,用来执行Java bytecode 的虚拟机器)上,因此可以直接使用Java 函式库。

Via ? ?techorange