Hacker News new | ask | show | jobs
by moggie 5765 days ago
Disclaimer: I am very much a novice when it comes to any kind of programming; I have only been working in PHP, which I know is considered a scripting language and not a programming language, for a few months now. My understanding is relatively limited.

"Programming, as a whole, is far larger than any one person could come to comprehend in a single lifetime (...) And to make matters worse, it is continually growing more complex at a rate no person could follow either!"

Isn't programming, essentially, the writing of instructions and providing them to systems that act upon them? Reading through that statement I wonder whether it's not programming that is complex, but many problems that exist in various fields of business or study—problems that need a programmed solution.

Please—if you don't mind—would you elaborate?

1 comments

whether it's not programming that is complex, but many problems that exist in various fields of business or study

Unfortunately, it's both. ;)

While PHP is indeed a programming language (the term "scripting language" is a fairly meaningless label) when you work in PHP building web pages you're likely to spend most of your time working on things that are computationally tractable [1], but hard because it's just hard to translate the customer's problems into code within the available budget. Your customer has a problem, it's lots of work to map that problem onto code, it's hard to explain to the customer just how much work it is to turn the "simple" activities performed by (say) their administrative assistant into algorithms, and the result tends to be expensive to document, deploy, and maintain. So, yeah, it's the problems that seem to be hard, not the "programming" -- though, in fact, there is no hard-and-fast distinction there.

But then there are problems in programming that are difficult to impossible, all by themselves. The CS folks around here can point you at plenty of them, but here's a famous one:

http://en.wikipedia.org/wiki/Travelling_salesman_problem

which is a member of an entire class of famously hard-to-compute problems:

http://en.wikipedia.org/wiki/List_of_NP-complete_problems

which (I believe) are not particularly rare, but which come up in various disguises, and which must be carefully worked around.

On a somewhat more applied level, there are lots of difficult problems in code optimization that you can work on:

http://en.wikipedia.org/wiki/Low_Level_Virtual_Machine

Or you can spend your day exploring a giant set of data-storage possibilities, each of which is right in its own way, and wrong in its own way:

http://en.wikipedia.org/wiki/CAP_theorem

http://www.allthingsdistributed.com/2008/12/eventually_consi...

One may suspect, of course, that this distinction I'm trying to draw between "difficult programming" and "difficult problems" is not real; it's just a matter of the degree of abstraction you use when describing the programming. And I think you'd be right to suspect that. Programming is programming, and programming is hard.

---

[1] Though it is very, very possible to put something that is computationally intractable into a "simple" web page. Web pages have no upper bound of complexity.