Bol vydaný ECMAScript 2018
Bola schválená a uvoľnená nová verzia ECMA Script vo verzii 2018. Kompilovanú implementáciu tohoto skriptovacieho jazyka môžete poznať z webových technológií ako JavaScript.
Vac informácií nájdete v špecifikácii vydania.
Zdroj: Root.cz
Pre pridávanie komentárov sa musíte prihlásiť.
javascript smrdi!!!!
Prečo? :)
Pretoze to je nekonzistentny zlepenec sity horucou ihlou, glorifikovany juniormi a hipstermi :)
Robia sa v ňom aplikície pre mobily, a v neposlednej rade aj pre desktopy. A to dosť rýchlo, a aj s minimálnym úsilím. JS je niečo ako bol programovací jazyk C v čase assambleru. Ozajstní programátori používali Fortran.
To ale nevylucuje ze je to nekonzistentny zlepenec sity horucou ihlou. Su dva druhy vyvojarov co pracovali s JavaScriptom, ti ktori ho nenavidia a ti ktori trpia stokholmskym syndromom.
Sú len dva typy vývojárov. Tí čo sa tešia že sa môžu niečo nové priučiť z projektu niekoho iného, a tí ktorý sa vždy strasú keď majú po niekom opraviť chybu v kóde ktorý nesie aj najmenšie známky "rukopisu" niekoho iného.
PS: Keď sa naučíš tretí programovací jazyk, tak ťa také drobnosti prestanú rozčulovať. A je jedno v akom jazyku.
Ano, niekto prasenie v kode sebavedomo nazyva rukopisom.
PS: Pouzivam trochu vac nez tri programovacie jazyky, tym padom dokazem posudit kvalitu toho-ktoreho jazyka lepsie nez niekto kto sa programovanim podla vlastnych slov uz roky nezivi a to bez ohladu na to ako bohorovny sa citi byt.
Niekto používa tabelétor, niekto medzery. Niekto začína blok na novom riadku, a niekto nie. A niekto vygógli supiš knižnicu z ktorej použije menej ako 5%, a zlepí to s ďalšími tridsiatimi knižnicami aby mal na základnej stránke/obrazovke jednu blikajúcu tabuľku s dynamicky meneným obsahom a dvoma tlačítkami ktoré nerozoznáš od rámčeka tej tabuľky.
Existujú programátori, a pojedači koláčov.
JS je pre svoju jednoduchosť vhodný pre začiatočníkov, a patrí mu budúcnosť. Ale priveľa kódu v ňom stvoreného je tým pádom od naozajstných začiatočníkov, a kvalita tomu zodpovedá. Ak ti to vadí, tak sa preorientuj na Fortran. Tam ti nebudú liesť decká do klávesnice.
To ze v danom jazyku pisu zaciatocnici alebo pokrocili programatori nema nic spolocne s jeho zlym navrhom, tym ze prava ruka v nom nevie co robi lava, absolutne nezvladnutym typovanim, atd., atd.. Na webe najdes dostatok materialu na samostudium. Skus si napriklad hodit do konzoly prehliadaca
pripadne
a poloz si otazku ci je to co spravi JS u akehokolvek jazyka ziaduce spravanie. A takychto pripadov su v JS desiatky, ak nie stovky.
JS je koncentrovaná esencia antipatternov. Malá ukážka kódu, ktorý som opravoval hodinu než som zistil, že istá knižničná funkcia mi konvertovala typ startNumber na string:
Väčšina funkcií je navrhnutá otrasne.
DOM je nekonzistentná guča metód, ktoré boli navrhnuté buď grafomanom, alebo niekym, kto sa vôbec nezamýšľal nad tým, čo robí. Príklad:
Alebo tu máme polia a polia ktoré nemajú metódy ako polia:
Javascript je a bude naďalej populárny, ale nie je to dobrý jazyk. Pre začiatočníka nie je vhodný pretože ho naučí antipatterny. Píšem to ako človek, ktorý aktívne používa cca 10 jazykov a je platený hlavne za JS a python.
Skús to predefinovať na číslo, a porovnaj výsledky.
Čo by som mal predefinovať na číslo?
Premennú. Napríklad ten humorný inkrement s výsledným stringom 0+1+1+1 donekonečna mi liezol na nervy aj v bashi.
No tú som potom pretypoval, ale ani vo sne by ma nenapadlo, že mi funckia vráti počet ako string v niektorých prehliadačoch (tam kde bola emulovaná) a chyba sa prejavila až v niekoľkej úrovni vnorenia niekte úplne inde než vznikla. Pritom by stačilo, aby bol ten jazyk trochu prísnejší a namiesto filozofie "urobím niečo nelogické" by jednoducho vyhodil výnimku a mne by bolo už jasné, že inkrementácia stringu je blbosť.
Takže si uznal, že to nie je problém jazyka ale že to je problém toho ktorého interpretera.
Nie neuznal, to, že string++ vracia 0 namiesto toho aby vyhodil výnimku je jednoducho problém návrhu jazyka (pretože tak to majú v špecifikácii). To, že knižnica niekedy vracia string je zase chyba, ktorá vznikla kvôli návrhu jazyka, keby bol javascript prísnejší tá chyba by bola ľahko odhalená, ale takto si to nikto nevšimol lebo javascript nehlásil chybu len urobil o jednu iteráciu viacej.
Do zbierky divných vecí ešte pridávam:
Python ekvivalent
Vysvetlenie: niektoré array like objekty majú funkciu forEach, iné ju nemajú (napr. HTMLCollection). Keďže niekedy používam vo funkciách HTMLCollection, inokedy nie, musím použiť toto monštrum aby funkcia akceptovala ľubovoľný array like objekt. Toto je krásna ukžka zle navrhnutej prototypovej dedičnosti priamo v návrhu jazyka.
Prechádzanie cez kľúče slovníka vyzerá takto:
Python ekvivalent
Vysvetlenie: slovník môže mať okrem vlastných property aj zdedené / doplnené metódy cez prototyp. Preto je potrebné kontrolovať, či je kľúč vlastný, alebo zdedený. V príkladoch sa často uvádza kód
array.hasOwnProperty(key)
, ale tento kód je chybný pretože užívateľom definované pole môže mať vlastnosťarray['hasOwnProperty'] = true
a celý kód sa na tom zosype.Celkovo používanie jedného typu pre zoznam (list), slovník (dictionary) a množinu (set) je veľmi neprehľadné a produkuje ťažko predvídateľné výsledky.
Myslím, že pre začiatočníka je omnoho vhodnejší jazyk, ktorý nemieša hrušky s jablkami.
Pre začiatočníka je najvhodnejší jazyk taký, čo ho rýchlo a správne pochopí. Nielen syntax, ale aj logiku a použitie. To čo vadí na tom jazyku tebe je chyba jedného z interpretrov. Nahlás to ako bug do prejliadača.
To, čo mi vadí je súčasťou štandardu ECMAScript, nie konkrétna implementácia v prehliadači (ok DOM nepatrí do štandardu ECMAScript, ale všetko ostatné áno). Jednoducho javascript bol narýchlo zbúchaný jazyk, v podstate lisp s javovskou syntaxou osekaný o dobré veci ako preprocesor a užitočné funkcie bez možnosti nad nim rozumne stavať DSL. Pritom v lisp-e si viem krásne predstaviť veci ako skladanie DOM. Namiesto toho tu máme hnusné natívne document.createElement, alebo môžme využiť celkom elegantnú knižnicu, alebo jsx a preženieme to cez preprocesor.
Tak si zober lisp z napríklad emacs-u, a narvi ho do napríklad firefoxu keď ti vadí chyba interpretovania o ktorej píšeš na počesť novej definície jazyka na ktorom je založený JS.
Ja idem na huby, čau. Keby som ostal ticho, tak kúšem hlinu.
A čo tak Bloby a práca s veľkými dátami a prevodmi medzi formátmi, zatiaľ som to vždy dal nejak na náhodu a vôbec som z toho v prdeli.
A čo indexedDB, niečo som rozchodil a sledoval čo sa deje vo FF v dátach fyzicky a je to masaker, vytvárajú sa tam dáta, potom nejak miznú a proste zasieram užívateľovi HDD dátami, ktorí ani neviem ako odtiaľ dostať. Nemáš nejaký dobrý návod na indexedDB? Ja som z toho kok.. z tých inštancií a celého návrhu.
To že je občas "metoda", metoda a občas je funkcia to sú proste bonusy, kde si bez Internetového vyhľadávača neškrtneš, páč tá záplava nekonzistentných vecí sa nedá zapamätať.
Našťastie pár ľudí sa rozhodlo nad JS napísať nejaké veci, kde sa dá písať v nejakom rozumnom jazyku a ten sa potom preloží na JS, prípadne sa to preloží až do takých rýchlostí ako asm.js atď. Sú frameworky kde preklad dokáže bežať v rádovo milisekundách a to sú tie lepšie stránky.