Does GML coding make you an inferior programmer?

Artwark

Member
To me, as long as you know what to do, GML coding is the most simplified coding I've ever learned. Granted, I still have a lot to learn in this but as far as my intermediate knowledge is around, I think I can safely say that this language is easy to get into.

That being said, I wonder if learning and using this language will make you feel like you aren't a "Real" programmer who learns C++ and does lots of coding to implement even basic character movement.
 
P

Paolo Mazzon

Guest
C++ does not make you a "real" programmer, GML is just as much programming as C++, its just that C++ is much more difficult to use in parts (Because C was designed to be basically just more readable, convenient assembly). But here is a good counter-question, what is an inferior programmer? Someone who's bad at programming perhaps? I think it's best if you drop all self-consciousness with your programming ability; who cares how good people think you are?
 
D

Dengar

Guest
I don't believe it makes you an 'inferior' programmer. a programmer is still a programmer.
frostycat beat me to it. but well said
 

Artwark

Member
C++ does not make you a "real" programmer, GML is just as much programming as C++, its just that C++ is much more difficult to use in parts (Because C was designed to be basically just more readable, convenient assembly). But here is a good counter-question, what is an inferior programmer? Someone who's bad at programming perhaps? I think it's best if you drop all self-consciousness with your programming ability; who cares how good people think you are?
Well I'm not a professional programmer and all as I just do game maker as a hobby thing. I'm in more of a game designer field aspect. I lack in programming skills but GML is making me like programming to some extent.
Yeah, I guess you're right though. It doesn't really matter what language you learn so long as you get the job done in it.
 

FrostyCat

Member
Any programming skills is universally applicaple anywhere. I've learned much from GML that I can use in C# and vice versa.
That's not necessarily true, and I didn't learn that until rather recently.

Both GML and C# are imperative, structured and based on standard curly-brace syntax. Of course it's easy to learn C# after GML, they have so much in common. It's the same reason why French speakers find it relatively easy to learn Spanish or Italian. But change the language to declarative (Haskell, Erlang, etc.) or non-structured (Assembly, shell/batch scripting to some extent), how well will you adapt?

I took a programming language analysis course in university exploring syntax and the declarative/imperative divide, with some exercises in Haskell and Prolog. I did just fine with a small handful of others, but a large number of otherwise well-performing students were completely shut down by the paradigm shift. It's the mirror on the wall that shows who genuinely think like a programmer and who are actually just slaves to a single school of thought.
 

Nux

Member
GML requires just as much abstract and logical thought as any other programming language, the only difference is it's an environment to build games - compared to python which is a scripting language
Different uses for different languages.
 
Last edited:

Mercerenies

Member
Came here to share my opinion, but Frosty pretty much said everything I was going to say. Expand your horizons; don't ever assume you know all you need to know about programming. I read an article a few years back that recommended learning a new language that challenges you every year, to keep your brain fresh and willing to accept new ideas.
 

Cantavanda

〜Flower Prince〜
I agree with almost everything said above. But is it inferior or not? Depends on what you want to do. One thing that makes it inferior is that GML is limited to Game Maker only. C++, Javascript or LUA for example are used litirally everywhere, so those are more "versitale", that doesn't mean better or something, just more common. If you want to make websites or OS's, then it is inferior, since you will be limited to GML, and you'll have to learn more languages. But if you want to make apps and games, it is VERY good, and not inferior in any way.
 

KurtBlissZ

Member
It depends on what your wanting to do.

A lot of open source projects, I wish I had the know how to contribute in them but I don't know where to start, I only know GameMaker; I can barely contribute to the Raspberry Pi community.. Now if I wanted to make a game or maybe an app on android, I could do that.
 

MishMash

Member
Hah! You think Real men program in C++?? real men write their own program languages + compilers, none of this pre-made language nonsense. Infact.. Real men build their own CPUs with custom instruction sets, because using all this user friendly plug and play CPU sauce makes you weak! To be honest, I am part of an elite group who think the only REAL men left are the ones who go out every morning and mine up the silicon to build their own transistors from dust.

