David Heinemeier Hansson (DHH)
๐ค SpeakerAppearances Over Time
Podcast Appearances
You take a generic language like Ruby and you tailor it to a certain domain, like describing relationships in a database at a object level.
And this is one of those early examples where you can do user has many comments, belongs underscore two space colon account.
Now you've set up a one-to-one relationship before we had a one-to-many relationship.
Rails is rife with all these kinds of domain-specific languages where...
And sometimes it doesn't even look like Ruby.
You can't identify Ruby keywords.
You can just identify what looks like keywords in its own programming language.
Now, again, I know that Lisp and others also do this stuff.
They just do it with the maximum amount of line noise that can ever be crammed into a...
Programming language, and Ruby does it at a level where you cannot tell my metaprogramming from Matz's keywords and with zero line noise.
I've actually never written any real Lisp myself.
Because I have two eyes and I can look at code and my aesthetic sensibilities forbid me to even go much further, which is a limitation, I know.
I should actually dive into Lisp because I found that I've learned a lot just diving into, maybe I'm insulting Lisp again here, but the past of programming languages.
With Smalltalk, for example, I think Smalltalk is a incredible experiment that also worked, but isn't suitable for today's programming environments.
It's the essence of what makes Ruby Ruby.
This is why I don't fully understand when people call for Ruby to add static typing.
Because to me, it's the bedrock of what this is.
Why would you want to turn one of the most beautiful languages into something far uglier?
This is one of my primary objections to Ruby.
static typing it's not just that it limits you in certain ways it makes metaprogramming harder i write a bunch of metaprogramming i've seen what it takes to do metaprogramming in typescript that was actually one of the things that just really sent me on a tear of getting meta or getting typescript out of some of the projects that i'm involved with we pulled typescript out of um