python难还是ruby难

Python036

python难还是ruby难,第1张

一、异同对比选择

1、Python和ruby的相同点:

·都强调语法简单,都具有更一般的表达方式。python是缩进,ruby是类basic的表达。都大量减少了符号。

·都是动态数据类型。都是有丰富的数据结构。

·都具有C语言扩展能力,都具有可移植性,比perl的可移植性更好。也都可以作为嵌入语言。

·都是面向对象的语言,都可以作为大项目的开发工具。

·都有丰富的库支持。

·也有最宽松的版权许可,除了一些工具属于GNU世界。

·都有lisp特色的eval函数,也都能把函数作为参数。

·也有图形界面的ruby的专门编辑器。

·都获得了广泛的c库的支持。如qt、gtk、tk、SDL、FOX等,ruby计划实现SWIG接口。

·都有完善的文档。

相关推荐:《Python视频教程》

2、和python相比ruby的优点:

·具有正则表达式和嵌入html的功能。python也有正则表达式,但没有ruby的应用方便和广泛。python的嵌入html项目才刚起步。ruby还有apache的mod模块。ruby本身也实现和很多unix工具,如racc,doctools。比python更亲近Linux。

·比python功能更完整的面向对象的语法。

·ruby的整个库都是具有类继承的结构。

·他的基本的数据类型和运算符都是可以重载的。

·ruby主要的功能都是通过对象的方法调用来实现的,而不是函数。python也在向这方面发展,但没有ruby做的彻底。

·ruby的类是更规范的单继承,还有接口等概念的实现。

·python可以实现在列表内的条件语句、循环语句,而ruby用“块”的方式来实现这个功能,比python的更灵活,更具有通用性。

·ruby具有类似lisp的彻底的函数方式的条件语句、循环语句等。语句的表达能力更强。

·附带一些unix工具,如racc等。

3、和python相比ruby的不足:

·最大的不足正是因为ruby的强大所引起的。它没有python的简单性好。比较复杂的面向对象语法、“块”语法的引入、正则表达式的引入、一些简写标记都增加了语言的复杂性。

·python的缩进表达方式比ruby的basic的表达方式更让人悦目,ruby程序的满眼的end让人不舒服。当然,ruby认为end的方式比python更先进。

·ruby还没有python的“自省”的能力,没有从程序文件中生成文档的能力。

·ruby没有国际化的支持。国际化支持在ruby的计划中。这是因为ruby的历史比python要短造成的。

·ruby没有类似jython的东西。

4、python和ruby的语言的选择:

从简单的就是好的来说,选python是没错的。python适合寻找简单语言的人,这很可能造成python更流行,因此也有更多的支持。但如果要追求更强大的语法功能,则ruby是好的选择。因为ruby和python的哲学有很多相似的地方,先从python入手,尽量用python,如果python的能力不足了,可以在找ruby。

ruby和python的比较,就像五笔和拼音输入法的比较。拼音作为入门的输入法和长久使用的输入法都没有问题。五笔适合更高要求的情况。如果追求性能的不妨学学ruby。对编程语言感兴趣,想了解各种编程概念的学ruby也会很兴奋。

二、两者各有特点:

1、Python从语法上来说更质朴一些,而Ruby更性感一些

Python的语法相对其他脚本语言来说,没有太多花巧的地方,显得比较死板一点,其实从Python强制代码缩进也可以看出来Guido设计语言的取向。语法死板的一面就是不容易玩出来更性感的东西,比方说Rails这样的框架,另外Python也无法做DSL这样的事情,但是语法死板的另一面就是比较规范,相对来说,更加适应软件开发的工程性要求,更容易组织大规模的团队进行开发。

Ruby的语法非常灵活,Matz设计ruby的出发点也是为了coding for fun,因此可以用ruby玩出来很多花样,运用足够的技巧,可以用Ruby写出来逼近自然语言的DSL,对于程序员来说,玩ruby确实充满了乐趣。Rails能在ruby社区诞生,而不是Python社区诞生绝对和编程语言有直接的关系。不过ruby语法灵活的另一面就是编程实现风格的多样性,这对于大规模团队的协作和管理是一个挑战。

2、Python的解析器实现更成熟,第三方库质量高

Ruby1.9解析器尽管已经有了很大的性能提升和很多新的功能,但是从源代码实现的角度来说,基本上是通过在Ruby1.8源代码上打patch来增加功能的。从源代码的结构来说,Ruby的实现太古老了,Ruby扩展起来比较困难,只能不断打patch。这也是为什么现在Ruby社区涌现出来那么多新的Ruby解析器实现的原因。从很大程度上来说,这制约了Ruby的发展速度。相对而言,Python解析器更成熟,也比较稳定。

