Ideálny programovací jazyk

gill

  • ****
  • 270
    • Zobrazit profil
    • E-mail
Re:Ideálny programovací jazyk
« Odpověď #15 kdy: 05. 05. 2019, 19:57:18 »
Zkousel jsm si to predstavit a zjistil jsem, ze na programovaci jazyk tak akorat z vysoka kaslu a kalim, dulezita je knihovna co je pod tim, co vsechno v ni je a jak dobre se to pouziva. Za me vede Java a C#, kde Java je pro ty chytrejsi, takze Java 8) Akorat co me sejre je, ze v Jave nejsou moc neblokujici verze metod, ale to je taky otazka jestli to je problem, protoze treba POSIX sockety jsou blokujici a vlastne nevim jak se na urovni psani C kodu da na Linuxu udelat neblokujici Socket, jestli to teda vubec jde. Protoze treba design Node.js  je neblokujici, ale k cemu ti to je, kdyz na urovni operacniho systemu to blokujici je. To ze ti Node.js nezablokuje thred kdyz posilas request neznamena, ze se pod tim nevyrobi dalsi thread. A v tom pripade toto umi i Java. Jaky design v tomhle ma .NET a jestli Windows dokazi udelat neblokujici Socket, to nevim.

nodejs opravdu nevytvari vlakno pro kazdou cekajici operaci.


Re:Ideálny programovací jazyk
« Odpověď #16 kdy: 05. 05. 2019, 20:00:50 »
Zkousel jsm si to predstavit a zjistil jsem, ze na programovaci jazyk tak akorat z vysoka kaslu a kalim, dulezita je knihovna co je pod tim, co vsechno v ni je a jak dobre se to pouziva. Za me vede Java a C#, kde Java je pro ty chytrejsi, takze Java 8) Akorat co me sejre je, ze v Jave nejsou moc neblokujici verze metod, ale to je taky otazka jestli to je problem, protoze treba POSIX sockety jsou blokujici a vlastne nevim jak se na urovni psani C kodu da na Linuxu udelat neblokujici Socket, jestli to teda vubec jde. Protoze treba design Node.js  je neblokujici, ale k cemu ti to je, kdyz na urovni operacniho systemu to blokujici je. To ze ti Node.js nezablokuje thred kdyz posilas request neznamena, ze se pod tim nevyrobi dalsi thread. A v tom pripade toto umi i Java. Jaky design v tomhle ma .NET a jestli Windows dokazi udelat neblokujici Socket, to nevim.

nodejs opravdu nevytvari vlakno pro kazdou cekajici operaci.

1 POSIX Socket = 1 vyzrany thread
100 paralelnich bezicich requestu pres POSIX Socket = 100 vyzrany threadu
Pres to nejede vlak

To se tyka OS, je uplne jedno co dela Node.js.

Vyjimka by mohlo byt akorat to, ze uz existuje nejaky neblokujici Socket na urovni OS.

Re:Ideálny programovací jazyk
« Odpověď #17 kdy: 05. 05. 2019, 20:11:27 »
Ale je mozne, ze by to nejak slo udelat pres epoll http://man7.org/linux/man-pages/man7/epoll.7.html

Jo pouziva to na Linuxu epoll, overeno
https://stackoverflow.com/questions/38130102/is-libuv-under-the-hood-use-epoll-or-select2-in-unix

No takze za me, na programovaci jazyk dlabu, zajima me, aby moje platforma podporovala takoveto veci.
« Poslední změna: 05. 05. 2019, 20:13:40 od PetrK »

gill

  • ****
  • 270
    • Zobrazit profil
    • E-mail
Re:Ideálny programovací jazyk
« Odpověď #18 kdy: 05. 05. 2019, 20:23:22 »
Ale je mozne, ze by to nejak slo udelat pres epoll http://man7.org/linux/man-pages/man7/epoll.7.html

Jo pouziva to na Linuxu epoll, overeno
https://stackoverflow.com/questions/38130102/is-libuv-under-the-hood-use-epoll-or-select2-in-unix

No takze za me, na programovaci jazyk dlabu, zajima me, aby moje platforma podporovala takoveto veci.

to prave java moc nepodporuje.

e3k

  • ***
  • 217
    • Zobrazit profil
    • E-mail
Re:Ideálny programovací jazyk
« Odpověď #19 kdy: 05. 05. 2019, 20:36:06 »
Predstavte si že vytvárate nový programovací jazyk presne podľa vašich predstáv. Máte na to team odborníkov a pripravujete im zadanie:

