Python vs Ruby: 谁是最好的 web 开发语言?
Python 和 Ruby 都是目前用来开发 websites、web-based apps 和 web services 的流行编程语言之一。
这两种语言在许多方面有相似之处。它们都是高级的面向对象的编程语言,都是交互式脚本语言、都提供标准库且支持持久化。但是,Python 和 Ruby 的解决方法却千差万别,因为它们的发展历程导致它们的语法和原理都大不相同。
那么要采用哪种语言来进行编程就需要好好考虑了,因为每种语言都是自己的优点和缺点。而且这些优缺点都会影响我们的决定。
基础知识
Python 最初是作为科学领域的原型设计语言的,因为它可以很容易转换成 C++ 语言。Python 发展很久之后才被第一次用于网站开发。而 Ruby 之所以流行就是因为网站开发,继承自 Ruby 的 Rails 框架被开发人员用来设计复杂的网站。
哪种编程语言更适合你的需要?下面对于每种语言都做一个概述来帮助你选择:
方法:最好的方法 VS 以人为本的语言
Python
Python 作为一种直接面向对象的编程语言。它主要的目的是对程序员来说所有的事情都是很明显的。在 Python 语言中做某件事情的时候,只有一种‘最好’的办法。这种原理导致 python 语言的代码规范很严格。
Python 的核心理念主要包括三条关键的分层原则:
显示优于隐式;
简单优于复杂;
复杂优于超复杂;
这种严格的原理导致 Python 语言是一种易读且易学——这也就是为什么一部分码农说 python 语言是伟大的语言。对于,入门级的编程语言 Python 有很大优势。它的语法简单,几乎不需要去记。因为它的代码结构很明朗,开发者很容易知道一切从哪里来,也很容易去调试。
Python 代码的层次结构是很明显的一个特点。不同于其他编程语言,包括 Ruby,Python 语言使用空格进行流程控制。代码的缩进决定了它执行的意义。使用空格是 Python “显示”原理的一个很典型的例子,一个 Python 代码的形状决定了它的逻辑结构和执行顺序。
Ruby
不同于 python ,Ruby 是“以人为本”的语言,是按照开发者认为的方式来运行的,它的代码读起来更像是口语化的语言(像开发者)而不是像其他语言一样类似于一种机器语言。Ruby 遵循“最小惊动”原则,提供很多作相似事情的方法。这些相似的方法有多个名称,使得很多开发者感到困惑和沮丧。
不同于 Python,Ruby 语言使用了“模块”,一级对象在程序中被当做一个单元。事实上,Ruby 是一种面向对象编程的语言。一切皆为对象——甚至全局变量事实上都是对象空间中的对象。类和模块本身就是对象,函数和运算符都是方法的对象。这种方式使得 Ruby 尤其强大,尤其是当结合其他主要力量:函数式编程和 lambdas 表达式的使用。
除了模块和函数式编程,Ruby 为编程者提供了许多特性包括分片、哈希、不哈希类型以及可变字符串类型。
Ruby 的追从者认为它优雅的编码方式是它最好的特点。同时,Ruby 的“神奇”的功能和灵活性使得它很难追踪 bug。
社区: 稳定与创新
尽管特性和编程哲学是选择一个语言的首要驱动因素,但是社区开发者的力量仍然会扮演一个重要的角色。幸运地是,Python 和 Ruby 都为自己有强大的社区而自豪。
Python
Python 的社区已经包含一个巨大的 Linux 社区和学术社区,因此它能提供很多学术(数学和自然科学)上使用的案例。这种支持不仅给社区带来了稳定,还带来了多样性,这就导致了 Python 的增长不仅限于在 web 开发上。
Ruby
然而,Ruby 的社区从一开始主要就聚焦在 web 开发上。它在创新上往往比 Python 社区更快,但是这种创新也引起了更多的破坏。另外,它在多样性上,还没有达到 Python 的水平。
总结
对于 Web 开发,Ruby 有 Rails ,Python 有 Django 。 两者都是强大的框架,所以当谈到 Web 开发时,你使用任何一种语言都不会出错。你的决定最终将归结于你的经验水平和偏好。
如果打算专注于构建 Web 应用程序,Ruby 是流行和灵活的,拥有一个建立在它之上的非常强大的社区,始终处于研发的最前沿。
如果你对构建 Web 应用程序有兴趣,并希望学习更加通用的语言,请尝试 Python 。 你会得到一个多元化的社区,并从其所应用的各个行业中感悟到很多,并得到很多支持。
Python vs Ruby: 谁是最好的 web 开发语言?的更多相关文章
- Perl,Python,Ruby,Javascript 四种脚本语言比较
Perl 为了选择一个合适的脚本语言学习,今天查了不少有关Perl,Python,Ruby,Javascript的东西,可是发现各大阵营的人都在吹捧自己喜欢的语言,不过最没有争议的应该是Javascr ...
- Java在Web开发语言上败给了PHP
PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...
- Java在Web开发语言上败给了PHP(转)
PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...
- PHP和Java的主要区别有哪些?哪个最适合Web开发语言?
一.前言 PHP和Java都是现在比较流行的二种编程语言. 对于许多新手来说,都会思考如果学的时候,该学哪种语言呢?下面这篇文章给大家整理两者的区别以及一些选择建议,一起来看看吧. 二.简介 PHP与 ...
- 为什么说Python 是大数据全栈式开发语言
欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...
- Python笔记(八):web开发
#本文是在Windows环境下,Unix系统应该还要设置2个东西 (一) 采用MVC设计web应用 遵循 模型-视图-控制器(model-view-controlle) 模型:存储web应用 ...
- Flask —— 使用Python和OpenShift进行即时Web开发
最近Packtpub找到了我,让我给他们新出版的关于Flask的书写书评.Flask是一个很流行的Python框架.那本书是Ron DuPlain写的<Flask 即时Web开发>.我决定 ...
- Python Web开发主流框架
Web 开发是Python 语言应用领域的重要部分,也是工作岗位最多的领域.如果你对基于Python的Web 开发有兴趣,正打算使用Python 做Web 开发,或者已经是一个Web 开发者有工作需要 ...
- Python学习资料整理以及书籍、开发工具推荐
我不知道大家学习Python的时候是不是和我一样感觉很无助,不知道在入门或者进阶的时候应该掌握哪些知识点,下面我就梳理下我自己学习Python开 发的过程及资料分享给大家,这些方法资料可能并不适合所有 ...
随机推荐
- BZOJ 2073 [POI2004]PRZ(状压DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2073 [题目大意] 任何时候队伍在桥上的人都不能超过一定的限制. 所以这只队伍过桥时只 ...
- 【推导】【贪心】XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016 Problem H. Path or Coloring
题意:给你一张简单无向图(但可能不连通),再给你一个K,让你求解任意一个问题:K染色或者输出一条K长路径. 直接贪心染色,对一个点染上其相邻的点的颜色集合之中,未出现过的最小的颜色. 如果染成就染成了 ...
- HDU 4639 Hehe (2013多校4 1008 水题)
Hehe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- mybatis查询日期时间数据得到long类型数据的问题
使用mybatis查询数据时,如果数据库存储的是timestamp.datetime.date.time等时间类型,而Java bean也使用的是date类型,mybatis会自动将date类型转换为 ...
- 基于tiny4412的Linux内核移植(支持device tree)(三)
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- TSQLTableJSON解析JSON
TSQLTableJSON解析JSON uses mormot rocedure TTestTableContent.SynopseTableVariant;var json: RawUTF8; pe ...
- Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数
点击浏览器中的URL链接,启动特定的App. 首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]" ...
- [Ubuntu Setup] Ubuntu 13.04 安装 ia32-libs
http://stackoverflow.com/questions/23182765/how-to-install-ia32-libs-in-ubuntu-14-04-lts sudo -i cd ...
- C#.net开发 List与DataTable相互转换 【转】
http://blog.csdn.net/shuizhaoshui/article/details/51425527 在.NET开发中,操作关系型数据库提取数据经常用到DataTable.ASP.NE ...
- web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】
http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...