D-etractions A real world programmers view on D
Jacob Carlborg
doob at me.com
Wed Sep 5 04:49:43 PDT 2012
On 2012-09-05 09:14, Nick Sabalausky wrote:
> Totally agree. Although the odd thing with Ruby though is any time
> I use it I feel like I have no idea what's *really* going on. Maybe
> it's the lax parsing rules, or maybe I just need to learn it better, I
> dunno. But yea, I'll agree AS2/PHP are to dynamic typing what C++/Java
> are to static typing: Bad examples ;)
As with all things: that's the beauty, but can also a problem. The fact
that you can call a method without parentheses is one of the things
making it possible to create so nice looking DSL in Ruby.
But if you don't know the rules or every detail of the syntax that can
cause problems. Example:
a = { :b => 3, :c => 4 } # associative array
b = :b => 3, :c => 4 # syntax error
def foo (arg)
end
foo(3) # ok
foo 3 # ok
foo { :b => 3, :c => 4 } # syntax error, conflicts with the block syntax
foo :b => 3, :c => 4 # ok
foo({ :b => 3, :c => 4 }) # ok
Then, as with all languages, you can do stupid things. For example, in
Ruby it's possible to overwrite the whole standard library:
class String
# overwrite the upcase method to return lower case
def upcase
downcase
end
end
This can also be really useful. You can fix a bug in a library, but put
the fix in your own project. No need for recompilation or distributing
patched versions of libraries. The fix is distributed with the rest of
your project.
But you can do just as stupid things in C or D. For example, you can
write to arbitrary memory address.
--
/Jacob Carlborg
More information about the Digitalmars-d
mailing list