[...]
I think you missed the mocking tone of these
quotes.
No, no, that exactly I meant. That these quotes can be absolutely
*correct* (without any humor) and at the same time -- not (if we will
talk about exactly JS abstraction). But users of libraries (as the
same you -- a user of ECMAScript programming language -- which is a
very high abstraction in contrast with e.g. C or Assembler) have all
rights do not even *think* about some previous abstraction levels.
Only if they interested in them, that's another question.
So the main point of this question is in the *point of view* on all
these talks, discussions, defenses of something and so on. You think
that in the past some Assembler programmers didn't talk something like
"WTF is C? That's slow crap? Don't use it "C Monkeys", use old good
Assembler". But this meaning hardly can be named as advanced
professional. What the most funny, Assembler itself is already a very
high abstraction (before it there are HEX- and BIN- codes programming
(which are also very high abstractions, because human can understand
it), and before that -- programming with cords).
What benefits will some have if he know some previous abstraction
level? Of course benefits are obvious. You can more powerfully use the
system, implement additional stuff (e.g. my C++ colleague which wrote
some additional modules for SpiderMonkey on C in my previous project
-- so we have some augmented SpiderMonkey engine), to repair if
something will go wrong on "low" abstraction level and so on.
But that doesn't mean that user of some concrete abstraction layer
should know all the stuff of previous level. Otherwise, the fair
question will be about all other previous abstraction levels (do you
program every day on HEX-codes? I mean not to pass the exams in the
University, but -- every day and spread it as the only one correct way
and all others -- are "monkeys"? I guess not).
So we use some our level of abstraction + - some previous and (of
course) should know about all future levels. When we see that line of
code:
alert(1);
we don't even think about all needed layers of abstraction to build
this fancy modal window (but think how many of the them are used), for
us it is simply and abstract -- "show us a message" (the analogue with
the `print` on Assembler from the previous message) and we can
concentrate on more art tasks.
That exactly with users of some libraries which provide additional
abstraction level. You know deeply JavaScript itself? -- that's
brilliant, then you can understand and use for full force that new
abstraction layer (or again -- to repair something on low level). You
know deeply C? -- No? -- then you can't repair some buggy
implementation. But other will and tell you how ugly is JS written
itself on low level. And so on, and so forth.
So as I see the professional viewpoint -- is that you deeply know and
understand your abstraction level (that one which you use on practice
every day, e.g. JavaScript). All other abstraction levels -- are by
the own wish. If you know some nearest previous abstraction levels --
this is very good (e.g. if user of jQuery knows JavaScript). But (the
most important point) -- if you stop on some current level and will
talk "don't use that new crap", you can loose. So we should know all
new (neighbor) layers and go forward. If want say for users of some
new abstraction level that something is written bad, you can; some of
them (which are interested in your abstractions level) will be
thankful to you, but all other have complete rights do not think about
it.
I'm all for higher-level abstractions as long as they are built on solid
lower-level abstractions. Unfortunately, most popular JS libraries have
not fit this description to date.
That's the point, nobody's limit you to use anything to implement you
abstraction level. E.g. you library could be written on pure hex-
codes. Will it be better?
Today programming languages (becoming high-level abstracted) still are
very low abstracted (and JavaScript also). We still should type
something with hands
I think in future will appear new concepts and
paradigms, and if stop on our current level and will claim everything
which is less effective (because we see how it is built inside), we
loose -- that was, is and always will be so. But, that mostly about
philosophy
P.S. And by the way, Assembler still rocks
And besides of funny
applications (e.g. demo scenes which I like very much when some
amazing graphics and sound are written only in 64Kb (exactly 65536
bytes) or even 4Kb) there is a huge serious approach e.g. programming
of micro controllers and so on.
Dmitry.