Mathematical
Silver Coder
(Note: There is a formatting error in this for some reason that won't go away. Please, just ignore it).
I'm writing this as a guide for newer programmers, who may not have a clue on what to do or learn next. Of course, it can also apply to people who've been programming for sometime now. But the main audience is aimed at newer programmers. And as a result of that, newer programmers, I suggest that you read carefully through this. Don't be afraid to ask questions at the end either.
Now first of all, let me tell you that there is more to programming than you think. In fact, programming only makes up a piece of computer-science. So, don't just learn programming for the sake of programming. Invest time into the fields of computer-science that interest you. If you like strange messages, then invest time into learning cryptography and encryption. If you like getting more information about something and then pass that data around, perhaps invest time into learning about databases. There's so much to computer-science that you of course, cannot learn all of it, so set-out your path wisely. A good thing to do is put your focus on the thing that interests you the most, but at the same time, also invest time into other things that interest you - This is in the case that your current path goes awry.
My current focus has been on two paths: data-science and security. Although, I do like to study other fields such as game-development, AI, and software-development, in the case that the paths that I'm currently focusing on don't work out.
Next, is programming-languages. Programming simply isn't about programming-languages and no, you do not need to learn a language like Python all because it's the hip new trend among newer programmers(I myself have been programming for a few years now. I did learn Python but I don't even use it and actually hate it). Learning a new programming-language was something that I always thought I had to do, but I soon discovered that it wasn't. The thing is, every language is identical in one way or another as they all inherit from older languages like C. What you should also be learning alongside the languages, is also the paradigms. Object-Oriented, procedural, functional, are all different ways of defining a language by their features. It's useful to know how to differ a procedural-language from an OO language and not only that, but you should also understand what the core purpose of each paradigm is, how it's used, and when and where it's used. Another thing to learn and understand is compiling code. There are two ways of running code and that's by either running it through a language-interpreter or by compiling it into one big program. The thing is, both methods are different in terms of speed, reliability, output, and just the underlying architecture of them and how they're built.
Before in the past, again, I thought that to learn programming, you had to learn every single language but then again, I ditched that misconception. Instead, my plan now is learn a language for different paradigms, and different applications and uses. So:
I'd suggest creating out a plan for what languages you're going to learn, primarily based on your focuses and paths at the time that you do create this plan. So, if you're wanting to work in game-development but are also focusing on web-development, then learn C#, C++, and perhaps Java, for game-development, then learn HTML, CSS, JS, PHP, and also consider Ruby, Python, and ASP.net, for web-development. You shouldn't focus on learning a language all because it's popular as in due time, these languages will be overthrown by other languages, and will even stop being used completely until the point that only legacy-systems use software built on these languages.
Lastly, is the tools that you use. Find tools that suit you and your needs best. What I mean by this, is don't get a copy and start using IntelliJ just because many other programmers prefer it for Java programming. Try out other tools such as Eclipse or Netbeans, or in the case of the text-editor wars, EMACS instead of Vim. I actually use Eclipse for all of my Java tasks, EMACS for anything related to C, and Nano for Lua. I simply use all of these tools because I find them better to work with. I struggle to adapt to and use IntelliJ's interface, I find Vim clunky to use(Especially with exiting), and Nano simply because I do nearly all of my programming work in the terminal. Again, same with the languages, don't learn and use it because it's the hot, steaming apple-pie lying at the windowsill. Experiment and use the tools that you can actually use and work with. The same goes for anything else, including compilers, APIs/frameworks/libraries, and version-control-systems(Although, regarding version-control-systems, once you get a job, it's highly likely you'll be using Git at it. Although, that doesn't stop you from using something else like SVN or Mercurial outside of work).
I hope this guide as helped everyone starting out on their programming-journey. As stated at the beginning, make sure that you have read through what I've said carefully, as it will be important before you continue further on in your journey. And again, don't be afraid to ask any questions. I will do my best to answer them.
Thank you for reading.
I'm writing this as a guide for newer programmers, who may not have a clue on what to do or learn next. Of course, it can also apply to people who've been programming for sometime now. But the main audience is aimed at newer programmers. And as a result of that, newer programmers, I suggest that you read carefully through this. Don't be afraid to ask questions at the end either.
Now first of all, let me tell you that there is more to programming than you think. In fact, programming only makes up a piece of computer-science. So, don't just learn programming for the sake of programming. Invest time into the fields of computer-science that interest you. If you like strange messages, then invest time into learning cryptography and encryption. If you like getting more information about something and then pass that data around, perhaps invest time into learning about databases. There's so much to computer-science that you of course, cannot learn all of it, so set-out your path wisely. A good thing to do is put your focus on the thing that interests you the most, but at the same time, also invest time into other things that interest you - This is in the case that your current path goes awry.
My current focus has been on two paths: data-science and security. Although, I do like to study other fields such as game-development, AI, and software-development, in the case that the paths that I'm currently focusing on don't work out.
Next, is programming-languages. Programming simply isn't about programming-languages and no, you do not need to learn a language like Python all because it's the hip new trend among newer programmers(I myself have been programming for a few years now. I did learn Python but I don't even use it and actually hate it). Learning a new programming-language was something that I always thought I had to do, but I soon discovered that it wasn't. The thing is, every language is identical in one way or another as they all inherit from older languages like C. What you should also be learning alongside the languages, is also the paradigms. Object-Oriented, procedural, functional, are all different ways of defining a language by their features. It's useful to know how to differ a procedural-language from an OO language and not only that, but you should also understand what the core purpose of each paradigm is, how it's used, and when and where it's used. Another thing to learn and understand is compiling code. There are two ways of running code and that's by either running it through a language-interpreter or by compiling it into one big program. The thing is, both methods are different in terms of speed, reliability, output, and just the underlying architecture of them and how they're built.
Before in the past, again, I thought that to learn programming, you had to learn every single language but then again, I ditched that misconception. Instead, my plan now is learn a language for different paradigms, and different applications and uses. So:
- C(Procedural) for many things including software, AI, and encryption, plus some other things.
- Java(Object-Oriented + Multi-Paradigm) for primarily software and app-development, but also game-development, and in the case I begin working for banks(As many banks rely on Java for their systems).
- Lua([Multi-Paradigm/b]) for scripting small applications, extending C programs, and for game-development.
[*]R(Multi-Paradigm) for working with data.
[*]SQL(Declarative) for working with databases.
[*]Bash, a scripting-language for the GNU/Linux terminal. Used for automating commands(I've yet to actually start learning it though).
I'd suggest creating out a plan for what languages you're going to learn, primarily based on your focuses and paths at the time that you do create this plan. So, if you're wanting to work in game-development but are also focusing on web-development, then learn C#, C++, and perhaps Java, for game-development, then learn HTML, CSS, JS, PHP, and also consider Ruby, Python, and ASP.net, for web-development. You shouldn't focus on learning a language all because it's popular as in due time, these languages will be overthrown by other languages, and will even stop being used completely until the point that only legacy-systems use software built on these languages.
Lastly, is the tools that you use. Find tools that suit you and your needs best. What I mean by this, is don't get a copy and start using IntelliJ just because many other programmers prefer it for Java programming. Try out other tools such as Eclipse or Netbeans, or in the case of the text-editor wars, EMACS instead of Vim. I actually use Eclipse for all of my Java tasks, EMACS for anything related to C, and Nano for Lua. I simply use all of these tools because I find them better to work with. I struggle to adapt to and use IntelliJ's interface, I find Vim clunky to use(Especially with exiting), and Nano simply because I do nearly all of my programming work in the terminal. Again, same with the languages, don't learn and use it because it's the hot, steaming apple-pie lying at the windowsill. Experiment and use the tools that you can actually use and work with. The same goes for anything else, including compilers, APIs/frameworks/libraries, and version-control-systems(Although, regarding version-control-systems, once you get a job, it's highly likely you'll be using Git at it. Although, that doesn't stop you from using something else like SVN or Mercurial outside of work).
I hope this guide as helped everyone starting out on their programming-journey. As stated at the beginning, make sure that you have read through what I've said carefully, as it will be important before you continue further on in your journey. And again, don't be afraid to ask any questions. I will do my best to answer them.
Thank you for reading.