例如,如果你要学 Ruby,那就先看一下 Ruby 有什么特别的?
Ruby 是一门开源的动态编程语言,专注易用性和效率。它的语法很优雅,代码读起来很自然,写起来也很自然。
让我们更深入地看一下:
http://www.ruby-lang.org/en/about/
那么,在学习 Ruby 之前,需要了解的重点是:
Ruby 专注于易用性和效率,代码容易阅读;
Ruby 是解释执行的,所以使用了 GC,也就是说对于某些任务,性能可能会是个问题;
在 Ruby 中,所有东西都是对象,所以它是面向对象编程语言,而且是纯面向对象的;
Ruby 很灵活,我们可以重新定义它的一些东西。
了解这门语言最重要的特性,包括它的优点和不足。
第二步:通过教程或书籍学习语法和最佳实践
在第二步,你需要掌握语法、基本的 IO、调试工具和单元测试。
如果你刚开始学习编程,最好找那种“权威指南”之类的书籍,比如语言作者写的书,或者在网上书店搜索这门编程语言,找到好评如潮的书。
如果你是个编程老手,只需要找一些简单的指南或示例代码就可以了,可以看看这个。
记住,在学习语法时,你需要动手写代码,不要只是拷贝黏贴。你可以在这个网站上练习写代码,有人会审阅你的代码,并免费为你提供建议。
第三步:使用新学的语言写更多的代码
现在,你需要使用新学的语言开始一个项目,包括与这门语言有关的生态系统、工具和库。你可以从简单的开始,比如一个猜数字小游戏、简单的网上书店或者 TODO 应用程序。在 GitHub 上可以找到很多类似的项目。
Ruby和Python都是基于Web应用程序和Web服务的编程语言,这两种语言有一定的相似之处,所以很多人就喜欢将这两者进行对比。那么ruby和python到底哪个强大呢?
Python
Python采用的是直接编程方法,主要目标的是使程序员显而易见。在Python中,只有一种“最好”的做法,这种理念导致了Python严格的语言布局。
Python的核心理念包括三个关键的层次原则:显式优于隐式、简单比复杂好、复合胜于复杂。
以上三个原则使得Python更加易于学习和阅读,同时这也是Python受到编程初学者青睐的原因。Python在介绍性编程课程中占有重要地位,语法简单,易于理解,另外Python的代码结构明确,开发人员可以很容易的定位错误,实现调试。
相关推荐:《Python教程》
Python的原理层次在语言的许多方面都是显而易见的。它使用空白来做流量控制作为语言语法的核心部分与大多数其他语言(包括Ruby)不同。缩进代码的方式决定了其动作的含义。这种空白的使用是Python“明确”哲学的一个很好的例子,Python应用程序的形状说明了它的逻辑和应用程序的行为。
Ruby
与Python相反,Ruby专注于“人类语言”编程,其代码阅读起来更符合人类的习惯,而不是机器的习惯。Ruby的发布者Yukihiro Matsumoto表示:“我设计Ruby来是我的惊讶最小化,我现在可以肯定全世界的程序员的思维都是相似的。”不同的情况,Ruby都可以不同的方法来实现相同的事情。
与Python不同,Ruby有一个“块”的概念,块由大量的代码组成。Ruby将OOP(面向对象编程)的概念发挥到了极限,一切都可以是一个对象,甚至全局变量都是在ObjectSpace对象中表示的。
类和模块本身是对象,而函数和操作符则是对象的方法。这种组合让Ruby变得十分强大,当然除了这些,Ruby的函数编程和lambdas函数也不容小觑。Ruby的粉丝认为它的优雅也是其顶级卖点之一。Ruby的“magical”功能和灵活性可以很好地跟踪错误。
社区:稳定与创新
虽然功能和编码理念是一门编程语言兴盛的主要驱动力,但是社区的贡献也是不容小觑的。而我们今天的主角Python和Ruby都拥有强大的社区。
Python的社区包括一个大型的Linux学术社区,因此会有很多数学和科学的学术用例。这种支持为社区提供了稳定性和多样性,未来随着Python在Web开发中的应用越来越多,用例也会增长,社区的作用会日渐重要。
Ruby的社区主要侧重于Web开发,与Python相比,Ruby社区的创新性更强,但是有时创新也会导致很多事情被破坏。此外,Ruby社区也比之前更加多元化,但距离Python的多样化水平还有一定差距。
总结
对于Web开发来说,Ruby和Python都有各自的优势,分别是Rails和Django这两个强大的框架,但是真要说哪个更强大,这个真的无法下定论,只能说各有各的优点,最终决定哪个好用的,还是你的编码水平和经验水平。
关于 RubyMotion 我已经写过很多文章了,但如何混用Objective-C与Ruby还从未涉及到。实际上你能在RubyMotion项目中使用Objective-C代码,也可以在传统Objective-C的App中使用Ruby代码。也许你一次听来觉得像黑魔法一样,所以来一起看看下面这些示例。Objective-C in Ruby
很多iOS开发者在现有的Objecive-C代码中存在大量深层的备份日志,这样就为项目手动转换为 RubyMotion 带来了很大的痛苦。然而幸运的是现在仅仅只需要将编译好的Objective-C代码添加到我们的新RubyMotion应用里。
比如我们要在 RubyMotion 应用中使用 Objective-C 形式的 CYAlert 类:
// CYAlert.h
#import <UIKit/UIKit.h>@interface CYAlert : NSObject
+ (void)show@end
// CYAlert.m
#import "CYAlert.h"
@implementation CYAlert
+ (void)show {
UIAlertView *alert = [[UIAlertView alloc] init]
alert.title = @"This is Objective-C"
alert.message = @"Mixing and matching!"
[alert addButtonWithTitle:@"OK"]
[alert show]
[alert release]
}@end
为了在RubyMotion应用中能正常使用,这里需要将CYAlert的两个文件都放置到类似 ./vendor/CYAlert 里面,然后在 Rakefile: 中告诉 RubyMotion 使用vendor_project创建那个文件夹。
Motion::Project::App.setup do |app|
# Use `rake config' to see complete project settings.
app.name = 'MixingExample'
# ./vendor/CYAlert contains CYAlert.h and CYAlert.m
app.vendor_project('vendor/CYAlert', :static)
end
那么现在在 AppDelegate 中,我们这样使用 CYAlert:
class AppDelegate
def application(application, didFinishLaunchingWithOptions:launchOptions)
CYAlert.show
true
end
end