ludamad on programming languages

Posted by ludamad on April 16, 2009, 10 a.m.

Hey I'm at school right now, so I decided to blog about the only thing that matters: programming. I have quit all serious Game Maker work for a while now, but I still keep an eye out on the community.

And, for those who care and those who don't, here's my opinion about the various programming languages I've encountered.

GML: I started GM when I was 9. Before that I used RPG Maker some, well I still used it after seeing GM because GM was of course confusing at first. I've had many fond memories of GM coding but I can comfortably say GML is a horrible language. Major gripes include lack of fundamental data structures, I mean since when are data structures something you have to PAY for? Not only that but the current data structures are not implemented seamlessly at all, and cannot, for example, store an array as the value in a map. Huge type safety problems are another huge concern. (map0+sprite0+2.0) & 1 doesn't error. Everything in GM is either a string or a number/index. Numbers and resource indexes are not distinguished when they really should be. As well, the names of arrays implicitly access the 0th element, which is in my opinion a poor choice. The array name should represent the array. All that being said, GM's coupled room editor and sprite editor in one package made rapid development easy. Also, if GM was any better I might have never broadened my horizons.

C++: My one true love. C++ knows that as much as I fool around with other languages, I will be back to it. C++'s class sytem, while imperfect and impure, remains my favourite class system in any OOP (well arguably C++ isn't OOP, but still) language. The reason? It is the only one that has stack objects as the default, meaning no overhead from dynamic allocation and no using tons of primitive types just for performance reasons. The ability to use C-style programming techniques is a big plus too, because they are sometimes the most logical. Templates are a godly feature, it isn't surprising that C decided to implement them retroactively. The only gripes are lack of any standardized graphics library (arguably out of the scope of the standard library, but still really useful for rapid development even if its less efficient than handcoding), lack of standardized threading (coming soon), and lack of class imports between CPP files (hope its coming soon, but I doubt it).

Java: I initially was a bit too hard on Java. While it isn't the slow, demonic C++ ripoff from hell I initially thought it was, it isn't really as well executed as it could have been. The main issue, and there is no getting around this, is that Java uses dynamic allocation for _everything_. You best be prepared to use a ton of primitives if you want things on the stack - which completely erases all the usefulness one would get from an OOP language. If you're writing something performance-tight like a chess engine (which I am), you really gotta use tons of arrays and not making any classes (other than ones with purely static members). This is really the only big problem with Java in my view, but it is an extremely annoying one. Java for one reason or another chooses not to implement any macros, or templates. This while annoying is manageable, the compiler is typically smart enough to realize if (true) will always happen, and inlines functions for you. But this is especially annoying when you want to create a generic data structure. Java introduces generics, which are like templates that resolve at run time. The problem is they would still never have the performance of a templated data structure, especially if you want to map an integer to another integer (you have to use the object system for that, a real pain).

Assembly: Oh joy. One of my favourite languages to play around with. The people who freak out about assembly being arcane or hard are overreacting in my view. I don't use assembly for anything serious at the moment, but there is something to be said about being in control of _everything_. FASM is definitely the way to go if you want to get into practical assembly. FASM itself was written in assembly, and has many macros that can decorate your assembly code like a higher level programming language.

Ah bell. Got cutoff. Cya, will finish later.

Comments

Xxypher 15 years, 1 month ago

I only use GML. It is the only langauge I need until C++ is added to Game Maker.

RetroX 15 years, 1 month ago

C++ will never be added to Game Maker. It will to ENIGMA, thus making ENIGMA the ultimate Game Maker.

Juju 15 years, 1 month ago

Construct? Don't know much about it but it sounds interesting.

TDOT 15 years, 1 month ago

I agree with you on having a standard graphics library, even if it was abundantly simple. A lot of times, I think, many programmers get bored when all they see on screen is text for the first months of their programming experience. Everyone likes to see something a little more tangible on-screen.

Xxypher 15 years, 1 month ago

That is why I started with tutorials.

Myth 15 years, 1 month ago

I suggest learning BRAINFUCK. It's a simple programming language made of only 8 simple commands. You'll only need a compiler which is only 200kb, and a text editor.

ludamad 15 years, 1 month ago

Are you implying I don't know brainfuck?

Xxypher 15 years, 1 month ago

That seems boring and hard to master.

s 15 years, 1 month ago

I suggest Myth learn that brainfuck was designed to have the smallest compiler for a turing complete language, and that the implementation can be much smaller than 200KB

Xxypher 15 years, 1 month ago

It seems like a waste of time to use.