1 |
Am 03. September 2017 um 15:35 Uhr -0500 schrieb R0b0t1 <r030t1@×××××.com>: |
2 |
> I think the takeaway from Alan's comment is that Python is unnaturally |
3 |
> stable compared to other interpreted languages. One might be inclined |
4 |
> to think Python developers consider their work to be a widely used |
5 |
> tool as opposed to a toy to play with. |
6 |
|
7 |
If you regard Ruby as a toy language, I'm inclined to say that quite a |
8 |
number of (most often Rails) applications use it in for serious |
9 |
projects. |
10 |
|
11 |
> Then why does he have all three installed? |
12 |
|
13 |
I cannot answer that. I lack the insight into the Gentoo Ruby deployment |
14 |
process. |
15 |
|
16 |
> These are all fairly major changes for a minor release. I'm not really |
17 |
> sure any of this evidence supports the opinion that Ruby doesn't |
18 |
> experience breaking changes more regularly than other languages. |
19 |
|
20 |
I have not made the claim that Ruby is more stable than other languages, |
21 |
especially did I never say that Ruby is as stable as Python. My |
22 |
intention was the counter the statement that every Ruby minor release is |
23 |
a "complete new language". The changes I listed are breaking, but not to |
24 |
a degree that justifies the "complete new language" statement. |
25 |
|
26 |
> Leading into my next point, I remember some conversations about people |
27 |
> discussing the Ruby parser and how there was no BNF description of the |
28 |
> language. Consequently (from memory) there was at least one |
29 |
> implementation of Ruby were encountering regressions in the parser |
30 |
> between versions that were undocumented and not detected until the |
31 |
> releases had already been made. The result was that code was |
32 |
> semantically different between some versions. Regrettably I'm having |
33 |
> trouble citing this one. |
34 |
|
35 |
It was JRuby as far as I know, but don't nail me on that. I don't have |
36 |
it ready either, nor do I have the exact circumstances in memory. |
37 |
|
38 |
> Situations like the above, and reliance on private C interfaces, are |
39 |
> what makes it seem plausible to me that there are packages that |
40 |
> require a version that has no listed breaking changes. |
41 |
|
42 |
Using unsupported private C interfaces is going to make any package |
43 |
break in any language over time. This is not Ruby's fault. |
44 |
|
45 |
> This statement makes me think you haven't tried to understand the |
46 |
> issue, as that ISO document - to the best of my knowledge, I can't |
47 |
> actually view it without paying money - implements Ruby 1.8.1 and |
48 |
> potentially some features from 1.9. Hearsay indicates it was started |
49 |
> at the behest of the Japanese government so that they could use Ruby |
50 |
> for internal projects as their rules seem to require standards |
51 |
> documents for software. This is important, because it shows that there |
52 |
> is no real effort by Ruby's lead developer or the Ruby community to |
53 |
> produce a legitimate standards document. |
54 |
|
55 |
I've not worked with the ISO document. You requested a formal standard, |
56 |
and I replied that there's an ISO document, which I regard as a |
57 |
standard. I didn't know that it describes such an ages old version of |
58 |
Ruby (though I should have known better given the date). Since the 2.4.0 |
59 |
release post on ruby-lang.org justifies removal of Fixnum/Bignum with |
60 |
the interpreter not being compliant with the ISO standard, I was under |
61 |
the impression that it was still usable. If it isn't, I apologise. |
62 |
|
63 |
> In practice one finds more references to something called RubySpec |
64 |
> which is an executable implementation of what people like to call a |
65 |
> specification. RubySpec appears to be discontinued[1], but even when |
66 |
> it was in use there are three things that should be pointed out: |
67 |
|
68 |
The RubySpec was started as a community effort indeed, but if you only |
69 |
read the Rubinius view of it, you're going to see a lot of bias. The |
70 |
Rubinius main maintainer retracted from the effort by his own |
71 |
decision. Consequently, the RubySpec is now maintained by the core team |
72 |
of the canonical Ruby implementation[1]. Thus, it is not true that the |
73 |
core developers do not make use of RubySpec. |
74 |
|
75 |
> If you look at the RubySpec code you will see that the "specification" |
76 |
> consists of testcases that attempt to define the behavior of Ruby. As |
77 |
> mentioned, these tests are written in Ruby, and are subject to bugs in |
78 |
> Ruby that are made undetectable, or very hard to detect, by the |
79 |
> self-referential relationship of the behavioral specification and the |
80 |
> language. |
81 |
|
82 |
This sounds logical to me, and I agree. I'm not the correct person to |
83 |
address this to, though. From the formal point of view, I surely cannot |
84 |
compete with you. The spirit in the Ruby development appears to follow |
85 |
not a formal, but a practical approach, which is always going to be |
86 |
inferior. |
87 |
|
88 |
> What I have read in this regard leads me to conclude that Ruby is not |
89 |
> a language that I should use for my development, and it pains me to |
90 |
> say this. |
91 |
|
92 |
Use the tool that fits the job for you. I wonder if I was perceived as |
93 |
using Ruby everythere; this isn't the case. Actually, I don't write much |
94 |
Ruby code currently, but much more C/C++. |
95 |
|
96 |
Marvin |
97 |
|
98 |
[1]: https://github.com/ruby/spec |