Doporučte programovací jazyk pro Windows

Re:Doporučte programovací jazyk pro Windows
« Odpověď #180 kdy: 10. 03. 2020, 20:53:53 »

Protokoly ve Smalltalku neřeší vcelku nic, je to jen kategorizace selektorů (metod), nic nevynucují (což je trošku škoda).

Dynamic dispatch má i Java, Python, prakticky každý OOP jazyk, to není žádná specialita Smalltalku.

Žil jsem v přesvědčení že protokoly můžou ve Smalltalku implementaci vyžadovat. Protože by mi přišlo ideální mít možnost volné vazby a volitelně vynucené implementace.

Slovo protokol jsem viděl ve Smalltalku používat ve dvou významech, jestli se pamatuju správně:

 - Neformálně např. při popisování (mluvení, čmárání na papír) nějaké objektové hierarchie, tj. "Objekt který se zde předá musí podporovat protokol Foo, tj. implementovat metody #foo a #fooAt:, které se nějak chovají", tedy něco významově podobného kontraktu.
 - Kategorie metod nějakého objektu (Accessors, testing, painting, ...), ta už je u každé metody uvedená, něco trochu podobného jako #region v C#, slouží jen pro zpřehlednění.

Kažopádně se nikde nic nevynucuje..


Re:Doporučte programovací jazyk pro Windows
« Odpověď #181 kdy: 10. 03. 2020, 20:58:58 »
Proto má třeba Smalltalk dynamic dispatch a současně protokoly. Což řeší oba požadavky.

protokoly resi jiny problem nez pretezovani funkci.

Python ma mnohem mocnejsi nastroje pro staticky typovane signatury nez java. Namatkou treba Literal types. Muzete napsat funkci, kde navratovy typ zavisi na hodnote vstupnich parametru. https://mypy.readthedocs.io/en/stable/literal_types.html

Protokoly python take ma, jak staticky tak dynamicky vynucovane, https://mypy.readthedocs.io/en/stable/protocols.html

Ja chapu, ze prilezitostni uzivatele Pythonu jako Standa Blabol novinky moc nesleduji. Uvadim jen pro informaci, nechci zacinat dalsi spor.

Pekne, nekdo si dal praci a na urovni dekoratoru pridal velice peknou funkcionalitu.

Obdoba treba java projektu Lombok, ktery pres anotace usnadnuje praci s datovymi beany.

Kolikpakze ze stovek projektu na PyPi tohle podporuje, abych se na to mohl plne spolehnout a zacit to pouzivat jako standardni Python featuru? Ze stovek projektu na Maven Central umi staticky typovane signatury uplne vsechny.
 
Dostane se obdoba MyPy do standardu Python4, as se cely Pyhon zase znova zahodi a zacnem odznova, nebo ho ceka osud jako HipHop for PHP, kterym Facebuk resil obdobny problem spatne zvoleneho stacku a cele to pak zahodil?

Postavim na vire, ze to dropbox nezahodi, svuj business?

Otazky, same otazky :)

Re:Doporučte programovací jazyk pro Windows
« Odpověď #182 kdy: 10. 03. 2020, 21:35:03 »
Kolikpakze ze stovek projektu na PyPi tohle podporuje, abych se na to mohl plne spolehnout a zacit to pouzivat jako standardni Python featuru? Ze stovek projektu na Maven Central umi staticky typovane signatury uplne vsechny.

asi vsechny, obe jmenovane featury byly zavedeny castecne i kvuli signaturam funkci v standardni knihovne, Literal types jsou pouzity treba v signature funkce `open`, ktera vraci ruzne typy file objektu v zavislosti na modu otevreni.

mypy je soucasti standardnich linteru, jestli pouzivate treba vscode, mypy pouzivate.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #183 kdy: 10. 03. 2020, 22:31:06 »
Kolikpakze ze stovek projektu na PyPi tohle podporuje, abych se na to mohl plne spolehnout a zacit to pouzivat jako standardni Python featuru? Ze stovek projektu na Maven Central umi staticky typovane signatury uplne vsechny.