On a serious note, in my experience, the programming language is less relevant, but rather the experience is what makes you a better programmer. Working in other languages helps you get better, but in a way, understanding design patterns and program design, focusing on data encapsulation, modular design, inheritance systems, components, Model-View-Controller based application design etc; is far more important when it comes to keeping projects clean and succinct. Other languages do help with this understanding, as to an extent, OOP langauges enforce a form of data encapsulation by default.

Though recently, i've actually gone full-circle, I went through a phase of not liking GML for its limited features, but have grown to like it a lot again, though thats more to do with the way things like resource management and instance creation work in GM (Using object pools/having garbage collection in languages like C# is really awkward for games IMO).

At the end of the day, the langauge is what enables you to make your game, if you enforce reasonable habits with GM, then its as legitimate as any other language. You can write bad code and great code in any system, though I will say GMs simplicity and more relaxed nature can make it hard to learn good habits in the first place, so.. In short, learn other languages.

Real programmers learn to make use of the best tools available to them and more importantly use the most relevant tool for the task at hand :)
 
C

ConsolCWBY

Guest
Learn this:
MarioLANG
Become 1337! :p
(joking)
The more you program, the more addicted you will become! Then... nerdom is all you base! :)
(In other words, I concur with all of the above!)
 
Last edited by a moderator:
M

Matthew

Guest
Yes. If you program only in GML, you'll never understand real OOP, or how classes work, or LINQ, or inheritance, or overloading, and you'll lag behind on important design patterns.
 

Mercerenies

Member
Yes. If you program only in GML, you'll never understand real OOP, or how classes work, or LINQ, or inheritance, or overloading, and you'll lag behind on important design patterns.
Okay, Matthew, since that's actually a genuine point, I'm going to give it a genuine rebuttal. Most of those are good points, but I have to take issue with LINQ, inheritance, and overloading. Inheritance is available in GML. You can only override 16 times, for the 16 user defined events, but it certainly can be done, and often you only truly need two or three overrides. LINQ is incredibly language-specific to .NET, so it's hardly fair to say you're an inferior programmer for not knowing <specific thing only available in one class of languages>. That would be akin to me saying "I'm a better programmer because you've never used Erlang's Phoenix Framework" to a successful C++ developer.

Concerning overloading, I am very happy to be noticing a trend in more modern languages against overloading. More recently designed languages seem to be favoring the Python-ism of defining a function once while supporting variable arguments, rather than defining it multiple times under the same name. The "single-definition" idiom is much more straightforward when it comes to higher-order usage, whereas overloading gets very complicated if you want to reference functions in contexts other than calling them. All overloading does is make the function's signature a part of its "identity", something that traditionally only consists of its name and (in some languages) its arity. So IMHO, the costs outweigh the benefits, and I'm happy to see a modern trend away from it.
 
M

Matthew

Guest
Those are called "generics". You can use them in place of overloading, if you'd like. While LINQ was originally designed for .Net, it's been ported to many other languages, notably that none of them are GML. Much more than "Erlang's phoenix framework".
 
A

Alessio

Guest
Unless you have a "programmer pride", you shouldn't care as long as your goal is to make a game using Game Maker as a tool. I believe so.
Other people use Clickteam Fusion or Construct 2, which is less programming-focused than Game Maker but are anyway fine tools.
At the end of the day, what's important is the game, not the programming language you used. Unless programming is your passion and just want to make a game from scratch like Amaya did with Cave Story.
 
F

frog

Guest
To me, as long as you know what to do, GML coding is the most simplified coding I've ever learned. Granted, I still have a lot to learn in this but as far as my intermediate knowledge is around, I think I can safely say that this language is easy to get into.

That being said, I wonder if learning and using this language will make you feel like you aren't a "Real" programmer who learns C++ and does lots of coding to implement even basic character movement.
GML is really cool. If you wanted to go learn C++ or C# right now, you'd have to basically start from the basics and learn OOP. That's one thing GML doesn't really deal with. The languages don't really get any harder to program, the basics are the same in every language. Strings, arrays, some kind of event callback system, etc. The difference is when you want to write a big program, or a program that deals with a lot of information, languages that support classes and objects start making a lot more sense than scripting languages like JavaScript, Actionscript and GML. What gets tricky is of course all of the new syntax you'll be required to learn, but then on top of that how to use all of these classes and objects and tricks to make your software work and work well. I wouldn't say "real" programmer, or "fake" programmer. You can take a programmer who is really good with low-level stuff, who can write programs that can fold a 3D model inside out or something... and then you can have a programmer who can write a piece of software like Facebook... and then you can have a programmer who can write a piece of software that can hack into the pentagon. And these people are all doing very different things for very different reasons. All can be considered masters of what they're doing, but the language you use is just a tool and each tool has strengths and weaknesses. The benefit of GML is that it's quick, simple and that it allows you to get right to work making games. For that reason, it's actually better than C++ like Unreal uses, which is a catastrophe of proprietary stuff that just looks like Megatron puked in the editor... it's like, I thought I was making a game.

