Computer Science Canada A Startling Admission |
Author: | wtd [ Sat Apr 01, 2006 5:00 pm ] |
Post subject: | A Startling Admission |
I have learned through my years of experience that there is nothing wrong with changing my mind. It isn't hypoocrisy. It's just a matter of realizing when I've been mistaken and setting forth to do things as correctly as possible in the future. It is with this in mind that I have to admit to myself and others that my promotion of Ruby has been misguided. Though impressive it was at the time I first learned it, I now realize that Ruby is an unfortunately limited language, and that learning it is a waste of time, when other more worthy languages are available. Ruby lacks a deep appreciation of functional programming. It gets about halfway there with blocks, and control structures that return values, but then fails to go the rest of the way. I believe this is not only a shortcoming of the language, but also highly detrimental to the student learning it. I have also come to realize that Ruby is simply too dynamic. It is possible for code to be written in such a way that it takes advantage of naming to convey information that should be expressed in other more robust ways. "Don't Repeat Yourself" is just another way of saying, "make assumptions," and we all know that leads nowhere good. Worse yet, Ruby endears itself to a person. It encourages those who learn it to love it, often to the point that they cannot see just how deeply flawed it is. |
Author: | Cervantes [ Sat Apr 01, 2006 5:19 pm ] |
Post subject: | |
I was going to reply to this with a, "wtd, you're out of your mind!" response, but since thinking more on it, I find that wtd is, once again, correct. Ruby is a rather over-hyped language. Sure, it was fun to learn. But now that I've spent more time with it and am programming a large project in it, I am finding a great deal of quirks and annoyances. Another problem is the community. Ruby has been around for quite a long time, but its community can't compare to those of the bigger languages. Part of the problem here is that it was isolated in Japan for a long time. Lots of documentation is in Japanese. Trying to get SDL to work with Ruby? Good luck, unless you can read Japanese. |
Author: | [Gandalf] [ Sat Apr 01, 2006 6:22 pm ] | ||
Post subject: | |||
Though I've been in the Ruby scene for far shorter than both Minsc and wtd, I would have to say I agree. Ever since I started learning it, I have come across numerous things which make no sense what-so-ever. Take the following code as an example:
Not only does it completely ignore logic (multiply a string, anyone?), but it also doesn't work as it's supposed to! Try it yourself. That's not 3.14159 "ha"s you are seeing on the screen, is it? Even Turing will give you a decent "operands of * must be both integer or real, or compatible sets" error message. My two cents. |
Author: | TokenHerbz [ Sat Apr 01, 2006 6:31 pm ] |
Post subject: | |
I think wtd should creat his own lang because he knows alot, and then he can make it how it should!!! it might take a while, but it should test your limits yeah? |
Author: | Dan [ Sat Apr 01, 2006 7:15 pm ] |
Post subject: | |
Ya i mean come on ruby on rails is a joke, php is just so much better. I mean white space and line breaks should effect the out come! And who needs all that useless debuging info that comes from ruby when you could have the joys of php error reporting. Also who whonts that much serucity? With php it keeps us progamers enmplyoped when a new expolite comes out every other day or your scripts soundly stop working becauses some one upgraded php. It is also way to easy and effsient to use ajax in ruby on rails, it should be done the old fashen way. Hard coding it right in to your half php and html mess. Affter all if it is hard to understand it means they can not replace you . And don't even get me started on how ruby and rails works with mysql. I like writing 1000 mysql comands in to my code. Where has the fun of that gone too? Where dam it!!! |
Author: | codemage [ Mon Apr 03, 2006 9:27 am ] |
Post subject: | |
This is an april fools' day joke, right wtd? Normally you'd take bits away for such blasphemy. |
Author: | rizzix [ Mon Apr 03, 2006 2:14 pm ] |
Post subject: | |
LOL |
Author: | Martin [ Mon Apr 03, 2006 9:02 pm ] |
Post subject: | |
It's because I'm learning it, isn't it? |
Author: | Andy [ Mon Apr 03, 2006 10:32 pm ] |
Post subject: | |
yes that is exactly right martin.. god forbid, can you imagine YOU learning something THAT useful? |
Author: | wtd [ Mon Apr 03, 2006 11:06 pm ] |
Post subject: | |
Martin wrote: It's because I'm learning it, isn't it?
Yes. Absolutely. |
Author: | Martin [ Tue Apr 04, 2006 3:53 am ] |
Post subject: | |
Andy wrote: yes that is exactly right martin.. god forbid, can you imagine YOU learning something THAT useful?
That's it. I'm going back to Obfuscated Perl and never leaving. |
Author: | Cervantes [ Sat Apr 29, 2006 9:04 pm ] |
Post subject: | |
http://www.bitwisemag.com/copy/features/opinion/ruby/ruby_debate.html Two programmers who apparently spend a lot of time with Ruby discuss it's downsides. Really, they don't mention too many distinct points. It's a pretty short article! compared to what such an article would look like for worse languages. |
Author: | rizzix [ Sat Apr 29, 2006 11:15 pm ] |
Post subject: | |
I think they have pointed out some very serious flaws. They are not simple flaws that can simply be ignored. Side-effects are a Bad Thing. But then again one can argue (for one of those points anyway..) that Ruby constants is like java's final, i.e. they do not denote immutability, but simply unchangeable references. Yet, it seems that people _expect_ ruby constants to include immutability... So that could (or should is say "should"?) definitely change. And then again the local variables and block scopes. That is a Terrible Thing. It has to change. Just imagine trying to debug code that has been affected by this side-effect. Oh the horror! And distinguishing between expressions and statements... oh well I'd really like to see how they do this for ruby without bloating the language or compromising it's functionality.. It would definitely be interesting.. |
Author: | Null [ Tue May 30, 2006 5:25 pm ] |
Post subject: | |
I'm confused. Is this a joke, or a serious topic? I should point out that I am incredibly gullable, and I often miss the true intention of obvious humour. |
Author: | Tony [ Tue May 30, 2006 5:27 pm ] |
Post subject: | |
for those who have not caught on, this was an April Fool's joke. Check out the post's date. Wow, that has been a while... |
Author: | Cervantes [ Thu Jun 01, 2006 7:04 pm ] |
Post subject: | |
Today is June the first. The following is not an April Fool's joke. I'm getting rather annoyed with Ruby. It's often classified as a scripting language, and now I am starting to see why. It's terrific for making small programs. When I say small, I mean less than one or two hundred lines. However, Rubidium has become quite a large project. It's currently sitting around nine hundred lines, all told. I imagine it would be way more in a less dynamic language like Java. Ruby's dynamic nature has allowed me to take many shortcuts and do many things that would otherwise require a lot more work. But that's just the problem. If C, from time to time, blows your whole leg off, Ruby, from time to time, surgically amputates your leg and then hides it somewhere you'll never find it. Ruby's dynamic nature makes it very difficult to trace the state of your program, thereby making it difficult to debug. Here's an example. I added a method called "join" to my class, but because that class is rather large, I forgot that I already had a method called "join" defined. Thus, this redefined the "join" method with the new definition. This caused my program to fail a particular case, and it took me quite a while to figure out why. In less dynamic languages, this would have produced an error right off the bat. Another problem comes with the error messages. For the most part, they're pretty great. However, when an error occurs in my program (I think it's because I'm using threads), the only error message I ever get is "in `gets': no implicit conversion from nil to integer (TypeError)". This tells me absolutely nothing, aside from the line number. Often times even the line number isn't so useful because the state of the program got unexpectantly changed at some previous point (a variable that was supposed to hold an Array now holds a String, for example). Finally, the debugging tools I've got are... well, they just don't exist. I've looked at Test::Unit, but it seems like too much trouble to set up. I've been working for a long time on this project in gEdit. I really want a full blown, free Ruby IDE, but such doesn't exist to the best of my knowledge. |
Author: | Tony [ Thu Jun 01, 2006 7:13 pm ] |
Post subject: | |
Cervantes wrote: Finally, the debugging tools I've got are... well, they just don't exist. I've looked at Test::Unit, but it seems like too much trouble to set up.
I would think that Test::Unit and Test::Functional come from Rake's unit and regression testing. More QA than debugging. |
Author: | rizzix [ Thu Jun 01, 2006 9:20 pm ] |
Post subject: | |
Seriously guys you have to learn to love statically typed languages. Take Haskell for example. Learn it and love it. It's structural type system is hard to beat. As for Java, it is popular for a some good reasons: #1] It works. #2] It's a simple language. (this is very very important) #3] It avoids TIMTOWTDI. (also important) #4] Has some fantastic IDEs, editors and other tools. (the best out there) #5] It has some good backing by some major firms. #6] Large community. Being statically typed is also an advantage, since quite a few troublesome errors are caught at compile time. Yet it has it's drawbacks: fixing an error, changing the results or changing the logic, even just a little bit, requires recompiling the entire class or program (this also means that one has to restart the web-application server at times, just to see the updated results). For this reason the J2EE world makes good use of XML/annotations with resource bundles and "scripting" frontends. That's one way to resovle the issue, but dynamic languages like Ruby do not require this. |
Author: | Andy [ Mon Jun 05, 2006 4:25 pm ] |
Post subject: | |
oh and you forgot about #7] It teaches you to be lazy |
Author: | wtd [ Mon Jun 05, 2006 4:47 pm ] |
Post subject: | |
Oh no. A functional language really teaches you to be lazy. Java is pretty far removed from functional programming. |
Author: | [Gandalf] [ Mon Jun 05, 2006 5:11 pm ] |
Post subject: | |
What I think you're not taking into consideration, wtd, is that lazy can also mean: "Please, I don't want my brain to explode!" TIMTOWTDI? Sigh... how are you supposed to keep track of all these acronyms? Had to go to wikipedia for that one. |
Author: | wtd [ Mon Jun 05, 2006 5:21 pm ] |
Post subject: | |
That particular acronym is quite famous. And lazy has only one true meaning to a programmer. Laziness is something which reduces overall expenditure of effort. Like properly factoring out basic functionality to avoid duplication of effort. Programming features that aid laziness are things like anonymous functions. Anonymous inner classes may have their use, but anonymous function represent significantly less syntactic and semantic overhead, and can serve much the same purpose in most cases. The Java language lacks this ability, and thus is not aiding laziness as much as it could be. The Java library is not written in such a way as to easily adapt to such language features in other languages which target the JVM, and thus does not aid laziness. |