asi vsechny, obe jmenovane featury byly zavedeny castecne i kvuli signaturam funkci v standardni knihovne, Literal types jsou pouzity treba v signature funkce `open`, ktera vraci ruzne typy file objektu v zavislosti na modu otevreni.

mypy je soucasti standardnich linteru, jestli pouzivate treba vscode, mypy pouzivate.

Pouzivam PyCharm

A namatkou jsem se podival na Mako templater, protoze jsem ho stahoval pipem predevcirem. Import typing jsem tam nenasel.

qelurg

  • ****
  • 322
    • Zobrazit profil
    • E-mail
Re:Doporučte programovací jazyk pro Windows
« Odpověď #184 kdy: 10. 03. 2020, 22:31:18 »
Podívej Stando, to jsou bláboly. Smál jsi se pěknému přehlednému a srozumitelnému  Python programu ve věci, která ani není nativní vlastností toho jazyka. Můžeš předvést jak si s tím poradí Java, u které to je nativní vlastnost, tudíž by to měla zvládnout lépe nebo aspoň stejně. Ano, Java je hnusný těžkopádný jazyk, takže to nezvládne, to víme oba, teď jde jenom o to, jestli to přiznáš nebo ne. Čím víc to budeš rozpatlávat abys to zakamufloval, tím víc to bude smrdět. Takže hoď sem Java implementaci kraťoučkého Python programu, co jsi sem sám napastoval a nebo jsi porazil sám sebe svými vlastními hloupými ukázkami. :-)

Jak to?? Podle mě ten java kód už poslal. Ale férovější by bylo popsat, co ten Python kód přesně dělá a pak řešit, zda a jak se to dá realizovat v jiném jazyku.

Neposlal, snažil se jen vysvětlovat, jak by to napsal, kdyby to napsal. Ten Python kód sem dal on, tak snad ví, co dělá. Dal to sem navíc s tvrzením, že java to umí přehledněji, tak se může předvést :-).


Re:Doporučte programovací jazyk pro Windows
« Odpověď #185 kdy: 11. 03. 2020, 00:46:26 »
.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #186 kdy: 11. 03. 2020, 14:08:30 »
Podívej Stando, to jsou bláboly. Smál jsi se pěknému přehlednému a srozumitelnému  Python programu ve věci, která ani není nativní vlastností toho jazyka. Můžeš předvést jak si s tím poradí Java, u které to je nativní vlastnost, tudíž by to měla zvládnout lépe nebo aspoň stejně. Ano, Java je hnusný těžkopádný jazyk, takže to nezvládne, to víme oba, teď jde jenom o to, jestli to přiznáš nebo ne. Čím víc to budeš rozpatlávat abys to zakamufloval, tím víc to bude smrdět. Takže hoď sem Java implementaci kraťoučkého Python programu, co jsi sem sám napastoval a nebo jsi porazil sám sebe svými vlastními hloupými ukázkami. :-)

Jak to?? Podle mě ten java kód už poslal. Ale férovější by bylo popsat, co ten Python kód přesně dělá a pak řešit, zda a jak se to dá realizovat v jiném jazyku.

Neposlal, snažil se jen vysvětlovat, jak by to napsal, kdyby to napsal. Ten Python kód sem dal on, tak snad ví, co dělá. Dal to sem navíc s tvrzením, že java to umí přehledněji, tak se může předvést :-).

A co je podle Vás tedy tohle? https://forum.root.cz/index.php?topic=22582.msg326312#msg326312

Re:Doporučte programovací jazyk pro Windows
« Odpověď #187 kdy: 11. 03. 2020, 14:11:29 »

Protokoly ve Smalltalku neřeší vcelku nic, je to jen kategorizace selektorů (metod), nic nevynucují (což je trošku škoda).