Never feel like you're inferior to anyone. If you needed to learn C++ you would learn it, right? Of course. It's just not useful for you for what you're doing, so you're smart enough not to waste time on it just because somebody else wants you to feel bad about yourself. I was there, once. I made graphics for some guy's game and suggested that he use GameMaker next time. He and his buddies all laughed at me. Since then, I have learned... well, just about every programming language to some degree. And I can honestly say, I liked GML a lot. Not a ton of symbols. Very easy to work with. It doesn't make you any smarter to learn other languages. Maybe I shouldn't have pulled that curtain back... the international association of snobbish C++ programmers are going to find me, now.
 

seanm

Member
Well GM doesn't strictly deal with OOP, but all of the principles are there; They just exist in a different form than C languages.
 

Mercerenies

Member
Well GM doesn't strictly deal with OOP, but all of the principles are there; They just exist in a different form than C languages.
Sorry, but what you've said there is a total contradiction. "GM doesn't deal with OOP; it just has OOP."

Most textbooks these days define OOP in terms of polymorphism (doable, albeit in a limited form, with User Events), inheritance (obviously supported in GM), and encapsulation (we have objects with contain variables, don't we?). GM has OOP. It has a class-oriented version of OOP similar to (but not by any means identical to) that of early versions of C++. It just doesn't "look like" modern JAVA/C# OOP, which for some inexplicable reason people take to be the definitive source of "object orientation", so people dismiss it.
 

seanm

Member
Well Gm doesn't strictly deal with the understood meaning of the word OOP and it's usual structures, but all of the principles are there. They just exist in a different form than the C languages.

Didn't think I had to spell that out, but you gave a more thorough explanation anyways.
 
F

frog

Guest
To my knowledge, and I just reviewed the documents, GML does not support inheritance at all. You also cannot define user types/classes. There is also no notion of properties or privacy in GML. All variables are 100% public read/write access on all object instances. Furthermore, there are no functions except engine defined ones. So you don't have return types, either.

In a nutshell, beyond scripting games, it is not a terribly useful language. That's when it is good to heed the old addage, 'to a man with a hammer, every problem looks like a nail'. Well, GML is a hammer but proper OOP requires a cordless power tool set. Can you use a hammer to cut lumber? I am sure its doable, somehow. But that doesn't mean that a hammer is just as good as a skillsaw.
 

seanm

Member
In this case, GM Objects are the classes/objects.
Private variables are enough to make or break OOP
Gm supports parents, which is inheritance. Just not really polymorphic methods/functions.
You can make methods/functions just like any other language.
Soft typing doesn't define a language.
 

Mercerenies

Member
Private variables are enough to make or break OOP
Private variables are NOT enough to make or break OOP. And I'll demonstrate.
* Python - 100% public slots; no privacy
* Javascript - Privacy available in a limited form through local scoping
* Lua - Same as Javascript
* Common Lisp Object System - Slots can always be accessed through "with-slots"; inside and outside of implementation methods
* Go - "Package private" is the most restricted privacy level
If you make the claim that private variables are necessary for a language to support OOP, you've just contended that Python, Javascript, and Lua, among others, do not support object-oriented programming.

And GM does have polymorphism, just in a very limited form. It has events, which are specific to the object and can be overridden in child objects. Events, with the 16 user defined events, make a very basic message-passing inheritance system, which is what languages like JAVA use. The fact that events don't take arguments is utterly irrelevant, as the arguments in a call in JAVA/C#/etc have absolutely no bearing on the polymorphic nature of the method. A simple message-passing system is only required to have one argument, and that is the object to whom the message is being passed. GM satisfies this requirement.
 

Mercerenies

Member
Sorry, mate. Not trying to offend. I like programming language theory, so I thoroughly enjoy debates about languages. I apologize if I said anything you took to be rude.
 
S

Subdomain Games

Guest
Coding in GML doesn't make you an inferior programmer. Coding only in GML makes you an inferior programmer. More generally, coding only in one language, no matter which one it is, makes you an inferior programmer.
Amazing, the first response was 100% spot on.
 

11clock

Member
Yes it does, if GML is the only language you know. This is because GML can only be used in one specific software, making it very limited.

If you want to be a good programmer, you need to be more flexible. Pick up more robust languages like Java and C#.
 
Will knowing more programming languages make you more popular, gain more money? I don't even think that this is a legit question. The question is, what do you do with what you know? Do you program webpages in GML? Do you create 3D games in HTML? Do you use VB.NET to create applications that work on linux?

If with the knowledge you have, you can go far in life then go for it!

A blind person that becomes famous because he only knows how to play the piano but play it well, will we say that he's inferior because he can ONLY play the piano? NO, he just did the best he could with what he had. There's no superior and inferior programmers, there's just programmers that do their best with what they know.
 

Changgi

Member
What I have experienced is that people who aren't GM users look down on GM saying if you want a professional programming language you'd learn C++ or something, whereas internally GML users look down on drag and drop users.
 
S

Shariku Onikage

Guest
Probably the only worry i'd have with gml is that it can make you a sloppy programmer in terms of syntax, but only if you're shifting between languages all the time. Since gml let's you skip things like brackets and semi-colons you can get used to skipping them all the time, then you switch over to something like javascript and suddenly you find yourself backtracking to correct things.

But i've always viewed programming as a 'needs must' thing. Unless programming is a passion for you you only need to learn what you need to learn in order to complete the intended project. If all you intend to make are simple games in game maker, then just knowing gml is fine.
 

bml

Member
Do you care about making games or being a strong programmer?

For certain types of games, and most especially for solo developers, GML is a superior choice and you can make high quality games quickly. Making games should be the primary goal of a game developer. No one cares about how much code you wrote if you never release. I had a conversation about this yesterday where I work. We interview people constantly and one of the first interviews is writing code. The candidate has an hour to solve three problems and we tell them the type of problems in advance. We warn them that they are time constrained. We suggest they use a scripting language, but they are free to use any language they want. After several hundred interviews, no one that has chosen C++/C has passed. I don't think we've passed any Java or C# interviewers either. Part of being a great programer is about making the best tradeoffs for the problem you are trying to solve. If you are trying to make games, unless you have a really strong reason to use C++ such as performance demands, virtual reality, low level stuff, library dependencies, etc... it's a poor choice.

As for GML making you an inferior programmer? If that's all you know, then yes. You can write complex and well designed code in GML. You can think algorithms and data structures. But for most game development the challenging parts are in a few niches and your toolbox is limited and so is the problem set that you deal with. The algorithms would be the same in C++, but you will have more implementation options and need to understand more low level details. The main advantage of C++ would be knowing a language that is used all around the world. Google doesn't hire GML programmers, but a good C++ developer is gold. Getting to "good" as a C++ developer takes a lot of effort and your understanding needs to expand beyond game development problems.

I like to use Codingame to push my programming skills and my game development skills at the same time. Either the problems or the competitions. Competitions are fun as a way of gauging your skills. The last competition I did was writing the AI for multi-unit multi-base combat and everyone's AI fought each other. The results were ranked and you could make changes and improvements over several days. Of course GML isn't an option so you would have to learn something new and it might be fun to implement some of the same problems in different languages just to see the difference. There are lots of similar sites out there. Good luck!
 

mariospants

Member
To me, as long as you know what to do, GML coding is the most simplified coding I've ever learned. Granted, I still have a lot to learn in this but as far as my intermediate knowledge is around, I think I can safely say that this language is easy to get into.

That being said, I wonder if learning and using this language will make you feel like you aren't a "Real" programmer who learns C++ and does lots of coding to implement even basic character movement.
If you can do something amazing in Basic, that makes you an amazing/superior programmer. Your ability to problem-solve defines how good a programmer you are, not the language you use. Well, that's my opinion, at least!
 
F

frog

Guest
GML is really a scripting language, similar to JavaScript. It lacks strong typing, user defined types and all sorts of other things that we don't really need to get into for the purposes of this discussion. Many of the higher-level, good practice stuff you need to be a good programmer aren't around in GML. So, if GML is all you know, you're not a very good programmer in terms of overall ability and knowledge. However, that doesn't mean that you are intellectually inferior or that you couldn't grasp those higher level concepts, just that you haven't be asked to so far. It would probably take the average JavaScript/scripting language coder 3 years to get a solid grasp of the higher level concepts like decoupling, for example, the purposes for a lot of that stuff isn't obvious until you've spent some time trying to piece together a larger piece of software.

That all being said, ain't nothing wrong with just scripting some games.
 
B

brokenjava

Guest
An "inferior" programmer is one who can't use his choice of language to create what he wants out of it.
I would extend this to; an inferior programmer does not know what tools to use in the most applicable circumstance. Fighting an engine/framework/language beyond it's intended purpose is foolhardy. Possible but not always helpful. Sometimes as a programmer I forget that not only does code matter but design choices and architecture. GML in my opinion is not a general purpose language such as C#, JAVA or c for that matter, which in turn makes it "inferior" or "superior" depends on what you care about. But to the original question "Does GML coding make you an inferior programmer?" null.
 

Float3r88

Member
honestly drag and drop "programmers" are the real joke.
Like all the kids of this generation that use scratch and ONLY scratch.

And most of the time these kids don't even teach themselves scratch, but actually waste their parents money on an $1000 "tutor".
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
honestly drag and drop "programmers" are the real joke.
Tell that to Eric Ruth... His games are really good and he made them all with Drag N Drop in GameMaker... How many games have you made with your elitist "programmer" attitude? ;)

