Hacker News new | ask | show | jobs
by thegenius2000 3468 days ago
I couldn't disagree more strongly. DSLs are at the heart of efficient programming because they encourage separation of concerns; that's why the Unix shell is so powerful, fundamentally it's a collection of different programming languages with well-defined interfaces for communication.

Secondly, personally speaking I've never had much difficulty understanding programming languages I'm unfamiliar with provided their syntax is sufficiently similar to those I use. For example, I've never much worked in Ruby but glancing at Crystal there's nothing really confusing about its syntax. Yes, we see new languages popping up here almost weekly, but we don't see new paradigms: usually most of the stuff here is procedural and on occasion it's functional. Furthermore, having seen the remarkable benefits the introduction of different paradigms has had for the community at large (think about a world without LISP for a moment) I for one believe we should encourage the development of new and strange ideas; most of them will fail, but every so often we might get a new world.

2 comments

>>I've never had much difficulty understanding programming languages I'm unfamiliar with provided their syntax is sufficiently similar to those I use...

Oddly enough, I've just been thinking the opposite. I've been looking for a compiled language to learn, to add to my basic tinkering knowledge of Python.

From my shortlist of Crystal, Go and Nim, I opted to look at Nim first, as it has the most Python like syntax. I've actually found that to be a hindrance. Nim's close enough to Python that it fooled me into thinking it would be a doddle to learn, but just different enough that I constantly run into compilation errors from assuming [yes, I know!] that basic language constructs will be written the same in Nim as they are in Python and then falling foul of some subtle difference.

I'm actually considering moving my sights to Crystal or Go now, in the belief that they'll be different enough from Python for my brain to jolt out of 'muscle memory' mode and pay more attention to taking in the 'new stuff'.

Just learn C or C++. There are way more materials for learning them, and it's certainly different from python. You'll learn things that you would never learn while writing Python, which is the goal.

If you know C++ and Python, you can pick up most mainstream languages. If you learn a more functional language afterwards, you'll basically be able to pick up anything.

Then rather checkout pony, which has a better type system with guaranteed no deadlocks, is modern and currently the fastest native language, and much to write than C++, Go, Nim, Erlang or ruby. Only Elixir with its macros is easier, but ~10x slower.
I used to love DSLs. But recently I've become a fan of code I can look at and follow with my eyes. Debugging a nil error deep down in some nested macro magic isn't really as fun as it used to be (looking at you ActiveModel validations).

Foo.bar(args) is preferable to bar(args) to me.