Web应用框架:C++与Python
我对Python和C++这两种编程语言都很熟悉。最近我想写一个简单的网页应用,想知道哪种语言更适合用来做服务器端的网页开发。
我在寻找一些东西:
- 要直观易懂。我知道有Wt这个框架,它的设计跟Qt类似。但我最讨厌Qt的一点就是它用一些奇怪的语法让代码变得难以理解(比如“public slots:”这种写法)。如果我要写C++,我希望它是标准的、容易识别的、干净的代码。不要Qt那种花里胡哨的东西。
- 我希望写的非C++或Python的代码越少越好。Django(一个Python的网页框架)让我觉得有点麻烦,因为它几乎需要我手动写HTML。我觉得如果HTML表单能像wxWidgets那样处理就好了。Wt虽然也接近这个,但它还是遵循Qt的模式,而不是wxWidgets。
我通常用C++写视频游戏,但在网页开发方面没有经验。我想做一个不错的网站,原因有很多。我希望这是一个学习的过程,想要享受其中的乐趣,同时也希望能更专注于“有趣的部分”(比如减少一些重复的代码,更多关注应用的核心功能)。
对于一个新手网页开发者,有什么建议吗?我觉得网页应用框架是个不错的选择,但关键是要选一个合适的。
7 个回答
8
- Django是一个很好的开始学习网页开发的框架,非常不错。
- 如果你想学C++,可以看看CppCMS,它和Django更相似,而不是像Wt那样模仿Qt。
总的来说,这真的要看你的需求。C++可以用来开发嵌入式系统或高性能的网页应用,但如果是中等规模的网站,Django会更合适。(顺便说一下,我是CppCMS的开发者)
12
我推荐使用Wt,原因如下:
- 你已经会C++了
- 它有一个很不错的布局系统,所以你不需要了解很多HTML
- 代码写起来非常顺畅,感觉很好
- 你部署的应用能在更少的硬件上处理比Python应用多50倍的负载(根据我对pylons应用的经验,能处理比plone应用多10,000倍的负载 :P)
- 它有所有第一问题中提到的库,还有更多
- Web 2.0不是事后想出来的;它不是像所有Python框架那样基于请求+响应模型设计的,而是基于事件驱动的交互模型。
- 如果可用,它会使用WebSockets
- 如果没有,它会优雅地回退到普通的ajax
- 对于像linx这样的浏览器,它会回退到http
- 它更像是在编写一个图形界面应用,而不是一个网页应用,这可能是你比较熟悉的
- 它是静态类型的,因此出错的可能性更小。比如
def delete(id):
这个函数需要一个整数还是字符串? - 我的应用的单元测试(至少在我这儿)运行时间比Python应用的单元测试少10到100倍(包括编译时间)
- 它有一个强大而友好的社区。我在邮件列表上的所有帖子都能在0到3天内得到回复。
9
如果你想避免写HTML代码,可以试试GWT。不过根据我的经验,使用一个中间框架来生成HTML和ECMAScript,效果远不如自己手动写页面。
[编辑] nikow在评论中提到Pyjamas是GWT在Python上的移植版本。
关于编程语言,如果让我在C++和Python之间选择,我会100%选择Python。即使不考虑这两种语言在抽象层次上的明显差异,Python的实用库也比C++多得多。你不需要自己写一个开发用的网页服务器——Django自带一个。你也不需要写一个自定义的模板库——Python有Genshi。Django还自带一个强大的ORM层,想要更多控制的话,你可以使用SQLAlchemy。这根本就不是一个竞争。