1. Akú by mal mať váš jazyk filozofiu, pradigmu?
2. Čo by ste okopírovali z iných jazykov?
3. Čo by ste naopak úplne vynechali?
4. Čím by bol váš jazyk inovatívny? Aké nové vlastnosti ktoré vám chýbajú inde by mal mať váš jazyk?
5. Akým nedostatkom s ktorými sa ako programátor strtávate by ste sa chceli vyhnúť?
1. programovaci jazyk
2. python
3. nic
4. python
5. ziadnym
suma sumarum python


Re:Ideálny programovací jazyk
« Odpověď #20 kdy: 05. 05. 2019, 22:19:29 »
Ale je mozne, ze by to nejak slo udelat pres epoll http://man7.org/linux/man-pages/man7/epoll.7.html

Jo pouziva to na Linuxu epoll, overeno
https://stackoverflow.com/questions/38130102/is-libuv-under-the-hood-use-epoll-or-select2-in-unix

No takze za me, na programovaci jazyk dlabu, zajima me, aby moje platforma podporovala takoveto veci.


to prave java moc nepodporuje.

Alaae podporuje, ma neblokujici sockety a asynchronni jdbc, je to soucasti standard balicko "nio" - nonblocking IO. Akorat nad tim neblokujici JDBC zacali vyvijet teprve ani ne pred 2 roky a jeste z toho neni standard a nevim o tom, ze by to uz podporal treba Spring.

Re:Ideálny programovací jazyk
« Odpověď #21 kdy: 06. 05. 2019, 23:23:06 »
1 POSIX Socket = 1 vyzrany thread
100 paralelnich bezicich requestu pres POSIX Socket = 100 vyzrany threadu
Pres to nejede vlak

To se tyka OS, je uplne jedno co dela Node.js.

Vyjimka by mohlo byt akorat to, ze uz existuje nejaky neblokujici Socket na urovni OS.
Ale je mozne, ze by to nejak slo udelat pres epoll http://man7.org/linux/man-pages/man7/epoll.7.html

Epoll je vlastně jen rychlejší select nebo poll.
A stejně jako s epollem se s nimi dá obsloužit více socketů z jednoho vlákna, ideálně v neblokujícím režimu - což většina rozumných OS podporuje(i když si nejsem jist zda neblokující režim je v čistém posixu).

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Ideálny programovací jazyk
« Odpověď #22 kdy: 07. 05. 2019, 00:32:47 »
Zkousel jsm si to predstavit a zjistil jsem, ze na programovaci jazyk tak akorat z vysoka kaslu a kalim, dulezita je knihovna co je pod tim, co vsechno v ni je a jak dobre se to pouziva. Za me vede Java a C#, kde Java je pro ty chytrejsi, takze Java 8) Akorat co me sejre je, ze v Jave nejsou moc neblokujici verze metod, ale to je taky otazka jestli to je problem, protoze treba POSIX sockety jsou blokujici a vlastne nevim jak se na urovni psani C kodu da na Linuxu udelat neblokujici Socket, jestli to teda vubec jde. Protoze treba design Node.js  je neblokujici, ale k cemu ti to je, kdyz na urovni operacniho systemu to blokujici je. To ze ti Node.js nezablokuje thred kdyz posilas request neznamena, ze se pod tim nevyrobi dalsi thread. A v tom pripade toto umi i Java. Jaky design v tomhle ma .NET a jestli Windows dokazi udelat neblokujici Socket, to nevim.

nodejs opravdu nevytvari vlakno pro kazdou cekajici operaci.

1 POSIX Socket = 1 vyzrany thread
100 paralelnich bezicich requestu pres POSIX Socket = 100 vyzrany threadu
Pres to nejede vlak

To se tyka OS, je uplne jedno co dela Node.js.

Vyjimka by mohlo byt akorat to, ze uz existuje nejaky neblokujici Socket na urovni OS.
Každý OS na to má svůj mechanismus, například BSD má kqueue a Windows IOCP. Dělat pro milion requestů milion vláken by asi nebyl dobrý nápad.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Ideálny programovací jazyk
« Odpověď #23 kdy: 07. 05. 2019, 00:33:42 »
Cim idealnejsi jazyk je tim vice se podoba lispu.

Chtel bych na nizke urovni videt kod pro kernel v lispu :-)
Kacirsky dotaz: jsou funkcionalni jazyky opravdu efektivnejsi? Mi se Lisp a dalsi libi, ale prakticky jsem je nevyuzil.
Japonci psali kernely v Prologu, tak v Lispu by to šlo taky.

