创业项目该如何选择技术?(2)

发表于:2013-10-31来源:Sina App Engine Blog作者:sharon点击数: 标签:创业
我们仍然有许多的原因在你的创业项目里使用Java技术,但你可能会想同时使用一些的更快,更灵活的解决方案(Ruby, Python, Node)。对于公司跟工程师来说,一

  我们仍然有许多的原因在你的创业项目里使用Java技术,但你可能会想同时使用一些的”更快,更灵活“的解决方案(Ruby, Python, Node…)。对于公司跟工程师来说,一个多语言环境带来了大量的价值,这就是为什么Java社区看起来节奏很慢,但却肯定是活跃的。

  Java绝大部分是吸引了那些受到了传统的训练的工程师,他们向往舒适,有重复性,总所周知的编程模式。他们习惯关于使用这种语言,这种工具,这种自然的节奏。或许他们并不是最具有求知欲的开发者,但是他们却是很可靠的(当然,你要挑选了正确的人)。

  C#/.NET

  理念:

  是更加好的Java

  最初是为了桌面与嵌入式软件设计的

  我们比开发Java的小伙伴们拥有更好的IDE

  虽然是企业级般的重量了,但是我们提供了大部分Rails很酷的特性

  我们有矛盾的开源版本

  缓慢但更为安全的开发流程

  个人观点:

  当我回顾C#在发布C#5的时候,我不得不惊叹,我真的对该语言新的特性留下了深刻的印象。单从纯粹的语言设计角度来看,C#是有一丁点的领先于Java。在Visual Studio里写Javascript时的欣悦感让我感到很惊喜(自从我用VS主要为了C++后,我真的再也没有期待过什么了)。

  另一件让我印象很深的是:C#可利用的文档的质量非常显著!但是C#并不是开源的,和Visual Studio + MSDN 非常昂贵,并且整个环境都因为licenses跟内存损耗而变得很糟糕,这些事实多少让这个好印象打折扣了。

  微软正在慢慢地往开源发展,所以有了更多像Azure的开源方案。但是作为一个社区,.NET仍然是微软开发的中心。作为创业者,你应该考虑下你对开源与拥有企业支持的文化之间对比的看法。

  C#大部分吸引了Java群体中的变向者:这些工程师们寻求稳定性和有保障的合同远胜于追求开源。还有他们可以容忍IIS!

  明确的可替代品

  在过去的这些年,有两个动态语言对于新的创业项目来说变得十分受宠:Python and Ruby。这两个语言实际上有非常多相似的地方。现在Python因为后台apps而著名(因为NLP, biotech, APIs, SOA的因素 )而另一方方面,Ruby因为面向用户的apps而著名。尽管这两个语言都受到了一样的限制(主要是性能跟并发性),但是他们的核心价值和社区有着不一样的专注点。

  Python

  理念:

  只有一种显而易见的做事方法

  代码要漂亮简洁和明确

  文档是关键

  有较强的语言设计引导

  个人观点:

  作为一个更喜欢ruby的人来说,我常常嫉妒python项目文档的质量。同时python设计的初衷——给你一个正确的编程方式却又让我又爱又恨。通常这一初衷对于团队来说很好,但某些时候可能令人抓狂。

  在某些领域python有很多优秀的库,并且这些库和你想解决的问题有关,这种情况下python可能是最好的选择。python开发者知道怎样去讨论交流他们的代码。他们用文档记录所做的事情并且用面向过程来描述他们务实的方法。

  但是python在互联网流行前就已经存在,如果你关注的是并发和高吞吐量,那么这个并发性很差的动态解释语言可能不是一个很好的选择。

  python主要吸引的是那些想要一个现代但通过充分验证的语言的更加务实和经验丰富的全栈开发者。

  Ruby/Ruby on Rails

  理念:

  为人而不是机器而设计的Designed for humans, not machines

  极端的灵活性:如果陷入困境的话,是你的原因,那是你

  一切力求简单、优雅并充满乐趣

  DSL至上,尽DSL

  测试非常重要

  事情变化很快,保持学习

  激情活力的社区

  个人意见:

  就我而言,Ruby是我几年来的首选语言。你会发现令人难以置信的、大量的Ruby开源代码。Rails实在是一个了不起的Web框架,如果你知道如何使用工具的话它让使大多数的Web项目容易实现。

  但灵活性和过快的开发周期也有缺点。随时准备在你的代码上投入大量时间以保持其更新以及分离废弃老的库。如果不能依靠缓存,一个成功应用的吞吐量往往被缺乏良好的并发支持限制。

  Ruby开发者主要是用Rails开发,所以与框架特性相比基本不会去深入核心语言本身的特性。他们往往是充满好奇心且机会主义的(以一个很好的方式),有些实用主义,关心代码质量/结构和测试覆盖率。Rails开发者早期采用它的典型原因是由于该框架本身默认使用的一些新技术(coffeescript、turbolinks、CSS预处理器……)。

  Ruby和Rails主要吸引了那些想把事情做得快而优雅的开发者。相比于底层计算细节,这些开发者往往是以产品导向的,他们更关心的目的和客户价值的实现。

  新成员

  这是些让人们兴奋的语言/技术。他们代表了运行在“云端”的编程语言的设计新浪潮。

  Node.js (Javascript)

  Node.js不是一门编程语言,但它是使JS在服务器端运行最流行的方法。和我对Ruby的大部分评论是关于Rails一样,相比JS我更关注Node。

  理念:

  为实时驱动的应用程序而设计,高吞吐量、低延迟

  DIY

  小的内核,剩余的内容由社区维护

  低耦合

  借鉴Ruby/Python

  个人意见:

  我觉得Node.js很有趣。在技术上Node没有太多新内容。Python有Tornado/Twisted,Ruby有EventMachine,C有 libevent。

  事件驱动的框架已经使用了一段时间,但Node具有两大优势:*大多数JS库是非阻塞*大多数Web开发者不管怎样都要写一些JS。

  在前端和后端使用相同编程语言的想法吸引了不少人,但值得与否还有待验证。

  Node提供了巨大的吞吐量(只要你坚持IO操作),它很容易上手,而且写起来很有趣。

  由于其本身具有事件驱动性,调试及测试面临挑战,回调处理是可维护性的地狱。我希望Node能够提供一种官方的今后或承诺的解决方案。略显凌乱的文档使在现有项目里跳转时有些困难。

原文转自:http://blog.sae.sina.com.cn/archives/651?qq-pf-to=pcqq.c2c