Are you studying for a programming degree? Want to talk about a big project you want to talk about or just a simple question that you feel doesn't deserve a thread? Then this is a good place for you.
This thread is for talking about all things related to computer programming, whether it's software or websites or even the backends of game design, come tell us how you feel and what you're up to!
Why should I learn to program?
As technology grows and more and more people use in their everyday lives, learning how to program has never been more in demand and has not been easier, in fact some people write small programs to make their daily tasks easier. For example, it can be very time consuming to name and tag all your music, then create folders and put them in each folder by album. If you have 1000 albums worth of music, you are gonna be there for days. However, with a simple script, you could tell the computer to read the information on the music files and do the chore for you. By writing a script that wouldn't take more than 40 minutes to make, you could do a job that would take days, even months to do by hand.
By understanding how to write programs, you have the potential to make your program do anything you would ever want it to do. I'm not joking, you can play god with technology if you understand how to write instructions for it.
What do I need to get started?
What you essentially need is:
- A computer.
- A text editor.
- Pencil and Paper (for planning)
- Good problem solving skills and understanding of logic
Whilst that is what is needed, you will want other things depending on what you do:
- A web browser. If you are writing something for the web, this is essential. It is also ideal for googling problems.
- An Integrated Development Environment or IDE. Whilst a text editor may be enough, an IDE can provide you with a workspace that can check errors as you type, complete longer strings of code, navigate code, take control of versions and dependencies and will provide good debugging and testing tools for your programming language. Some IDEs even cater for more than one language (Such as Eclipse)
- UML experience. If you are working on a medium-large scale project, it is recommended that you learn UML to allow yourself to plan out your program much better with less headaches. This is a good video to start with.
- A grasp on object-orientated design. Refer to this for a quick crash course
- Database Design Skills. This can depend on the program, but again essential if you are working with anything involving multiple accounts of data to store.
Can you recommend any resources?
Books
Languages
Personally, I like to use:
- C# - Think java, but if Microsoft done it without it's weird design choices. Best used if you work with Windows all the time.
- Python - Python in general is undeniably the most ideal beginner language there is. It's clean, concise and gets you used to pulling functions around. Python3 is for more innovative design, but Python2 is good for backwards compatibility.
- Java - I find the most use out of this with Android development, but anything that requires Object Orientated Programming makes this an ideal go-to
- Javascript - used with websites to handle scripting
- Ruby - Hipster language.
- SQL - Used for handling everything to do with the database.
Software
Websites
Youtubers
FAQs (Please read these before asking)
- Q: Should I learn X? / Should I write this in X?
That depends on your previous experience, personal preferences and what exactly you are wanting to use the language for. If you plan on doing a project for your own learning, it doesn't hurt to try it. However, if you are wanting to learn it in order for further education or for professions, you could look into currently popular languages to get an understanding of what is in demand or what is used in startup technologies.
- Why does language X take 50 lines to do this calculation when language Y can do it in one?
This is down to how the programming language is designed, not all programming languages are created equally and do not use the same syntax. Some languages don't have a function for it and require dirty workarounds.
- Q: Does knowing dozens of programming languages make you a good programmer?
No. It really doesn't matter much to people how many you already know, the point of programming is to solve problems with your expertise though design and co-ordination. If you are pious, open a church. But its down to personal preference, what you're doing and what the client/enterprise wants. There is a nice blog post on this misconception here.
- Q: I can't install X, please help?
Wrong thread. This isn't tech support.