Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Zdravím! :)

Chtěl bych začít diskuzi spíše na úvahu a názor. Zajímalo by mě, jak si představujete programovací jazyk, v kterém byste chtěli v budoucnu pracovat. Jakými paradigmaty a strukturou by se řídil, jak by vypadal, atp. Co by vám ulehčil, co by nabídl...

Mě by se líbil programovací jazyk striktně matematicky založený. Například datové typy by se nepřiřazovali typem

proměnná: integer
(int)proměnná
int proměnná;

ale přiřadili by se nějaké množině:

proměnná belongs <0, inf)
//nebo
proměnná belongs N0

Jsem zvědavý, co vymyslíte. :)

Odpovědět  +1 6.6.2015 20:09
Avatar
Odpovídá na Inoue Yūki
Michal Žůrek (misaz):

když se ti takový jazyk líbí, si ho vytvoř. Mě se líbí současné jazyky.

Nahoru Odpovědět  +1 6.6.2015 20:11
Nesnáším {}, proto se jim vyhýbám.
Avatar
mnauik
Člen
Avatar
Odpovídá na Inoue Yūki
mnauik:

Na rozdil od kolegy si myslim, ze je to dobry napad. Kazdopadne, je to pro tebe jakasi moznost, ze takovy jazyk muzes vymyslet a zpopularizovat. Zkus to a bud uspejes nebo neuspejes.

Jinak, zajimalo by me, jak bys resil ten inf :P

Nahoru Odpovědět 6.6.2015 20:14
minusuj mě, ale zdůvodni to ;)
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na mnauik
Inoue Yūki:

Napadá mě třeba zjistit si to druhé číslo v intervalu a pak nechat dosadit jakékoli podle podmínky. :) Bylo by to docela zajímavý, přešlo by se k esenciální složitosti programu a upustilo by se od té druhotné, nicméně na vytvoření takového jazyka nemám zkušenosti. :D

Nahoru Odpovědět 6.6.2015 20:18
Avatar
coells
Redaktor
Avatar
Odpovídá na Inoue Yūki
coells:

Zadání:

maximalizuj: x + 2y
2 <= x <= 5
2 <= y
x + y = 10

Řešení v R:

library(boot)

a <- c(1, 2)
A1 <- rbind(c(1, 0))
b1 <- c(5)
A2 <- rbind(c(1, 0), c(0, 1))
b2 <- c(2, 2)
A3 <- rbind(c(1, 1))
b3 <- 10
simplex(a, A1, b1, A2, b2, A3, b3, maxi = T)
 
Nahoru Odpovědět  +2 6.6.2015 20:53
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Inoue Yūki
Martin Dráb:

Napadá mě třeba zjistit si to druhé číslo v intervalu a pak nechat dosadit jakékoli podle podmínky. :) Bylo by to docela zajímavý, přešlo by se k esenciální složitosti programu a upustilo by se od té druhotné, nicméně na vytvoření takového jazyka nemám zkušenosti.

Úplně nechápu to tvoje klíčové slovo belongs. Tím jako řekneš, že daná proměnná je takového typu, jehož obor hodnot je <0;inf)? Určitě by se to někdy hodilo, na druhou stranu nevím, jak by na tom takový kód byl s výkonem. Ale v některých rozšířeních na verifikaci kódu se něco na ten způsob může použít (sdělíš rozsah vstupních hodnot parametrů funkce a překladač je na základě toho schopný říci třeba něco o jejím výsledku).

Pak ještě nechápu tebou používané pojmy esenciální složitost a druhotná složitost. Myslím tím odstřihnoutí se od implementační složiotsti (tzn. řešení, jaké má mít program proměnné a datové struktury, v podstatě se jedná o rozhodnutí závislá na prostředí/archi­tektuře...)? Jestli ano, asi by se ti líbily neprocedurální jazyky (možná Prolog, ale spíše Haskell, Shceme...), kde ta implementační složitost tak trochu odpadá a jedná se spíš o zápis myšlenek (alespoň tak to vidím jako někdo, kdo ty jazyky vůbec nemusí).

Nahoru Odpovědět 6.6.2015 20:58
2 + 2 = 5 for extremely large values of 2
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Martin Dráb
Inoue Yūki:

Belongs (patří, náleží) jsem myslel náleží v matematickém smyslu. Tedy proměnná náleží intervalu <0, inf), kdy inf je nekonečno, nebo proměnná náleží množitě N0, tedy přirozeným číslům s nulou.

Druhotnou složitostí jsem myslel postupy, které přímo neslouží k výsledku programu. Ošetření chyb, testy, cache, nějaké nepříliš významné struktury. Esenciální složitost by pak souvisela pouze striktně s potřebnou složitostí programu.