Re:Ideálny programovací jazyk
« Odpověď #24 kdy: 07. 05. 2019, 10:51:40 »
Nejdřív bych si ujasnil, k čemu má vlastně ten jazyk sloužit. Pak bych řešil, jestli je kvůli tomu nutné vytvářet nový jazyk. Teprve na základě toho bych pak případně řešil nějaký tým odborníků a zadání.
Tak nějak. Jazyk je nástroj. Jeho vlastnosti vycházejí převážně z toho, jaký problém se zrovna řeší. (A to opomíjím, že výběr programovacího jazyka je v reálu málo technické a hodně manažerské rozhodnutí.) Chtít ideální jazyk bez přesnější specifikace problému je jako chtít ideální dopravní prostředek, nebo kuchyňský spotřebič.

Re:Ideálny programovací jazyk
« Odpověď #25 kdy: 07. 05. 2019, 20:29:09 »
Nakonec se v každém jazyku dostanu k zadání vytvořit formulář, zvalidovat políčka, kliknout na Ok a uložit do SQL. Záleží jen, jak dlouhá cesta k tomu vede. Výsledkem by měla být malá přenosná aplikace.

Ink

  • *****
  • 654
    • Zobrazit profil
    • E-mail
Re:Ideálny programovací jazyk
« Odpověď #26 kdy: 08. 05. 2019, 09:50:02 »
Každý jazyk má omezenou "ideální oblast", kde bude excelovat, čím dále od ní bude, tím to více dře. Na jedné straně je vysokoúrovňový (v zásadě deklarativní, lidsky srozumitelný) popis problému a na druhé optimalizovaný výpočet blízko konkrétnímu železu. Různé chytré kompilátory a "bezplatné abstrakce" se snaží tu vzdálenost překlenout, ale zatím se nezdá, že by to šlo dokonale.

Ideální programovací prostředí je podle mě takové, které umožní ponechat ten deklarativní popis problému co nejširší a chytře vkládat konkrétní kousky, které řeší tu nízkoúrovňovou optimalizaci, aniž by ohrozily bezpečnost a správnost výpočtu. Z konkrétních jazyků bych řekl, že má správným směrem nakročeno třeba Rust, ale uvidíme, kam se to bude vyvíjet.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Ideálny programovací jazyk
« Odpověď #27 kdy: 08. 05. 2019, 14:24:11 »
Predstavte si že vytvárate nový programovací jazyk presne podľa vašich predstáv.
Jde o to, pro koho. Pro nepříliš zdatné programátory, tedy přes 95% IT audience? Ti mají Javu a PHP. Jinak mají smysl jen úzce specializované jazyky, v CERNu si třeba vytvořili speciální jazyk pro HPC. To ale není téma pro toto fórum.

Re:Ideálny programovací jazyk
« Odpověď #28 kdy: 08. 05. 2019, 19:00:49 »
Predstavte si že vytvárate nový programovací jazyk presne podľa vašich predstáv.
Jde o to, pro koho. Pro nepříliš zdatné programátory, tedy přes 95% IT audience? Ti mají Javu a PHP. Jinak mají smysl jen úzce specializované jazyky, v CERNu si třeba vytvořili speciální jazyk pro HPC. To ale není téma pro toto fórum.

CERN si sice jazyk napsal(nekolik...), ale datovy analyzy dela na Sparku v pythonu, v cem jinym. napsali si svoji phy-extenzi dataframu RDataFrame, ktery ma ruzne featury, ktere potrebuji, a je napsany v C++ s python bindingem, vse zastresene jupyterem.

Ohledne HPC, ucim se ted Legion(Stanford) ve kterem je napsany LuxGraph (gpu distribuovany graph engine), ale stejne si pro nej delam python(boost)/scala(javacpp) interfacem pro IO.

Pokladat Javu za jazyk pro neprilis zdatne programatory muze napsat jen nezdatny programator :-)

Re:Ideálny programovací jazyk
« Odpověď #29 kdy: 08. 05. 2019, 19:01:26 »

Kdyz si vezmu matematiky a fyziky tak je fortran, matlab pro ne super. Jednoducha prace s maticemi a takrka matematicky zapis.

Prosím ne. K Fortanu se nehodlám moc vyjadřovat, jen uvedu, že většina fortranového kódu, co jsem kdy viděl, byla neuvěřitelně zprasená, čímž jsem si k němu asi vytvořil doživotní odpor. Takže na „tvrdou“ numeriku používám C.
A co se týče matlabu, ten se podle mne taky drží už jen ze setrvačnosti, bo ta „přirozená“ syntaxe stejně bere za své, když potřebujete pracovat např. s tensory vyššího řádu. Zlaté NumPy, které je navíc na rozdíl od matlabu otevřené.