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

ludamad 15 years, 7 months ago

Xxypher: I hope you realize it isnt a serious language

TDOT 15 years, 7 months ago

Holy…..

It actually exists. I thought it was just some odd thing Myth decided to post. XD

mesenberg 15 years, 7 months ago

u ever tried any of the BASIC's before?

Polystyrene Man 15 years, 7 months ago

I wrote a program on my calculator the other day. It could count to ANY number. I was proud of it.

NoodleNog 15 years, 7 months ago

BF is probably the easiest language to learn. Nevermind programming anything practical in it though.

Also, Poly I highly doubt that.

ludamad 15 years, 7 months ago

It exists, but it's a joke language so to speak, in that it isn't designed to be 'good'.

Nighthawk 15 years, 7 months ago

The fact that BASIC isn't on your list says far more about your opinion of it than having it there ever could. ;)

Acid 15 years, 7 months ago

Could someone point me in the direction of some good C++ examples. TDOT is right, at least in my case.

SixWinged 15 years, 7 months ago

No Python?

TDOT 15 years, 7 months ago

Acid,

As far as I know Cplusplus is probably the most complete set of tutorials you can get online. But, like luda said, C++ doesn't come with standard graphics library. You have to pick up an API, which takes a fair amount of knowledge in C++ to use. Basically, there's no way to avoid the months it takes to get a foundation (pretty much exclusively writing console applications). But, whenever you do get to graphics, I'd recommend SDL to start you off. It seems to be what most beginners turn to (and what I plan on using :p )