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 - Mirek Prýmek

Stran: 1 ... 79 80 [81] 82 83 ... 618
1201
Vývoj / Re:Ideálny programovací jazyk
« kdy: 17. 05. 2019, 11:06:26 »
To pak ale nic moc neřeší.
Ale jo. Resi to tu nejvetsi (z myho pohledu) bolest Go: mam neco, co chci implementovat pro ruzne typy, a nemusim mit jak dement v interfejsu bambilion uplne stejnych funkci pro jednotlive typy (treba tohle https://godoc.org/go.uber.org/zap#Field je proste k zbliti, jinak se to neda nazvat). Jenom tohle mi prijde, ze pokryva 90% "abstraktniho programovani" ve skutecne praxi.

Bohatě by stačilo, kdyby typové třídy nad HKT používala standarní knihovna (třeba Swift k tomu směřuje), běžný Jouda pak jen použije typ z knihovny, aniž by musel rozumět sofistikované vnitřní implementaci.
Jo, to by asi nebylo uplne blby. Gocko ma uzivatelske typy jenom nulteho radu a v stdlib ma par prvniho radu. Tohle posunout o uroven vys (uzivatelske prvniho radu a v stdlib HKT) by mohlo byt zajimavy. Pokud by to teda slo vymyslet tak, aby to fakt bezny franta programator pobral (tj. aby to nezkomplikovalo typovy system natolik, ze by se v nem nevyznal).

P.S. (mírně OT) V souvislosti s tímto se mi do ruky nedávno dostal nový výukový text o monádách a myslím, že trefili funktor na hlavičku.
Horim zvedavosti :) Mas odkaz? (pripadne muzes poslat PM?)

1202
Vývoj / Re:Ideálny programovací jazyk
« kdy: 17. 05. 2019, 10:56:52 »

1203
Vývoj / Re:Ideálny programovací jazyk
« kdy: 17. 05. 2019, 10:28:13 »
existuji alternativy

https://crystal-lang.org/
Jo, jazyků je bambilion. V tom problém není. Problém je tradeoff mezi rozumností jazyka a dostatečným rozšířením a supportem.

1204
Vývoj / Re:Ideálny programovací jazyk
« kdy: 17. 05. 2019, 10:26:32 »
Typové třídy bohužel vyžadují higher kinded types, kteréžto má z mainstreamu (částečně) jen C++.
Ono by (aspoň teoreticky) šlo mít i typové třídy jenom prvního řádu, ne? Nešlo by pak definovat takové třídy jako Functor, ale šlo by udělat Vector[T], kde T je proper type. To by možná mohlo z praktického/pragmatického hlediska celkem i stačit, ne? Java to tak má/měla, ne?

1205
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 22:42:37 »
Něco konkrétnějšího by nebylo?
Uz jsem tady o tom nekdy psal, nechci se opakovat. A hlavne to byly takovy veci, ktery se tezko vysvetluji, aniz bych popsal celej problem a pulku zdrojaku :) Proste jsem z toho jazyka byl zklamanej, no. A nejkonkretnejsi uroven, na ktere se mi to chce rozebirat je asi tahle: prijde mi, ze ten jazyk ma strasne nizkou schopnost vyjadrovat abstraktni myslenky. Nejvic asi kvuli chybejicim generikum, ale nejenom. Ja tam nekolik takovych veci, ktery samy o sobe vypadaji jako drobnost (napr. https://forum.root.cz/index.php?topic=21149.msg310682#msg310682 ), ale jako celek mi to proste pro cokoli abstraktniho nevoni. Zas ale na jednoduche, predem zname a dobre analyzovane problemy, je to docela dobrej jazyk (z tech dost mainstreamovych, aby je davalo smysl pouzivat).

Takove celkem slusne nizkoprahove centrum pro deti a mladez ;)

Slibuju. Až to vymyslím, tobě to natruc neřeknu.
Fair enough! ;)