Dynamic dispatch má i Java, Python, prakticky každý OOP jazyk, to není žádná specialita Smalltalku.

Žil jsem v přesvědčení že protokoly můžou ve Smalltalku implementaci vyžadovat. Protože by mi přišlo ideální mít možnost volné vazby a volitelně vynucené implementace.

Slovo protokol jsem viděl ve Smalltalku používat ve dvou významech, jestli se pamatuju správně:

 - Neformálně např. při popisování (mluvení, čmárání na papír) nějaké objektové hierarchie, tj. "Objekt který se zde předá musí podporovat protokol Foo, tj. implementovat metody #foo a #fooAt:, které se nějak chovají", tedy něco významově podobného kontraktu.
 - Kategorie metod nějakého objektu (Accessors, testing, painting, ...), ta už je u každé metody uvedená, něco trochu podobného jako #region v C#, slouží jen pro zpřehlednění.

Kažopádně se nikde nic nevynucuje..

Koukám na to a skutečně máte pravdu. Divil bych se ale, kdyby nikdo do Smalltalku nezkusil  vyžadování a kontrolu kontraktů přidat.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #188 kdy: 11. 03. 2020, 15:23:18 »
Koukám na to a skutečně máte pravdu. Divil bych se ale, kdyby nikdo do Smalltalku nezkusil  vyžadování a kontrolu kontraktů přidat.

Ono to "přidání kontraktů" vlastně znamená zavést nějakou formu statického typového systému, těch možností jak to udělat je milión a žádná není jednoznačně nejlepší. Jinak se ale něco takového zkoušelo ve Strongtalku, (http://www.strongtalk.org/) a uvažovalo se o tom i v Newspeaku (https://newspeaklanguage.org/)

qelurg

  • ****
  • 322
    • Zobrazit profil
    • E-mail
Re:Doporučte programovací jazyk pro Windows
« Odpověď #189 kdy: 11. 03. 2020, 16:17:57 »
Podívej Stando, to jsou bláboly. Smál jsi se pěknému přehlednému a srozumitelnému  Python programu ve věci, která ani není nativní vlastností toho jazyka. Můžeš předvést jak si s tím poradí Java, u které to je nativní vlastnost, tudíž by to měla zvládnout lépe nebo aspoň stejně. Ano, Java je hnusný těžkopádný jazyk, takže to nezvládne, to víme oba, teď jde jenom o to, jestli to přiznáš nebo ne. Čím víc to budeš rozpatlávat abys to zakamufloval, tím víc to bude smrdět. Takže hoď sem Java implementaci kraťoučkého Python programu, co jsi sem sám napastoval a nebo jsi porazil sám sebe svými vlastními hloupými ukázkami. :-)

Jak to?? Podle mě ten java kód už poslal. Ale férovější by bylo popsat, co ten Python kód přesně dělá a pak řešit, zda a jak se to dá realizovat v jiném jazyku.

Neposlal, snažil se jen vysvětlovat, jak by to napsal, kdyby to napsal. Ten Python kód sem dal on, tak snad ví, co dělá. Dal to sem navíc s tvrzením, že java to umí přehledněji, tak se může předvést :-).

A co je podle Vás tedy tohle? https://forum.root.cz/index.php?topic=22582.msg326312#msg326312

Neco jineho nez tohle: https://forum.root.cz/index.php?topic=22582.msg326263#msg326263

Re:Doporučte programovací jazyk pro Windows
« Odpověď #190 kdy: 11. 03. 2020, 22:40:48 »
co to je silné a slabé typování

Python je dynamicky typovaný jazyk, což neznamená, že není typovaný silně, narozdíl např. od JavaScriptu nebo PHP, které jsou slabě typované (sečtete hrušky a jablka a dá vám to nějaký výsledek).

Pojmy silně a slabě typovaný jsem nikdy moc nepochopil. Vždycky, když jsem začal do toho trochu víc do hloubky, zjistil jsem, že Python je silně typovaný jen u buildin funkcí a buildin typů. Zatímco v případě PHP a JS je to slabé typování ve skutečnosti jen automatická konverze (debilní jasně, ale přesto jen konverze) a ve skutečnosti je úplně stejně silně/slabě jako Python. V praxi mezi tím pak není vůbec žádný rozdíl. U všech tří jazyků mám u všech hodnot podobné informace o typech, a chovají se vesměs podobně (se zmíněnými výjimkami).

IMHO je pojem slabě typovaný hrubě zavádějící, a spíše bych hovořil o tom, že JS má nešťastně zvolené automatické přetypovávání.
« Poslední změna: 11. 03. 2020, 22:43:14 od tacoberu »

Re:Datove tridy v Pythonu
« Odpověď #191 kdy: 11. 03. 2020, 22:53:49 »
Jython je kompilátor Python kódu produkující bajtkód pro JVM. Umožňuje v prostředí JVM používat jazyk Python, což je výhodné. Python nabízí mnohem vyšší produktivitu, Python kód je 2 až 10 × kratší než Java kód.

Na Javě je zajímavé jen to JVM. Proto pro JVM vzniká tolik jazyků, je tu ohromující snaha se jazyku Java vyhnout. https://en.m.wikipedia.org/wiki/List_of_JVM_languages

Další zásadnější nevýhoda JVM je studený start. Pro někoho (mě) to může být nevýhoda dost zásadní, protože jinak už těch nevýhod víc nebude.

Re:Datove tridy v Pythonu
« Odpověď #192 kdy: 12. 03. 2020, 08:09:55 »
Další zásadnější nevýhoda JVM je studený start. Pro někoho (mě) to může být nevýhoda dost zásadní, protože jinak už těch nevýhod víc nebude.
Ani to už neplatí vždy, viz Substrate VM (součást GraalVM).

Re:Doporučte programovací jazyk pro Windows
« Odpověď #193 kdy: 12. 03. 2020, 12:48:16 »
zjistil jsem, že Python je silně typovaný jen u buildin funkcí a buildin typů.

v pythonu neni rozdil mezi buildin a uzivatelsky definovanymi typy. Pro nektere buildin typy existuji literaly, to se tyka jen konstrukce novych hodnot.

qelurg

  • ****
  • 322
    • Zobrazit profil
    • E-mail
Re:Doporučte programovací jazyk pro Windows
« Odpověď #194 kdy: 12. 03. 2020, 13:05:39 »
co to je silné a slabé typování

Python je dynamicky typovaný jazyk, což neznamená, že není typovaný silně, narozdíl např. od JavaScriptu nebo PHP, které jsou slabě typované (sečtete hrušky a jablka a dá vám to nějaký výsledek).

Pojmy silně a slabě typovaný jsem nikdy moc nepochopil. Vždycky, když jsem začal do toho trochu víc do hloubky, zjistil jsem, že Python je silně typovaný jen u buildin funkcí a buildin typů. Zatímco v případě PHP a JS je to slabé typování ve skutečnosti jen automatická konverze (debilní jasně, ale přesto jen konverze) a ve skutečnosti je úplně stejně silně/slabě jako Python. V praxi mezi tím pak není vůbec žádný rozdíl. U všech tří jazyků mám u všech hodnot podobné informace o typech, a chovají se vesměs podobně (se zmíněnými výjimkami).

IMHO je pojem slabě typovaný hrubě zavádějící, a spíše bych hovořil o tom, že JS má nešťastně zvolené automatické přetypovávání.

Rozdíl je právě v tom, zda při operaci s rozdílnými typy dojde k vyvolání výjímky (silné typy) nebo o automatické konverzi (slabé typy). Python má silné typy, protože v Pythonu hodnoty svůj typ automaticky nemění (s jednou výjimkou u Python 2, konverze int/long). Python je silně typovaný i u uživatelských typů.