分享

值得尝试的七大前沿性编程实验(2)

 笑尽英雄啊 2013-10-09

前沿实验第四位:利用R语言进行数据处理

从简洁Web设计到更为复杂的大数据分析,R语言已经成为目前大部分热门新工具的开发核心——这些成果往往被用于通过数据解决问题或者掌握客户情况。在众多成果工具集的支持下,R不仅是一种能够为通用统计公式提供预定义功能的语言,更是一种思考问题并找寻解决方案的全新方式。

举例来说,大数据分析软件包中的统计模型能够识别并标记复杂的模式并充分发挥现代计算机集群所提供的全部性能资源。统计模型取代了原本只能排序或者寻找最大值的简陋机制。与前沿统计软件协作意味着大家能够实现深层次分析,并在旧有代码无能为力的状况下找到有价值的蛛丝马迹。

这些新型视角的出现帮助企业节约了数十亿美元的常规支出。他们帮助店铺确定所在地域的口味喜好,根据人们的审美习惯以颜色、图案、大小等标准安排货架摆放方式。它们汇总出的结论帮助营销人员精准确定广告投放量。总之,只要有数据的地方,我们就有机会从中找到有利于自身的发展机遇。

作为开源项目,R语言专注于通过培养机制建立核心用户群体。很多开发人员会以R Studio等更为完整的IDE作为起点,因为这些IDE捆绑有编辑器以及具备执行引擎的输出窗口。在生产堆栈领域,R Studio IDE已经成为最理想的开发机制。

不过像R语言这样的统计工具也有缺陷,其结果并非永远直观,实验所获得的效用也常常不够明显。这是因为尽管思路足够前卫,但其执行流程还不够科学。大数据分析是一套极为出色的理论,甚至堪称伟大的灵感,但几乎没人能准确说出这项技术到底有多出色——特别是在背景条件的影响之下。统计分析真能帮助大家改善自己的产品吗?收集到的数据能否带来理想的精确度以指导工作?没人说得清,但如果能花上几个月组织实验,大家没准会得到自己的结论。

考虑到R语言等统计工具令人激动的特性,我们不禁急于利用它对磁盘阵列中保存的数据进行一番全面分析。也许大家运气很好,巨大的机遇正在磁盘中静静等着你来发现。不过很多技术人员已经发现,单靠大数据分析机制还不足以彻底实现“去其糟粕、取其精华”的目标,人力的介入不可避免。单靠分析结果中那一串串数字只会让人找不着北。

前沿实验第五位:体验NoSQL的极致速度

让我们面对现实:我们程序员其实是个相当懒散的群体。我们不愿意从零开始创建项目——除非不得不做。新工具的出现往往是由于对新型功能的强烈需求。有时候情况甚至更为严重。

获得这些新功能的惟一途径就是接受新型工具。许多新型NoSQL数据库能够毫不费力地迁移到云环境当中。弄一堆设备,在它们之间顺利运作,这正是技术人员的专长与构建基础设施的出发点。总之,如果没必要,IT部门根本不会有热情引进新机制。

目前可供选择的NoSQL数据库可谓层出不穷,其中大部分项目在功能方面存在广泛交集。对这些交集进行一一列举并详加解释是项巨大的工程,受篇幅所限,我在这里就不再赘述了。总之,目前比较热门的工具有Cassandra、MongoDB、CouchDB以及Riak。某些企业还会提供工具即服务方案。MongoLab以及MongHQ就是两套利用MongoDB实现数据存储的方案,只要版本版本相近即可实现兼容。

以闪电般的速度以及灵活的扩展性实现响应非常重要,为了充分享受新工具在这两方面带来的提升,大家值得对手中的全部现有代码进行重写。不过此类前沿方案的核心吸引力还在于,我们找不出它们在发展过程中误入歧途的端倪。通常情况下,技术方案往往存在阴暗面,我们需要通过艰辛的探索——甚至错误——才能全面地对其加以认识。

