[QUOTE=Drakkar Sauna]
I don’t really understand software or programming other than that “software is made of codes that run and stuff.”
I understand that back in the day (and based on elementary school memories of writing basic programs in BASIC and stuff), software was actually written by people typing out strings and strings of code that looked like garbled nonsense, but when that code was run, it turned into a game or an animation of a picture of titties or whatever.
Now, these days, is a big piece of complicated commercial software, like an OS or a game or video editing suite still actually created by people sitting there and typing in lines of code? Or are there, uhh, “maker” programs that give more intuitive toolsets and interfaces that people use to create such things, then the actual code is somehow generated or compiled?
Remembering that it took hours just to make a basic pac-man style game, I can’t imagine that something like Mac OSX or FinalCut Pro is created by hundreds of guys typing out “xrun=$5urlt+clockdiv65765464569integer9349349” for hours and hours and hours at a time, but maybe it is.
Sub-question; I hear nerds and friends that work in programming complain about how “good” or “bad” someone else’s coding is. Is there a lot of variation with how efficiently and successfully code operates?
[/QUOTE]
It depends, more “basic” (by “basic” I mean “provides a base for other things to run on”, not, “simple”) things, like an OS, tend to be built, literally, lines of code up from my understanding (I’m more on the application side of things and need to study this still). However larger applications (think a game) tend to have “tools programmers” which make a set of tools for the other guys to use. If you’ve ever played a game that has a world creator (like Warcraft 3) it’s usually fairly close to what the game makers used to make the game, in some cases the exact same. Oftentimes the engine they buy or use will have a tool-set and they just need to modify it. Without an existing engine it can slow development times by 3-5 years, so you can tell line by line (which engine programming boils down to in a lot of cases) takes a lot longer.
For other applications there are ways to simplify it, for example Microsoft’s Visual Studio and Netbeans provide IDEs (essentially the same tools that I mentioned for games above) that allow you to lay out your applications visually and apply code to them via an interface, however most programmers still go into the code and mess with it to clean it up and make it run more efficiently. This is still quite a bit faster than line-by-line though.
As for your bonus question, code can be a nightmare. Certain processes run slower. Some code is the equivilent of taking out every book and looking at the cover until you find it, some is the equivilent of only looking at the spine and taking out the one you want, and some is like taking out every one and then going back to the right one after you’ve looked at all of them. Not to mention a lot of people don’t comment their code so you may have no idea what they were trying to do (and many people who don’t comment can’t even remember what their own code does). Due to the physical component of the hardware certain things just run better if you know the way stuff is stored, accessed and such and you know what path it takes to do each. “Bad” programmers don’t know the intricacies and can make code SIGNIFICANTLY slower than others. In one of my threads I think someone brought up a new programmer that hadn’t learned all of the lower level stuff that had the speed of his program improved 2000% (or similar) by having the mechanisms changed.
I’m by no means a programming guru (working on it, consider me an apprentice), but this is what I understand as of now. If I screwed something up I leave it to those who have been doing this for years to correct me.