Rust vs. C++ (funkcionální vs. OOP)

Pavel Tisnovsky

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #165 kdy: 24. 03. 2016, 17:42:47 »

To není potřeba si představovat, stačí se podívat na ejabberd. Je z něj po (více než) deseti letech jeden z nejúspěšnějších jabber serverů (ne-li úplně nejúspěšnější).

Z komercnich veci pak napriklad ITA, ti maji codebase starou dvacet let, stale upravuji, stale funguji (neni to ciste FP, stejne jako naprosta vetsina  OOP kodu neni ciste OOP).

Ano, ale to je aplikační doména, která je dostatečně abstraktní na to, aby to šlo naprogramovat elegantně. Je to svět sám pro sebe, vytvořený tvůrci toho projektu. Zajímavé bude sledovat, jak se to osvědčí v prostředí modelování reálných firemních procesů a nelogických požadavků na úpravy, mimo logiku aplikace, které v tomto prostředí běžně vznikají.

Osobně proti FP nic nemám, celkem mi toto paradigma vyhovuje, ale pořádek v kódu bych si od něj automaticky nesliboval. Samozřejmě nejlepší na něm je vazba na teorii kategorií.

No dal jsem realny priklad dlouhodobeho projektu, na ktery byl dotaz :)

Jinak ja FP pouzivam presne na "modelování reálných firemních procesů a nelogických požadavků na úprav", protoze mi to umoznuje rapid turnaround. Nejsou tam hodnotove objekty, "jen" mapy/vektory/mnoziny, takze u uprav nehrozi nutnost masivniho refaktoringu (ostatne i celkove je kod o dost kratsi). Otestovani se da udelat prakticky nazivo upravou bezici aplikace (to neni vlastnost FP, spis konkretniho jazyka), dobre se to testuje. Kdyz potrebuji pro nejake hodnoty constraints, tak se to proste implementuje funkci - predikatem - ktera si to pohlida.

A navic - takova relacni databaze, na kterych je velka cast businessu postavena - a tyto databaze (zejmena ty s SQL) maji k FP mozna ponekud prekvapive velmi blizko.


Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #166 kdy: 24. 03. 2016, 19:07:57 »
Otestovani se da udelat prakticky nazivo upravou bezici aplikace (to neni vlastnost FP, spis konkretniho jazyka)
Není to sice vlastnost FP, ale docela to s tím souvisí - u FP jazyků se to dá určitě udělat snadněji, čistěji a s lepšími garancemi. Excelentně udělaný erlangovský hot swap hodně využívá toho, že ví, který proces právě leze do kterého kódu, může ho pozastavit a kód mu vyměnit před nosem :) a taky že neexistují žádné reference na data. Dokonce v paměti může držet dvě verze jednoho modulu (aktuální a předchozí). To je v jiném prostředí dost těžko představitelné, že by se něco takového dalo udělat čistě.

Btw, na wiki se píše
Citace
Only a few programming languages support hot swapping natively, including Pike, Lisp, Erlang, Smalltalk, Visual Basic 6 (Not VB.net), Java and most recently Elm and Elixir.
Zajímalo by mě, jestli je to úplný výčet a jak dobře to který jazyk má zmáknuté.

Lama

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #167 kdy: 24. 03. 2016, 22:04:09 »
Rozsah škod u FP bude ale větší právě proto, že funkce nejsou vázány na nějaký pevně daný kontext, není zachován řetěz dědičnosti, to která funkce uvnitř používá kterou funkci není nějak explicitně zaznamenáno, spontánně vzniklé struktury závislostí budou daleko složitější.

Clovece, ty musis byt umelecky projekt ztohoven.

Já bych to tipoval na nějaký nový generátor flamu, anebo to sem pustil Microshit a testuje tu novou verzi Tay:
http://www.zive.cz/bleskovky/microsoft-vypustil-na-twitter-robota-jmenuje-se-tay-a-odpovi-vam/sc-4-a-181841/default.aspx

Lama

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #168 kdy: 24. 03. 2016, 22:16:33 »
Kde sou ty časy, když sem chodil Lenin (kde vůbec je?). To mělo aspoň nějakou úroveň. Nebo Slávek Ponkrác. To byly časy. Ba ba, bejvávalo. Teď už jen čekám, kdy se tu objeví Chocholoušek...

Radek Miček

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #169 kdy: 24. 03. 2016, 22:36:36 »
Btw, na wiki se píše
Citace
Only a few programming languages support hot swapping natively, including Pike, Lisp, Erlang, Smalltalk, Visual Basic 6 (Not VB.net), Java and most recently Elm and Elixir.
Zajímalo by mě, jestli je to úplný výčet a jak dobře to který jazyk má zmáknuté.

Otázkou je, zda to je vlastnost jazyka nebo implementace.

Některé Prology mají hot swap - třeba SWI. V principu to jde třeba i v .NET Frameworku - například se používá Edit & Continue nebo viz Shadow Copying Assemblies.