Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - registrovany_ava

Stran: 1 ... 7 8 [9] 10 11 12
121
Vývoj / Re:Zkušenosti s TypeScriptem
« kdy: 29. 03. 2020, 14:23:32 »
Že je produktivita dynamických jazyků vyšší usuzuji z toho, že jsou globálně stále dominantnější.

Nechápu tvojí odvahu posuzovat produktivitu podle používanosti.

Co se týče dropboxu, nepíší tam, že dynamické jazyky jsou neflexibilní. Píší to o svém vlastním programu. Píší že měli chybně navržený datový model a nejen to.

Hlavně píší tohle:
Rust has been a force multiplier for our team, and betting on Rust was one of the best decisions we made. More than performance, its ergonomics and focus on correctness has helped us tame sync’s complexity. We can encode complex invariants about our system in the type system and have the compiler check them for us.

122
Vývoj / Re:Zkušenosti s TypeScriptem
« kdy: 29. 03. 2020, 14:19:32 »
Smalltalk sa aj mne páči po teoretickej stránke, ale položte si otázku prečo sa nepresadil? Ja si myslím že je to kôli (ne)bezpečnosti. Dáva vám síce veľa slobody, ale práve nízka bezpečnosť a možnosť meniť úplne všetko je dôvod prečo ho v polovici 90tych rokov vytlačila Java.

No, důvody byly asi trochu přízemnější. Ideový nástupce Smalltalku byl Self, který Sun Microsystems vyvíjel společně s Javou, a v Sunu dumali, který jazyk by měli pustit na veřejnost. Podle tohoto zdroje: http://blog.rfox.eu/en/Series_about_Self/Environment_and_the_programming_language_Self_part_3.html , zvolili nakonec Javu, protože

Chuck McManis, a former employee of Sun Microsystems, wrote for a thread on hackernews:

Wow. For those who don't know, there was a big 'language bake off' at Sun between TCL, Java, and Self (all being funded by Sun Labs) and Bert Sutherland (then director of Sun Labs and brother of Ivan) required that the language changes stop and then we'd look at each one, and decide which one to move forward on. When the world sort of exploded at the WWW conference held in Darmstadt Germany in 1995, Java officially 'won' and both Self and TCL were de-committed. (not canceled per-se but not getting any more funding either).
I like to think that all three languages benefited from the competition.

Asked why did Java win, he replied:

 "At the time it was the ability to construct executable content inside a web page. Javascript now dominates that space, but up until WWWC 2 pretty much everyone was stuck with page layout primitives. It made it possible to see a path to where we are today and so everyone wanted their browser to have it, and if their browser didn't have it they could run the HotJava browser and get it.
Bottom line, it demonstrated an answer to a problem that a lot of people were having, and it promised to answer that problem in an 'open source' kind of way."


Jinak z osobní zkušenosti bych neřekl že Smalltalk je více nebezpečný než kterýkoliv jiný dynamicky typovaný jazyk - Python, PHP, Javascript atp.

123
Vývoj / Re:Zkušenosti s TypeScriptem
« kdy: 29. 03. 2020, 11:25:12 »
Já ti neříkám, že to umím, to je zcela podružné. Já ti říkám, jak to je, dynamické jazyky jsou o jiném způsobu myšlení. Jestli to pochopíš nebo ne je už na tobě.

Pochopil jsem spoustu věcí (Prolog, Scheme, Smalltalk, OOP, FP). A když jsem to nepochopil, tak jsem alespoň cítil, že jsem si šáhl na hranice svých schopností (Haskell, závislostní typy). U dynamického programování se nic takového nekonalo, protože tam na pochopení nic není. Pointa je v tom, že já ti v tom, že "dynamické jazyky jsou o jiném způsobu myšlení" jednoduše nevěřím. Takhle je to jednoduché. Přeji dobrou noc.

No zrovna ten Smalltalk je dobrá ukázka toho, jak dynamické programování může být šikovné. Celé IDE je napsané samo v sobě, a za běhu modifikovatelné. Můžeš debugovat debugger a za běhu ho upravovat. Zeptáš se třídy na všechny její instance a pošleš jim zprávu (zavoláš metodu). Nic se neprogramuje do souborů, které se překládají a spustí, všechno neustále běží, žije, za běhu se přidávají a ubírají třídy, metody, .. Každá věc se dá inspectnout a pracovat s ní, měnit. Prožít si programování v takovém systému je skutečně mind bending zkušenost.

Když vidím Python, Javascript atp., tak mi přijde, že si vzali to nejblbější z dynamického programování - absenci statických typů, což teď horko těžko dohánějí, a ze staticky typovaného programování - absenci pořádného živého explorativního prostředí, což už asi nedoženou nikdy, protože si ani nedovedou představit, co by se dalo dělat.

