Ruby or Javascript? 哪个适合我?

2013-04-08 23:37:03 +08:00
 ewangke
这个问题困扰我小半年了,不是一时心血来潮;虚心向大家请教,请大家结合我的情况和需求给些中肯的建议,为我指明一些方向,不要演变为语言、框架的争论。我知道同一件事情,基本所有的语言都可以做,但毕竟生态、入门难易程度等等方面很不同,这才造成了一些语言在某些领域更流行。

先说说我,我是iOS独立开发者,Objective-C很熟,server端会写些简单的python脚本,懂些web/db的东西但不系统,至少没有流行框架的使用经验。自我感觉最弱的是前端,经验为0。db部分还凑合,至少做些小东西没问题的。(以前做ERP,所以事务、范式这些基本的东西还算挺熟的)

我希望掌握一门语言还有它相关的工具集,实现类似Parse.com那样的服务给自己用(更容易按自己的想法做,而且成本比用他们的低得多)。另外,希望可以做一些简单的响应式的web,可以接触一些HTML5。作为独立开发者,时间比较自由。两年没有学习新语言了,也想通过学习一门新语言扩展一下眼界。基本的Ruby/JS/CoffeeScript都能读得差不多,但没实际经验。希望可以把自己一些零散的东西串联起来。

我喜欢接受新的编程思想,但不太喜欢语法糖。我知道V2EX里面喜欢python的人很多,但也希望有rubyer/jser的建议。

这两个repo可以参考说明我需要的东西:
https://github.com/deployd/deployd
https://github.com/helios-framework/helios

请大家帮帮忙,要喷的轻点^_^
9114 次点击
所在节点    问与答
42 条回复
ewangke
2013-04-08 23:46:54 +08:00
@Livid 可以给些建议么?
xst
2013-04-08 23:47:02 +08:00
很多年前,Js不能用来做很多东西... 从自有了v8有了Node,世界变了...
Ruby 感觉最大的好东东就是 RoR, 偏Web后台的。
Js 可以前后台兼顾。但快速开发没RoR方便。

看你个人喜欢了 :)

不过从现在的PaaS提供商来看,
他们主要乐于提供PHP、Python、JAVA、NodeJS等服务。
ewangke
2013-04-08 23:51:45 +08:00
@xst
嗯你说的这些优缺点,我也了解过。如果要做前端,js是绕不过去的。
但Ruby社区的一些框架更成熟,更傻瓜一点。一直感觉js有些“乱”,node社区进化太快,担心自己跟不上。
像Meteor这种前后端全js一步到位的方案(mongodb),总担心绑得太死,不够灵活。而且对提升自己的理解不利。
Livid
2013-04-08 23:54:24 +08:00
我的建议是:

如果最后项目总体动态页面数会超过 20,那么一定 Python/Ruby,越高级的框架越省力。

如果不超过 20,那就 Node.js 好了。
Livid
2013-04-08 23:59:12 +08:00
V2EX 是用 Python 的 Tornado 框架写的,这是一个来自 Gmail 创始技术团队及前任 Facebook CTO 的作品,也一直处在非常活跃的开发中,最近刚刚出了 3.0 版本。

除了 Tornado 之外,V2EX 还大量用到了 rq。

Tornado + rq,是一个用起来非常开心,也能够很快出作品的组合。

我知道类似的东西在 Ruby 社区也有很多,我只是分享对我来说最好的。
fangzhzh
2013-04-09 00:28:24 +08:00
@Livid Tornado + rq 是什么? google了下,没有搜到rp代表什么.
xst
2013-04-09 00:30:32 +08:00
Livid
2013-04-09 00:30:35 +08:00
fangzhzh
2013-04-09 00:32:16 +08:00
@ewangke 我也面临同样的技术选型的问题. 我是C++服务器开发出身,虽然对C++开发服务端技术很熟,但是已经对C++的超慢开发速度是深恶痛绝了
ewangke
2013-04-09 00:36:38 +08:00
@Livid
似乎对Node.js的不太建议,是因为它(及一些framework)不太成熟么?还是觉得只是重复造轮子?
协程这种东西,python是有的相应的方案的,ruby我不太清楚
Livid
2013-04-09 00:41:03 +08:00
@ewangke 我目前正在做一个用 Node.js 写的项目,但不是 http 协议的,而且交互功能不超过 10 个。

Node.js 的很多 library 提供的功能,都需要嵌套 callback 来完成。我承认自己目前对这种做法还不够熟悉,所以总觉得比较心悬。
ywencn
2013-04-09 00:41:32 +08:00
一起学不就是了。。你还有时间困扰你半年啊,半年ruby都入门了。。
Livid
2013-04-09 00:41:37 +08:00
但是如果是一个本来打算用 gevent 写的程序,那么改成 node.js 还是很适合的。
ewangke
2013-04-09 00:42:31 +08:00
@Livid
感觉tornado的文档比较好,但教程不是很多,学习曲线有些陡,还是我有些外行?感觉Flask的教程更多一些。。。我看过Flask一部分文档,但当时的需要是做简单的Restful API,还是稍微复杂了些。最后用的bottle.py

@fangzhzh C++确实强大,但现在人力成本越来越高,多数时间里开发效率比运行效率更重要。而且系统的瓶颈往往只存在那极少的部分中。脚本语言比较灵活,而且容易做成插件,我接触到的一些游戏引擎里都有一定程度的脚本支持。
Livid
2013-04-09 00:45:16 +08:00
@ewangke Tornado 提供了一个基础的 requestHandler,你可以在其上继承改写为自己整个项目的 BaseHandler,然后再根据最终的页面类型,继承为 WebHandler,APIHandler,然后你可以在这个过程中自己重新定义很多东西:

- 如何验证用户
- 需要添加 / 删除哪些头部

这样的架构对于有一定规模的网站是非常方便的。
fangzhzh
2013-04-09 00:45:42 +08:00
ror 学过一点, python写过一点, tornado没玩过, gevent没玩过, Node.js没玩过. 严重关注此贴最后的讨论结果!
ewangke
2013-04-09 00:45:51 +08:00
@ywencn
我维护着50多个iOS app,还在做新产品,还要带小孩。。。另外语言基本已经入门了。熟练掌握一两门语言的开发者,语言关入门一般不会超过3天吧,至少对我是这样。
请教大家是希望少走一些弯路。虽然我对技术感兴趣,但我更希望把时间花在产品上,而不是尝百草然后比较各种技术的优势。
ewangke
2013-04-09 00:49:06 +08:00
@Livid 嗯我明白你说的意思。但我毕竟有些外行,所以希望先学习些抽象层次更高的东西;另外有没有基于tornado的一些解决具体特定应用场景的开源项目,我去学习学习
lldong
2013-04-09 00:59:01 +08:00
Objective-C熟练的话Ruby的很多概念很好理解
ewangke
2013-04-09 01:03:18 +08:00
@lldong
推荐一个入门框架吧?Sinatra还是RoR? 最近看了一些博客都在批评RoR太笨重太magical了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/65317

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX