- #1
Kajahtava
- 106
- 1
I was just reading this, it's just so pervertedly ad hoc, it kind-of makes me sad in a way. I've been reading at a lot of places that Ruby is 'elegant', I can't see it, it's just adding language construct after language construct, feature after feature with no internal cohesion to it, it's just adding more and more and more to the point that's no longer feasible to write a formal specification on it because I doubt even Matz himself really knows what exactly is going on here, all he knows it that it seems to work.
Python, Perl, same thing, it's just so ad hoc, it's kind of depressing that some university's even switched from Scheme to Python as an example language, there's no internal cohesion in Python, it's almost impossible to explain to any-one exactly how Python works on a formal level, it's a language people learn by trial and error. Since PHP 5.3, PHP apparently supports 'closures', how they implement this is really a profoundly ugly hack that just shows the language was never 'designed' and they just tried to add features later which conflicted with earlier choices. It's like the difference between physics where almost every-thing can be shown to follow from the standard model and sociology where each situation has completely unrelated foundations and changing one won't affect the other. It's not only ugly, it also hampers performance on a practical side and mutilates the brain of programmers who no longer understand what they are doing. It's the difference between having studied English on a linguistic level and understand the grammar, knowing how the words and morphology came to be, and just being a native speaker, sure, you don't make errors when you're a native speaker, but you don't really know why what you do is wrong or right and you can't explain it.
In the end, these languages seem to want to be some hybrid of Lisp of Smalltalk, or at least, gain the sheer expressive power both Lisp and Smalltalk have but just implement that power by creating dedicated language constructs for them which often contradict each other outright and then having to define an order of praecedence and so on. Closures can be implemented in Lisp and Smalltalk easily, it just follows out of the language, it doesn't need such absurd syntactic features to have variable-length functions. You can easily define functions/methods including a parametrized name in a loop in Lisp without having to convert a string to a method name in such a ugly fashion, it's not a thing that was built into the language just for that, it can be implemented from how the language is built concisely, the same way you loop 99-bottles because that language was designed by considerate thought, not just adding feature after feature.
It'd be almost impossible to compile any of these languages because they're just so damned laden with bloated bells and horns, you'd have to compile 90% of the interpreted with it. And no, having higher order functions, dynamic typing, and eval-constructs does not imply a language is hard to compile. In fact, McCarthy's proto-lisp whence originated all these things was compilable in months, a record at that time because that language for its time was simply utter and utter brilliance. It wasn't just making a language attractive by adding feature after feature, it was brilliant and original from the first stone on. Hell, Haskell at some points compiles with higher efficiency than C even though higher order functions are the cornerstone of that language.
It makes me sad...
Discuss... (praeferably disagree, I feel like a good debate)
Python, Perl, same thing, it's just so ad hoc, it's kind of depressing that some university's even switched from Scheme to Python as an example language, there's no internal cohesion in Python, it's almost impossible to explain to any-one exactly how Python works on a formal level, it's a language people learn by trial and error. Since PHP 5.3, PHP apparently supports 'closures', how they implement this is really a profoundly ugly hack that just shows the language was never 'designed' and they just tried to add features later which conflicted with earlier choices. It's like the difference between physics where almost every-thing can be shown to follow from the standard model and sociology where each situation has completely unrelated foundations and changing one won't affect the other. It's not only ugly, it also hampers performance on a practical side and mutilates the brain of programmers who no longer understand what they are doing. It's the difference between having studied English on a linguistic level and understand the grammar, knowing how the words and morphology came to be, and just being a native speaker, sure, you don't make errors when you're a native speaker, but you don't really know why what you do is wrong or right and you can't explain it.
In the end, these languages seem to want to be some hybrid of Lisp of Smalltalk, or at least, gain the sheer expressive power both Lisp and Smalltalk have but just implement that power by creating dedicated language constructs for them which often contradict each other outright and then having to define an order of praecedence and so on. Closures can be implemented in Lisp and Smalltalk easily, it just follows out of the language, it doesn't need such absurd syntactic features to have variable-length functions. You can easily define functions/methods including a parametrized name in a loop in Lisp without having to convert a string to a method name in such a ugly fashion, it's not a thing that was built into the language just for that, it can be implemented from how the language is built concisely, the same way you loop 99-bottles because that language was designed by considerate thought, not just adding feature after feature.
It'd be almost impossible to compile any of these languages because they're just so damned laden with bloated bells and horns, you'd have to compile 90% of the interpreted with it. And no, having higher order functions, dynamic typing, and eval-constructs does not imply a language is hard to compile. In fact, McCarthy's proto-lisp whence originated all these things was compilable in months, a record at that time because that language for its time was simply utter and utter brilliance. It wasn't just making a language attractive by adding feature after feature, it was brilliant and original from the first stone on. Hell, Haskell at some points compiles with higher efficiency than C even though higher order functions are the cornerstone of that language.
It makes me sad...
Discuss... (praeferably disagree, I feel like a good debate)