2015-07-28 at 2:59 AM UTC
So I want to get back into programming but have been in a drug induced haze for the last 4 years. Up until 2011 I was learning this shit like a motherfucking boss. I piddled with some Python. Farmiliarized myself with C/#. A little bit if BASIC knowledge. I was starting to learn a lot more about networking as well. Right before I stopped I was getting pretty deep into assembly.
Anyway its been a while so what advice would you guys have for me for getting back into the game?
2015-07-28 at 3:27 AM UTC
Oh I should add I have some Linux experience. Used it solely for a while. Used backtrack. Bropped pen testing before Kali came out so any developments since then would be great.
2015-07-28 at 6:10 AM UTC
It's better to dive deep into one language than know a little bit about several. People always say that and I doubted it when I was learning my first language but it's true, picking up new languages once you have relative mastery of one is really easy. Python is an excellent first language IMO because it's very flexible and you can probably get to writing useful programs quicker that almost any other language (except those in the same general niche al la ruby and perl).
As for materials, it depends on what language you're learning of course. For python Downey's Think Python is the book with the best (most interesting, useful, and truthful) content IMO but I've never met someone who's actually learned using it so it's hard to say if it's really pitched at a level it's intended audience will be able to handle. Pilgrim's Dive into Python it popular, widely used and well received. Shaw's Learn Python the Hard Way is cargo cult programming and Shaw is a straight cunt but people like it for some reason. People are stupid for some reason.
And of course writing programs is the most import part of programming. Go make some shit, watch it collapse in on itself under the weight of a terrible design, and rebuild (or build something else). As far as I can tell that's the only way anyone has ever learned the craft. If you can think of things you want that you can build, that's even better. Building examples out of books can teach you mechanics but if you can assess your own stuff against what you want/need that's even better.
2015-07-28 at 7:17 AM UTC
Your last line is some good advice. I feel like that's why I stopped. I made shit that just sucked and got butthert at my ineptitude as a beginner. Maybe its time to say fuckit and realign my current obsessive drives toward programming. I suppose making the mistakes and fixing them is part of solving the problem right?
I actually started with Shawn's book (because it was free online and easy to access) went through quite a few lessons before giving up. I probably learned more C/# but have forgotten most of it. I'm really looking to get into board programming, hence the assembly. I had an idea of making my own operating system. Something little and simple. Not too large yaknow? Really more to dabble with and I was really getting into MINIX source and shit. I actually know a decent amount about kernels and how an os fits together.
So if I were to renew this old goal would it be better to refine and finish my self education on C or Assembly or should I polish off my Python before taking as large a leap?
2015-07-28 at 7:48 AM UTC
Assembly is kind of an off choice for a first language. In classical CS curricula you don't really learn asm to write asm, it's more to get a cultured understanding for how CPUs work. When I took the pair of courses that involved substantive amounts of assembly it was more of a mechanism to understand processor pipelining and compiler optimizations than it was really useful in the "now I can do something with assembly". Many universities actually teach MIPS assembly because it's pretty simple/elegant relative to x86 despite the fact that finding a MIPS CPU these days is very rare. If it's something that interests you then that's cool, I'm not saying you shouldn't learn it, but it's not really something you'll find a lot of practical uses for.
As for C vs Python, they're both common popular languages, pretty much equally suitable. I think Python is more forgiving and more "powerful" in the sense that you have fewer things to worry about like manual memory management and pointers but that's just my two cents. C is more of the lingua franca I suppose and there are some things that it's better suited to. Far more important than the respective strengths of the two languages is which you enjoy more or find more interesting.
2015-08-01 at 3:45 PM UTC
I got halfway through 'python the hard way' and learned.....pretty much nothing. Even if I did learn something, I have this thing where if I don't use a skill over and over, I lose it. I have forgotten pretty much everything I have learned over the past six months
2015-08-05 at 12:37 AM UTC
By the way, if you're still interested in pentesting Kali 2.0 is being released in a few days.
2021-04-19 at 4:02 AM UTC
Learning assembly is like learning how to make wheels or mill flour. At some point "learning the fundamentals" needs to have a practical cutoff point.
I'd second learning python. It's easy, which is not a bad thing. It's flexible, so if you're not sure where you want to apply your skills you have a lot of different options. I've built home automations, webservices for work, open source tools, and plenty of stupid experimental shit all in python.
If you're looking for a corporate job go learn java or something. I don't love java that much but it'll get you work.