Whatever Happened To Programming? 623
Mirk writes "In a recent interview, Don Knuth wrote: 'The way a lot of programming goes today isn't any fun because it's just plugging in magic incantations — combine somebody else's software and start it up.' The Reinvigorated Programmer laments how much of our 'programming' time is spent pasting not-quite-compatible libraries together and patching around the edges." This 3-day-old article has sparked lively discussions at Reddit and at Hacker News, and the author has responded with a followup and summation.
Frameworks (Score:3, Informative)
Re:Frameworks (Score:5, Informative)
Misleading summary. (Score:5, Informative)
Re:Programming == Cut & Paste (Score:3, Informative)
I wouldn't separate that too much. Some of us exist that can do the "hard stuff" and might even find and fix a bug in some of the libraries from time to time. However, when we're just making an app that works and fits in with the environment, a lot of the "hard stuff" has been done and is likely to be less buggy and more consistent with the environment than redoing the whole thing ourselves. Then, if it's open source, we can just fix bugs we find in the "hard stuff" and focus more on what we're actually doing.
Hell, things like basic sockets and other things that are fairly easy, really--every once in a while I forget to back that up or something stupid and instead of just doing it all from memory and by hand, I just copy and paste it off the internet, then rework it to my liking (by this time, I know the commands, but copy and paste is just faster). Of course, some times I like to do things that have already been done, only try to do it in a new way, just as an exercise (I'm down to programming as a hobby at this point).
I wouldn't be too harsh on copy and pasting, though. It can be a great learning exercise if you peel it apart and actually understand exactly what is going on and the different ways you can alter it. It's also a great way to get to know an open source library and be able to fix any bugs you find, or even add features to it, if that's your fancy. That's generally how I've done anything in that regard, to be honest.
Re:"Good programmers write good code... (Score:3, Informative)
That would be Pablo Picasso.
You can still program, if you're an engineer (Score:5, Informative)
I've dealt with Chinese and Indian outsourced code before - it's rather interesting. They take fragments of code they find via Google, paste them together, and do the bare minimum of editing to make it compile and say 'okay, we've fulfilled our contract, ship it.' This is what suffices for 'programming'.
On the other hand, I am still solving interesting problems with real programming at my current company, so I still think it's a lot of fun. The key point is that the programming is part of the /problem solving/. Code pigs have no concept of problem solving, just making the program work (by which they mean compile, or matching the sample screens). Engineers are solving problems, and the program is just a part of that. At my present job they really don't care what language I do things in as long as the job gets done, because solving the problem in the most practical manner is the most important thing. In practice this means I use C for things that actually do require high performance and minimal memory usage (this is still an issue in embedded programming), Python for everything else that I can, and domain specific languages for things like servo controllers or FGPAs.
The 'pasting not quite compatible libraries together' approach is a Java/COBOL thing of minimizing the damage incompetent consultants can do. I've seen it time and time again - once an Enterprisey Java programmer encounters sufficient complexity, a hormone kicks in and they create a framework to simplify this complexity. It does so, initially, but eventually ends up being 2-10x as complex as the original problem they were trying to simplify. But they see this as a net positive because they have a new acronym to put on their resume.
So basically, like every single damn post I've seen on here lamenting the state of programming, and repeating every damn comment I've made again and again, it boils down to 'solve problems as efficiently as you can'. Absolute rules, in programming or religion, are for people who are too simple to handle complexity. This is the difference between an engineer and a code pig.
Re:Frameworks (Score:3, Informative)
Tragic story :) For C++ (also Java these days) knowing and researching what libraries are available is more than half the battle. I was readíng the list of what he was doing, and Qt provides at least he beginning of everything there in the language he wanted (C++), excepting the garbage collection (which makes little sense in GUI programming in general and especially none in Qt). That that was what they ended up with was even more funny in a tragic kind of way.
Re:Crappy frameworks, tools and web standards (Score:3, Informative)
...its called Java. You may have heard of it! - A Java Webstart program can run on anywhere, with vastly less coding for platform differences than, say, coding a website to run perfectly between different browsers, and has everything you want, right now.
However, the slashdot crowd (and others of similar ilk) have already condemned, and dismissed the Java GUI for not been quite as fast, or looking exactly like a native app....even though these differences nowadays are very slight. Java has been banished from the desktop.
Now Microsoft are coming along with Silverlight, which I guess will do a similar thing (though, will probably work like crap on non M$ platforms), and in 10 years, the world will rejoice how Silverlight has brought us out of the dark Web based internet dark ages, tying us all to windows platform for ever more...
Im getting too old for this, hence my cynicism.
Re:As a physicist, (Score:3, Informative)
---
In science, Occam’s razor is used as a heuristic (rule of thumb) to guide scientists in the development of theoretical models rather than as an arbiter between published models.[4][5] In the scientific method, Occam's razor is not considered an irrefutable principle of logic, and certainly not a scientific result.[6][7][8][9]
---
I've actually had a good look and Ockham's Razor from the point of view of information theory. See, my blog [blogspot.com]. The trouble stopping the Razor been robust, is finding a fair language to express the scientific theory in a minimally small way.
Glad I'm writing embedded stuff (Score:3, Informative)
I've spent most of my career on embedded projects, and I'm still doing real programming, from bit banging an I2C or Dallas onewire bus, writing a custom assembly routine to provide a uC-OS-II task switch on an ethernet chip interrupt, or interfacing with some higher level Tcl stuff. To get the whole thing working mix in some shell, awk, python xslt, stir well, and get space qualified software. Oh and when all that starts to get boring, throw in some FPGA programming for a completely new way of doing things. I love my jobs!
Really, I think embedded software is often more interesting than most web-, gui- or server apps. The disadvantage is that you pretty much need an electronics degree (which I do), to be able to do it effectively.
Last but not least, it often pays pretty good, and the quality requirements are high, which means that there is time allocated to make something good. Google for 'Declic' on linuxjournal.com if you want to see what I'm talking about.
Try Embedded Programming (Score:3, Informative)
In embedded programming there's still plenty of opportunity for ground-up design. Eg. writing a new driver for custom or unsupported hardware, creating custom applications to do whatever unique thing your widget does, etc.
Yes, you tend to get into framework-hell on the GUI side, and occasionally in other areas as well. But even then I get a sense of pride knowing that I made these things work on a platform they were never designed for.