The front portrait of the author, at the same time illustrating the idea of ββmodern web development
Immediately honestly: I am a retarded creature. Well, so that later they wouldnβt poke me on this account with my fingers. I started programming a little later than the invention of the digging stick, but much earlier than the construction of the pyramids - in general, when the pterodactyls were still flying across the sky.
Despite some drawbacks - in the form of rheumatism and the backside of the monitor in front of the monitor - this experience also provides some advantages. You can comfortably sit in a warm swamp with affection to watch the young and progressive flicker before your eyes, frantically inventing another bicycle with square wheels.
I read with interest the epochal article "Explaining modern JavaScript dinosaur" , where I explain on my fingers why mountains of garbage code are urgently needed, and masochism is useful and pleasant. I didnβt learn anything new from there, since Iβm doing web development myself, and I tried it all the hard way a long time ago - well, except for the nice part.
Yes, Iβve been following the guru of web programming for a long time, as they set up a huge iron pot in the middle of the square and cooked noodles with macaroni in it, dropping there for taste everything they find in other people's gardens, code generation, functional bits, dependencies , static type checking, jet streams and god knows what else. I especially like full-fledged compilation - with all relying lexical and syntactic parsing - Javascript in Javascript. Are you guys serious?
Every year, some of the noodles swell and go to the bottom. A lot there already lies such that in a decent javascript society now and ashamed to mention - there are different Beckbones, Angulyars, not to mention Jquery or there the Prototype library. But on the top, a new foam blows up immediately, and then around the boiler they happily dance and sing, as finally all the problems are solved this time.
But I not only look, I also periodically try out of this boiling vat - I have been trying for many years - and every time I discover that the result is still inedible. Muddy, difficult, ugly and at the same time ... primitive. Mountains of trash, over-engineering monblans ("woe from wits"), the number of languages ββused is already approaching the top ten (if you count different versions of JS and languages ββof configs of various poultices), the build time of all this stuff grows exponentially ... And what about the result?
Maybe the megaylander compiler, who himself will write a program for the telepathic formulation of the problem? Calculation of the necessary and sufficient conditions for the happiness of mankind? Modeling evolution with buttons Step and Step over? Failsafe launch code of a nuclear starship? Universal button "Pysch - make beautiful"?
No, the βTo Doβ diary with three buttons, not even reaching its paper grandfather.
My Mesozoic experience taught me long ago: if a mountain of code gives birth to a mouse, then something is wrong with it. If the project involved the generation of code as text - look for a catch. If, for normal operation, you need to call heels or two crutches β various kinds of dependency meters and converters β it smells like kerosene.
All the aforementioned signs speak of one thing: the solution did not stretch the complexity of the task and was buried under it. In programming - a common thing, because the whole field of activity - the essence of a continuous struggle with complexity. And the weapon is well known - increasing the level of abstraction of the tools used.
You do not generate a special assembler code for JS to call procedures with a return, which will put the corresponding address on the stack, and then take it back? Do not launch linkers that connect you two modules and register real addresses of global variables? Do you describe dependencies between labels and transitions in an if statement in a separate file? But all this is still necessary in the computer - and all this is done by someone. They just make automatic tools that have been debugged for a long time, which you probably donβt even know about - because you operate at a much higher level, where there are no addresses, no tags, no call stacks.
But you can't write something like
application ToDo
{
use grid;
layout "todo";
init { ...}
}
, . ?
, , . β , . , , , β .
β , . , , " -". , , .
, , ? - .
β . , -. β ( , β ) , , , , , . , , β , , . , , , β , , , , . β . , , , β , , , . β .
β . , . β 90% - , . .
- , M, V C. , - . : , β , , , HTTP, β , . , ?
. .
, . β .
β , , ? . , β , "". , , , : IBM 3270, , , WinAPI, TurboVision, VisualBasic, dBase, Tcl/Tk, XUL, Rebol/View, XAML.
- ? , . , - , - . , . -? , .
, , :
) , , , - , . , , : .
) β - (layout managers), β . , , , .
) , . , , DSL, .
- ? . ? , , , : , β , β , - .
, + .
1) ( , ): . HTTP- -, β . , - , .
2) . , , . β , . .
3) . , <DIV>, , , , .
4) , . , . . , - , DOM, .
, 2-4), , , . 100500 , , β . β , , . .
, , β HTML β , . Polymer , , . , .
β , , DOM, , . DOM, , . , .
5) . , . β (!), β ( ), (JS). - *. , , β , . , , .
6) β . .
7) β¦ ** β , , . , -, β : . . , . β Lua, . JS , , - , . .
β β . . 4.
, β , ? β , , . , .
β ( β ), (, ), - , , ***.
. , , , , . , -, - .
"", "" " " , , , .
, , , - . , ? β .
. : . , , , . , , .
, , , , , . β . , β , , , β . , . . . . .
, , .
? . , , , , , ****, DSL , - , , β , , UX. , , , , , , . " , " β - - .
, , - - , . β , , . β -.
* - , , , . , Firefox, β XUL .
** . Javascript Java. , . - , , , , , , . , "Mocha", "". , .
*** . : , . .
, , - . , .
**** , WebAssembly ?
Source: https://habr.com/ru/post/341692/
All Articles