JustBoo wrote:In 27 years time, every time I’ve tried “programming outside the box” using some scripting language or some 4GL/5GL language I ALWAYS ended up fighting, either the lame language itself or some nut-job constraint the language author put there to “help me.” I get frustrated when I have to write 300 lines of code in some goofy language to overcome a bad design choice by the authors when I could have done it in ten lines of C++ code. Can anyone (a professional) deny this has happened to them as well? Many of these “new” languages promote programming on a Rail. Not much thought required. Hell, one even named itself appropriately. Ruby on Rails. With C# (which I do use when appropriate) you too can write The-Next-Big-Astonishing-Never-Before-Seen-WinForms-Tied-To-A-Database-App. Woohoo.
Finally I hear this from somebody else
I attribute this to the fact you get used to the luxury of C++. You get features and responsibility. The first is nice, the latter is easily got used to after some time. Going down to some other language means loss of features, or heck even receiving artificial limitations as a bonus. Outcome of this is frustration.
What I always grunt about for this reason is Java. It has an unfinished type system which, after it introduced generics, produces an unreadable and tiresome to write code (give me my typedef dammit!
). It has a standard library that was designed by a monkey probably, because there is no way this would be designed by someone thinking about practical usage (think XML handling for example). Thus all the
apache libraries that try to replace the chaos in the standard libraries have to be used instead (sure, some of them actually add missing functionality, but that does not matter much). Thus a library like
Joda time has to be used instead of the built in date-time classes. What puzzles me, for example, is that there is a foreach construct in the newer java versions, but it does not have a reverse iteration variant. Why can't I use primitive types in generics? (I know an answer to this, but it is stupid: Because it would mean operator overloading, which is a big no no
)... and it goes on and on...