Quote:
Originally Posted by pmreit
eh well my friend does cyber security for a satellite company, and i feel like a noob asking for advice from him. lol. It seems like something i would love to get into, spent ten years in the bottle. Finally figured i need an actual career, and not just a job. when i was in school i told my school net tech i wanted her job lol. well turns out shes making 120... fuck me right, i know basics on setting up networks but i want to get deeper into the programs, how they tick, learn the little stuff and just expand.. plus i started playing seafight again and id love to learn how to make a nice scroller of my own haha.
|
Well so I get this right, you'd like to learn about how everything works internally.
Well then there are basically 3 Languages i can recomment to you.
1. C. C is an old language that hasn't changed much over the past few years. This language was designed to develop low level applications like operating systems or drivers. This language has no large libraries and so the programmer needs to take care of everything himself. Learning C means to firstly learn about how the Computer processes and stores data, how programms communicate with each other on the operating system level, and how programs interact with the operating system.
But, i would not recomment using C on a Windows System. Also most of the C Code on the Internet is for Linux systems, and won't work for windows. (Also is the Linux architecture better suited for C with fork and execev)
2. C++. This language builds on top of C and is therefore highly compatible with C. It contains nearly all features a programming language can have, and can therefore be pretty confusing. It should be said, only because C++ supports a feature that doesn't mean you should use it. C++ is build to be complete.
Thanks to all the features its not quite a pain in the arse to use compared to C. Also C++ has a big standard library which takes a lot of work off your shoulders. Combined with big thrid party libaries like QT you can also write "meaningful" applications pretty straigh forward, what in C would require you to first take a deep dive into your operating system.
It also lets you stay pretty low level (if you want to, you could also use only high level features), and therefore supports also learning about the inner workings of a Computer
Therefore C++ Applications are better fitted to use on Multiple systems, and C++ is well fitted for both Windows and Linux.
3. Pascal. This language was developed a little bit prior to C, but instead of developing a new Language like C++ this language was expanded and has now many modern features to support high level programming like OOP. It's not that overloaded like C++. It was developed as a learning language for students and is therefore pretty strict to enforce a "good style" of programing. It's somewhere in between C and C++, it's not such a pain in the arse to use like C, but you are defenetly forced to use low level concepts like memory management, what you can completely avoid using some C++ features.
It also has a big standard library and makes, like C++ with QT, development of "meaningful" applications quite easy.
It first was mostly used for Windows, and still has the best support for Windows, but also works fine on Linux or other posix systems (e.g. MacOS).
With knowledge about any of those languages it should be easy to learn any other language you like at a later point. (In fact it is often required to learn a new language in a few days) But these languages focus on a low level point of few, and require you to know how things internally work. It might be a little unfulfillinf if you start of with for example C, and after a few weeks the best you can do is to make some kind of tik tak toe in a console against yourself (Well with C++ and QT or Pascal you can at least do this using fancy graphics

), but thats the price for learning a low level language
I would also recommend you to getting used to Linux. Especially in networking Posix is the standard, as most routers, switches, middleboxes, etc. run a posix systems (mostly parts of the linux kernel), and Linux is the most acesible of the posix systems (MacOS requires a mac, and BSD is a pain in the arse).
It can be also helpfull to learn about how your Operatingsystem is working, the book "Modern Operating Systems" written by Andrew S. Tanenbaum is pretty good about that stuff.