1. Yoguur8989

    OP Yoguur8989 Newbie
    Newcomer

    Joined:
    Mar 16, 2020
    Messages:
    7
    Country:
    United States
    Hello GBATemp! I am really interested in programming and I am really passionate about it. I feel like all of the code I write though is complete garbage and I want to make it... well... not that.

    I was wondering if y'all could point me towards some resources that would help me make my code better. I have a basic understanding of a few languages, namely C++, Java, JavaScript, and Python and I would like to try to continue to push my experience with becoming better using those languages, Python and C++ in particular because I want to be able to develop homebrew apps for the 3DS and Switch as well as do things like create Minecraft mods and Spigot plugins (which I know I programmed in Java)

    If you could point to specific communities that focus on developing these sort of things and resources that could possibly help me gain a better understanding of all the concepts I need to understand. Also if you could point me to any communities that would help me, I'd be grateful for that as well!

    Also, I'll add to this thread as I am given resources or if I find any resources that I personally find helpful just in case someone else needs them in the future.
     
    pottsie283 likes this.
  2. Zenarith

    Zenarith Newbie
    Newcomer

    Joined:
    Mar 23, 2020
    Messages:
    5
    Country:
    Canada
    I learned HTML, CSS and JavaScript through W3Schools.
    I studied Java but mostly just books, W3Schools can teach you Java but it looks overwhelming. Good for concepts.|
    I tried C++ but no success...
    I want to be a good coder myself, but I find youtube videos teach you how to do one thing but nothing more than that.
    Books teach you everything but it's hard to commit...
    If you can find a site that teaches in Lessons/Courses (1 Day of Learning at a Time) I'd like to learn Java or Python.
    I have no money for school, but I was thinking... If we find a pro that wants to teach and "Collect" 10 Students, we can pay a 10th of what we'd pay for tutoring, maybe that sounds stupid, I don't know.

    Hope to hear some suggestions.
     
    Yoguur8989 likes this.
  3. eyeliner

    eyeliner Has an itch needing to be scratched.
    Member

    Joined:
    Feb 17, 2006
    Messages:
    1,123
    Country:
    Portugal
    Choose a couple languages to learn until intermediate/advanced.
    Something like Javascript (a damned weird language, but basically a necessity for HTML5)
    Python/Java/C# for desktop development.

    Get fluent, develop solutions, something small like substitues for small scale software you use, like a calculator, picture viewer, etc... and go from there.
     
    Yoguur8989 likes this.
  4. Zenarith

    Zenarith Newbie
    Newcomer

    Joined:
    Mar 23, 2020
    Messages:
    5
    Country:
    Canada
    I'd like to learn Java to one day make a RuneScape Private Server.
    I'd like to learn C++ to one day make a GTA San Andreas Remake...

    Which is easier to learn? (My guess Java)
    And do you have any suggestions on which website teaches the best? (Preferably without having to pay money)
     
  5. FAST6191

    FAST6191 Techromancer
    Reporter

    Joined:
    Nov 21, 2005
    Messages:
    30,891
    Country:
    United Kingdom
    It will depend what level you are at. While you say "a basic understanding of a few languages" I have to keep in mind that self assessment of abilities is a tricky one.

    Interview questions if they are well designed ( https://www.youtube.com/playlist?list=PL96C35uN7xGLLeET0dOWaKHkAlPsrkcha has several things you might meet, or be asked to explain in them or exams) often do well and will get you to tighten up your code as you learn to solve those better.

    "I feel like all of the code I write though is complete garbage"
    Why is that?
    Also does it do the job you need it to? Does it do in a time you can deal with? Can you return to it 6 months down the line and figure out what you are doing? Can you send the code to someone else and have them figure out what it does? If asked you to expand it to handle a million entries where you are presently doing 10 then what goes?
    For example I know all sorts of fancy ways of sorting data (and far less than some in this field) but good old bubble sort might well do rather than spend 6 hours optimising a sort for a simple 15 item output.

    You might also like "code golf" and coder contests. Normally they have a very strict time limit but nothing wrong with giving yourself say a weekend to solve the problem.

    Do you like any open source projects? They are usually in need of help, and you might just write up some documentation. You might also try porting it to another language.
     
    Yoguur8989 likes this.
  6. Issac

    Issac I
    Supervisor

    Joined:
    Apr 10, 2004
    Messages:
    6,664
    Country:
    Sweden
    Wall of text incoming, but you don't have to read it "in depth" :P

    Learn the concept of coding.

    Learn problem solving.

    Pick a language, any language. Java is quite easy to get going with visual output. Give yourself a task, like what @eyeliner suggested: a calculator for example.
    Then write down in English what you want to do. A to-do list basically. What do you need?
    1. You need a window.
    2. you need a "display" to show input and output.
    3. you need buttons:
      1. numbers
      2. operators
      3. more advanced stuff? (optional)
    4. you need to make sure things won't break.
    Now, go through each step, and use a book, or internet, or a video... whichever resource you want. "How do I create a window?" look it up. Try, get a window working.
    How about a display? It needs several steps:
    1. Display a string of characters, "12+34-5" for example. How do you display a string?
    2. When pressing a button (that you maybe don't have yet) how do you ADD text/numbers to the string? Or append, as it's called. Search it up.
    3. When pressing a button (that you still don't have yet), the = button. How do you clear the string, and display the result instead? Search it up.
    4. Write down all the steps as detailed as you can, and use "pseudo code" if you want.
    Now, do buttons!
    1. Create one number button: "1" is a good place to start. How do I do a button?
    2. How do I do anything when I press a button, what's an event handler? search it up!
    3. Ooooh, so now I can press the button, and it adds information to one variable, and also appends to the string? Or does it? Go back to the display part and fix it if you need to!
    4. add another button - and repeat.
    5. add a clear button!
      1. What does a clear button do?
      2. Delete the text string.
      3. Clear the variables and any memory.
      4. How do I do this? search it up!
    6. add an operator, the + for example.
      1. How do I add numbers?
      2. how should I add to the string?
      3. blah blah.
    7. add another operator.
    8. add the =
    9. Go back to the display part, and revise stuff that needs revising... I doubt you finished the display before creating any buttons!
    Okay... Display and buttons.
    Go back and forth, you'll need to fix things over and over again, add details and improvements.
    Try to write down as detailed as possible though, what you want to do and how you think you can solve it.

    There's more to do. After you have these buttons, what about listening to the keyboard if you wanna type in numbers instead of clicking buttons? So you'll go back, and edit and edit.
    But kinda like this process. If you do this, you will get a feeling for how to code. how to think about solving an issue, what tools you have in your toolbox.
    I said that you can use Java, as an example. But did I write anything that was specific to Java in this "to-do" list? nope. It's the same process of solving the issue, finding out WHAT you want to do.
    Then you can just search how to create a window in Java, how to create a window in C++, how to create a window in C#, and so on... You know the basic structure, now you just need a "dictionary" to translate it into whichever language you want to use.

    Does it make sense? I hope it does.

    So: Make an outline of what you want to do. Refine the outline, add details. Write in English. Then write in "pseudo code", it's a bit easier when you're used to it :P
    Then start where it feels most logical (which should be easy to find with your outline / pseudo code).
    Now look up how to do whatever you want to do, in whichever language you want to do it.

    Knowing how to solve a problem you're facing is more important than knowing thousands of functions and stuff by heart. In my opinion. Of course, fluency in a language comes with exposure, so you'll be fluent soon enough if you just use it.
     
    Yoguur8989 likes this.
  7. eyeliner

    eyeliner Has an itch needing to be scratched.
    Member

    Joined:
    Feb 17, 2006
    Messages:
    1,123
    Country:
    Portugal
    Quit now if that is your mindset. There is no way a single developer pulls that one off. Learn the basics and start building from there.
     
    cyo_the_vile likes this.
  8. cyo_the_vile

    cyo_the_vile Member
    Newcomer

    Joined:
    Sep 22, 2019
    Messages:
    12
    Country:
    United States
    He hit it head on. Don't go in with tunnel vision. You need to enter learning C/C++ with the intent of actually learning how the language works and solve problems. Solving problems is perhaps the most important thing you need to do as it puts you in the correct mindset.

    You won't recreate GTA SA as a single person. There are hundreds of people nowadays that are on teams for creating games. For ports its less but still a substantial team. Just enter this at first by trying to solve a ton of problems.
     
  9. mike087
    This message by mike087 has been removed from public view by Issac, Mar 30, 2020, Reason: One word post.
    Mar 30, 2020 Show
  10. FAST6191

    FAST6191 Techromancer
    Reporter

    Joined:
    Nov 21, 2005
    Messages:
    30,891
    Country:
    United Kingdom
    Now while I would probably not rate the OP's chances of doing things I would say with the increased power of modern devices and increasing quality of procedural generation that it might hit a point where a small team or possibly individual could land on something like a GTA clone.
     
  11. Coto

    Coto -
    Member

    Joined:
    Jun 4, 2010
    Messages:
    2,676
    Country:
    Chile
    Rule Number 1 is don't ask, just do it.

    The basics:
    Now you need to understand how machines work in general. Thus you need to get familiar with programming and whatever language comes in. You can also reverse engineer code and learn most stuff this way.

    The intermediate:
    Learn to read other people's source code, and your problem solving skills must be extremely on par with maths. This way you can recreate other algorithms, and "project them" into your problem solving scenario, through the machine/language.

    The advanced:
    Game development is another topic because you deal with Artificial Intelligence, and you must be quick to perform your own "projections", taking for granted nobody will really help you out if you desire to add a custom feature which isn't open source or if it's patented.


    For instance the Worms PC game (and clones derived from it) has simple 2D topological physics. Thus, when a weapon detonates it deals damage to terrain and other enemies depending on speed/force/angle coordinates.

    GTA 3D is somewhat similar. And no way you can pull off that engine alone given all the custom physics such game has. Given that engine was made by dozen of programmers
     
  12. blawar

    blawar Developer
    Developer

    Joined:
    Nov 21, 2016
    Messages:
    1,612
    Country:
    United States
    Don't read any scene code. Its generally the worst code I have seen in my career. Learn to code using more traditional methods.
     
  13. WarioWaffles

    WarioWaffles GBAtemp Regular
    Member

    Joined:
    Sep 27, 2014
    Messages:
    100
    Country:
    United States
    Work through small game tutorials, google excessively and obsessively and find tuts that give completed code and repurpose and play with it to get it to do what you want.
     
  14. Joom

    Joom  ❤❤❤
    Member

    Joined:
    Jan 8, 2016
    Messages:
    5,269
    Country:
    United States
    I really hate when people suggest C#, or any other .Net dependent language. These are *not* good languages to learn unless you're lazy. They'll only compile on Windows with Windows specific libraries, and are easily reverse engineered. Of course there's Mono, but we all know that's a joke. If you want something with a GUI, look into Delphi, or C++ with Qt.
     
  15. SkilLP

    SkilLP Member
    Newcomer

    Joined:
    May 2, 2020
    Messages:
    20
    Country:
    Germany
    Do things that you're genuenly interested in. For me it's homebrew development on NDS (although I'm not really good at it yet), for quite some time it was making a calculator in python with custom syntax that could generate lists, plots, etc and that could do lot's of stuff a normal calculator wouldn't be able to do. While doing such a project, you might find it pretty easy and it doesn't take much time to complete, but on other projects you might get stuck and have to google a lot, but both of them are fine, because in the first case, you see what you're already capable of which can give you motivation because you think, that you're already pretty good, which is correct and good, and in the second example you learn how to gather the information you need, as googling certain things isn't very easy. An example for a thing I wanted to google that was pretty hard to find answers to for me was how to do vector calculation in c++. The problem is, that c++ vectors are a certain type of dynamic arrays, and not the vectors using coordinates.

    I hope you understand what I'm trying to say here,
    Konstantin
     
  16. pottsie283

    pottsie283 Member
    Newcomer

    Joined:
    May 3, 2020
    Messages:
    15
    Country:
    United Kingdom
    I started with Python since it was the first language that I studied in depth for my A-Levels, but I've had experience with HTML/JavaScript and am currently doing a CodeAcademy course for C++. I'm quite comfortable coding with Python, but obviously once you use more libraries; there's of course a learning curve you have to go on like with everything else in programming.

    I get that you have ambitions, that's fine. But I agree with the others; you have to be realistic. I've been into programming for about a year or two now and can make a semi-decent program with a GUI on Python and 'Hello World' on c++ at the moment. I want to build better programs, but to get to that point it will take a very long time.
    It's not garbage if it works.
    Stack Overflow.
     
Draft saved Draft deleted
Loading...

Hide similar threads Similar threads with keywords - Programming, Looking, better