http://ericruthgames.weebly.com/games.html

Seriously, who CARES how a game is made as long it's made and people are expressing themselves and happy (and making other people happy too!)?

PS: I know that page is old and most of the links don't work, but it's a great example of someone that is an artist with no "coding skillz" who made great games using a very limited toolset. Where there's a will, there's a way!
 
To me, as long as you know what to do, GML coding is the most simplified coding I've ever learned. Granted, I still have a lot to learn in this but as far as my intermediate knowledge is around, I think I can safely say that this language is easy to get into.

That being said, I wonder if learning and using this language will make you feel like you aren't a "Real" programmer who learns C++ and does lots of coding to implement even basic character movement.
The first programming language I learned , and hate is BASIC, that is, Commodore Business Machines BASIC. I learned programming in BASIC when I had a Commodore PET 2001 Series, with only a tape drive ( floppy drive existed but were a luxury item ), later with Commodore 64, and finally with Amiga BASIC ( which is a license of Microsoft's BASIC ). I got fed up with that language. Well first I have say that in a programming environment of where cut, paste,copy, and delete do not exist is a pain, and I would have to say where everything is listed with line numbers is a pain ( except for Amiga BASIC ). It took me several years to forget most of the BASIC language from Commodore Business Machines, to phase in C programming. Then everything became easier. In my opinion C makes a very good beginners language in procedural programming. I extend this hate to Visual BASIC as well, which is a Frankenstein language of borrowed concepts from other languages mashed together.

Now GML is a great programming language for designing games, but you could use it for creating applications that are not game based.

The famous saying , " Its not what the airplane does , its what the pilot does with the airplane " , is true for programming. I was looking at all the graphical functions of GML one day, and thought I could use the language to do sophisticated animation that I could record on my movavi screen recorder to make movies with. It has nothing to do with making a game, but it is a use of the language. I thought GML would be better than programming my graphics using POV-ray.
 

Bearman_18

Member
We all know that skill in programming can only be defined as the ability to make an engine do exactly what you want it to. Like an elephant in marble, a game is just a bug with all the unwanted effects chiseled out.
 

zendraw

Member
being a good programmer has somthing to do with creativity, its problem solving, the language is just the tool. gml doesnt make one inferior, idiots that use the easy way, and coding in stupid ways is what makes one inferior. generally how you use it is what you are. a stupid person will use it like a stupid person.

this question is also stupid, its like asking am i a serial killer becouse i use a knife to cut my bread...
 
Top