在第三方类库的数量上来说,Ruby并不比Python少,但是高性能高质量久经考验的第三方类库Python要明显比Ruby多,事实上很多Ruby的第三方类库都不太成熟,因此这也很大程度上制约了Ruby的发展。

3、Python的应用领域非常广泛,而Ruby目前主要局限在在Web领域

Python应用的领域非常广泛,除了web开发以外,还被广泛用在服务器后端的高性能服务器实现,服务器后端的各种密集运算,全文检索,各种文本处理,系统管理等等,另外桌面应用领域wxPython也是一个很成熟的跨平台GUI框架。对于某些特殊的应用,比方说调用操作系统内核API,Python也可以完成的很好,比方说大量小文件的实时同步方案,就是用Python直接调用linuxKernel的inotify特性来实现的。所以可以说Python是软件开发领域的瑞士军刀,什么事情都可以做。

正是由于Ruby解析器和Ruby类库的制约,Ruby的应用主要局限在Web开发领域,目前Ruby的应用还无法延伸到web开发领域以外的很多地方。据说豆瓣早期就考虑过Ruby on Rails,但是因为Ruby不能做其他事情,而Python可以大包大揽,最后放弃Ruby选择了Python。

4、在Web领域Ruby是王者

随着互联网应用更进一步渗透到软件开发的各个领域,其实web开发占整个软件行业开发的比重也是越来越大。尽管Ruby在其他领域很受制约,但是在Web开发领域就是绝对的王者了。Rails框架的领先程度已经远远甩开了任何一个潜在的竞争对手十万八千里。因此尽管Ruby可能有这样那样的问题,但是说到Web开发,Rails几乎就是无可争议的唯一选择。

而Python尽管十分全面,却偏偏在web开发领域不彰,web框架虽然众多,却没有一个真正可以挑大梁,Django虽然在Python社区比较流行,但很多方面也有缺陷。现在的互联网应用往往都是多种语言混合编程,Ruby在Web以外的缺陷也可以用其他语言来弥补。

5、Python的包管理不如Ruby

尽管Python的第三方类库更高质量更成熟,但是Python社区缺乏Ruby Gem这样一个良好的包管理软件和包发布的网站。因此应用的构建显得不如Ruby那么方便,那么人性化。特别是在类库的版本升级上,就会遇到很多麻烦,不如Ruby Gem那么简单。

不过总的来说,Python和Ruby还是相似度极高的两种编程语言,即使两种编程语言都学习一下也不会浪费太多时间。如果我个人选择的话,会首选用Rails来构建web应用,再根据情况选择Python或者Java处理一些服务器后端的运算。总之,未来还是一个混合编程的时代,我们需要多了解一些编程工具,然后根据需要看菜吃饭才行。

如果是系统的类的函数,需要在前面加上::,如果是你使用的类中的函数,在类中使用时,直接调用,函数名(实参),其它类中使用,先声明实例,类名dlg,dlg.函数().如果不在类中,只是当前文档中使用,直接函数名就OK。。。

假设您有一个可以工作的 Ruby 应用程序,并且需要向其添加电子邮件传递功能。这可能与用户身份验证或任何其他类型的事务性电子邮件有关,这没有什么区别。本教程旨在帮助您实现使用 Ruby 发送电子邮件

用 Ruby 发送电子邮件的选项

大多数情况下,你可以从三个选项中选择一个。

最简单的方法是使用 Net: : SMTP 类。它提供了通过 SMTP 发送电子邮件的功能。该选项的缺点是 Net: : SMTP 缺少撰写电子邮件的功能。你可以自己创建,但这需要时间。

第二种选择是使用专用的 Ruby gem,如 Mail、 Pony 或其他。这些解决方案使您能够以简单有效的方式处理电子邮件活动。Action Mailer 是一个完美的电子邮件解决方案,通过 Rails 的棱镜。而且,很有可能,这将是你的选择。

第三个选项是类 Socket。通常,这个类允许您设置流程之间或流程内部的通信。因此,电子邮件发送也可以用它来实现。然而,事实是 Socket 并没有为您提供广泛的功能,您也不太可能想要使用它。

现在,让我们尝试使用所描述的每个解决方案发送电子邮件。

如何通过 Net: : SMTP 在 Ruby 中发送电子邮件

