Ruby (programming language)

Ruby (programming language)

] . IronRuby [cite web
url = http://rubyforge.org/pipermail/ironruby-core/2008-May/001909.html
title = IronRuby / Rails Question
author = John Lam
date=2008-05-25
accessdate = 2008-05-25
] [cite web
url = http://www.iunknown.com/2008/05/ironruby-and-rails.html
title = IronRuby and Rails
author = John Lam
date=2008-05-30
accessdate = 2008-06-01
] and Rubinius [cite web
url = http://blog.fallingsnow.net/2008/05/17/rails-on-rubinius/
title = Rails on Rubinius
author = Evan Phoenix
date=2008-05-17
accessdate = 2008-05-25
] start to be able to run Rails test cases, but they still are far from production ready for this task.

As of Ruby MRI, Ruby is available on a lot of operating systems such as Linux, Mac OS X, Microsoft Windows, Windows CE and most flavors of Unix.

Criticism

* As variables are declared simply by assigning a value to them, typing errors can introduce new variables and cause unexpected behavior. [ [http://www.bitwisemag.com/2/What-s-Wrong-With-Ruby What’s Wrong With Ruby?] ]
* Being a dynamically typed language, errors can occur during the execution of the program if a variable were to be assigned a value of the wrong type. This is common to all dynamically typed languages, such as Lisp, JavaScript, and Python. In Ruby's case the interpreter would not catch the initial mis-assignment, but in most circumstances will throw an error if the mis-assigned variable is later treated as a type that it is not, as opposed to the silent type conversion of some languages.
* Ruby's ability for metaprogramming allows a programmer to modify methods in the language's Standard Library during runtime, a practice known as monkey patching. This can lead to possible collisions of behavior and subsequent unexpected results, and is a concern if done recklessly for code scalability. [ [http://avdi.org/devblog/2008/02/23/why-monkeypatching-is-destroying-ruby/ Monkeypatching is Destroying Ruby] .
* The Ruby threading model uses green threads [ [http://spec.ruby-doc.org/wiki/Ruby_Threading Ruby Threading - RubySpec ] ] , and its model has some inherent limitations which render it difficult to use or unsafe in some scenarios. [ [http://www.killersites.com/blog/2007/standalone-ruby-on-rails/ Writing a standlone, threaded application using Ruby On Rails at KILLERSITES.COM ] ]
*Ruby 1.8 does not yet have native support for Unicode or multibyte strings, [ [http://headius.blogspot.com/2006/06/unicode-in-ruby-unicode-in-jruby.html Headius: Unicode in Ruby, Unicode in JRuby? ] ] although 1.9 added multiple improvements in this area.Fact|date=May 2008
*Ruby suffers from backward compatibility problems. [ [http://www.infoq.com/news/2007/12/ruby-19 InfoQ: Ruby 1.9 released ] ]
* Ruby code runs slower than many compiled languages (as is typical for interpreted languages) and other major scripting languages such as Python and Perl [http://shootout.alioth.debian.org/ The Computer Language Benchmarks Game] ] . However, in future releases (current revision: 1.9), Ruby will be bytecode compiled to be executed on YARV ("Yet Another Ruby VM"). The performance of YARV is currently very similar to those of other scripting languages such as Python.

Ruby 2.0 aims to address some of the aforementioned problems:
* Native threads will be used instead of green threads. [ [http://glu.ttono.us/articles/2005/10/14/yarv-progress-report Gluttonous : YARV Progress Report ] ]
* Full support for Unicode strings.

Some problems which may not be solved in version 2.0 include:

* Ruby still lacks a specification, the current C implementation being the "de facto" reference specification. [ [http://headius.blogspot.com/2007/04/what-would-i-will-i-change-about-ruby.html Headius: What Would I (Will I?) Change About Ruby ] ] [ [http://craigrandall.net/archives/2006/09/from-java-to-ruby/ From Java to Ruby ] ] However the work for a specification is officially ongoing with a project named RubySpec based on the work started by the Rubinius project. [ [http://rubyspec.org/ RubySpec] ] The creator of Ruby has expressed his plans to make Ruby an ISO standard, which he deems will take some time to be completed. [ [http://www.infoq.com/news/2008/07/rubykaigi RubyKaigi 2008: Standardization, 1.9 Roadmap] ]

Repositories and libraries

The Ruby Application Archive (RAA), as well as RubyForge, serve as repositories for a wide range of Ruby applications and libraries, containing more than seven thousand items. Although the number of applications available does not match the volume of material available in the Perl or Python community, there are a wide range of tools and utilities which serve to foster further development in the language.

RubyGems has become the standard package manager for Ruby libraries. It is very similar in purpose to Perl's CPAN, although its usage is more like apt-get.

See also

* Duck typing
* Comparison of programming languages
* Watir
* Ruby MRI, the reference C implementation
* JRuby
* IronRuby
* Rubinius
* XRuby
* Ramaze
* Ruby on Rails

References

External links

* [http://www.ruby-lang.org/en/ Ruby language home page]
* [http://www.ruby-doc.org Ruby documentation site]
* [http://ruby.on-page.net Ruby.on-page.net] — the simplest Ruby manual with many samples
* [http://dmoz.org/Computers/Programming/Languages/Ruby/ Ruby programming language] at the Open Directory Project
* [http://www.mentalpointer.com/ruby/index.html Ruby User Guide Mirror]
* [http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/ Ruby From Other Languages]
* [http://spec.ruby-doc.org/wiki/Main_Page Wiki: Ruby language and implementation specification]
* [http://www.eqqon.com/index.php/Ruby_C_Extension_API_Documentation_%28Ruby_1.8%29 Writing C Extensions to Ruby (MRI 1.8)]
* [http://www.rubyflow.com/ RubyFlow: Community Filtered Ruby News]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Programming language — lists Alphabetical Categorical Chronological Generational A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that… …   Wikipedia

  • Python (programming language) — infobox programming language name = Python paradigm = multi paradigm: object oriented, imperative, functional year = 1991 designer = Guido van Rossum developer = Python Software Foundation latest release version = 2.6 latest release date =… …   Wikipedia

  • Mirah (programming language) — Mirah Paradigm(s) object oriented, imperative Appeared in 2008 Typing discipline static, with dynamic features, strong, inferred Influenced by Ruby, Java, Boo …   Wikipedia

  • Eiffel (programming language) — Infobox programming language name = Eiffel paradigm = object oriented year = 1986 designer = Bertrand Meyer developer = Bertrand Meyer Eiffel Software latest release version = 4.2 latest release date = Feb 6, 1998 typing = static typing, strong… …   Wikipedia

  • D (programming language) — For other programming languages named D, see D (disambiguation)#Computing. D programming language Paradigm(s) multi paradigm: imperative, object oriented, functional, meta Appeared in 1999 (1999) Designed by …   Wikipedia

  • CLU (programming language) — Infobox programming language name = CLU paradigm = multi paradigm: object oriented, procedural year = 1974 designer = Barbara Liskov and her students at MIT developer = Barbara Liskov and her students at MIT latest release version = latest… …   Wikipedia

  • Nu (programming language) — Nu Paradigm(s) structured, imperative, object oriented Appeared in 2007 Designed by Tim Burks Developer Tim Burks Stable release 2.0 …   Wikipedia

  • Groovy (programming language) — Infobox programming language name = Groovy paradigm = object oriented, scripting year = 2003 designer = JCP developer = Guillaume Laforge (Project Manager and JSR 241 Spec Lead) latest release version = 1.5.7 latest release date = release… …   Wikipedia

  • Fan (programming language) — Infobox programming language name = Fan logo = paradigm = multi paradigm year = 2007 designer = developer = Brian Frank, Andy Frank latest release version = 1.0.30 latest release date = release date|2008|07|30 typing = static, dynamic… …   Wikipedia

  • Ada (programming language) — For other uses of Ada or ADA, see Ada (disambiguation). Ada Paradigm(s) Multi paradigm Appeared in 1980 Designed by MIL STD 1815/Ada 83: Jean Ichbiah Ada 95: Tucker Taft Ada 2005: Tucker Taft Stable release …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”