Protože od toho Prolog není. Právě proto píšu, že na vztahy.
Jj, ale to uz pak nemas jazyk jako takovy, spis nejaky jeho doplnek - modul, databazi, subsystem... Jo, v takove roli mi Prolog dava smysl skvele.

1206
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 22:31:49 »
Nic mi nedokážete, všechno popřu. 8)
:)

1207
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 22:29:05 »
Co mi na ní opravdu vadí je dynamické kachní typování. I hodně stupidní překlepy odhalím až k nim program dojde. A ne všechno se dá otestovat pomocí malých a rychlých testů. Takže to občas vypadá tak, že dlouho čekám, pak opravím nějakou blbost a to celé několikrát dokola.
Njn, to je dan za dynamicnost. Proto rikam, ze bych s ni (neco vylozene vaznyho) moc delat nechtel.

1208
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 22:27:21 »
Smysl to dávalo, neměl jsem možnost to pořádně prozkoumat praxí. A dráždí mě tam ta evidentní ukecanost.
Podle me tech domen, ktere skutecne jdou modelovat hierarchii bez jakychkoli cyklu (treba i "weak linku"), je naprosty minimum. Zavadet kvuli nim vec, ktera jazyk netrivialne zesloziti (kovariance, kontravariance, ...) proste a jednoduse nestoji za to ;)

Ano. Psal jsem o traitech a mixinech. To považuji za vhodného kadidáta.
Jj. Ale dabel je v detailu. O Go jsem si myslel, ze jde presne spravnou cestou, dokud jsem ho nezacal pouzivat a nenapsal v nem neco aspon trochu abstraktniho, coz bylo dost utrpeni :)

Na vztahy jsem uvažoval v duchu Prologu. Ale zatím jsem nic nevymyslel :-)
Hlavne s tim nic nevymyslej, abys promatkuprirodu nahodou nevymyslel neco, co byse mohlo chytnout! ;)

Prolog je uzasnej jako "inteligentni databaze". Ale programovat v tom "imperativne" je jak zvykat si jazyk do krve a strilet se pri tom do nohy, to cely za zvuku TV Slagr.

Docela se mi na jednom pokusu osvedcila kombinace normalni jazyk na logiku a "control" + embeddovany prolog na rozhodovani. To bylo celkem poteseni s tim delat, protoze obe casti delaly, co umi nejlip, a ani jednu jsem neznasilnoval k necemu, do ceho se ji moc nechce...

1209
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 22:04:37 »
Takže nakonec to přece jenom bude JavaScript? ;-) (Spread operátor na objektových literálech v ECMAScript 2018.)
JS není špatný v principu, ale v tom, že se tam doprasilo co mohlo. Lua je "JS done right", nezaznamenal jsem, že by s ní kdokoli měl problém. Ne že by to byl jazyk, ve kterém bych nějak zvlášť chtěl dělat, ale je to jazyk hodný respektu.

1210
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 21:47:49 »
Jestli ponechat dědičnost na úrovni rozhraní, nebo ani v tomto případě ne?
Co dobrého a netriviálního by podle tebe přineslo to mít? Já mám pocit, že dědičnost kdekoli dělá víc škody než užitku*.

Mně by se spíš líbilo to nahradit pěkným, stručným skládáním. Je dost škoda, když je v některých jazycích potřeba celé API vloženého objektu znovu zopakovat na tom vnějším (mám matný pocit, že to tak má někde Rust, ale přesně si to teď nevybavím).

----
* dědičnost má imho technické a filosofické problémy. Dědění tříd má oba typy problémů a relativně velký přínos, dědění interfejsů má spíš jenom filosofické problémy a přínos imho celkem malý. Takže bych se s tím nesral a vyhodil oboje ;)