Podobný koncept, i když ne tak dotažený, má třeba Lighttable (http://lighttable.com/) pro Clojure, ale s tím osobní zkušenost nemám.

124
Vývoj / Re:Zkušenosti s TypeScriptem
« kdy: 26. 03. 2020, 20:06:19 »
Mně vždy přišlo, že pokud se použije typová inference, tak se zdrojový kód staticky typovaný neliší od dynamicky typovaného. Některé jazyky to neumožňují u všech deklarací, ale teoreticky to jde a třeba v C++ už jde psát bez explicitních typů (s plnou kontrolou při překladu).

U některých jazyků explicitní typy nejsou jen anotace pro kontrolu korektnosti kódu, ale ovlivňují sémantiku výsledného kódu.

Příklad: https://blog.jcoglan.com/2019/04/22/generic-returns-in-rust/

Popř. implicitní argumenty ve Scale také ovlivňují, co bude kód dělat.

Takové jazyky se principiálně nemohou obejít čistě s typovou inferencí, resp. už by to byl jiný programovací jazyk

125
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 13. 03. 2020, 07:17:21 »

Dost z těch odkazů nefunguje (hlavně ty na wikipedii, zřejmě chyba paste na root.cz), některé jsou dost staré (https://dl.acm.org/doi/10.1145/97946.97964 z roku 1990 je už skutečně rarita),  ale ať se někam dostaneme, vybral jsem z ANGLICKE Wikipedie (přeci jen českou považuji za méně relevantní) pár populárních dynamických jazyků a vykopíroval z nich Typing discipline:

Python: Typing discipline   Duck, dynamic, gradual (since 3.5)
Perl: Typing discipline   Dynamic
PHP: Typing discipline   Dynamic, weak
Javascript: Typing discipline   Dynamic, duck
Ruby: Typing discipline   Duck, dynamic, strong

U dvou z pěti je uvedené  Weak/Strong. U žádného z těch dvou se už to slovo nevyskytuje kdekoliv jinde v textu, chybí vysvětlení "Proč".
 
Ale OK, podle tvých odkazů to skutečně vypadá, že se pojmy Strong/Weak stále ještě leckde používají, přes veškerou jejich nejednoznačnost (viz https://en.wikipedia.org/wiki/Strong_and_weak_typing). Já se od dynamicky typovaných jazyků přesunul časem spíš ke staticky typovaným jazykům, a v té komunitě se tyhle pojmy prakticky nevyskytují právě pro jejich nepřesnost.

Za sebe doufám, že jejich používání bude postupně opadat, když máme k dispozici slovník přesně popisující konkrétní vlastnosti typových systémů jednotlivých jazyků. Protože když mi teď někdo řekne "X je silně typovaný", tak to pro mě nemá žádnou vypovídací hodnotu vzhledem k tomu, že "strongly" má spoustu různých významů.

126
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 12. 03. 2020, 21:17:50 »
Formální definici to možná nemá, ale je to běžně používaný termín, který je obecně používán a přijímán a implicitní přetypování je základním rozlišením mezi silným a slabým typováním.

Citation needed. Mezitím si můžeš přečíst třeba https://stackoverflow.com/questions/2690544/what-is-the-difference-between-a-strongly-typed-language-and-a-statically-typed, speciálně odstavec "Strong vs weak" v první odpovědi, která má > 500 upvotes.

Dokonce koukám, že v tom vlákně si někdo (https://stackoverflow.com/a/2690596/3220468) myslí to samé co ty. Jeho názor má 15 upvotes. Tolik asi o tom jak je ten termín "obecně používán a přijímán" v tom smyslu, ve kterém to tvrdíš ty.

a) je to stará diskuse b) že s něčím souhlasí většina neznamená, že je to pravda c) ty odpovědi nebyly dány ve stejný čas, takže to porovnání hlasování nedává smysl d) píše se tam např. nesmysl jako "It is very rare to hear someone talk about a "strong" or "weak" dynamic type system." Už jen to by ti mělo napovědět, že je to dávno překonané.

a) Ukaž novější. Zatím jsi neukázal nic, co by podporovalo to co tvrdíš, narozdíl ode mě.
b) Když tvrdíš, že je něco obecně (tedy většinou) přijímané, a přitom většina tvrdí opak, tak nemáš pravdu ty.
c) srsly? porovnání > 500 upvotes vs 16 upvotes (je milé, že jsi tam jeden přidal) nedává smysl, protože jedna odpověď je stará 3612 dní a jedna 3611 dní? To už je opravdu smutný argument.
d) To, že o tom často slyšíš mluvit sám sebe ještě neznamená, že to není extremely rare.

Zkus předložit nějaká podložená fakta místo dojmologie, která zakopává o realitu na každém kroku.

127
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 12. 03. 2020, 20:04:14 »
Formální definici to možná nemá, ale je to běžně používaný termín, který je obecně používán a přijímán a implicitní přetypování je základním rozlišením mezi silným a slabým typováním.

