4 ms·
Hmm, I'm not so sure about this. Ruby's tooling is obviously not as advanced as a language like Java, for many reasons. But terrible isn't the adjective I'd us
by matthewmacleod 11y ago
Hmm, I'm not so sure about this.
Ruby's tooling is obviously not as advanced as a language like Java, for many reasons. But terrible isn't the adjective I'd use. It's pretty easy to use editor integration to provide pretty decent automatic formatting, linting and code completion. Pry-debugger is pretty great, and generally I don't find working in Ruby to be markedly more taxing that other languages.
I guess YMMV, though.
- braythwayt 11y ago> automatic formatting, linting and code completion You are describing tooling that is used to write code, but not to read or debug it. And Ruby is exceptionally easy to write without any tooling whatsoever. The hard problem with dynamic languages is reading the code and understanding what it is doing at run time. And that is where TFA suggests Ruby is terrible.
- davorb 11y agoI used to think that it was fine, but then I started working with LISP and SLIME, and the difference between that and what's available in the Ruby-world is striking.
- x0x0 11y agoFor a short while, I thought about taking a stab at building the above. The thing that stopped me is I couldn't figure out how to get paid, and I'm not independently wealthy.
- Gibbon1 11y agoOne the way to reading about something else, I read an essay by a language developer complaining about type erasure. In functional languages. In short, when you get to the point in implementing a language where you can do type erasure, you're golden because it usually means you have things nailed down. Unfortunately then people actually implement type erasure and now there is no way to link data structures in memory with a piece of code at run time. Or at least very easily. As an example C/C++ does erase type information. There often being nothing that tells you what an object in memory is. But compilers take great pains to preserve that information in the generated output formats. Which allow you to write debuggers. I'm sure languages like Java and .net do the same.
- steveklabnik 11y ago"Tools" can mean different things in different contexts, and this isn't the type of tooling Avdi is talking about. For example, I agree with Avdi's post, but Bundler is an amazing, wonderful tool.
- matthewmacleod 11y agoHe says (among other things): We wait for our CI servers to tell us about potential code smells instead of our editors pointing them out to us as we type. so I'm not sure about that. Sure, debug tooling is a different matter – but like I pointed out, it's hardly terrible in Ruby either.
- deleted 11y ago[deleted]
- sqeaky 11y agoPry debugger is great when or if it works. On windows this is generally impossible, even on Ubuntu it is spotty. Debuggers for other languages just work. Then there is also a ton of tools Avdi didn't touch on like silent failures from gem, that bundler is not installed by default, that editing code at runtime damages what kinds of inspection can be done, many gems are platform specific, how underspecified Ruby is and in general I find few things can be relied on. In other languages I find that what I can rely is much larger than in Ruby. If it didn't pay so well I would have dropped Ruby a long time ago because the language is composed of so many half measures.
- spoiler 11y agoDo you have an example of when Pry was being spotty? I've never had a single issue with it (on Ubuntu, too). There are certain scenarios where you can expect Pry not to work "as expected" due to the nature of the language. If you expected it to work, it means you're just not acquainted with the tool/language. Same can be said about any tool or language, not just Pry or Ruby.
- pkhagah 11y agoDon't know if it's still valid, but, when ruby 2 came out pry wasn't working with that. Not just that it wasn't working, it actually starts and then when I print some variable, VM crashes. I spent few hours thinking my code was wrong and finally finding out pry doesn't support the version of ruby I'm using.