What is the Purpose of Programming? I mean, why do you do it and where is it going? Where should it be going? I'm not just asking about the mechanics of programming but the ethics and direction of programming: where is it leading to? Maybe there are already loads of pages dealing with this, but maybe there's more to be said... contributions now requested! ---- ObQuote from the TronMovie (Also see AlanKayIsTron) Dr. Walter Gibbs: User requests are what computers are for! Ed Dillinger: ''Doing our business'' is what computers are for. ---- The PurposeOfProgramming is to use computers to solve problems caused by computers -- PhlIp ---- ''ethics of programming'' I think my thoughts on this can be summed up in one word... Huh? -- AnonymousIdentity ''OK, try this: what is the difference between coding a spider to crawl newsgroups and mine e-mail addresses to spam and writing a tool like Wiki to enable community-based collaboration.'' -- anon2 GlyphLefkowitz wrote an essay on this subject. http://www.twistedmatrix.com/users/glyph/rant/softethics.html -- ChrisArmstrong ---- For me, the purpose of programming is a) making a living and b) pleasure. In my case, I think, the pleasure derives from the abstract problem solving aspects. The making a living derives from Qsent Inc. -- RobertChurch, celebrating PayDay ''Would you write spamming software, if the problem itself were interesting? I think that's what the author means by "the ethics of programming." -- BrentNewhall'' See Also: AnalogyBetweenProgrammingAndManufacturing ---- I have a theory that software engineering is one of the few industries that are concerned with turning money into time - by spending money we (supposedly) save other people time by automating processes they'd otherwise have to do by some other means that would take them longer. (Concorde flight crews are another.) The trouble with the theory is that the processes we automate are far too often unnecessary anyway... -- KatieLucas '''The purpose of programming is to automate processes.''' The question of the morality and ethics or im-/un- of such processes are another topic. (And a quite worthy topic, at that.) '''The practice of programming is one of teaching the computer to do something.''' Thus, in an important sense, you must know how to do it before you can teach a computer to do it. -- JeffGrigg ----- The purpose of programming is to create. The languages, machines, compilers and interpreters are only tools; brushes to painters. Going to work every morning except on Saturday and Sunday... that's a program. Sure, it's more like training a neural net, but that's still a program. The computer version of programming, (coding) is mostly used for process automation/communication facilitation. But that's only because the tools (programming languages) that we have now are so crude. And even then, there's a lot of work being done at Universities (don't know about industry) in terms of AI/AL/simulations that is very creation oriented. Consider that there has been no real evolution in terms of the way we program. Object oriented existed in another form in the 70's (struct/function pointers in C), garbage collection is really not a new idea (scheme, prolog). The only thing that has changed are the environments. And even then, I hear Xerox at Palo Alto used to have similar stuff in the 70's. the rest is all functions. How about a neural net based programming language, where a program is really about defining training? How about a language designed for parallel processing, or for web crawling? While there might be java classes/perl modules for some of these, the whole point of the language is abstraction. -- FranckBinard ---- As I see it, the ultimate purpose of programming is to make everyone unemployed. This may sound shocking and nasty, at first, but with some thought you should realize it is not. Even with all the mundane tasks of our society automated we will still have, at the very least, the same amount of resources available to us. If the structure of our society allows it, we will not all suddenly face poverty. Instead, we will be freed to become more human. Creativity, invention and ideas will flourish and we will all end up better people. Programmers have the burden of the greatest mission ever conceived. The freedom of the human race. -- Setok As I see it, the purpose of programming is electronic procreation of neural activity: the epitome of a program is one that runs after the programmer is done, after the programmer is gone (from the company), and after the programmer is retired. That's why programming logic that will run millions of times as millions of users click a web page is so exciting: you multiply your mind's designs by millions: you've mastered volume. That's why scheduling your program to run every night until the end of time is so exciting, you've now mastered time, and become "immortal". A little bit like art, but in a less conspicuous manner. -- Michael Hay, San Francisco, CA As I see it, the purpose of programming is to build machines out of bytes that are impossible or too expensive to build out of atoms. Computers are machines that can imitate any other machine. Programming is the act of making them do that. -- EricHodges ----- The purpose of programming is to turn caffeine into error messages. ------ Programming is a path with a heart. It is pretty cool that one gets paid for it as well. -- LourensCoetzer ------ Programming supports Truth. Truth is understanding in the light of all information. For example without programming we wouldn't have the Internet, which gives people a massive searchable resource where they can research almost anything, comparing facts and evaluating sources, finding shining truths despite the muddy pool of lies and misconceptions. Eventually Truth *will* prevail. Programming supports Love. Love is where two or more beings join together. For example without programming we wouldn't have email, which allows people to communicate and thereby brings them together even when their governments have put 30 foot barbed wire fences between them. Eventually Love *will* prevail. Programming supports Peace. Peace is wherever there is balance between systems. If you are concentrating on fixing the problems facing humanity you have no time for those who create them. A programmer can look at a buggy, unbalanced situation and, by applying transformations, converge on a solution which produces equality and balance. If only world leaders were programmers instead of warriors, eventually Peace would prevail. Programming can be restated as the electronic modeling of real things. Eventually everything will come to be modeled, and we will truly begin to understand the fabric of the universe. God is a programmer. -- MikeAmy Are you going to bogart that joint all day? Pass it around, man. The art of discovering physical laws is analogous to discovering the laws governing the electron flows in a cpu executing a computer game. They (physicists) just never get the game! -vic ---- Programming extends the human will. It's about reifying what can be conceived. ---- Programming is a way to satisfy human ego "I can command anything, even a dumb machine". -- Sasi ''(When I was in Junior High School, this what I found most attractive about computers, and programming. I've matured since then. ...which doesn't make the statement untrue. -- another speaker ;-)'' ---- Engineers create, doctors repair, lawyers learn, bankers pretend, cops exercise etc. Engineers do a dual creation - in the mind first and then in the physical world. Programming is when both creations are virtual.. It is, at times, an kinda unreal(escapist?) form of living too, since it's a machine who is your primary work-mate during most of the day. -- ShineKannikkatt Ask N people why (for what purpose) they do some X (here: programming) and you will in all likelihood get N different answers. It's the people, that have purposes, not tasks. Though one might argue, that some tasks better fit the purposes of many than others. -- GunnarZarncke Programming at $75k/year while spending $15k/year to live leaves $60k/year net savings before tax which can eventually be spent on vet school at $42k/year thus avoiding the terrible professional school debt problem! -- JohnDuncan ---- Programming is the way we * speed up the attainment of answers whose solution process is already known so that the time can be used for more valuable things * automate tedious tasks whose methods are already known so that the time can be used for more valuable things * accelerate communications, used in concert with other technologies to speed up and automate the processes that enable said communications, improving the efficiency of communications so that the time can be used for more valuable things * create tools which, used singly or in combination, enable permutations of the above, so that the time can be used for more valuable things * using the speed and automation mentioned above, create abstract environments (frameworks) to enable better understanding, discovery of relationships, and ... well ... entertainment (games and the like). -- GarryHamilton Yep. But it's not '''just''' "...so that the time can be used for more valuable things", it's also to drop the time to the point where something becomes practical at all (e.g. modern algorithms for factoring larger numbers than otherwise feasible at all), or more generally, to lower the barriers limiting activities. Amongst zillions of examples, much of what average people do with home computers today (multi-font publishing, graphics/image/video manipulation, etc) was possible 3 decades ago, but generally only to professionals and at much higher cost. * Let me expand on this a bit. One of the learning tools I've used for years with great effectiveness is the "demonstration" technique. Given a concept, you can test your grasp of the material by demonstrating, or modeling, the concept. You can draw it on paper or white board, model it with various handy objects, carve it from wood, model it in clay, or build a cardboard prototype. The idea is to get a physical representation of the idea at hand. Get it "out of your head" and into the physical world. The gaps in your understanding show up here, the flaws in your conceptualization become apparent. * When I learned to program, it struck me that, over and above the basic ideas I listed above, a computer is the ultimate modeling clay (plasticine for those East of the Pond). It was amazing -- even with a text-only screen and a 2 MHz 8-bit processor -- you could render any concept. Never mind that the machines of that generation lacked the resources for the kind of stuff we do today. What was clear was that, given the resources, ''anything'' could be modeled. I remember trying to convey this to the people around me that saw it as a large, heavy, expensive calculator. I remember the frustration of trying to show them that, while a computer does calculate, calculation is not its primary value. It's a communications device of unparalleled flexibility. * Now, ''programming'', that's where you realize the potentials of this magical, dimensionless space. You can write programs that are as primitive and earthy as railroad tracks. Slightly more advanced are the programs that create worlds modeling the imagination of their authors -- railroads that span the clouds. * Much of what can be conceived can be achieved in animation or with calculators or whatever, but the ''time'' penalty of doing it manually is what makes it impossibly arduous. Programming, using the electronic clay that is the computer, makes it possible to do these hitherto unthinkably hard things ''by removing the time penalty'' from the exercise. It's not about replacing people, it's about removing the time penalty so that more can be accomplished. -- GarryHamilton ---- Of course, it helps to remember that ProgrammingIsInTheMind. -- Geraldo Melo ''That idea is in your mind. You are [one of] TheKooks.'' [You might wish to read that page before you pass judgement.] ---- The purpose is to make semi-automonous objects in the abstract playground of the computer -- which is absolutely ''not'' the mind. In other words: it is '''applied philosophy''' (or experimental philosophy). ...And what is the purpose of philosophy if not to make a better way to live? ---- I've learned, from a very brilliant man that software can be an art, where the programmer express himself through functionality and design. We, humans, have been using software to make processes more efficient, increasing revenues. Extending our thought about programming, humanity has been very successful in increasing revenue gainings with better programming tools and techniques. But we are facing new challenges, such as climate changes, in a planet with limited resources. It is my felling that software, as well as technology will help us to learn to associate success with natural resource usage optimization, and not only revenue increase or economic growth. I mean, programming can be whatever we intend to be, depend on who is creating the product and for what reason. ------- I classify the ranking techniques of software design/tool option choice into these four categories: * '''Economic''' - software is a tool to optimize profits and/or productivity for the organization * '''Model Perfection''' - software is to describe the domain as accurately, thoroughly, and/or as logically and parsimoniously as possible * '''Human Grokking''' - Software is to communicate ideas to current and future maintainers as efficiently as possible. * '''Harmony''' - the choices made should reduce bickering and anger as much as possible for "our group" * '''Personal Comfort''' - It "feels good" if one personally sets things up a certain way, such as MentalIndexability. (This may or may not translate into some of the above. ItDepends.) * '''Resume Fuel''' - software choices should fill up my resume with the most marketable skills and buzzwords Of course, there can be a mix. The metrics one chooses to measure "goodness" often depends on one's choice. (I lean toward "economic".) --top ''You should add '''Arbitrary Personal Preference''' to the list. It's the most common reason for software design and tool option choices, but some explicit or implicit combination of your categories are usually used to justify it.'' Ok, done. I should point out that often people are not aware that others just think differently than they do, and thus use their preferences as a default until told otherwise. Thus, I'm hesitant to call it "arbitrary" in a general sense. ---- The primary purpose of programming (in a typical organization) is to '''communicate an algorithm to another human being''' (and/or a future instance of oneself). The secondary purpose is to communicate an algorithm to a machine (computer). If it were the other way around, then we'd usually be using machine language, assembler, or some other low-level language. (Running "correctly" is perhaps the primary purpose, but that's mostly a given in these discussions and mostly comes into play if "correctly" is critical, such as banking or life-support software. Such software may lead one to use more labor-intensive techniques over pure or quick grokkability.) --top ---- The purpose of programming is to make a computer do something. {...so that humans don't have to do it.} ---- A computer is a general purpose machine; programming gives it a specific purpose. ---- ''Sometimes I think the purpose of programming is to keep social media pundits or SEO "consultants" in a job... then I wake up screaming.'' ---- Purpose: to act as a bridge to reconnect us, re-inventing society and making a true democracy. ---- Half-assed programming was a time-filler that, like knitting, must date to the beginning of the human experience. [Vernor Vinge A Fire On The Deep]