Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Describe in, say, five thousand words or less the architecture of nginx in a way such that if implemented it would have demonstrably the same characteristics as the existing version.


The reason why we use words like 'web server' is so that we don't need to carry around a 5000 word description of a 'web server'.

Just as when building a car one would use a word like 'engine' rather than carry around a 5000 word description of an 'engine'.

By compressing highly complex machines into single words we're able to build much large machines by treating that complex machine as a single component of the much large machine.

Furthermore, I fail to see how whether one can describe nginx in 5000 words or less means that our industry lacks the vocabulary to describe components of more complex machines built from those components.

If your developer requires a 5000 word description of nginx to type

  apt-get install nginx
then they are a tool and need to be fired.

Most of the problems with our industry stem from exactly this kind of problem, rather than look at the vast array of components that do the exact same thing they are about to implement, they use something like nginx to make nginx, except instead of installing nginx they made a 5000 line nginx config file to reimplement most of what nginx already does.

If you've ever seen

  { "key" : "23", "value": "Michael Jordan" }
then you know what I'm talking about in regards to the stupidity of this industry using components to make the component it already is.

This question is like when someone says they are intelligent then someone gives them a wrote memorization test about the agreed upon symbols we use to encode those words on paper. While memory is required for intelligence, not having memorized a particular encoding of a particular word is not an indication that one does not possess intelligence.


If one wrote such a description, it would form the source code for nginx. The source code for a program is a description of the program's architecture, in all of its details.

Do not mistake the source code, for the program itself! The documents programmers spend all our time working on are really just specs; the actual program is an artifact produced by a compiler.


This isn't entirely true, you could compress the source code which would generate a dictionary (vocabulary) which could be used with the description (compressed output) to recreate the source code.

You see comp sci is so advanced we don't even bother writing descriptions of our creations, we allow the software we've written previously create those descriptions for us, along with the dictionary used to understand the description, and then use another program to understand that description for us.


Nice.


Is it even possible to compress it down tha much?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: