Za co nás, ó Velký křemíku, s tím Pythonem a Javascriptem furt trestáš...
2. 9. 2024, 12:37 editováno autorem komentáře
BFU se nechce učit hromady deklarací a typů. :-)
prostě chce rovnou psát něco jako:
a = 2
b = 3
print "výsledek: ", a + b
Při čtení dokumentace jsem to zapích při třetí větě typu: "Toto (nestandardní) chování vyplývá z implementačních podivností čehosi v Javascriptu". To je tak těžký postavit ekosystém (Node, Deno) na něčem, co si s sebou nepotáhne historický balast a bude to splňovat nějaké standardy očekávané ve 21. století?
To jste se ovšem zcela minul s podstatou TypeScriptu. Jeho podstatou je to, aby výsledný kód běžel ve webovém prohlížeči, takže se JavaScriptu nevyhnete. Naopak když si chcete stavět ekosystém pro svůj počítač nebo pro server, můžete zvolit jaký jazyk chcete. Smysl TypeScriptu je umožnit psát JavaScriptové programy pro webové prohlížeče o něco bezpečněji.
Node/Deno už zdaleka není jen o prohlížečích. Tenhle ekosystém vytekl z původní škatulky všemi směry. Bohužel s sebou vláčí všude to, co píšu, ať už je nad tím Typescript, Coffeescript, nebo cokoli-script. A to je ten problém - že je mizerným Javascriptem zamořován stále větší prostor...
Reagoval jste na TypeScript a ten byl vytvořen kvůli prohlížečům. Když nechcete mimo prohlížeč používat JavaScript nebo TypeScript, tak nepoužívejte Node ani Deno. Nic vás k tomu nenutí. Máte spoustu jiných možností – Go, Rust, C, Javu, Elixir, Python, cokoli.
Tak node a deno vzniklo z browserů.
Díky tomu máme modernější JavaScript.
API se rozšiřují, jazyk se vyvíjí a zlepšuje.
Kdyby se svět dohodl na tom, že browser se bude skriptovat v Pythonu nebo .NET nebo Javě.. tak by to tak bylo.
ECMAscript se vyvíjí pomalu, konzervativně opatrně, ale pokroky tu jsou.
Nebýt toho tak si myslím, že by pokroky jiným jazykům v jistých ohledech trvaly déle..
Dneska je lahůdka použít Deno a TypeScript a na pár řádků napsat hezký a celkem efektivní kód, připravit si izomorfní šablony a komponenty, fungovat offline na webu..
Zbytek je většinou lepidlo pro SQL, v lepším případě.
Když dneska vidím šílené ORMy a backend frameworky, kde je problém vytáhnout kousek logiky na frontend, chce se mi často brečet.
Napsat pět řádků SQL a nahodit PostgREST je to, co je vlastně hodně těžké se naučit. A jo, stačí to.
Supabase rocks!
A v čem bude lepidlo? TypeScript? Python? Rust? WASM? To je přece jedno. Závislé na dobře promyšlené architektuře a dostupných lidech, ne?
Jo a nezmínil jsem PHP. Ani Pascal. To není chyba :-)
"To je tak těžký postavit ekosystém (Node, Deno) na něčem, co si s sebou nepotáhne historický balast a bude to splňovat nějaké standardy očekávané ve 21. století?":
Deno má backend v Rustu (prototypovali v Go, ale Ryan Dahl sezdal, že dva garbage collectory nad sebou jsou past). Deno tlačí na kompatibilitu s webovými prohlížeči (Node taky postupuje, ale např. Fetch API má stabilní teprve od loňska). Že je Deno podvozkem pro Typescript se všemi jeho mouchami netřeba komentovat. Akorát je daní za modernitu, že Deno nebylo moc stabilní.
Tak předně je si potřeba uvědomit k čemu výsledný kód bude sloužit. Jestli je to jednorázový skript tak Python dává smysl, než to psát v něčem kompilovaném.
>>>Jestli je to jednorázový skript tak Python dává smysl, než to psát v něčem kompilovaném
Mne sa už stáva, že napíšem niečo v Pythone ako prototyp a potom to už v ňom proste nechám. Python 3.11 má vylepšený performance, spolu s numpy a podobnými vychytávkami aj pomerne svižný. (Samozrejme, porovnávam to so staršími pythonmi). Ak mi beží program 300 milisekúnd miesto 90 milisekúnd, až tak ma to netrápi. Horšie bolo, keď kedysi podobná vec v kompilovanom jazyku bežala 10 minút a pythone hodinu,
let a = 2 let b = 3 printfn "%d %d" a b
Toto je ekvivalent v jazyku F#, ktorý rozhodne nie je určený BFU. Jednoduchosť zápisu je vecou dobrého návrhu, nie črtou "jednoduchého" jazyka.
Ináč, print ako kľúčové slovo. To je už riadna história.
Aj Python ma datove typy a je to jedna z prvych vlastnosti jazyka, ktoru sa ucia zaciatocnici. Bez nich sa ani v Pythone neda velmi hybat.
Ano, BFU se nechce učit koncept datových typů. Proto uděláme ohýbáky které předstírají, že žádné datové typy nejsou, a pak budeme zase vymýšlet rovnáky na ohejbáky, aby se s tím dalo pracovat. Výsledkem je, že se BFU musí naučit koncept datových typů, a k tomu to jak s nimi ten JavaScript pracuje, aby pochopil, proč Nothing=="Nothing" je true, ale Nothing==="Nothing" je false, a "5"+1 je "51", ale "5"-1 je 4.
To je vec dopytu a ponuky. Na trhu je veľký dopyt po pracovníkoch, ktorí používajú trebárs Python ako pomocný nástroj a nie sú vyslovene softvéroví inžinieri.
Chápu, že ortodoxního programátora Python nemusí naplňovat nadšením, ale je tu i Data Science a tam je to prostě buď Python, nebo R. A vypadá to, že tomu tak bude i nadále. A ten Python je tam nakonec vlastně taky jako lepidlo pro výpočetní knihovny napsané v C, C++ nebo dokonce třeba ve Fortranu. Namátkou třeba NumPy, SciPy, scikit-learn, StasModels, pandas, matplotlib... Plus poslední dobou AI a ML nikoli v rámci DS, ale samostatně. A ano, není to nějaké superprogramování, ale "jen" skriptování.
Ale jo, to je oblast, kde ten jazyk vznikl a kam patří. Problém je, když se všemi svými "vlastnostmi" začne zamořovat jiný sektor. V tom je třeba dobré PHPko. To se drží svého kopyta, dokonce se zlepšuje, a vyjma totálně okrajových implementací nadšenců se jinam nešíří (ač by mohlo, protože OOP má už na slušné úrovni... jen ty generiky). Ovšem třeba PHPko v jádře Linuxu, z toho by seklo o zem i Linusem:-)
V případě PHP rozhodně je:-)) Ale kombinují tam i prvky z funkcionálního programování, a celkově to už začíná trochu vypadat, to jsem chtěl říct.
Nikoliv, Python na rozdil od R nevznikl pro data science, ale lze ho na to take pouzit. DSL vs general purpouse language. Zrejme vas nezivi, tak nic moc nevite.
Nevim jestli je stastne rozdelovat TypeScript a JavaScript..
C a C++ asi jo.
ale kua kdo muze mezi programovaci jazyky zaradit HTML/CSS ?!?!
Tim cely zebricek ztraci na duveryhodnosti.
Ono záleží, z jaké výšky se na programování díváte. Asi byl byl schopen přiznat třeba tvrzení, že pomocí HTML a CSS programujete, resp. říkáte vykreslovacímu jádru jak má vykreslit obsah jistou míru pravdivosti. Jen jsou to prostě z tohohle pohledu doménově specifické jazyky, nikoliv univerzální programovací jazyky. Ne v každém programovacím jazyce můžete musíte být nutně schopen zapsat algoritmus.
Je to prostě velmi vysokoúrovňový pohled odlišný od tradičního staršího pojetí. Nelze ho rovnou od boku označit za implicitně nesprávný.
3. 9. 2024, 12:40 editováno autorem komentáře
Jenže v HTML a CSS právě neříkáte jak má něco vykreslit, ale co má vykreslit. Je pravda, že pokud z programovacích jazyků vyloučíme deklarativní jazyky, nebude programovací jazyk ani SQL nebo Prolog.
Tak to CSS sa programovaciemu jazyku už dosť približuje. Nie som si ale úplne istý, či je to správne.
Ano, např. výpočty uvnitř CSS. Ale UI se dnes dělá deklarativně i v "opravdových" jazycích, např. Qt QML.
proto je asi lepší rozlišovat "computer language" a jeho podmnožinu "programming language" (kam spadají turingovsky kompletní jazyky). Třeba takto https://en.wikipedia.org/wiki/Computer_language
ZDNet to tak nedělá, no co si z toho vzít...?