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 开发语言?的更多相关文章

  1. Perl,Python,Ruby,Javascript 四种脚本语言比较

    Perl 为了选择一个合适的脚本语言学习,今天查了不少有关Perl,Python,Ruby,Javascript的东西,可是发现各大阵营的人都在吹捧自己喜欢的语言,不过最没有争议的应该是Javascr ...

  2. Java在Web开发语言上败给了PHP

    PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...

  3. Java在Web开发语言上败给了PHP(转)

    PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...

  4. PHP和Java的主要区别有哪些?哪个最适合Web开发语言?

    一.前言 PHP和Java都是现在比较流行的二种编程语言. 对于许多新手来说,都会思考如果学的时候,该学哪种语言呢?下面这篇文章给大家整理两者的区别以及一些选择建议,一起来看看吧. 二.简介 PHP与 ...

  5. 为什么说Python 是大数据全栈式开发语言

    欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...

  6. Python笔记(八):web开发

    #本文是在Windows环境下,Unix系统应该还要设置2个东西 (一)    采用MVC设计web应用 遵循   模型-视图-控制器(model-view-controlle) 模型:存储web应用 ...

  7. Flask —— 使用Python和OpenShift进行即时Web开发

    最近Packtpub找到了我,让我给他们新出版的关于Flask的书写书评.Flask是一个很流行的Python框架.那本书是Ron DuPlain写的<Flask 即时Web开发>.我决定 ...

  8. Python Web开发主流框架

    Web 开发是Python 语言应用领域的重要部分,也是工作岗位最多的领域.如果你对基于Python的Web 开发有兴趣,正打算使用Python 做Web 开发,或者已经是一个Web 开发者有工作需要 ...

  9. Python学习资料整理以及书籍、开发工具推荐

    我不知道大家学习Python的时候是不是和我一样感觉很无助,不知道在入门或者进阶的时候应该掌握哪些知识点,下面我就梳理下我自己学习Python开 发的过程及资料分享给大家,这些方法资料可能并不适合所有 ...

随机推荐

  1. [BZOJ3131] [Sdoi2013]淘金

    [BZOJ3131] [Sdoi2013]淘金 Description 小Z在玩一个叫做<淘金者>的游戏.游戏的世界是一个二维坐标.X轴.Y轴坐标范围均为1..N.初始的时候,所有的整数坐 ...

  2. BZOJ 2395 [Balkan 2011]Timeismoney(最小乘积生成树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2395 [题目大意] 给出一张无向图,每条边上有a,b两个值,求生成树, 使得suma* ...

  3. 【矩阵乘法】OpenJ_POJ - C17F - A Simple Math Problem

    算(7+4*sqrt(3))^n的整数部分(mod 1e9+7). 容易想到矩乘快速幂,但是怎么算整数部分呢? (7+4*sqrt(3))^n一定可以写成a+b*sqrt(3),同理(7-4*sqrt ...

  4. 【模拟】【set】hdu 4789 ICPC Ranking

    写了一晚上,TLE到死,我选择GG 喵的好像还是前几年我校出的题,这整场都……tm…… 改日在战 /*TLE代码*/ #include<cstdio> #include<vector ...

  5. 20162325金立清 实验四 Android程序设计 实验报告

    实验四 Android程序设计 实验报告 代码托管地址 码云链接 实验内容 安装使用Android Stuidio Activity测试 UI测试 布局测试 事件处理测试 Android程序设计-1 ...

  6. POJ 2139 Six Degrees of Cowvin Bacon (弗洛伊德最短路)

    题意:奶牛拍电影,如果2个奶牛在同一场电影里演出,她们的合作度是1,如果ab合作,bc合作,ac的合作度为2,问哪一头牛到其他牛的合作度平均值最小再乘100 思路:floyd模板题 #include& ...

  7. Ubuntu 16.04/CentOS 6.9安装Node.js 6.9.5

    Ubuntu: CentOS: wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz tar -xvf node-v6.9. ...

  8. [典型漏洞分享]上传导致的应用层DOS攻击

    YS 视频封面设置功能可上传大量图片,可进行资源消耗型DOS攻击[中] 问题描述:          YS允许用户为设备设置封面,后台在处理时允许用户间接可控上传图片的二级路径以及直接可控保存图片的文 ...

  9. uboot显示logo的方式

    转:http://blog.chinaunix.net/uid-22030783-id-3257554.html 本文使用uboot2010.03版本,2010.06版本同样适用,在XC2440板上实 ...

  10. Android内存优化13 内存泄漏常见情况4 资源泄漏

    资源未关闭或释放导致内存泄露 在使用IO.File流或者Sqlite.Cursor等资源时要及时关闭.这些资源在进行读写操作时通常都使用了缓冲,如果及时不关闭,这些缓冲对象就会一直被占用而得不到释放, ...