Citation needed. Mezitím si můžeš přečíst třeba https://stackoverflow.com/questions/2690544/what-is-the-difference-between-a-strongly-typed-language-and-a-statically-typed, speciálně odstavec "Strong vs weak" v první odpovědi, která má > 500 upvotes.

Dokonce koukám, že v tom vlákně si někdo (https://stackoverflow.com/a/2690596/3220468) myslí to samé co ty. Jeho názor má 15 upvotes. Tolik asi o tom jak je ten termín "obecně používán a přijímán" v tom smyslu, ve kterém to tvrdíš ty.

128
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 12. 03. 2020, 15:27:51 »
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ů.

Žádná formální definice silného a slabého typování neexistuje, viz https://en.wikipedia.org/wiki/Strong_and_weak_typing. Všude je to samé "colloquially", "generally", "may" a různé všelijak se překrývající definice různých autorů (koneckonců jednu jsi si tady navrhl i ty sám).

Mě přijde zajímavé

 - jestli má jazyk statický typový systém (Java, Haskell, Python s MyPy) a jak je silný (třeba program v Rustu, pokud nepoužívá undefined, zaručuje absenci data races a neplatných přístupů do paměti)
 - jestli má dynamický typový systém, tj. zda si s sebou nesou objekty informaci o svém typu za běhu, a do jaké míry (třeba v C se nedá hodnot za běhu ničeho doptat, v Pythonu mi každý objekt řekne, jakého je typu, v Javě mi může objekt říci, že je Array, ale už ne čeho protože type erasure atp.).
 - někomu dalšímu mohou připadat důležité další vlastnosti ze seznamu na uvedené wikistránce

Pojmy silný a slabý typový systém používám skutečně zřídka a neformálně, když nehrozí nějaké zmatení, rozhodně bych se tím tady neoháněl jako něčím všeobecně uznávaným.

Ta "automatická změna typu" o které tu mluvíš není slabé typování, ale koerce (hledej coercion na https://en.wikipedia.org/wiki/Type_conversion).

129
Vývoj / Re:Doporučte programovací jazyk pro Windows
« 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/)

130
Vývoj / Re:Doporučte programovací jazyk pro Windows
« 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..

131
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 10. 03. 2020, 19:23:41 »
Proto má třeba Smalltalk dynamic dispatch a současně protokoly. Což řeší oba požadavky.

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.

132
Bazar / Re:Prodám mechanickou klávesnici
« kdy: 10. 03. 2020, 17:55:03 »
Nevím jak to napsat abych nerozpoutal nějaký flame, ale vždycky se u takovýchto klávesnic divím, jak lidi tolik řeší taktilní vlastnosti jednotlivých kláves, ale přitom je jim úplně jedno, že klávesnice je hranatá a designovaná pro člověka, kterému zřejmě ruce vyrůstají z pupíku místo z ramen a místo prstů má hrábě. Pro mě je zásadní, aby mohly lokty, zápěstí a prsty při práci s klávesnicí být v co možná přirozené poloze, jak se o to snaží ergonomické klávesnice, k obdélníkové klávesnici už bych se vracet nikdy nechtěl, připadá mi to jak práce ve svěrací kazajce. Hmatová odezva kláves je pro mě taky důležitá, ale většinou nebývá tak katastrofální, abych kvůli tomu rezignoval na celkový tvar klávesnice..

133
Vývoj / Re:Segmentation fault
« kdy: 09. 03. 2020, 10:14:29 »
Užitečná rada: Zkus si to pustit ve Valgrindu, mohl by ti ukázat, kde špatně zacházíš s pamětí nebo máš nějaké race conditions.
Neužitečná rada: Přepiš to do Rustu :-)

134
Windows a jiné systémy / Re:GUI tookit pro Linux a Windows
« kdy: 04. 03. 2020, 11:43:50 »
Nakonec jsme se dohodli na tom Rustu ale zase jsme se rozhádali o tookitu.
Máme zatím 2 kandidáty: Gtk a Qt (zvláštní že kandidáti jsou ti kterým jsem se chtěl vyhnout).
Program chceme udělat pro Linux ale také aby to šlo dobře na Windows.
Docela se mi líbí jak jsem již zmiňoval GNOME aplikace (CSD, jejich návrhy).

Jestli Rust, tak skoro jednoznačně Gtk, bindingy na Qt jsou v bůhvíjakém stavu.
Koukni na crates relm a vgtk.

135
Desktop / Re:Jak použít xrandr v příkazové řádce?
« kdy: 04. 03. 2020, 11:42:44 »
Jen pro zajímavost, arandr (grafické klikátko k xrandr) umí vyexportovat nastavení monitorů jako xrandr skript, docela často to používám když si v arandr-u nastavím nějaký layout monitorů a pak si na to chci udělat klávesovou zkratku.

Stran: 1 ... 7 8 [9] 10 11 12