技术开发 频道

2014年盘点四大热门语言的非常好的实践

  R语言

  统计分析最强,没有之一

  对于R语言来说一直在小众领域成长着,早年主要用来做统计计算。随着时代的进步,在如今大数据爆发的年代,R终于在这一波浪潮中,越来越多的工程加入到这个圈子里来,对R计算引擎,R的性能,R的各种程序包进行改进和升级,让R获得了新生。不但可以给Hadoop注入统计的血脉,连Oracle都扩大对R语言的分析支持。

  在知乎上chenkai的用户就针对R语言统计分析进行了很好的解释:

  R语言主要是用于统计分析、绘图的语言。其实对于一直以商业为驱动,原则金融行业来说从来都不缺乏实用的工具,而且据我了解有专门公司在这方面产品,也是相当之成熟。所以我的看法是对于那些固定常见的业务并不缺乏实用成熟的工具,因为市场就是一抓一大把。

  就我的理解而言R这门也可以用来探索 分析现有数据并高效的成图,让大数据图形化,用于统计计算和统计制图。 但前提是如果已经其他软件做了这件事 为何还要自己手动Coding呢? 所以是对于常规业务是不需要 因为有软件做了况且做的还很好,如果你是精算师 或是 某个特定市场前景根据数据分析预测,这个时候可能就需要R语言的帮助了,而使用好R必然有两个前提。

  A: R语言分析需要有数据来源?

  B: 如何快速熟练使用好R?

  所以综上,

  观点很简单对于常规业务真的没有必要大材小用。常规的软件已经足够好用,如果你有足够的时间学习Coding,也觉得通过自己编写数据模型分析预测 自己假设。这确实是一件很Cool的事情,但使用前提是需要解决我上面提到两个问题,如果你想做的很好还需要你相当的耐心学好R自身。

  其实R语言实际意义是规避了像那些商业软件内部代码不公开一样,运算和分析规则只有内部人知道,而普通用户和分析师不知情。而R的目的则是在有数据的前提下可以自由的计算任何想计算的统计量或图形,其实它也避免了固定的商业分析中存在一些问题,无法得到取截尾均值作为统计向量,能够很好规避统计分析方法不清的问题。

  Node.js

  网站前后端开发

  Node.js经过了几年的发展已经日趋成熟。在如今很多大型的高流量网站基本都采用了Node.js开发,像cnodejs的社区,雪球网,PayPal等。在知乎上 杨捷就详细的解读了Node.js在Web开发的一些场景应用。

  首先,node新开一个http连接的开销,相当于一个大函数调用,相比php的新开线程动辄花费2MB内存和上下文切换的漫长时间,已经很小很小了。所以,node天生就是为高并发的应用而诞生,在设计之初就承载着巨大的使命。而这种极度追求代码效率和美感的设计,是以提升学习理解的难度,和考验编程能力为代价。如果你像我一样,有代码洁癖,追求极致,那么node将是不二选择。如果你仅仅是为了完成工作,或者快速搭建项目上线运营,那么还是用php或其它什么看似方便却一点也不“美”的语言吧。

  再者,由于js的异步特征,始终有用户代码在执行,省去了等待查询数据库和文件系统的时间,相比CPU的时钟频率,去读一次数据库太久太久,久到让CPU等得花儿都谢了。node让CPU不在等待,node让妈妈不用担心我的内存。但是这种高效运用CPU的异步回调,将会带来逻辑上的混乱,一不小心就会一团乱麻理都理不清,下文有叙。

  以上两点,导致node适合在具有大量细小的http请求环境下工作,典型的就是一个web即时聊天程序,或者一个支撑上万人同时在线的游戏服务器。你甚至不用考虑http请求数太多的问题。

  如果用node开发网站,你可以把数据请求分的很细,也就是说不必像php那样把所有数据一次性加载到客户端,而是加载一部分,让浏览器渲染页面的同时,再去加载另一部分。Facebook的页面优化技术,就是这种分块加载的模式。可以让页面的加载速度在用户体验上提升5到10倍。

  node无论从代码执行速度,还是开销,都是最完美的选择。但是缺点在于js异步特征的难以理解和控制,如果没有相当过硬的js开发经验和特征理解,项目稍微大一点,代码结构就会一片混乱。node是在考验一个人的代码设计和掌控能力,如同九阴真经,练的好就一身绝学独霸武林,练的不好就走火入魔精神崩溃。动不动就长达8层的回调嵌套,可不是闹着玩的。除了采用step同步方案解决控制流倒置和深层回调嵌套问题,把数据请求分得很细,再分多次加载,不仅在代码流程上更美观,也更符合node的特性。

  有人说,异步代码是反人类的。其实同步执行才是反人类。想象一下,你需要打印一叠材料:打印机开始工作后,你站在那里等着,5分钟后打印完毕,你取走材料回到办公室。这似乎没什么。但是如果有100份需要打印?10000份呢?你也站在那里干等着?还是趁这个时间喝杯咖啡,或者多写几个if else 吧。

    更多精彩内容欢迎关注:IT168 CIO俱乐部公共账号

R语言与Node.js

0
相关文章