-
-
Save alex/c8188956cd66c38feb1f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Ruby Mistakes | |
============= | |
* Using blocks for looping and callbacks | |
* break/next/return semantics in blocks extremely bizzare | |
* And they have different behavior in procs vs. lambdas | |
* Why on earth does defined? return a string? | |
* throw/catch. Why! | |
* Inline rescue, no ability to specify what exception (and by extension, "catch | |
anything" behavior common in community) | |
* Mutable objects have a hash method and can go in Hashes. Why!!! | |
* Extremely complex grammar, makes barrier to entry for implementation much | |
higher | |
* Special case of flip-flop and regexp in an if statement (only if it appears | |
syntactically though!) | |
* Setting `$=` to something truthy causes all string operations to become | |
case-insensitive. This and other magic globals from perl are mind blowing. | |
* Keywords that silently override methods by the same name (defined?, on | |
Rubinius block_given?) | |
* `f {}`. Tell me what the parsing of that is. | |
* proc, lambda, block, method, unbound method, functions. None of which have a | |
clear relationship. set_trace_func exists, even though you can't pass | |
functions around. | |
* Bizzare magic:: | |
def f | |
Proc.new | |
end | |
f { |x| 3 } | |
How does ``Proc.new`` know where the block came from? | |
* Ruby's module system makes namespacing optional (and off by default). | |
* Regexp with named matches decompose into local variables. Dear lord why. | |
* Encoding system is beyond broken | |
* Scopes: constants, class vars, instance vars, methods, locals. wtf. | |
* Constants aren't constant. Truth in naming. | |
* Thread locals are really fiber locals. | |
* You can change the encoding of a string. Just jesus christ wow. |
@Nek selective context "...because it doesn't work the same way as in a language I'm used to" This is basically frivolous bickering about the language which we shouldn't be having. The OP is clearly trying to point out what he perceives as flaws in a language without much basis. It's the same thing as saying "that car is red so it must be horrible."
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This reminds me of the blub paradox...