Well considering I don't want to go into programming professionally (my goal is to own a gaming company or become a 3D artist) it seems like python is the way to go for me. I'll just hire programmers that can use those other languages.
I remember one project (two weeks to do) was basically to emulate nix directory and file structure in c that was FRESHMAN year lol
I agree abstraction is good in general, but smart abstraction at that. my main point is that knowledge of stuff underneath makes your high-level code that much better.I did that too, but that was in second year though. i'm not sure if that counts as freshman in the states.
the thing with moving from high-level to low-level is that it's not like programming itself becomes harder. the logic is still the same, but the tools you use become cumbersome. OOP has been a tremendous boon in the field because it aligns with most people's way of thinking. C is completely procedural. the control flow is fukked. the naming is fukked. everything is fukked. but that's if you've been babyed around with a high-level language.
dude, my first time dealing with pipes in C? shyt made no sense. i was upset because i knew what i wanted to do but i didn't know what C was doing low-level and hence the language was being unco-operative.
the thing is, how a computer works, isn't the same as how we'd like to think they work. the abstraction is good, because it makes shyt easy to wrap your head around, but what the more advanced programmers know is that, it's just that an abstraction, nothing more, nothing less.
smart dumb muhfukkas love to state that it all boils down to 1s and 0s. well, in a way they're right. we'd just prefer to pretend otherwise.
also pipes ? pipes in C are pretty straightforward. where you were coming from where pipes were much easier ?
I mean, all unix is basically written in C, so any pipe you write in C is unix-like pipe
theres always stuff that if you just do high-level you miss on, because it makes visibly no difference on high level yet it does on low level and you get drastically different results. shyt like that is really obvious when you start going in depth on compilerswhat was difficult initially for me is that i didn't understand the control flow. i didn't know that one thread will 'block' until input from another thread gets piped into it. i agree that it's pretty straightforward. it's just i came from a background where i expected everything to be intutive and to make sense instantly. my whole dealing with pipes was a watershed moment, as it made me realize that code doesn't necessarily need to cater to the lowest common denominator.
my academic career has been pretty topsy-turvy so i never got a chance to take a class on compilers but i wish i did sometimes. i remember one time in a theory class a lecturer kind of mentioned off-hand that every method call has a setUp() and tearDown() (likke when you're doing tests) & that we would learn more about this in compilers.
dawg, that statement had me with its profundity. i could never look at a 'getter' method and a 'setter' method the same again. up until now, i prefer to deal with naked variables than with setters and getters. i bet if i read up on compilers, my programming game would increase by a factor of 10.
theres always stuff that if you just do high-level you miss on, because it makes visibly no difference on high level yet it does on low level and you get drastically different results. shyt like that is really obvious when you start going in depth on compilers
for example, http://stackoverflow.com/questions/...rted-array-faster-than-an-unsorted-array?rq=1
if you only do high-level code and have no clue about compiler optimization and how assembly and cpu cycle with pipelines work, it makes zero difference to you
but as mentioned the code was 6 times as fast or nearly 10 more seconds with n only =100k
theres always things like that, and hence why imo cache, virtual memory and assembly has to pretty much at least be in the back of your head when coding
but yeah compiler class just gave me a lot of insight on things where it wasn't obvious how compiler does translation/optimizations. plus writing your own compiler was fun lol
theres always stuff that if you just do high-level you miss on, because it makes visibly no difference on high level yet it does on low level and you get drastically different results. shyt like that is really obvious when you start going in depth on compilers
for example, http://stackoverflow.com/questions/...rted-array-faster-than-an-unsorted-array?rq=1
if you only do high-level code and have no clue about compiler optimization and how assembly and cpu cycle with pipelines work, it makes zero difference to you
but as mentioned the code was 6 times as fast or nearly 10 more seconds with n only =100k
theres always things like that, and hence why imo cache, virtual memory and assembly has to pretty much at least be in the back of your head when coding
but yeah compiler class just gave me a lot of insight on things where it wasn't obvious how compiler does translation/optimizations. plus writing your own compiler was fun lol
Great post and link.
I wish I could read what happened at Nintendo with the WiiU operating system. When it first came out, there was huge waiting times between menu screens, loading issues, latency and other problems. They spent a few months cleaning it up. Loading times dropped nearly 20 seconds in some cases. It was then optimized again and there was more improvement.
Just goes to show how important efficiency in coding and understanding the hardware and kernel really is.
nah I dont have anything concrete right now, its been a while. I cant even name the few compiler books Ive used...loldamn breh, that's insane
do you have any good resources for someone who wants to self-learn the basics (and other low-level minutiae)? i'm almost out of the school system and can't benefit from a formal education anymore. i'm definitely going to have to read up on compilers. i'm a performance nut, and hate how i have no idea what's going on bit by bit most times.
dont want to get too philosophical here, but experience and drive to learn is basically your best friend. especially in CS where you learn something new every single day. books and online guides and stuff like stackoverflow are great as a supplement, but experience and just writing and exploring stuff is always how you feel you really know stuff.
algorithms and big oh is a staple of things. if you cant analyze algorithms, you cant really program lol. its quite easy too, nothing complicated as long as you can do medium-level math.you're basically right though. now that you and @Type Username Here have got me hip to this, i have a burning desire to really know what's going on at the assembly level. i absolutely will not stop until i find out.
anyways, great to be talking to experts here, lol. usually i log into the coli to fukk around but i'm actually learning stuff here. it would be great if you could share any more solid insights you've collected over your time working as an engineer.
what do you think about analyzing algorithms, and big-oh. i feel like there's a schism. there's the folks who say that you don't really need to worry about that stuff, if youu're just doing minor things. however, for the ppl working at amazon, facebook and google where you are dealing with large data, having an algorithm with a good worst-case running time could be the difference between meeting that deadline and getting fired.
also what's everyone's opinions on recursion? generally it's an expensive procedure, and i've even heard some developers say that it should not be taught in schools. of course some problems can't be adapted very well to a looping algorithm so recursion is your only option, but generally speaking, when you've got a choice between doing something in a loop and doing something with recursion, recursion is going to be the more efficient alternative.
I dont get why it should not be taught, recursion is a great concept and makes for really simple, elegant solutions to some basic problems. recursion is easily explained when explaining the stack, soalso what's everyone's opinions on recursion? generally it's an expensive procedure, and i've even heard some developers say that it should not be taught in schools. of course some problems can't be adapted very well to a looping algorithm so recursion is your only option, but generally speaking, when you've got a choice between doing something in a loop and doing something with recursion, recursion is going to be the more efficient alternative.