In the beginning was Netscape. And he wanted Netscape to execute the Scheme code in the Netscape Navigator browser. And they hired Brendan Eich to work on it in the sweat of his face. But then they changed their minds and decided that they want Java. And so, JavaScript was born. And it was (quite) good.
A crazy idea took possession of Ryan Dahl (Ryan Dahl) years later: to make friends with the
V8 engine library
libev , so that programmers can execute their JavaScript code outside of the browser. And Node.js appeared. And npm. And people rejoiced.
And people began to write a web server on JavaScript, and launch helicopters with JavaScript on board, and put it on tablets and smartphones, and build it into thermostats and refrigerators, and everything that their soul wanted. And JavaScript has spread very, very widely. And Normal Programmers ™ (Serious Developers) were scorned by ordinary people writing JavaScript, but ordinary people continued to write JavaScript more and more.
')
And people were waiting for a
word that could accommodate the entire breadth of JavaScript penetration, because the word "JavaScript", as it is, no longer contained that breadth. And Charlie Robbins (Charlie Robbins) thought that the term "
Isomorphic JavaScript " can be called JavaScript-code that runs in the browser and on the server. And no one understood what this means, but instead of just programming in JavaScript, people began to program in isomorphic JavaScript.
Wait a second, what?
Introducing the term "Isomorphic JavaScript", Robbins explains that he means (almost) any line of code that can execute in the browser and on the server. But, if we carefully look at the meaning of the word "isomorphic," we will see that it is "similar in form and structure." In other words, two different entities that look the same. We have good examples of isomorphic entities:
jQuery
and
jZepto
, or
Underscore
and
lodash
. These libraries are similar in form (the same API), but different in terms of the underlying ideas and philosophy.
In short, we need a
word for the same code that can be executed in different environments. For now we are executing JavaScript code not only on servers and browsers, but also on mobile / embedded devices. On the Raspberry Pi, Wii U and iPhone. However, these are purely engineered arguments. A clear understanding of the
Word is more meaningful.
Everything is very subjective in this world, of course. Recently, Ryan Florence and I (Michael Jackson, author) began to lead courses on React.js. We have already trained several hundred programmers, and many of them did not understand the meaning of the
Word and asked what “isomorphic” means. As practice has shown, when we said “universal” instead of “isomorphic,” such questions did not arise. It's like Apple said “universal” about applications that ran on two architectures during the transition from PowerPC to Intel.
For it is said, there are
two big problems in Computer Science. We are talking about the second, for the good Words of hellish are important, and they are talking about goals (purpose) and responsibilities (responsibility). And let everyone think about it at their leisure.
Well, let's call our JavaScript-code understandable by the whole
Word . Real
Word , instead of stuffing in our programmer, and without that littered, the dictionary of the word, which has no place in it. And let that
Word be not only about servers and browsers, but about everything.
And let it be the
Word Universal JavaScript .
My thanks to the following comrades:
Ryan Florence ,
Pete Hunt ,
Peter Cooper ,
Dan Abramov and
Mark Dalgleish for reviewing. Also, thanks to Ryan for reading this post.