The "real world" is actually much simpler. A "coder" is somebody who "codes", a "programmer" is somebody who writes "programs" (is this different from coder? Maybe the way we perceive the word is, but deep down it really isn't). A "hacker" is somebody who "hacks", which can mostly mean who engages in playful cleverness[0], it needn't be software or hardware, low or high level. A "developer" is somebody who "develops" software (this might be a step up from a programmer because a developer is usually the creator/architect of that software too, not just a code monkey). A Computer Scientist is somebody who studies Computer Science, which is a branch of math, usually (but not necessarily) with a degree.
Feel free to criticize me, this is my view of this world as opposed to the author's view of his own world which I don't agree with.
[0] http://stallman.org/articles/on-hacking.html
ps: shall we add also sysadmins, IT techs, Software Engineers and Computer Engineers in the mix?
One man's halting problem is another man's incompleteness theorem(s)
I think a scientist is somebody who applies a scientific method or, more broadly, does research in a field. Since "Computer Science" isn't really a science (it's closer to Math) it gets muddier, I'd assume a computer scientist is somebody who does research in the field of computer science. That's as "objective" as it can be in my opinion.
All in all what's important is that these fields needn't be mutually exclusive, one can be a programmer and a computer scientist. (And the original point of my comment was that applying arbitrary definitions to roles is way too simplistic, the best we can do is apply those words as literal value)
I think that understanding each label means more about understanding the person using the label than understanding some absolute definition of each term. My understanding of a self-assessed hacker or coder is going to be far different from my understanding of a person that is labelled by others as a hacker or a coder. I think most of these labels are really interchangeable in most circumstances and it comes down to understanding how each is being applied rather than each having their own definition.
In my mind, "code" implies something opaque, mysterious, and difficult, rather than something which is open to all.
in my circle we probably use it much more than 'developer', which is a woolly term that encompasses all kinds of artists, designers, producers, teams and whole companies. although the standard term is definitely 'programmer'.
I find this interesting - even though scott says he doesn't think its coding in the traditional sense a lot of people do.
This is something that never comes up in my circles (web programmers aren't 'real' programmers) we all believe it is a way to encode data...
However, there is a common confusion here - code as a word is meant for the sense of encoding data. Program code seems to have swallowed this original meaning so a lot of programmers think of programs and instructions as being 'code' probably because its a short 4 letter word
Even though the conceptual requirements to understand HTML and CSS are far below that for program code, they are very much still a subset of it so I don't think its especially harmful to use the word 'code' in this way.
That they are easy and forgiving, ought to make us consider them as worthy models for our next language not as objects of scorn,
One certainly could describe html and css as 'declarative' programming languages in that sense, but I think its a pointless definition then because all data fits that same definition - so why not just call it data?
The key thing here is about what is encoded, not what the output is. A C Hello World program encodes a call to printf along with a data string as a piece of executable code in the entry point of some executable format - the fact that printf is a library function is deceptive - because the encoding of that is important too and it describes how to interact with the OS to output text. HTML containing "Hello World" encodes merely the string and gives you no choice of what is done with it - nor can you interact with the OS, the hardware or any of the surrounds without introducing more (e.g. JavaScript).
However, the fact that you edit it directly in a text editor makes it coding. I have no disagreements with that at all... but the fact that HTML and CSS are difficult to use data formats doesn't qualify them to be 'full' programming languages imo.
As for scorn, I have no scorn towards HTML and CSS because of their perception of being code. I do however have plenty due to the design and real world implementations - not because they are 'easy', but in fact they are much harder than they need to be due to a combination of poor design and poor browser implementation. I can qualify that a lot, but its an article of its own I guess... not a comment. :)
Any decent programmer should be able to design a superior alternative to HTML and CSS imo. Its not a difficult task.
<p class="fancyText">Some fancy text</p>
does in fact transform the data without javascript [or rather it might transform it in combination with appropriate CSS].Pushing further: How is #include in C much different from <script></script> in JavaScript?
I mean hello_world doesn't do anything interesting without calling `printf` and `printf` for all we know might have been written in assembly. To put it another way, without the various libraries, about the only interesting thing a C program can do is crash your computer.
I disagree. HTML describes the semantics of the input, nothing to do with how it is 'transformed'. I see it as a form of punctuation.