This one’s about programming

Well, I think it’s about time I went off on a bit of a rant about something programming related. For those of you that don’t know, I used Game Maker back in the day and, as a result, became a member of the Game Maker Community (GMC) which is a forum for GM. Now, I still frequent the forum largely out of habit and because of some friends I’ve met there.

Anyway, I see a lot of things that just get to me sometimes. One in particular that I seem to be seeing more of recently is individuals wanting to make DLLs with a very poor understanding of the language they want to make it in (usually C++). Now, I really don’t think that trying to make DLLs is good motivation or a good way to learn another language. It’d be kind of like learning how to ask where the bathroom is in a foreign language without actually knowing what any of the words mean. You end up learning one particular thing. You won’t learn everything about the language or the way it should be used.

What’s worse is that these same people also really don’t like to hear someone tell them that they’re not ready to create a DLL. Usually they start spouting off about how they’re only trying to help and contribute to the community by creating these things. Of course, this is complete garbage. If you don’t understand what you’re doing, you’re likely to create something which is useless, buggy, or just plain crappy (or any combination thereof).

Although I should mention that such creations aren’t really out of place on the GMC; there are a lot of them. People taking one line of code and wrapping it up in a script or writing DLLs that do arithmetic. Now, I sometimes comment on these useless creations mentioning that they don’t really serve a purpose. After that I usually get shot down for discouraging creation or some similar stupid reason. Sometimes I get “oh, you should go easy; it’s their first DLL”. Now, I’m of the opinion that if you’re going to make some useless “hello, world” DLL, you shouldn’t post it there for others to use to begin with. Ideally the forum is suited for creations that other people can actually use.

7 Responses to “This one’s about programming”

  1. xot says:

    See? I knew you could do it. And you said you didn’t have opinions.

    I support heavy criticism of anything posted in a public place. So here it comes. :P

    In all seriousness, I’m with you all the way. My feeling is, if you’re gonna stand on the soapbox, be ready for the rotten tomatoes. I used to write detailed reviews of games on GMC, and usually the authors appreciated my opinions. But because what I posted generally focused on the negative aspects of the game, I’m sure the authors came away disappointed. I know a lot naive GMC members are just looking for a pat on the back when the post something they think is special … and it’s usually only special in the “I bet you rode the special bus to school” way. So, I’ve basically stopped doing reviews to spare fragile egos.

    But now that I’m moderating the Tutorials and Examples forum, I’m at it again. So much garbage is submitted it is mind-boggling. And with rejection comes criticism, and the volume of rejections means I have to be especially blunt and to the point. Sometimes egos are bruised, but usually members seem to take it in stride. However, because it is all mod-previewed and private, nobody else can learn from the criticism, which is a shame. At least when you publicly humiliate someone, others can learn from the example.

  2. I think you are well within your rights to say whether something is useless and to criticise, it’s a shame some people don’t agree. While I don’t know anything about DLLs, I do know that people around the GMC often taken criticism very badly, as xot says.
    I also have to be, often crushingly, blunt with some people, but I think it does help them in the long-run, and that one day they will appreciate that.. and maybe even leave me a nice comment saying so!

  3. L4nt0m says:

    I agree with you on the point you make about the criticism, my guess would be that the younger kids just lack the ability to put things in perspective, and feel attacked in their person by the criticism. But I don’t agree on the point about learning a language. Working to a concrete goal will make them motivated, and along the way they’ll encounter various language-specific problems which they’ll have to solve and make them explore the language by that. (yes this is also the way I’ve learned most of the programming languages I know today) Ofcourse, this does depend on the level of the goal they want to achieve: it’s quite a difference when you want to make a dll which just adds to numbers, or make, say, some xml parser/writer. And ofcourse, as you say, they need to be ‘ready’ to make a dll

  4. Yourself says:

    I really meant that it’s a poor way to learn C++ since it’s so Windows-specific. A goal or project is a good way to learn a language, but a DLL project (usually) isn’t it. If someone can come up with such a project, they probably won’t look like such idiots.

  5. I completely agree with you in regards to novice users trying to “help” by unleashing complete garbage on the GMC.

    One thing in particular that irks me is when I see someone asking for help on a subject, and then they casually mention that once they receive this final bit of guidance, their tutorial will be ready. It is the ultimate case of the blind trying to guide the blind, and I try my best not to go completely off whenever I see this.

  6. kake_fisk says:

    Aww, i’m one of those who want to make dll’s without c++ knowledge :p

  7. Clam says:

    I’ve actually found that writing a dll in C has been a very good way to learn the language. Granted, the functionality I’m providing is beyond usual wrappers written for gm – it makes use of libffi to provide a foreign function interface for gm – but I’ve had to learn how to use structs, pointers and malloc and made use of them extensively. I’ve also had to learn how the C compiler lays out a struct in memory using the correct alignment, or at least on x86 architecture. This is extra knowledge that many C programmers wouldn’t need, but it’s always good to have some kind of understanding about what happens “behind the scenes”. Assuming the optimiser doesn’t do it already, I now know the best way to order members of a struct to save memory, and more importantly I can create a struct dynamically when given a definition at runtime.

    I guess it’s very different when I already have a fair bit of experience with C-like languages (eg Java) and know enough to understand pointers somewhat intuitively. Of course, I would by no means claim to “know” C, but by the time I’m done with this project I’d like to think I had a good grasp of the essence of the language, if not with the standard library.