Jump to content

Talk:Ruby (programming language): Difference between revisions

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
Content deleted Content added
Drbrain (talk | contribs)
V975 (talk | contribs)
 
(191 intermediate revisions by 95 users not shown)
Line 1: Line 1:
{{Talk header}}
{{WPFS|class=B|importance=High}}
{{WikiProject banner shell|class=B|vital=yes|1=
{{WikiProject Computer science |importance=High}}
{{WikiProject Computing |importance=High|free-software=yes |free-software-importance=High |software=yes }}
}}
{{User:HBC Archive Indexerbot/OptIn
|target=Talk:Ruby (programming language)/Archive index
|mask=Talk:Ruby (programming language)/Archive <#>
|leading_zeros=0
|indexhere=yes}}
{{User:MiszaBot/config
|archiveheader = {{aan}}
|maxarchivesize = 200K
|counter = 1
|minthreadsleft = 10
|minthreadstoarchive = 1
|algo = old(30d)
|archive = Talk:Ruby (programming language)/Archive %(counter)d
}}


== Let us include at least one pointer to a good [[Programming language reference]] ==
== POV issues ==


I call your attention to the fact that currently the expression "language reference" is not present on the page. It is nice to read tutorials and getting started guides, but the point comes when you want to get down to serious business. Then you need a language reference. Matz knows this and he wrote one - [https://ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/index.html last modified: Mon Feb 23 16:01:41 1998].
Some of the text of this article seems non-NPOV. For example "clean syntax" and "obvious syntax" seem rather subjective. It doesn't bother me too much, but someone who is familar with the language (and not biased :-) ) might want to NPOV the text. --[[User:Frecklefoot|Frecklefoot]] 19:08 16 May 2003 (UTC)


* [https://ruby-doc.org/ ruby-doc.org] is of course OK, but is not easy, it does not have a good table of contents.
:In fairness, and with considerable experience of using Ruby after unhappy experiences with many other programming languages, I can only concur with those representations. It is syntactically ''very'' clear and also extremely obvious to anyone with an understanding of OO concepts. --[[User:Sjc|Sjc]] 13:12, 25 Nov 2004 (UTC)
* [https://en.wikibooks.org/wiki/Ruby_Programming Ruby Programming wikibook] is better, but somewhat outdated.
* [https://rubyreferences.github.io/rubyref/ The Ruby Reference] is my best bet for this currently. <!-- Template:Unsigned IP --><small class="autosigned">—&nbsp;Preceding [[Wikipedia:Signatures|unsigned]] comment added by [[Special:Contributions/193.245.81.11|193.245.81.11]] ([[User talk:193.245.81.11#top|talk]]) 22:46, 1 October 2020 (UTC)</small> <!--Autosigned by SineBot-->


:* "Your best bet", and the first thing on that site is a link requesting money donations. Looks like link spam, so no. [[User:Fbergo|Fbergo]] ([[User talk:Fbergo|talk]]) 12:10, 22 October 2020 (UTC)
:
:* You are a good hunter of those... I never noticed it without you pointing out. BTW Wikipedia has an equally unobtrusive Donate link on the sidebar... so what. <!-- Template:Unsigned IP --><small class="autosigned">—&nbsp;Preceding [[Wikipedia:Signatures|unsigned]] comment added by [[Special:Contributions/193.245.81.13|193.245.81.13]] ([[User talk:193.245.81.13#top|talk]]) 18:43, 7 December 2020 (UTC)</small> <!--Autosigned by SineBot-->


== Hello World! ==
== Version table ==


Would a version table be useful? If so, where would it be best placed? I would propose at the top of the 'History' section, as that is where the different versions are discussed.
#"Hello World" is ''already in the article'', under "Blocks and iterators".


The table may look like this:
#I disagree about using "Hello World" in every programming language article because it is considered a standard example. It should especially be avoided for a high level language like Ruby in which it consists of a single, straight-forward expression. Any non-trivial example, say a program that (for example) constructs and uses a hash, involving the creation of a string object and printing it to the standard output, provides all information that can be found in a "Hello World" program, and much more.


{| class="wikitable sortable"
The question is not whether it can be included in the article, but whether there are not better ways to use the same space. Note also the existence of the [[Hello world program]] page, which exists to cover this "standard example". --[[User:Fredrik|Fredrik]] | [[User talk:Fredrik|talk]] 11:57, 3 May 2005 (UTC)
|-
! Version !! Date !! End of support
|-
| {{Version |o |1.9.3 |sortKey=1.0}}
| 2011-10-31
| 2015-02-23
|-
| {{Version |co |2.0.0 |sortKey=2.0}}
| 2013-02-24
|
|-
| {{Version |co |2.1.0 |sortKey=3.0}}
| 2013-12-25
|
|-
| {{Version |c |2.2.0 |sortKey=4.0}}
| 2014-12-25
|
|-
| {{Version |c |2.2.3 |sortKey=5.0}}
| 2015-08-18
|
|}


Taken and adapted from [[Template:Version]] This is just intended as an example and may not contain all required information. [[User:Jrmh|Jrmh]] ([[User talk:Jrmh|talk]]) 12:39, 6 October 2015 (UTC)
:I'm confused. What change are you proposing? To remove the existing "Hello World" references in the article (under "Blocks...")? I'm all for it, since the code under that section doesn't run by itself anyways (blocks don't work out of the method calling context) and thus can be confusing. And if you want to change "Hello world" to "This is a block", I'd be happy too. Other than that, there aren't another other "Hello World"s in the article, so what exactly were you disagreeing with?


:I see we have a [[Ruby (programming_language)#Table of versions]] which [https://en.wikipedia.org/enwiki/w/index.php?title=Ruby_%28programming_language%29&type=revision&diff=701467310&oldid=701330509 was added] 24 January 2016 by [[User:V975]]. Looks good. -- [[User:Harry Wood|Harry Wood]] ([[User talk:Harry Wood|talk]]) 17:34, 21 April 2022 (UTC)
::There was a second "Hell World" example. See the article history. --[[User:Fredrik|Fredrik]] | [[User talk:Fredrik|talk]] 23:45, 13 May 2005 (UTC)
::Hey, I'm pretty sure that, per [[WP:NOTCHANGELOG]], the table of versions isn't suitable for inclusion in the article. I have since removed it. If I missed something or if the table is vital to the article, feel free to revert. [[User:Moon motif|Moon motif]] ([[User talk:Moon motif|talk]]) 03:04, 6 June 2023 (UTC)
:::[[WP:NOTCHANGELOG]] is about '''Exhaustive'' logs of software updates". A version history table is not a changelog and not ''exhaustive''.
:::It connects together the release date of an version and its deprecation, which are generally years apart in diverse changelogs and news. That information is relevant for instance when investigating dependencies between different softwares.
:::The table has been appropriately moved to [[History of Ruby]]. [[User:V975|V975]] ([[User talk:V975|talk]]) 23:46, 25 September 2024 (UTC)


== Unicorns are extinct? ==
::: Use the fibonacci numbers. --[[User:84.152.107.86|84.152.107.86]] 14:23, 20 December 2005 (UTC)


Why was [[Unicorn (web server)]] deleted? [[User:Viam Ferream|Viam Ferream]] ([[User talk:Viam Ferream|talk]]) 14:32, 11 January 2016 (UTC)
== Old talk ==
:{{ping|Viam Ferream}} I don't see what this has to do the *this* page, but the note at the creating page screen says: "05:01, 10 January 2016 Rjd0060 (talk | contribs) deleted page Unicorn (web server) (Expired PROD, concern was: unreferenced software article of unclear notability, tagged as unreferenced since 2014, and created by an SPA as possibly promotional)". Information about PROD's can be found at [[Wikipedia:Proposed deletion]]. If you have further questions about the deletion, you should ask the deleting admin, {{user|Rjd0060}}, on their talk page. [[User:Rwessel|Rwessel]] ([[User talk:Rwessel|talk]]) 23:20, 11 January 2016 (UTC)
=== Name ===
:: See [[Gunicorn|Green Unicorn]], a Python port of the Unicorn web server for Ruby. I'm not familiar with Ruby or Unicorn, other than as a precursor to Green Unicorn. They both have a weird forking model, so they're ineresting mostly as a different way to design a web server, not for being the most popular web server in use. As I guess youre a Ruby developer, do you have any opinion on whether Unicorn ought to be seen as notable? [[User:Viam Ferream|Viam Ferream]] ([[User talk:Viam Ferream|talk]]) 10:34, 12 January 2016 (UTC)


:::I think Unicorn *might* be notable, but I really can't say for sure. The fact that Gunicorn is notable, does not, however, offer evidence that Unicorn is. However "notability" for Wkikipedia is not quite the standard English definition, rather it's as defined by [[Wikipedia:Notability]]. And while an essay and not policy, [[Wikipedia:Notability (software)]] is good advice to follow. I'm not an admin, so I can't see the deleted article, but the problem is clear from the PROD notice: the article was unsourced (and that state had persisted for over a year), and the notability of the subject was never established. If those fail to happen, the article will be deleted. If you want the article undeleted and userfied (put into your user space so you can work on it), the deleting admin is the person to ask. Add some references and establish notability (and good references will generally do that), and we can move it back to the main space. [[User:Rwessel|Rwessel]] ([[User talk:Rwessel|talk]]) 21:33, 13 January 2016 (UTC)
Exact copy of entry posted June 12, 2001 8:02 am by
:::: Hmmm, I think thats one of those "I'd like to read it but I don't know enough to write it" topics. Ruby isn't really my thing. [[User:Viam Ferream|Viam Ferream]] ([[User talk:Viam Ferream|talk]]) 10:23, 14 January 2016 (UTC)
[[user:Stephen Gilbert|Stephen Gilbert]].
:::::{{ping|Viam Ferream}} I created quick stubs to describe the technology stack of popular Ruby web applications like Discourse, Mastodon or Diaspora, and so I covered the [[Mongrel]] successors, including [[Unicorn (web server)]].
::::::For the notability, there are references, books about Ruby or computer science conference papers, strongly indicating Unicorn was used as the preferred web server before [[Puma (web server)]] appears. The stubs are fully sourced.
::::::I'd guess the "weird forking model" is they try to work in a single thread, to avoid any multithreading issues. The popularity seems only a question of usability (they don't ask modification of software or heavy configuration) and performance (benchmarks from Twitter or Deliveroo speaks about requests per seconds). The sources in the Unicorn and Puma article contains some hints about the adoption reasons.
::::::As I'm not a Ruby expert, I'd appreciate if you could review the articles to be sure they're readable. --[[User:Dereckson|Dereckson]] ([[User talk:Dereckson|talk]]) 13:04, 31 March 2018 (UTC)


== Relevance of old version sections? ==
''Copied to change name from "Ruby language" to "Ruby
programming language" to match other language names.''


I'm not sure what the sections that basically amount to release "cliffnotes" (''especially'' for the versions that are obsolete) add to this page. Is there a reason to include them? The table with version numbers and support status seems like it would suffice. [[User:Rubah|rubah]] ([[User talk:Rubah|talk]]) 05:28, 10 September 2016 (UTC)
:For the record, I had little to do with this article, other then the editing. The original editing history was pruned. --[[User:Stephen Gilbert|Stephen Gilbert]]


=== Swift creation ===
== Keep "differences"? ==


About [https://en.wikipedia.org/enwiki/w/index.php?title=Ruby_(programming_language)&diff=769305703&oldid=765870761 this edit]. Is it bad to show differences? I didn't look over, saying any of them are true (or not).
So this guy created the language in one day? Cool. --AxelBoldt


Just, if language A (Ruby) has for sure some syntax/semantics and some other language B something else, then ok with [[WP:V]]? I'm not even sure you need an official spec. [[User:Comp.arch|comp.arch]] ([[User talk:Comp.arch|talk]]) 14:37, 13 March 2017 (UTC)
:Of course not :) --[[User:Taw|Taw]]


== Latest stable software release template ==
=== Section removal proposal ===


Can anyone help me clean up the mess I've made trying to use [[Template:LSR]]? I've created [[Template:Latest_stable_software_release/Ruby]], but the resulting "+" button on the main Ruby article links to [[Template:Latest stable software release/Ruby (programming language)]].
That section dealing with mailing lists should be removed, I think. It is not encyclopedic, and most other languages do not have mailing lists as a section. Plus, what does it really inform the reader about? --[[User:Marudubshinki|Maru]] 05:19, 6 August 2005 (UTC)


The latter redirects to the former, but I've screwed things up :-(
:I was going to do it, but I checked whether this had already been debated before. Done. --[[User:Chealer|Chealer]] 02:28, 29 September 2005 (UTC)


[[User:Scottmacpherson|Scottmacpherson]] ([[User talk:Scottmacpherson|talk]]) 10:02, 26 June 2017 (UTC)


:{{ping|Scottmacpherson}}, I fixed it. I copied the contents of [[Template:Latest_stable_software_release/Ruby]] to [[Template:Latest stable software release/Ruby (programming language)]] and then changed in the infobox programming language the parameter name to parameter title. The difference is that parameter name affects the title of infobox and the internal name used in the editing button (+), while the title affects the title of infobox only. This makes the links in the edit button based on the page name. After that, I suggested the deletion of [[Template:Latest_stable_software_release/Ruby]], and it was deleted. [[User:اقرأ|read]] ([[User talk:اقرأ|talk]]) 02:07, 8 June 2018 (UTC)
=== Compiling ===


== POLA Principle of least astonishment / surprise ==
I'm not sure that Ruby has ever been compiled yet. AFAIK JRuby is a port of the interpreter to java byte code, but does not compile the underlying ruby? --[[User:TomCounsell]]


The article right now states:
:Correct. But even as an interpreted language it is blindingly fast. --[[User:Sjc|Sjc]] 13:12, 25 Nov 2004 (UTC)


"Matsumoto attempted to distance Ruby from POLA"
::I like Ruby, but one thing it is not, is fast. [[User:146.145.251.68|146.145.251.68]] 17:04, 17 July 2006 (UTC)


But this is historically incorrect. Matz never coined POLS or POLA himself; that was in particular pragdave who coined this.
::So there's agreement that no Ruby compilers exist? I plan to remove the misleading claim: ''"It was originally designed as an interpreted language, though in its JRuby implementation it may be compiled."'' --[[User:Ds13|Ds13]] 07:31, 19 Feb 2005 (UTC)


So when the article claims "attempted to distance ruby from xyz", then this is not historically correct. Matz was not the one who used POLS/POLA; that came from others, so how could he "distance" ruby from it, if ruby never followed POLS or POLA? This is simply inaccurate what the wikipedia article claims right now. Whoever wrote it clearly did not know the history of ruby from matz point of view. It should be reworded. [[Special:Contributions/80.110.94.82|80.110.94.82]] ([[User talk:80.110.94.82|talk]]) 10:37, 18 August 2019 (UTC)
:::Yes, I've done some checking and it should probably be removed. There are a number of projects working on compiler type entities for ruby, but none that are beyond beta yet. --[[User:TomCounsell|TomCounsell]]


== Important Question ==
::::YARV contains a bytecode compiler. --[[User:Drbrain|drbrain]] 19:00, 4 September 2006 (UTC)
Why can't I find anything about furigana in this article? I've read some, but still. <!-- Template:Unsigned IP --><small class="autosigned">—&nbsp;Preceding [[Wikipedia:Signatures|unsigned]] comment added by [[Special:Contributions/72.68.2.144|72.68.2.144]] ([[User talk:72.68.2.144#top|talk]]) 10:11, 22 October 2020 (UTC)</small> <!--Autosigned by SineBot-->


: Because the subject of this article is completely unrelated to [[Ruby character]]. A link for that is in the disambiguation page on the very top of the article. [[User:Fbergo|Fbergo]] ([[User talk:Fbergo|talk]]) 12:07, 22 October 2020 (UTC)
::::And JRuby now contains a partial compiler that will grow as we continue working on it. In true, we do have a compiler now, but it only handles a subset of Ruby constructs, warning about those it doesn't recognize yet or leaving them to be interpreted. --[[User:Headius|Headius]]
== "Ruby (programming language" listed at [[Wikipedia:Redirects for discussion|Redirects for discussion]] ==
[[File:Information.svg|30px]]
An editor has identified a potential problem with the redirect [[:Ruby (programming language]] and has thus listed it [[Wikipedia:Redirects for discussion|for discussion]]. This discussion will occur at [[Wikipedia:Redirects for discussion/Log/2022 October 27#Ruby (programming language]] until a consensus is reached, and readers of this page are welcome to contribute to the discussion. <!-- from Template:RFDNote --> [[User:Steel1943|<span style="color: #3F00FF;">'''''Steel1943'''''</span>]] ([[User talk:Steel1943|talk]]) 19:22, 27 October 2022 (UTC)


:Ohhhhhh yerrrp [[Special:Contributions/2600:1702:21E0:4110:6C92:3F59:5093:54E6|2600:1702:21E0:4110:6C92:3F59:5093:54E6]] ([[User talk:2600:1702:21E0:4110:6C92:3F59:5093:54E6|talk]]) 14:54, 12 March 2023 (UTC)
There are several projects aimed at creating a Ruby --> Parrot bytecode compiler, namely Ruth, and Ripper. Can't find much on either.
Ruby 2's official implementation will use bytecode, see http://wiki.rubygarden.org/Ruby/page/show/Rite [[User:Wootery|Wootery]] 18:34, 30 October 2006 (UTC)


== New alternative implementation ==
== Implementations ==


[https://www.artichokeruby.org/ Artichoke] is a Ruby implementation written in [[Rust (programming language)|Rust]]. --<span style="font-family:Fira Sans,sans-serif">[[User:Keyacom|'''''<span style="color:#fa3">Ke</span><span style="color:#4f4">ya</span><span style="color:#66f">com</span>''''']] ([[User talk:Keyacom|💬]] | [[Special:Contributions/Keyacom|🖊]])</span> 21:16, 27 July 2023 (UTC)
''Ruby has three main implementations: the official Ruby [[interpreter (computer software)|interpreter]], which is the most widely used, JRuby, a [[Java programming language|Java]]-based implementation, and [[RPG Maker XP]], a [[Windows XP]] program used to create [[Computer role-playing game|role-playing games]].''

RPG Maker XP is not a Ruby implementation, although it includes one (RGSS). My understanding of the main Ruby implementation's license is that commercial products like RPG Maker can include the interpreter, provided that they include either the source code or a pointer to ruby-lang.org. Does anyone have this game, and if so, can you tell me whether RGSS is a new implementation? - [[User:Beinsane|Beinsane]] 05:44, 6 October 2005 (UTC)

:And to answer my own question...the RPG Maker website [http://www.enterbrain.co.jp/tkool/RPG_XP/eng/download.html] has a copyright notice crediting Matsumoto for Ruby. The article will be edited. - [[User:Beinsane|Beinsane]] 05:47, 6 October 2005 (UTC)

:: also the help-file of the program carries a link to ruby-lang.org on the first (root) page about [[RGSS]] in the About This Document section.

== Criticisms and Possible surprises ==
An anonymous user has come and turned 'Possible surprises' into 'Criticisms and Possible surprises'. If you read the section as it is now, the new items in the list do not really correspond to the list description "some features differ from languages such as C or Perl:". [[User:Jogloran|Jogloran]] 22:25, 8 February 2006 (UTC)

Ruby suffers from unconventional and below-average release management. First, Ruby version numbers are used differently from most other projects. Version 1.8.2 is not compatible with version 1.8.4. With Ruby, point releases are roughly equivalent to major releases of other projects. And since there is only 3 digits in the version number, there are no bugfix releases such as 1.8.2.1--instead, users must rely on snapshots of the repository for which there is no guarantee of backward compatibility. Another example is the release of Ruby 1.8.3 which broke Ruby's most well-known and popular application: Ruby on Rails.

"Omission of parentheses around method arguments may lead to unexpected results." -- like what? First I've heard of it. The fact that get/set methods are indistinguishable from fields is a feature, not a bug. [[User:Metamatic|Metamatic]] 20:46, 8 May 2006 (UTC)

:I got some clarification from Matz. The issue is with methods that take multiple arguments, and that's what may be disallowed in the future. I've reworded accordingly. Also, I've never seen a book recommend omitting brackets for multi-argument methods, so I've tightened that wording too. [[User:Metamatic|Metamatic]] 20:49, 16 May 2006 (UTC)

::In an expression like "puts Array.new 5, nil" the receiver of nil is ambiguous. In future versions such an expression will cause a syntax error. With "Array.new 5, nil" the receiver is not ambiguous so parentheses are not necessary. --[[User:Drbrain|drbrain]] 11:54, 18 June 2006 (UTC)

== Logo ==

I can't find an official Ruby logo at this point. What do you all think?

:I should think that the closest thing Ruby has is [http://poignantguide.net/ruby/chapter-3.html the cartoon foxes]. But they're more mascots than a logo. :) [[User:Quamaretto|Quamaretto]] 20:47, 23 February 2006 (UTC)

:Ruby doesn't have an official logo. --[[User:Drbrain|drbrain]] 10:09, 18 June 2006 (UTC)

::We should get license permission to use the logo from the redesigned Ruby-lang page. I can't imagine it would be hard to get permission but I couldn't find any obvious license posted so for now it's under copyright. [[User:208.39.128.10|208.39.128.10]] 18:02, 23 September 2006 (UTC)

== Ruby Strongly typed? ==

Anybody cares to join in and explain: [[Template_talk:Type_system_cross_reference_list#Ruby_Strongly_typed.3F]]?

--[[User:Krischik|Krischik]]&nbsp;<sup>[[User_talk:Krischik|T]]</sup> 07:29, 24 February 2006 (UTC)

:Ruby is [http://c2.com/cgi/wiki?StronglyTyped strongly] and dynamically typed, it does not have implicit type conversions like C, which is weakly typed. --[[User:Drbrain|drbrain]] 10:14, 18 June 2006 (UTC)

: Don't just point to a wiki page which points out that "there is no commonly agreed-upon meaning for 'strongly typed language'" and assume the case is closed. Almost all of the points on [[Strongly-typed programming language]] are describing the opposite of Ruby. The only ones possibly matching are:
:* The absence of ways to evade the type system. Such evasions are possible in languages that allow programmers to get at the underlying representation of values (ie, their bit-pattern).
:: Well, as Ruby has a highly flexible type system ''by design'' there are really no ways to evade it.
:* A complex, fine-grained type system with compound types.
:: Not sure here.
: In conclusion, I don't know where the idea comes from that Ruby is a [[Strongly-typed programming language]]. There might be other definitions of Strongly Typed, but Wikipedia's definition does not match at all. --[[User:217.235.238.230|217.235.238.230]]

::Citations for Ruby's strongly-typed'ness:
::*[http://conferences.oreillynet.com/cs/os2005/view/e_sess/6708 10 Things Every Java Programmer Should Know About Ruby]: ''Objects are Strongly Typed, Not Statically Typed'' - presentation by Jim Weirich, Consultant, Compuware at [[OSCON]] 2005
::*[http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/64625 Re: von Rossum on Strong vs. Weak Typing]: ''Ruby: strong dynamic typed language'' - explanation by matz (the creater)
::Hope this helps. --[[User:Kusunose|Kusunose]] 03:39, 13 December 2006 (UTC)

::: So Matz says that Ruby is strongly-typed. This of course should not be ignored, but the problem remains that [[Strongly-typed programming language]] does not match Ruby at all. How to proceed from here? --[[User:62.225.37.69|62.225.37.69]]
<!-- Comment -->

== POV Issue ==
The article states:

:The phrase did not originate with Matz and, generally speaking, Ruby may more closely follow a paradigm best termed as "Matz's Least Surprise", though many programmers have found it to be close to their own mental model as well.

In other words, ''Ruby doesn't follow the principle of least surprise; it's just Matz's idea of least surprise.'' That sounds seriously like a jab at Matz and POLS. [[User:DavidDouthitt|<SPAN STYLE="font-family:monospace; color:#006666; background-color:#ffff99; border-color:#ff0000; border-width:1px; border-style:solid; ">&nbsp;DavidDouthitt&nbsp;</SPAN>]] ([[User talk:DavidDouthitt|Talk]]) 23:25, 2 March 2006 (UTC)

:Matz repeatedly said he designs Ruby in a way that makes ''him'' surprise least; for example, see [http://www.artima.com/intv/ruby4.html] and [http://www.rubyweeklynews.org/20050529] --[[User:Kusunose|Kusunose]] 05:44, 3 March 2006 (UTC)

Here's the current version of the sentence. ''"The phrase did not originate with Matz and, generally speaking, Ruby may more closely follow a paradigm best termed as "Matz's Least Surprise", though many programmers have found it to be close to their own mental model as well."''

I agree with David, that the sentence sounds like a jab. It's also full of weasel words. But worst of all, it's factually inaccurate: "Matz's Least Surprise" is not an actual design paradigm. My understanding of Matz's statements about POLS in the two interviews cited by Kusunose is that the rules of Ruby are meant to be internally consistent and unambiguous. It doesn't mean that a heterogenious set of programmers will never get confused while learning the language. My read on his "my least surprise" statement is that the language should never be allowed to adopt features that might trip up an experienced user (himself). Once you gain an understanding of how things are done, you should never be puzzled about language behavior.

I'll rework this POLS bit to be more accurate and less weasely. --[[User:Loqi T.|Loqi T.]] 17:22, 23 February 2007 (UTC)

== Unicode and UTF8 issue ==
In the article there is the statement
Ruby currently lacks full support for Unicode, though it has partial support for UTF-8.

I wonder what this means for Ruby 1.8.4 (the current stable) and 1.9 (the current development release)?
An example where a file in UTF8 is read, processed and written out again would be helpful. Hannes Hirzel, 3 June 2006

:Ruby 1.8's regular expression engine handles multibyte characters correctly depending on what you set $KCODE to. By default it is in ASCII mode. The string library generally treats characters as raw bytes and ignores character encodings (its been a while since I've looked, I seem to recall one or two methods that check for multibyte characters). Ruby 2.0 will contain more multibyte and unicode string features, but the exact nature of those features have not been decided. --[[User:Drbrain|drbrain]] 11:51, 18 June 2006 (UTC)

==Bytecode or not==
I have read on the bytecode page that Ruby does not use bytecode in the current implementation. Is is true? I believe it is no longer the case. [[User:Acaciz|Acaciz]] 18:04, 3 June 2006 (UTC)

:Ruby 1.8 walks an [[Abstract_syntax_tree|AST]]. --[[User:Drbrain|drbrain]] 10:17, 18 June 2006 (UTC)

==POV issue with "surprises" section==
The section "Gotchas and possible surprises" section is POV, starting with its section name. It would be more accurately titled "Possible surprises for C and Perl programmers", but then that's still POV and getting away from what an objective, non-tutorial encyclopedic article should be. I think removal of this section should be considered. It's certainly useful information (as are reviews and tutorials), but that doesn't mean it belongs in an encyclopedia. Anyone else agree? --[[User:Ds13|Ds13]] 21:32, 15 June 2006 (UTC)

:The first four bullet points could be moved into the examples section. I believe the method parentheses problem refers to an expression like "puts Array.new 5, nil", where the method that should receive nil is ambiguous. "puts 5, nil" is never ambiguous. --[[User:Drbrain|drbrain]] 10:41, 18 June 2006 (UTC)

:I agree - it's a "gotcha" that that zero evaluates to true, but it's equally surprising to any naive entity which is not a computer that a number of any kind would evaluate as being false. Is zero a falsehood? I think not. And the final decimal to make a number floating point is just C shorthand (and possibly others), not a universal convention. We could convert this section to "Possible surprises for C and Perl programmers", but I think that any yokel could come up with a section like "Possible surprises for LISP and Scheme programmers", but I think that would make the article a bit cumbersome. Of course, instead, we could waste our precious server space on long-winded discussions of it. Either way [[User:Chicago|Chicago]] 13:48, 4 January 2007 (UTC)

== Citing The Computer Language Shootout Benchmarks ==

This article links to the [http://shootout.alioth.debian.org/ The Computer Language Shootout Benchmarks], which is not a quality reference for Ruby's performance problems.

The Alioth benchmarks exercise features that are seldom used in real-world Ruby like heavy recursion or enforcing use of a pure-ruby random number generator in the fasta benchmark instead of the built-in random number generator, overly penalizing Ruby's performance. Also, some benchmarks do not contain properly optimized Ruby.

In some areas Ruby is slightly slower than Perl or Python, but in other areas it is faster. The Alioth benchmarks are overly pessimistic due to the artificial restrictions they impose.

I believe this citation should be removed until a proper reference can be found. --[[User:Drbrain|drbrain]] 22:16, 18 June 2006 (UTC)

== Change of Hash keys from strings to symbols by KMeyer (Jul 1) ==

KMeyer made some changes on July 1st to the hash examples. Rather than, say, { 'a' => 'b', 'c' => 'd' }.. it has become { :a => 'b', :c => 'd' } .. While the symbol syntax is now becoming more popular, I feel this is a poor demonstration of hash tables generally since readers may be confused as to why, say { :my string here => 'x' } doesn't work. Symbols have a prescribed purpose, and in a general hash table, they are not necessarily usable as keys. --[[User:Coop|Coop]] 14:27, 2 July 2006 (UTC)

:I agree. At the very least it should show that a basic hash maps keys (which are strings, even if you use symbols) to a value (strings, symbols, ints, or whatever else you want). Maybe an example such as: {'a' => 5, 'b' => 'string', :c => 'other_string'}? --Luminousbit 17:01, 8 August 2006 (UTC)

:You can use any object you like as a Hash key in Ruby. On occasion I've used Time, Array, Symbol, String, and Integer and even my own Objects. Using a Symbol is more space and time efficient than using a String key because the there is only one instance of a Symbol and the #hash for a Symbol is an O(0) operation and is prefered for these reasons. --[[User:Drbrain|drbrain]] 19:11, 4 September 2006 (UTC)

== Links clean-up? ==

Can someone clean up the external links? It's so long and disorganized that it's practically useless. Just 5 or so really good introductory links would be ideal. Programmers know how to use google. [[User:146.145.251.68|146.145.251.68]] 17:06, 17 July 2006 (UTC)

:I think a link cleanup is a great idea; in fact, that's the reason I came to the talk page. Consider this advance notice of a cleanup:
:I am planning to remove a bunch of links from the External Links section based on Wikipedia's policy on [[Wikipedia:External links|External links]]. I don't want to remove all links, but I feel that the external links section is quite bloated and I would like to see it slimmed down a bit; Wikipedia is not meant to be a collection of outside links. If you have a strong feeling about why a particular link should or should not be included, speak now. Please refer to the [[Wikipedia:External links|Wikipedia policy on external links]] in your arguments. [[User:Zukeeper|Zukeeper]] 01:59, 18 July 2006 (UTC)

::This has been longstanding and I am now going to categorize the links. Help is needed. --[[User:Herraotic|Herraotic]] 22:37, 2 September 2006 (UTC)
:::May the deliberations begin. To note before hand I know that some links may not entirely fit under the category I chose but I don't have time to specify where each should be. I hope you all take care of it :D --[[User:Herraotic|Herraotic]] 23:00, 2 September 2006 (UTC)
::::Thanks. I removed some sketchup stuff, spams, and also did a little shuffling. Why are people obsessed with Sketchup? [[User:208.39.128.10|208.39.128.10]] 18:12, 23 September 2006 (UTC)

== Documentation ==
Would it be worth having a short mention of documentation for Ruby? Matz has stated that the documentation for Ruby is poor. The only up to date english manual that exists is the Pickaxe (Programming Ruby - The Pragmatic Programmer's Guide 2nd Ed.). I think this would be useful information to anyone reading the article that is looking to find more detailed information on the language. Maybe this ties into the links clean-up discussed above. [[User:JRavn|JRavn]] 20:40, 21 July 2006 (UTC)
:I have referenced to some Ruby documentation and also put major learning links under Learning Ruby. --[[User:Herraotic|Herraotic]] 23:01, 2 September 2006 (UTC)

==Requested move==
[[Ruby programming language]] → [[Ruby (programming language)]]
– Conformance with WP naming conventions <font color="darkgreen">[[User:Lulu of the Lotus-Eaters|LotLE]]</font>×<font color="darkred" size="-2">[[User talk:Lulu of the Lotus-Eaters|talk]]</font> 22:54, 1 September 2006 (UTC)

The page was moved. Move discussion is here: [[Wikipedia talk:WikiProject Programming languages/Renaming poll]].

== The layout is not attractive nor clean. ==

I am in favour of a new layout. There are too many cluttered examples which need illustrative concepts and also word wrapping. The external links need organization and categorizing such as learning, reference and etc. The implementation section is verbose on the initial description when it's followed with bullet points. And the features section could be more elaborative. --[[User:Herraotic|Herraotic]] 22:36, 2 September 2006 (UTC)

== "abc"[0] same as in C? ==

I don't know Ruby, so I can't answer this question. There is this bullet point about surprises in Ruby:

''Lack of a character data type (compare to C, which provides type char for characters). This may cause surprises when slicing strings: "abc"[0] yields 97 (an integer, representing the ASCII code of the first character in the string); to obtain "a" use "abc"[0,1] (a substring of length 1) or "abc"[0].chr.''

When I read that, I get confused. "abc"[0] in C is the number 97 too. -- [[User:Myria|Myria]] 06:32, 26 September 2006 (UTC)
:Nope, "abc"[0] in C yields char 'a' - which happens to be number 97 underneath but you can manipulate it as char type - for example you can write 'if ("abc"[0] == 'a')'. In ruby the char type doesn't exist so when you write 'if ("abc"[0]=="a")' you get 'false' because you're comparing integer against string. You have to therefore write 'if ("abc"[0].chr == "a")' to get expected result. This is certainly unexpected behaviour. - [[User:JohnyDog|JohnyDog]] 21:56, 17 October 2006 (UTC)

:: Unexpected for a C programmer, at least. &mdash;&nbsp;[[User:Xaonon|Xaonon]] <small>([[User_talk:Xaonon|Talk]])</small> 05:50, 3 November 2006 (UTC)

:You can write "abc"[0] == ?a in Ruby. --[[User:Fukumoto|Fukumoto]] 02:34, 18 October 2006 (UTC)

== The Applications section ends with jibberish ==

The application section needs editing:

"An example of using RubyGems by installing Ruby on Rails:" is not a sentence.

"Download" what RubyGems or RoR?
"(extract, then run "ruby setup.rb")"

Why are these in a box anyway? Only one is an actual command the rest are just a word with no explanation. Is there link that be provided which walks through the install or would a few lines with a bit more detail provide just what is needed.

Something like:

Installing Ruby On Rail illustrates a good use of RubyGems. The procedure
would be as follows....

First you need RubyGems
Download it from http://rubyforge.org/frs/?group_id=126.
tar or unzip depending on which OS you are using
> ruby setup.rb

That is all there is to instally RubyGems. Now you are ready to use Gem to keep your Ruby packages up to date

> gem install rails --include-dependencies

New versions of Rails can be installed in the same way.

Question: Can new version of RubyGems be updated the same way?

:I made it better. This isn't the place for a tutorial on installing Rails anyway. [[User:Perle|Perle]] 07:05, 3 October 2006 (UTC)

== Python ==
One of Ruby's closest language is certainly Python. How does Ruby stand against Python ? better ? worse ? what are the pros and cons of each ?

:There's no point in directly comparing programming languages. Ruby and Python, are, well, ''different''. --[[User:Saziel|Saziel]] 11:09, 5 January 2007 (UTC)

== Specification ==

Is Ruby a standardized language with a full formal specification, or is it just defined by whatever the current official interpreter supports? This information needs to be stated in the article, just as such info can be found in the articles for most other programming languages. Looking around on the official website, I can't find anything referring to a specification. [[User:Herorev|Herorev]] 07:36, 1 January 2007 (UTC)
: There's no spec of Ruby for the moment. It is now stated in the "Criticism" section. [[User:Hervegirod|Hervegirod]] 22:34, 9 May 2007 (UTC)

== Does it use GNU Bison? ==

On [[Talk:GNU bison]], someone said that the build system for the Ruby interpreter uses GNU Bison. Can someone confirm this? and/or provide a source? and/or expand further on the details? and/or add a mention of this to the Ruby article and the [[GNU Bison]] article? Just a suggestion, thanks for listening. [[User:Gronky|Gronky]] 19:03, 4 February 2007 (UTC)

: Yes, I confirm that Ruby's parser uses bison. I'm not sure how to cite. Does this link [http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/parse.y] to Ruby's source suffice? [[User:Sanxiyn|Sanxiyn]] 05:51, 20 August 2007 (UTC)

:: Ruby 1.8 uses yacc or bison. Ruby 1.9+ requires bison. http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/11909 [[User:Drbrain|drbrain]] <small>—The preceding {{#ifeq:{{{Date|{{{Time|04:58, August 21, 2007}}}}}} | | comment was }} [[Wikipedia:Signatures|signed but undated]]{{#ifeq:{{{Date|{{{Time|04:58, August 21, 2007}}}}}} | | | &#32;comment was added at {{{Date|{{{Time|04:58, August 21, 2007}}}}}} (UTC{{{Zone|{{{3|{{{2|}}}}}}}}}) }}.</small><!-- {{undated}} --> <!--Autosigned by SineBot-->

== Syntax section ==

I think that most Python programmers think that Python is better ''because'' there are no private/protected members, so saying that Ruby is an improvement because it has private/protected members is an opinion and not fact. Your thoughts? --[[User:Kinghajj|Kinghajj]] 05:32, 28 May 2007 (UTC)

== Language Scope Features ==

Shouldn't local scope be block scope. Also the examples of blocks confused me leading me to thing that "{ puts 'foo' }" is valid syntax, but isn't.


== Until ==
<blockquote>The notation "statement until expression", despite the English-language implication that statement would be executed at least once, and precedent in other languages' equivalent statements (e.g. "do { statement } while (not(expression));" in C/C++/...), actually never runs the statement if the expression is already true.</blockquote>

This does highlight a bit of a surprise in the "<i>statement</i> until <i>expression</i>" construction in Ruby for people coming from many other languages, but it isn't quite accurate the way it is phrased, since Ruby has an exact equivalent of "do { statement } while (not(expression));", and that is "until expression { statement }" which works exactly like the C/C++ version and is the closest structural parallel as well. [[User:Cmdicely|Cmdicely]] 06:32, 9 August 2007 (UTC)

== Ruby and characters ==

:Versions prior to 1.9 lack a character data type (compare to C, which provides type <code>char</code> for characters). This may cause surprises when slicing strings: <code>"abc"[0]</code> yields 97 (an integer, representing the [[ASCII]] code of the first character in the string); to obtain <code>"a"</code> use <code>"abc"[0,1]</code> (a substring of length 1) or <code>"abc"[0].chr</code>.

So what's <code>"Φ"[0]</code>? Does Ruby support Unicode? Does it mandate a particular character set? (And yes, I'm too lazy to install Ruby and find out, as I imagine our readers are too.)

Also, if you want to drag in C, it's more accurate to say that Ruby does not have ''character literals''. In C, the type "char" is not special -- it's just an integer type. It's notable that <code>'a'</code> has type <code>int</code>, not <code>char</code> (this is unlike C++), but of course C has implicit conversion between these types. In C, the value of <code>"abc"[0]</code> is implementation-defined, but if the underlying system is ASCII, the result will be an integer with value 97, just as in Ruby. The only difference is that in C, there is an implementation-independent way of writing this value, namely <code>'a'</code>. [[User:82.95.254.249|82.95.254.249]] 14:08, 11 August 2007 (UTC)
:I agree completely with the second paragraph. I do not think that Ruby supports Unicode, however. Many see this as one of it's major weaknesses, especially compared to Python. I believe that version 1.9 may have Unicode support, but I'm not sure. --[[User:Kinghajj|Kinghajj]] 22:07, 11 August 2007 (UTC)

Latest revision as of 23:46, 25 September 2024

Let us include at least one pointer to a good Programming language reference

[edit]

I call your attention to the fact that currently the expression "language reference" is not present on the page. It is nice to read tutorials and getting started guides, but the point comes when you want to get down to serious business. Then you need a language reference. Matz knows this and he wrote one - last modified: Mon Feb 23 16:01:41 1998.

Version table

[edit]

Would a version table be useful? If so, where would it be best placed? I would propose at the top of the 'History' section, as that is where the different versions are discussed.

The table may look like this:

Version Date End of support
Old version, no longer maintained: 1.9.3 2011-10-31 2015-02-23
Old version, yet still maintained: 2.0.0 2013-02-24
Old version, yet still maintained: 2.1.0 2013-12-25
Current stable version: 2.2.0 2014-12-25
Current stable version: 2.2.3 2015-08-18

Taken and adapted from Template:Version This is just intended as an example and may not contain all required information. Jrmh (talk) 12:39, 6 October 2015 (UTC)[reply]

I see we have a Ruby (programming_language)#Table of versions which was added 24 January 2016 by User:V975. Looks good. -- Harry Wood (talk) 17:34, 21 April 2022 (UTC)[reply]
Hey, I'm pretty sure that, per WP:NOTCHANGELOG, the table of versions isn't suitable for inclusion in the article. I have since removed it. If I missed something or if the table is vital to the article, feel free to revert. Moon motif (talk) 03:04, 6 June 2023 (UTC)[reply]
WP:NOTCHANGELOG is about 'Exhaustive logs of software updates". A version history table is not a changelog and not exhaustive.
It connects together the release date of an version and its deprecation, which are generally years apart in diverse changelogs and news. That information is relevant for instance when investigating dependencies between different softwares.
The table has been appropriately moved to History of Ruby. V975 (talk) 23:46, 25 September 2024 (UTC)[reply]

Unicorns are extinct?

[edit]

Why was Unicorn (web server) deleted? Viam Ferream (talk) 14:32, 11 January 2016 (UTC)[reply]

@Viam Ferream: I don't see what this has to do the *this* page, but the note at the creating page screen says: "05:01, 10 January 2016 Rjd0060 (talk | contribs) deleted page Unicorn (web server) (Expired PROD, concern was: unreferenced software article of unclear notability, tagged as unreferenced since 2014, and created by an SPA as possibly promotional)". Information about PROD's can be found at Wikipedia:Proposed deletion. If you have further questions about the deletion, you should ask the deleting admin, Rjd0060 (talk · contribs), on their talk page. Rwessel (talk) 23:20, 11 January 2016 (UTC)[reply]
See Green Unicorn, a Python port of the Unicorn web server for Ruby. I'm not familiar with Ruby or Unicorn, other than as a precursor to Green Unicorn. They both have a weird forking model, so they're ineresting mostly as a different way to design a web server, not for being the most popular web server in use. As I guess youre a Ruby developer, do you have any opinion on whether Unicorn ought to be seen as notable? Viam Ferream (talk) 10:34, 12 January 2016 (UTC)[reply]
I think Unicorn *might* be notable, but I really can't say for sure. The fact that Gunicorn is notable, does not, however, offer evidence that Unicorn is. However "notability" for Wkikipedia is not quite the standard English definition, rather it's as defined by Wikipedia:Notability. And while an essay and not policy, Wikipedia:Notability (software) is good advice to follow. I'm not an admin, so I can't see the deleted article, but the problem is clear from the PROD notice: the article was unsourced (and that state had persisted for over a year), and the notability of the subject was never established. If those fail to happen, the article will be deleted. If you want the article undeleted and userfied (put into your user space so you can work on it), the deleting admin is the person to ask. Add some references and establish notability (and good references will generally do that), and we can move it back to the main space. Rwessel (talk) 21:33, 13 January 2016 (UTC)[reply]
Hmmm, I think thats one of those "I'd like to read it but I don't know enough to write it" topics. Ruby isn't really my thing. Viam Ferream (talk) 10:23, 14 January 2016 (UTC)[reply]
@Viam Ferream: I created quick stubs to describe the technology stack of popular Ruby web applications like Discourse, Mastodon or Diaspora, and so I covered the Mongrel successors, including Unicorn (web server).
For the notability, there are references, books about Ruby or computer science conference papers, strongly indicating Unicorn was used as the preferred web server before Puma (web server) appears. The stubs are fully sourced.
I'd guess the "weird forking model" is they try to work in a single thread, to avoid any multithreading issues. The popularity seems only a question of usability (they don't ask modification of software or heavy configuration) and performance (benchmarks from Twitter or Deliveroo speaks about requests per seconds). The sources in the Unicorn and Puma article contains some hints about the adoption reasons.
As I'm not a Ruby expert, I'd appreciate if you could review the articles to be sure they're readable. --Dereckson (talk) 13:04, 31 March 2018 (UTC)[reply]

Relevance of old version sections?

[edit]

I'm not sure what the sections that basically amount to release "cliffnotes" (especially for the versions that are obsolete) add to this page. Is there a reason to include them? The table with version numbers and support status seems like it would suffice. rubah (talk) 05:28, 10 September 2016 (UTC)[reply]

Keep "differences"?

[edit]

About this edit. Is it bad to show differences? I didn't look over, saying any of them are true (or not).

Just, if language A (Ruby) has for sure some syntax/semantics and some other language B something else, then ok with WP:V? I'm not even sure you need an official spec. comp.arch (talk) 14:37, 13 March 2017 (UTC)[reply]

Latest stable software release template

[edit]

Can anyone help me clean up the mess I've made trying to use Template:LSR? I've created Template:Latest_stable_software_release/Ruby, but the resulting "+" button on the main Ruby article links to Template:Latest stable software release/Ruby (programming language).

The latter redirects to the former, but I've screwed things up :-(

Scottmacpherson (talk) 10:02, 26 June 2017 (UTC)[reply]

@Scottmacpherson:, I fixed it. I copied the contents of Template:Latest_stable_software_release/Ruby to Template:Latest stable software release/Ruby (programming language) and then changed in the infobox programming language the parameter name to parameter title. The difference is that parameter name affects the title of infobox and the internal name used in the editing button (+), while the title affects the title of infobox only. This makes the links in the edit button based on the page name. After that, I suggested the deletion of Template:Latest_stable_software_release/Ruby, and it was deleted. read (talk) 02:07, 8 June 2018 (UTC)[reply]

POLA Principle of least astonishment / surprise

[edit]

The article right now states:

"Matsumoto attempted to distance Ruby from POLA"

But this is historically incorrect. Matz never coined POLS or POLA himself; that was in particular pragdave who coined this.

So when the article claims "attempted to distance ruby from xyz", then this is not historically correct. Matz was not the one who used POLS/POLA; that came from others, so how could he "distance" ruby from it, if ruby never followed POLS or POLA? This is simply inaccurate what the wikipedia article claims right now. Whoever wrote it clearly did not know the history of ruby from matz point of view. It should be reworded. 80.110.94.82 (talk) 10:37, 18 August 2019 (UTC)[reply]

Important Question

[edit]

Why can't I find anything about furigana in this article? I've read some, but still. — Preceding unsigned comment added by 72.68.2.144 (talk) 10:11, 22 October 2020 (UTC)[reply]

Because the subject of this article is completely unrelated to Ruby character. A link for that is in the disambiguation page on the very top of the article. Fbergo (talk) 12:07, 22 October 2020 (UTC)[reply]

"Ruby (programming language" listed at Redirects for discussion

[edit]

An editor has identified a potential problem with the redirect Ruby (programming language and has thus listed it for discussion. This discussion will occur at Wikipedia:Redirects for discussion/Log/2022 October 27#Ruby (programming language until a consensus is reached, and readers of this page are welcome to contribute to the discussion. Steel1943 (talk) 19:22, 27 October 2022 (UTC)[reply]

Ohhhhhh yerrrp 2600:1702:21E0:4110:6C92:3F59:5093:54E6 (talk) 14:54, 12 March 2023 (UTC)[reply]

New alternative implementation

[edit]

Artichoke is a Ruby implementation written in Rust. --Keyacom (💬 | 🖊) 21:16, 27 July 2023 (UTC)[reply]