I hope I don’t need to check into a psychiatric institute…
My first thought was to wonder if “brainwash by torture” could be considered a programming language, then I realised that torturing and brainwashing innocent people might be almost as bad as programming in the long run.
I used to be a “C++ programmer” – who got sick of trying to understand all the shit between the (stupid) bolts that don’t fit their holes. Now I’m a C programmer with a few mostly harmless C++ conveniences: static namespace variables are cool and clean, member functions can be nice, and gotta have operator overloads (only) for vector math
I used to hate C++ much more, but this minimal C++ approach is cool with me for now.
ALSO! I don’t drink alchohol, for many reasons. (not 21, have heart condition; wouldn’t drink anyways)
With a good IDE (so it tells you when you are creating a freaking global variable instead of modifying an existing one, for example) and some frameworks like, say, JQuery, to mitigate things, it can almost feel ok to code with it, as long as it is with smaller projects - I still don’t quite understand why languages that are fine with small, quick-and-dirty projects like that ended up being pressed in use for massive projects.
And often, you don’t have much of a choice anyway. I thought Dart could be a replacement, but it seems that no-one other than Google is interested in having a second scripting language for Web pages…
I intend to learn C# and Ada in the near future. and maybe Lua and Go at some point later. Any opinion on those?
My programming experience is very limited so far (mostly Java, if you must know), but I’ve looked at Go and tried some simple things with it. Interesting language that has a few awesome concepts, but I’m not sure if I have a project yet that I’d use it for.
Personally, I don’t find JS all that bad (I actually rather like it for doing quick & dirty stuff), but as @XeonXT_ pointed out, I have yet to find my perfect language. I’ll report back in, oh, 20 years or so whether I’ve found it.
That said, on a more serious note, it seems to me that it will always be a matter of finding the correct tool for a project, and there’ll never be a tool that can do everything perfectly. And knowing which tool to use for which task is a core part of IT, IMHO. But we can dream, right?
C# by far has the best pleasantness to power ratio of any language I’ve ever used. Tools are great, debugging is easy, perf is really good, class library is great, powerful language constructs like LINQ, and the syntax is easy to work with. I use C# as much as I can in all of my personal projects. Sadly game engines are still written in C++ for very good reasons so I spend most of my time working with C++ however we want to do our game logic in C#. These days I’m most interested in functional programming and I’m considering writing all of I:B’s backend stuff in F#.
To Keith, I don’t see why you found C# necessary at all. Programmers mistake themselves for trying to pretend now’s the time to make everyone competent of programming (Windows 8 ?) without really leveraging their own performance. The beauty in abstraction’s principle is grossly misunderstood. Onion farming/cuisine is not abstraction.
You need to learn how large software projects can look without all the rubbish modern paradigms dress them with. Programming will become much more satisfying and lucid if you force yourself to get past the inapprehensive garbage being thrown around by clueless, talentless programmers.
I know; most C programming you’ll find looks terrible, but that’s the reason why people felt C++ (and so on) was necessary. This shitty C code is created by the people who didn’t apprehend how to work with it. C isn’t explicit about programming style. Neither is C++… Neither is any language I know of, for that matter.
If you ever find C written by someone who craves beautiful, corporate, understandable code; it just makes most modern languages look quite absurd and detracting. When I started programming, I somehow developed this style independantly, but as I learned languages such as C++, programming became unpleasant and the delight behind deducing new algorithms every minute of programming was irradicated by semantic jesting.
I don’t think “modern paradigms” are the cause of rubbish-laden software projects.
Clueless, talentless programmers are generally the cause of crap software. Some tools make it a lot easier to write crap software, but if you know what you’re doing you should only ever be picking the tools to match your usecase.
I’m not claiming to be a programming expert, because I’m not. But I’ve been working in the industry for a few years now, alongside very experienced professionals, and it’s painfully clear when legacy decisions of convenience made at the time are causing my colleagues problems.
I’ve had good experiences with Objective-C. Recently it has gotten some nice new features that make it much more pleasant to use. The two biggest one for me are “Blocks” which are basically closures with a different name, and ARC (automatic reference counting) which seems a lot like garbage collection but isn’t. My favorite library OCTotallyLazy adds some functional programming stuff that, I admit, have a bit of a learning curve, but make the language much more expressive and powerful.
Of course the downside of Obj-C is that it’s pretty much only used on Mac and iOS. It can run on Linux with GnuStep, but without Apple’s Cocoa libraries. It can also be cross-compiled to Android with Apportable, but I don’t know how mature and flexible that is. It can probably run on Windows too, but I’m sure there are considerable hurdles.