Is working in terminal/console really a waste of time?

Started by
64 comments, last by Satharis 9 years, 10 months ago


I'd maintain its equally true for beginners. If you want to make a simple graphical game, learning SDL or something similar from the get-go is perfectly do-able. The idea that you must start at the command line is not valid. The fact that it is what most of us did is irrelevant.

Who said they must start at command line? My whole point and stance is that command line isn't a waste to learn. I personally tell people to do console, then 2D, then 3D. I recommend terminal so the beginner can have intimate one on one time with just the language and nothing else to distract them from it. Then I tell them to move onto 2D that way they are familiar with the language and able to focus on learning the API of the library while focusing on their game. Then 3D just because it is the next logical step.


The important part for beginners and vets alike is to have a specific goal, then gather the knowledge to achieve it. If that goal includes getting some graphics on the screen, why not start there? What's the difference between learning the SDL API and learning the standard streams API?

The only difference here is our matter of opinion. For me, learning a programming language is like learning to speak a language. I wouldn't write a Spanish novel without learning the language properly and I don't think a person should jump headlong into making a complex program without learning the language first. You, and others, have made it clear they think otherwise and that is fine as not every method works for everyone.

Advertisement


The only difference here is our matter of opinion. For me, learning a programming language is like learning to speak a language. I wouldn't write a Spanish novel without learning the language properly and I don't think a person should jump headlong into making a complex program without learning the language first. You, and others, have made it clear they think otherwise and that is fine as not every method works for everyone.
Let's say you take years to study Spanish in detail from books and recordings, then go out to Spain (or Mexico or whatever) and attempt to communicate with people. You would find that although by the book you've got everything under your belt, the real world doesn't really work quite the same. There's no substitute for experience on the ground.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.


Let's say you take years to study Spanish in detail from books and recordings, then go out to Spain (or Mexico or whatever) and attempt to communicate with people. You would find that although by the book you've got everything under your belt, the real world doesn't really work quite the same. There's no substitute for experience on the ground.

In the US, you don't need to go to Spain nor Mexico, where I lived you could go almost anywhere and find a person that was fluent in Spanish. Now where I live you can find people that are fluent in Spanish, Mandarin, Japanese, and several other languages (college campus). Yes, there is no substitute for experience, but you still have to put in the study as you aren't going to go to Spain/Mexico and suddenly just know how to speak Spanish. I studied it for two years and spoke with my brother-in-law (who is Mexican) until I left my hometown 13 years ago. You have to study in order to have the knowledge, but then you have to put that knowledge into use or else lose it. Sadly, I haven' t spoken Spanish in 13 years and am completely rusty.


With the latter, you don't have to make several threads in For Beginners complaining about your "unresolved external symbol" linker error (after 6 attempts at prodding you into posting the actual error instead of just saying "it doesn't work", of course!) and asking how to "install SDL in visual studio"

Yes, that is a very good point.

After tutoring several students in C++, Java, and x86 ASM, the thought of trying to have them learn GUI programming at the same time terrifies me. These beginners don't understand pointers, they're unsure of how a for loop works, and they think a bit shift is a geological term. I feel that it would take them twice as long to make even a simple "guess the number" or "tic-tac-toe" game if they're thrust into using a GUI immediately for these reasons (off of the top of my head):

  • They now must learn about memory management way early, before they can even get any output drawn (unless they lucked out with a language that has garbage collection).
  • They have to learn not just the core language, but also the API of a graphics library that makes use of more advanced features, and manage linking and dependencies.
  • They are force-fed inheritance lessons for many languages; if I want to watch for input, I have to add an event listener object, and have it inherit from a standard base class? What is "inherit", and what's a "base class"? I didn't even get much more than a "hello, world" yet.
  • Unless they plan to learn how fonts work to print text, there's going to be a lot of taken-for-granted boilerplate code and hidden default values being used. I've experienced that teaching people right away, "Do not pay attention to this. It is magic," only discourages them, thinking that they'll never understand it all, it has a mind of its own, and that they'll never actually need to know it. It's the kind of training that teaches them to start every source file with:
    
    #include <iostream>
    #include <string>
    #include <windows.h>
    #include <conio.h>
    #include <fstream>
    #include <iomanip>
    
    using namespace std;
    
    whether any of it is actually needed or not, because they had problems once and that made it go away, so they may as well put it everywhere.

If you aren't a beginner to programming, but only to game programming, I interpret this thread as not applying to you, as you should already know these basics.

<divergence>
Furthermore, to suggest that rather than teach people from the ground up with the terminal/console, or scare them with GUI programming and its requisite complexity, we give them a very high-level scripting language, that may not be beneficial. If they want sounds and pictures now, okay, fine. If they actually want an understanding of how things work, it won't be at all obvious (what's a hash table look-up, and why is my loop slowing to a crawl by not caching the property value?); low-level knowledge spots anti-patterns in high-level code. If you want to start someone on high-level scripting languages, plan on having them go back and learn a low-level language later before they actually start producing their life work, unless you're banking on them striking it rich with their Alice, Scratch, or DesignBlocks skills.

</divergence>

The only difference here is our matter of opinion. For me, learning a programming language is like learning to speak a language. I wouldn't write a Spanish novel without learning the language properly and I don't think a person should jump headlong into making a complex program without learning the language first. You, and others, have made it clear they think otherwise and that is fine as not every method works for everyone.

Let's say you take years to study Spanish in detail from books and recordings, then go out to Spain (or Mexico or whatever) and attempt to communicate with people. You would find that although by the book you've got everything under your belt, the real world doesn't really work quite the same. There's no substitute for experience on the ground.

The problem is you can learn bad habits from experience and little-no study just as much as you can learn bad habits from all study and no practical experience. Mastering something is almost always part theory and part practice.

I've seen people that have coded for half their life and the sum of that ability is them still thinking its necessary to make games in C for everything and not using any third party libraries, they also develop a sort of "holier than thou" arrogance towards learning anything new even if they're using a more modern language.

This topic is closed to new replies.

Advertisement