1211
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 21:02:44 »
U aritmetických operátorů boxování nepřichází v úvahu, dostali bychom zase jen nepřeložitelný kód. No a u komparačních operátorů je za prvé rozumné dělat to stejně, za druhé by boxování bylo s prominutím padlé na hlavu, protože je čistě věcí kompilátoru, jakou referenci vám tam vrátí – a když ta reference mohla právě teď vzniknout, nedává smysl ji porovnávat na rovnost s jinou referencí. Porovnávat reference má smysl tam, kde už je máte z dřívějška uložené (třeba klasická zarážka při hledání v poli).

Tak už to konečně chápu naprosto kompletně!







Je to totiž Havel!










No tak ze začátku byl ten spor zajímavý, pak se ale trochu zvrhl, že?

Jistě, už od začátku měl takový nesprávný osobní tón, i když až do konce šlo o zajímavý a aktuální problém, ne?

Já vím, lze se na to dívat z různých úhlů, stran i pozic, vždycky je však nutné zvážit všechna pro i proti, nemám pravdu?

Oni vlastně oba měli tak trochu pravdu a oba se tak trochu mýlili – nebo vlastně naopak: oba se mýlili a oba měli pravdu, ne? Asi ano, ne?

Ano, také si myslím, že ne, i když si nemyslím, že ano. Oba totiž tak nějak zapomněli, že v budoucnosti se bude umění s technikou tak nějak harmonicky doplňovat – lyrickoepické verše pomohou při chemizaci likvidační praxe – periodická soustava prvků pomůže rozvoji impresionismu – na každém technickém výrobku bude zvláštní ploška, vyhrazená pro účinný estetický vjem – komíny atomových elektráren budou pomalovány našimi nejlepšími krajináři – dvacet tisíc mil pod mořem budou čítárny přístupné všem – diferenciální rovnice se budou psát ve verších – na střechách cyklotronů budou divadla malých forem – a v nich se budou recitovat diferenciální rovnice – tak nějak lidsky, ne?



Takže za mě: problem solved, mír s vámi, volové!

1212
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 20:23:00 »
Buď zkažený vzduch a nebo používáte jiný nástroj. Já málokdy překládám Javu z příkazového řádku, použil jsem to, co pro výpis varování používám normálně – IntelliJ Idea.
Jo, v tom to bude. Já jsem použil Neintelligent Idea.

A proto je Java tak populární.

Tak populární, že polovina lidí, kteří v ní dělají, by v ní raději nedělali :)

1213
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 19:59:39 »
Každopádně ale musím uznat, že je to řachanda.

Kód: [Vybrat]
$ cat Main.java
public class Main {
    public static void main(String[] args) {
        Integer a = 1024;
        Integer b = 1024;
        System.out.println(a == b);
        System.out.println(a == 1024);
    }
}

$ javac Main.java

$ java -cp . Main
false
true

Doporučují čtyři ze tří psychoterapeutů.

1214
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 19:47:27 »
Protože když v Javě porovnáváte reference pomocí ==, také dostanete varování. Takže v tom rozdíl nevidím.
Tak to mám asi nějaký zkažený vzduch já.

Kód: [Vybrat]
$ cat Main.java
public class Main {
    public static void main(String[] args) {
        Integer a = 1024;
        Integer b = 1024;
        System.out.print(a == b);
    }
}

$ javac Main.java

$ java -cp . Main
false

1215
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 19:31:05 »
Když dostane pointer a hodnotu, tak ti vynadá kompilátor.
Nikoli.
Jak by řekl klasik: Tak to tady asi máte nějaký zkažený vzduch!

Kód: [Vybrat]
$ cat test.c
#include <stdio.h>

int main() {
  int a;
  int *ap;

  if(ap != 1) {
    puts("nerovna!");
  }

  if(ap != a) {
    puts("nerovna!");
  }

  return 0;
}

$ gcc test.c
test.c:7:9: warning: comparison between pointer and integer ('int *' and 'int')
  if(ap != 1) {
     ~~ ^  ~
test.c:11:9: warning: comparison between pointer and integer ('int *' and 'int')
  if(ap != a) {
     ~~ ^  ~
2 warnings generated.

Stran: 1 ... 79 80 [81] 82 83 ... 618