4 ms·
I'm familiar with TAOCP. :-) I think it depends on what part of the software development process you're looking at. Designing new algorithms and datastructures
by jbl 17y ago
I'm familiar with TAOCP. :-)
I think it depends on what part of the software development process you're looking at. Designing new algorithms and datastructures... probably art (in the way that developing mathematical proofs is artful). Choosing from a set of well-understood algorithms and datastructures... probably engineering. Coding up said choice into something that users and other programmers will use (in the case of libraries)... I'd put it in the craft category.
- derefr 17y agoI have a feeling that, at some point in the future, all the "engineering" could actually be done by the compiler. You tell it "I want to store X, Y, and Z"; it selects the best data structure for you, and tailors the algorithms to be optimized for just the kind of data you'll be working with. The designers would still exist and be responsible for feeding the compiler new data structures to select from, but most "programmers" would simply become business analysts, feeding the domain knowledge required to the compiler and watching as it evolves a program that best handles those conditions. The "craft" aspect would reduce to defining Interface contracts for your libraries that the compiler would have to adhere to when munging its algorithms (though it could always just tack the "right stuff" transforms on top of its quirky works-by-coincidence internal versions.)
- jbl 17y agoOr, things might go step a further with everything running on virtual machines that monitor the behavior of the program (and the structure of incoming data) to tailor things appropriately.