根据我的经验,在一个普通的 web 应用程序中使用这个选项是不常见的。但是,如果您在某些物联网设备上使用 mruby (Ruby 语言的一种轻量级实现) ,那么通过 Net: : SMTP 发送电子邮件可能是合适的。此外,如果在无服务器计算中使用,例如 AWS Lambda,它也会这样做。首先查看这个脚本示例,然后我们将详细介绍它。

Ruby 露比

这是一个通过 SMTP 发送文本电子邮件的简单示例(可以在这里找到官方文档)。您可以看到四个标题: 发件人、收件人、主题和日期。请记住,您必须将它们与电子邮件正文中的空行分开。同样重要的是连接到 SMTP 服务器。

Net::SMTP.start('your.smtp.server', 25) do |smtp|

Start (‘ your.smtp.server’,25) do | smtp |

自然,这里将显示您的数据,而不是“ your.smtp.server”,并且25是默认端口号。如果需要,可以指定其他详细信息,如用户名、密码或身份验证方案(普通、登录和 cram _ md5)。它可能看起来如下:

`Net::SMTP.start('your.smtp.server', 25, ‘localhost’, ‘username’, ‘password’ :plain) do |smtp|`

在这里,您将使用纯文本格式的用户名和密码连接到 SMTP 服务器,客户机的主机名将被标识为 localhost。

之后,可以使用 send _ message 方法并将发送方和接收方的地址指定为参数。

Start (‘ Net: : SMTP.start (‘ your.SMTP.server’,25) do | SMTP |’)的块形式将自动关闭 SMTP 会话。

在 Ruby Cookbook 中,使用 Net: : SMTP 库发送电子邮件被称为极简主义,因为您必须手动构建电子邮件字符串。尽管如此,这并不像你想象的那样没有希望。让我们看看如何用 HTML 内容增强电子邮件,甚至添加附件。

在网上发送 HTML 电子邮件: : SMTP

查看这个引用消息部分的脚本示例。

Ruby

除了消息体中的 HTML 标记之外,我们还有两个额外的头: MIME-Version 和 Content-type。MIME 指的是 MIME。它是 Internet 电子邮件协议的扩展,允许您在单个消息体中组合不同的内容类型。MIME-Version 的值通常为1.0。它指示消息是 MIME 格式的

至于 Content-type 头,一切都很清楚。在我们的示例中,有两种类型-HTML 和纯文本。另外,确保使用定义的边界分隔这些内容类型。

除了 MIME-Version 和 Content-type,您可以使用其他 MIME 头:

内容-传输-编码-表示二进制到文本的编码方案(7位、 Quoted-printable、 base64、8位或二进制)。

在网上发送带附件的电子邮件: : SMTP

- Content-Disposition-指定表示样式(内联或附件)

让我们添加一个附件,例如 PDF 文件。在这种情况下,我们需要将 Content-type 更新为 multipart/mix。另外,使用 pack (“ m”)函数用 base64编码对附加文件进行编码。

Ruby

之后,你需要定义你的电子邮件的三个部分。

第1部分-主要标题

第2部分-消息行动

第三部分-附件

现在,我们可以把所有的部分放在一起,并最终确定剧本。这就是它看起来的样子:

Ruby

我可以发送电子邮件给多个收件人在网络: : SMTP?

当然,你可以. send _ message 期望第二个和随后的参数包含收件人的电子邮件。例如:

Ruby

发送电子邮件的最佳 Ruby Gems

在 Ruby 生态系统中,您可以找到特定的电子邮件 gems,它们可以改善您的电子邮件发送体验。

Ruby Mail

该库旨在提供一个单点访问管理所有电子邮件相关活动,包括发送和接收电子邮件。

Pony

您可能听说过一个关于用一个命令发送电子邮件的童话故事。抓紧你们的帽子,因为它是真的,由小马宝石提供。

ActionMailer

这是最流行的宝石发送电子邮件在 Rails 上。如果你的应用程序写在上面,ActionMailer 肯定会出现。它允许您使用邮件类和视图发送电子邮件

使用邮件陷阱测试使用 Net: : SMTP 的电子邮件发送

设置非常简单。进入演示收件箱后,复制 SMTP“设置”选项卡上的 SMTP 凭据并将其插入到代码中。或者,您可以在 Integrations 部分获得一个简单消息的即用模板。只要选择一种编程语言或框架,你的应用程序是建立。

Ruby

如果一切正常,您将在邮件陷阱演示收件箱中看到您的消息。此外,您可以尝试检查您的 HTML 内容和附件的电子邮件。

您刚刚阅读了关于如何使用 Ruby 测试和发送电子邮件的完整教程。希望您喜欢!