Nahoru Odpovědět 6.6.2015 21:10
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Martin Dráb
Inoue Yūki:

Zároveň by byla potřeba architektura, která by oddělila data, logiku a výpis, což je častá nevýhoda u velkých aplikačních rámců, například Tkinteru. Pracuje se zde pak s aplikací, kde nejen že se řeší pouze esenciální složitost, ale výkonově má stejný potenciál jako třeba C, přestože neztrácí přehlednost. Nemluvě o jeho univerzálnosti. Takový jazyk by pro mě byl nebem. :D

Nahoru Odpovědět 6.6.2015 21:18
Avatar
Jan Kubálek
Člen
Avatar
Odpovídá na Inoue Yūki
Jan Kubálek:

Ahoj,
a vyzkousel jsi se podivat na funkcionalni programovani? To je primo zalozene na praci s daty (mnozinami) a jejich reprezentaci.
Peknym uvodem muze byt napr. http://www.inf.fu-berlin.de/…i/lambda.pdf

 
Nahoru Odpovědět  +1 6.6.2015 21:37
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Inoue Yūki
Martin Dráb:

Druhotnou složitostí jsem myslel postupy, které přímo neslouží k výsledku programu. Ošetření chyb, testy, cache, nějaké nepříliš významné struktury. Esenciální složitost by pak souvisela pouze striktně s potřebnou složitostí programu.

Tohle podle mě právě dost splňují ty neprocedurální (funkcionální jazyky). Tam jsou věci týkající se spíše architektury a implementačních detailů ponechány spíše na překladači. Co se týče ošetření chyb a testů, tomu asi moc nelze uniknout, protože asi těžko překladač uhodne, jak by sis přál určitou chybu zrovna v dané situaci řešit a protože verifikace je sice fajn věc, ale zdaleka se nedá použít vždycky (a co si pamatuju, tak některé přístupy v ní také dovolují udělat chyby).

Co se týče toho funkcionálu, vezměme si za příklad třeba Quicksort. Ve funkcionálním jazyce zapíšeš tento algoritmus nějak takto:

Jedná se o množinu skládající se ze tří částí:
* Quicksort([čísla <= pivot]),
* pivod (např. prostřední prvek setřizovaného pole),
* Quicksort([čísla > pivot]).

Což je v podstatě hlavní myšlenka toho algoritmu. Dá se to (třeba v Haskelu) napsat na 1-2 řádky, co si pamatuju, a vůbec neřešíš nějaké přehazování čísel, nějaké proměnné... jenom zapíšeš tuhle myšlenku syntaxí jazyka a je hotovo (+ musíš definovat okrajové případy).

Výkonové problémy tebou navrhovaných jazyků by se daly řešit jejich transformací do Cčka (pokud vím, takové jazyky i existují, např. Mercury, případně něco pro programování v realtime prostředí). Vůbec bych se nedivil, kdyby jazyk, který má to tvoje belongs v určité formě existoval. Jenom ho třeba využívají jen někde na akademické půdě nebo v podobně malém měřítku.

Nahoru Odpovědět 7.6.2015 12:38
2 + 2 = 5 for extremely large values of 2
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Novák:

problém s takovým jazykem by byla hlavně současná architektura procesorů.. A jak to naimplementovat, aby to nebylo pekelně pomalé.. Můžeš zkusit ;)

Nahoru Odpovědět 7.6.2015 13:08
Chyba je mezi klávesnicí a židlí.
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Inoue Yūki
hanpari:

Jak už ti naznačovali ostatní, vymýšlíš něco, co už je vymyšlené :)

http://www.slideshare.net/…ndoners-2014?…

 
Nahoru Odpovědět 7.6.2015 13:17
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

Myslím si, že je úplně jedno v čem programuješ, důležité je programování samo o sobě. Tedy umět vymyslet postup, zpracovat vstupy a výstupy a pod. Pak je neméně důležité umět svůj program zdokonalit a upravit. Myslím si, že je fakt jedno, zda k tomu co potřebuješ počítačem udělat použiješ JavaScript, PHP, C nebo cokoliv jiného. Ale třeba najdeš prostředí pro které stávající jazyky nevyhovují, jako tomu bylo při vzniku PHP, JavaScript, C++...

Nahoru Odpovědět  +1 7.6.2015 20:26
Čím víc vím, tím víc věcí nevím.
Avatar
Pavol Hejný
Redaktor
Avatar
Odpovídá na David Hynek
Pavol Hejný:

Pardon chtěl jsem dát +1 jen jsem se překlik a už to nejde vzít zpět.

Editováno 9.6.2015 23:40
Nahoru Odpovědět  +1 9.6.2015 23:39
http://pavolhejny.cz/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.