NoSQL数据库也面临着同样的问题。它的速度确实够快,但这主要是因为它并不提供任何坚实的一致性承诺。这类数据库项目单纯接纳大量数据并在确定全部数据都已经写入磁盘之前就显示“全部完成”信息。对于社交网站这类内容不太重要的企业来说,个人用户状态信息的丢失不至于惹出什么大麻烦,但其它企业的心态可就没这么轻松了。

寻找合适的区域,确保其中不涉及任何关键性数据,接下来就可以放心大胆地鼓捣这些键-值数据存储方案了。

前沿实验第六位:利用图形数据库寻找连接

数据库概念确立于上个世纪。简单来说,我们首先定义包含着特定数据列的列表,然后向其中插入行,全部填满后就形成了一套数据库。数列中可以包含整数、十进制数字或者字符串,传统数据库的灵活性也就仅限于此了。

但Neo4j等图形数据库的出现给数据库概念引入了新思路。我们仍然可以在数列中添加数字及字母,但现在大家还可以在不同单元行之间创建指针以形成网络结构。如果存储的内容是社区网络,那么数据库就能够记录下每位用户以及与之相关的好友。

在规则数据库中,我们一直可以为每个单元行赋予一个键,并将所有指针以键的形式保存在同一个列当中。图形数据库的强大实力体现在用户运行查询之时。图形数据库能够对网络进行解压,并利用经过精密调整的搜索算法组织网络查询。它不需要像关系数据库那样处理复杂的链接与加入关系。如果大家希望查询某位用户的朋友的朋友的朋友一共有多少位,查询引擎能够直接给出结果。如果大家希望测试两位用户之间需要经过多少次朋友关系跳转才能彼此联系,引擎则需要搜索网络并找出答案。

Neo4J由Neo技术公司所打造,提供三种版本并遵循多种许可模式。社区版以GPL 3.0许可为基础并提供所有搜索能力。高级版及企业版则增加了多种工具,用于监控数据吞吐量、实现集群同步并对数据库进行备份。二者都遵循针对实验及开源项目的Affero GPL许可,能够支持且无需公开大家自己的代码。

在功能集方面,我们同样需要做出取舍。图形数据库与其它数据库家族成员相比,在开发水平及调整精度上有所欠缺。它们在图形算法领域可算当之无愧的专家,但在传统功能方面则既不够渊、也不够博。选择图形数据库就意味着放弃其它功能取向。

前沿实验第七位:利用Go简化结构

多年以来,各类编程语言就像雨后春笋一般争相涌现。由于每个人都希望把自己喜爱的功能及思路添加进来,因此很多原本单纯的想法最终变成了一大坨重量级负担。现在是时候创建一套崭新而又经过修剪的王牌语言了。

Go就是这样一款由谷歌公司的众多技术专家创建出的语言。其语法机制对于熟悉C及Java的程序员来说并不陌生,而且其本身难度也绝对亲民。我们不仅可以通过定义类型对代码进行编译,甚至还能在代码运行过程中对其加以修改。无用存储单元收集程序负责所有内存分配任务。Go还提供一套轻量级机制用于组织并发方法,这样大家就能轻松编写出支持并行运行的代码了。

谷歌以自由度极高的开源许可为基础,为Unix、Linux、Mac OS X以及Windows等系统平台提供了编译器与运行堆栈。目前已经有多家企业开始以实验方式测试Go语言,而谷歌也表示尝试将其代码引入某些生产环境。大家可以访问tour.golang.org网站以交互方式了解这款新语言。

Go这样的语言最适合帮助企业用户在重新组织或者设计办公环境时清理原有负担。对结构加以精简能够简化员工之间的协作难度,因为大家的沟通将变得更顺畅、也能够更轻松地向预定目标共同努力。Go的支持者们对其特性大加赞美,认为它能够帮助自己与他人协作开发出简洁而极具功能性的产品。简洁性将协作过程中经常出现的沟通与同步障碍一扫而空,这也正是Go语言的核心价值所在。

原文链接:http://www./d/application-development/7-cutting-edge-programming-experiments-worth-trying-226648?page=0,0


【编辑推荐】

【责任编辑:chensf TEL:(010)68476606】

内容导航
 第 1 页:1-3位  第 2 页:4-7位

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多