在学习新的编程语言的时候,我们一定要弄清楚一下几个问题:
语言的类型模型是什么?
强类型/弱类型,静态类型/动态类型
类型模型会改变问题的处理方式,控制语言的运行方式
语言的编程范型是什么?
面向对象、函数式、过程式等等
怎样和语言交互?
编译、解释
语言的判断结构(decision construct)和核心数据结构是什么?
哪些核心特性让这门语言与众不同?
因为每门编程语言都有自己的一套惯用方法,各有所长,各有缩短,通过学习不同的编程语言,你会明白,哪门语言最适宜解决自己当下关注的问题。下面就以我正在学习ruby编程语言为例,给大家说说,我会关注哪些问题,就一起来看看我对ruby编程语言(http://www.maiziedu.com/course/ruby/)关注的几个知识点。
Ruby编程语言的简介
由松本行弘(Yukihiro Matsumoto)大约在 1993 年发明
脚本语言、解释型、面向对象、动态类型
现在我的机器上安装的ruby 版本是 2.1,可以使用下面的命令来查询:
$ ruby -v
ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-darwin14.0]
具体的安装不做太多介绍,在官方网站查阅不同平台的相关资料即可,下面是一个简单的例子
irb(main):001:0> properties = [’good’, ’bad’, ’clever’, ’stupid’]
=> ["good", "bad", "clever", "stupid"]
irb(main):002:0> properties.each {|property| puts "I am #{property}."}
I am good.
I am bad.
I am clever.
I am stupid.
=> ["good", "bad", "clever", "stupid"]
留意一下 ruby 是如何进行遍历及值替换的,之后我们也会深入了解。需要注意的是,这种写起来方便的语言,一般来说效率都不会太高。但是开发效率与执行效率常常是鱼与熊掌,很多时候不得不进行选择。
我们再来看一个长一点的例子:
irb(main):001:0> puts ’hello, wdx’
hello, wdx
=> nil
irb(main):002:0> friend = ’Snake’
=> "Snake"
irb(main):003:0> puts "hello, #{friend}"
hello, Snake
=> nil
irb(main):004:0> friend = ’Queit’
=> "Queit"
irb(main):005:0> puts "hello, #{friend}"
hello, Queit
=> nil
这里我们可以看到以下几点:
不用声明变量
每条 ruby 代码都会返回某个值
单引号表示直接解释
双引号包含的字符串会进行字符串替换
编程模型
Ruby 是一门纯面向对象语言。从下面的例子就可以看出来:
irb(main):001:0> 233
=> 233
irb(main):002:0> 233.class
=> Fixnum
irb(main):003:0> 233 + 233
=> 466
irb(main):004:0> 233.methods
=> [:to_s, :inspect, :[email protected], :+, :-, :*, :/, :div, :%, :modulo, :divmod, :fdiv, :**, :abs, :magnitude, :==, :===, :<=>, :>, :>=, :<, :<=, :~, :&, :|, :^, :[], :<<, :>>, :to_f, :size, :bit_length, :zero?, :odd?, :even?, :succ, :integer?, :upto, :downto, :times, :next, :pred, :chr, :ord, :to_i, :to_int, :floor, :ceil, :truncate, :round, :gcd, :lcm, :gcdlcm, :numerator, :denominator, :to_r, :rationalize, :singleton_method_added, :coerce, :i, :[email protected], :eql?, :remainder, :real?, :nonzero?, :step, :quo, :to_c, :real, :imaginary, :imag, :abs2, :arg, :angle, :phase, :rectangular, :rect, :polar, :conjugate, :conj, :between?, :nil?, :=~, :!~, :hash, :class, :singleton_class, :clone, :dup, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze, :frozen?, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :extend, :display, :method, :public_method, :singleton_method, :define_singleton_method, :object_id, :to_enum, :enum_for, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__, :__id__]
看出来了吗,ruby 中一切皆为对象,比方说数字就是 Fixnum 类型的对象,我们也可以用 . 来调用对象的各种方法。
判断
我们同样可以通过例子来研究研究。
大家看了以上的介绍对ruby编程语言有了一定的了解吗?可以从这几个知识点,关注点了解到ruby编程语言与其他语言的不同,也知道了ruby语言的特色。想了解更多ruby编程语言,可以搜索麦子学院,里面有更多ruby视频教程。