Kterým směrem se vydat od C

Re:Kterým směrem se vydat od C
« Odpověď #30 kdy: 09. 02. 2022, 20:52:13 »
A taky ten kód bude bezpečnější, v Go se člověk musí hodně snažit, aby něco fest podělal.
A jen tak mimochodem, věci kde se něco může fest podělat se obvykle píšou v MISRA nebo AUTOSAR C(++). Tam, kde o něco opravdu jde, je Go nepoužitelné protože Google vůbec nic negarantuje.


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Kterým směrem se vydat od C
« Odpověď #31 kdy: 09. 02. 2022, 22:01:44 »
A taky ten kód bude bezpečnější, v Go se člověk musí hodně snažit, aby něco fest podělal.
A jen tak mimochodem, věci kde se něco může fest podělat se obvykle píšou v MISRA nebo AUTOSAR C(++). Tam, kde o něco opravdu jde, je Go nepoužitelné protože Google vůbec nic negarantuje.
Takhle jsem to nemyslel, jen věci typu chybná správa paměti nebo kontrola mezí polí/řezů. Že Go není navržené pro bezpečnostně kritické aplikace je snad všem zřejmé, SPARKem nikdy nebude, stejně jako běžné C++ nebo Rust (i když tady viz nedávná zprávička o AdaCore a Rustu).

em.ve

Re:Kterým směrem se vydat od C
« Odpověď #32 kdy: 09. 02. 2022, 22:10:08 »
Není správná cesta: C -> C++ -> C# -> D -> F77 -> Go -> Java -> Lisp -> Python  ?
 8)

.... D -> Erlang -> F77 ->F# -> Go -> Haskell -> Java -> Kotlin -> Lisp -> Python -> Ruby ....
:)

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Kterým směrem se vydat od C
« Odpověď #33 kdy: 09. 02. 2022, 22:13:13 »
Není správná cesta: C -> C++ -> C# -> D -> F77 -> Go -> Java -> Lisp -> Python  ?
 8)
.... D -> Erlang -> F77 ->F# -> Go -> Haskell -> Java -> Kotlin -> Lisp -> Python -> Ruby ....
:)
Předháníte se v náhodném generování permutací? :)

anonacct

Re:Kterým směrem se vydat od C
« Odpověď #34 kdy: 09. 02. 2022, 22:41:54 »
tak pokud chceš psát "array = append(array, 1)" abys přidal něco do pole, tak golang je ta správná volba :)


BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Kterým směrem se vydat od C
« Odpověď #35 kdy: 09. 02. 2022, 23:05:31 »
Omlouvám se předem, že neodpovím na otázku C++ nebo Go.  ;D

Mám čerstvou zkušenost s Rustem.

Předělával jsem prototyp jedné aplikace (hnusnej, brutálně nefunkcionální = hodně mutací) nejdříve do C++. Všechny ty chytré pointery ho posouvají určitě hodně dopředu, o tom žádná, ale prostě ta práce s ním byla strašně nepohodlná. Počínaje zázemím, a konče tím, že mi to na Windows začalo po zbuildění do produkční verze padat.

Nad Go jsem chvilku uvažoval, čistě pragmaticky, protože by to měl být takovej ten správně bastlířskej, co tě zbytečně neomezuje. Ale nenašel jsem potřebné knihovny, začalo se mi to komplikovat, a tak jsem šel třetí cestou.

S Rustem to byl samozřejmě boj a trhání vlasů stylem: "co ti zase vadí?!". Ale po nějakých čtrnácti dnech mám prototyp tak nějak funkční, dokonce už i se chytám, co mu to vadí, a práce docela odcejpá. Kód je sice trochu (dost) neoptimální, protože zkušenosti, ale to je cajk, hlavně když to šlape. Zázemí (cargo, crates.io/) je na mnohem lepší úrovni než C++, a řekl bych lepší i než Go (na základě toho co jsem si studoval).

Kit

  • *****
  • 705
    • Zobrazit profil
    • E-mail
Re:Kterým směrem se vydat od C
« Odpověď #36 kdy: 09. 02. 2022, 23:08:56 »
Není správná cesta: C -> C++ -> C# -> D -> F77 -> Go -> Java -> Lisp -> Python  ?
 8)
To je na moc dlouho... staci C -> Lisp
je to velmi jednoduchý a mocný jazyk
Pravda, ale největší slávu má už za sebou.
Moderní jazyky se ho snaží více či méně úspěšně napodobovat. Není lepší originál?
Tím si právě nejsem tak jistý. Vzorem čitelnosti zrovna není.

Lisp je krásně čitelný. Jen v něm chybí hromada balastu, která je v ostatních jazycích. Lisp je velmi úsporný na zápis a to může některé programátory mást.

Kit

  • *****
  • 705
    • Zobrazit profil
    • E-mail
Re:Kterým směrem se vydat od C
« Odpověď #37 kdy: 09. 02. 2022, 23:12:09 »
S Rustem to byl samozřejmě boj a trhání vlasů stylem: "co ti zase vadí?!". Ale po nějakých čtrnácti dnech mám prototyp tak nějak funkční, dokonce už i se chytám, co mu to vadí, a práce docela odcejpá. Kód je sice trochu (dost) neoptimální, protože zkušenosti, ale to je cajk, hlavně když to šlape. Zázemí (cargo, crates.io/) je na mnohem lepší úrovni než C++, a řekl bych lepší i než Go (na základě toho co jsem si studoval).

To zní tak dobře, že se ten Rust snad začnu učit, i když ho momentálně k ničemu nepotřebuji.

alex6bbc

  • *****
  • 1 601
    • Zobrazit profil
    • E-mail
Re:Kterým směrem se vydat od C
« Odpověď #38 kdy: 09. 02. 2022, 23:13:52 »
Omlouvám se předem, že neodpovím na otázku C++ nebo Go.  ;D

Mám čerstvou zkušenost s Rustem.

Předělával jsem prototyp jedné aplikace (hnusnej, brutálně nefunkcionální = hodně mutací) nejdříve do C++. Všechny ty chytré pointery ho posouvají určitě hodně dopředu, o tom žádná, ale prostě ta práce s ním byla strašně nepohodlná. Počínaje zázemím, a konče tím, že mi to na Windows začalo po zbuildění do produkční verze padat.

Nad Go jsem chvilku uvažoval, čistě pragmaticky, protože by to měl být takovej ten správně bastlířskej, co tě zbytečně neomezuje. Ale nenašel jsem potřebné knihovny, začalo se mi to komplikovat, a tak jsem šel třetí cestou.

S Rustem to byl samozřejmě boj a trhání vlasů stylem: "co ti zase vadí?!". Ale po nějakých čtrnácti dnech mám prototyp tak nějak funkční, dokonce už i se chytám, co mu to vadí, a práce docela odcejpá. Kód je sice trochu (dost) neoptimální, protože zkušenosti, ale to je cajk, hlavně když to šlape. Zázemí (cargo, crates.io/) je na mnohem lepší úrovni než C++, a řekl bych lepší i než Go (na základě toho co jsem si studoval).

skoro bych si tipl, ze jste mel nejvetsi sebemotivaci to udelat v rustu :-)
nic proti.

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Kterým směrem se vydat od C
« Odpověď #39 kdy: 09. 02. 2022, 23:27:05 »
Omlouvám se předem, že neodpovím na otázku C++ nebo Go.  ;D

Mám čerstvou zkušenost s Rustem.

Předělával jsem prototyp jedné aplikace (hnusnej, brutálně nefunkcionální = hodně mutací) nejdříve do C++. Všechny ty chytré pointery ho posouvají určitě hodně dopředu, o tom žádná, ale prostě ta práce s ním byla strašně nepohodlná. Počínaje zázemím, a konče tím, že mi to na Windows začalo po zbuildění do produkční verze padat.

Nad Go jsem chvilku uvažoval, čistě pragmaticky, protože by to měl být takovej ten správně bastlířskej, co tě zbytečně neomezuje. Ale nenašel jsem potřebné knihovny, začalo se mi to komplikovat, a tak jsem šel třetí cestou.

S Rustem to byl samozřejmě boj a trhání vlasů stylem: "co ti zase vadí?!". Ale po nějakých čtrnácti dnech mám prototyp tak nějak funkční, dokonce už i se chytám, co mu to vadí, a práce docela odcejpá. Kód je sice trochu (dost) neoptimální, protože zkušenosti, ale to je cajk, hlavně když to šlape. Zázemí (cargo, crates.io/) je na mnohem lepší úrovni než C++, a řekl bych lepší i než Go (na základě toho co jsem si studoval).

skoro bych si tipl, ze jste mel nejvetsi sebemotivaci to udelat v rustu :-)
nic proti.
Jako že jsem to "chtěl" udělat v Rustu?
Je pravda, že jsem na něj měl už nějaký čas zálusk. Ale nepovažoval jsem ho za úplně vhodného kandidáta. Původně jsem byl celkem pevně rozhodnut, že to bude C++, protože to splňovalo požadované kritéria, přestože ho nemám nijak zvlášť rád. A Rust jsem neuměl, což ho v mých očích dost hendikepovalo. Takže pragmaticky byl C++ jasný favorit.
V reálu ale všechno co mohlo, se kazilo. A představa (a pak incident), že to sice nakonec dotáhnu do konce, ale budu muset řešit pády, ...
Pohrávání si s myšlenkou použít Go bylo právě kvůli jeho pověsti, a kvůli tomu, že do Rustu jsem se přeci jen ještě bál.
Zatímco u toho Rustu všechno šlo perfektně, a jediná brzda byly mé schopnosti.
« Poslední změna: 09. 02. 2022, 23:29:44 od BoneFlute »

anonacct

Re:Kterým směrem se vydat od C
« Odpověď #40 kdy: 10. 02. 2022, 00:22:19 »
Začalo ti to padat tak to začals přepisovat do jiného jazyka... ty prosímtě hlavně tu neraď ostatním co mají dělat :)

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Kterým směrem se vydat od C
« Odpověď #41 kdy: 10. 02. 2022, 01:47:03 »
Začalo ti to padat tak to začals přepisovat do jiného jazyka... ty prosímtě hlavně tu neraď ostatním co mají dělat :)

A to dělám ještě horší zvěrstva  ;D

Re:Kterým směrem se vydat od C
« Odpověď #42 kdy: 10. 02. 2022, 05:40:46 »
Nad Go jsem chvilku uvažoval, čistě pragmaticky, protože by to měl být takovej ten správně bastlířskej, co tě zbytečně neomezuje.
Jo, Go je v některých případech výborná pragmatická volba. Je dobrý na věci, které jsou přímočaré, máš jasnou představu, co se tam bude dít, neplánuješ tam žádné moc vychytralé postupy, abstrakce apod. NEní to "příliš dynamicky konkurentní" (paradoxně) a chceš mít širší publikum. Středně zkušený programátor v něm může začít docela slušně psát tak za dva tři dny, kód je srozumitelný za den.

Co mě po několika letech práce v Go docela zklamalo, je, že to programování konkurentních věcí není tak snadné, pohodlné a jednoduché, jak se Go od začátku prsí. Oproti Erlangu je třeba pěknej oser orchestrace goroutin. S pomocí context.Context se to jakžtakž dá napsat, ale je to peklo a člověk se donekonečna pere s nějakými cornerkejsy a naráží na to, že to tam dolepili později a ve velké části stdlib to vůbec není :( (Velice podobnou zkušenost mám s coroutinami v Pythonu - je vidět, že dobrá implementace konkurentnosti chce dost času, první nástřely jsou vždycky strašné a zlepšuje se to jenom pomalu).

Na tooling mám nejednoznačný pohled (ostatně jako i na ten jazyk v celku, obecně). Například díky tomu, jak je to jednoduchý jazyk s pevnou strukturou, je všude k dispozici velmi dobrý refaktoring. To je pro každodenní práci super. Některé věci mi ale hlava vůbec nebere - příjdou mi děsně "typicky gočkově tvrdohlavě zaostalé" nebo jsem prostě nebyl schopný pochopit, jaká za nimi má být logika. Například package management mi přijde otřesný. Nebo naprosto nechápu, když má jazyk relativně použitelné generování dokumentace (docstringy, doctesty apod.), proč není možné si nechat zobrazit v prohlížeči dokumentaci jenom svého projektu. Vždycky to tam narve dokumentaci celé stdlib. Tohle mi přijde jako základní featura a nezjistil jsem, jak to udělat. Takových WTF momentů je tam víc.

V Rustu jsem nic nedělal, jenom jsem se s ním seznámil a působil na mě daleko koncepčněji, čistěji, tooling byl složitější, ale s jasnou logikou. Daleko menší množství tvrdohlavě debilních řešení (velmi typické pro Go) a WTF momentů. Package management takový, jaký bych u moderního jazyka čekal. Cenou za to je menší publikum - množství lidí, kteří ten kód přečtou nebo použijí, bude o dost menší.

Re:Kterým směrem se vydat od C
« Odpověď #43 kdy: 10. 02. 2022, 05:49:44 »
P.S. V žádné případě, ani náhodou, bych Go necharakterizoval jako jazyk, který "tě zbytečně neomezuje". IMHO je to přesně naopak: autoři jsou velmi tvrdohlaví ("opinionated", chce-li kdo) a jazyk obsahuje právě spoustu úplně dementních (z pohledu uživatele) omezení. Go je takové velmi úzce nalajnované hřiště. Když to člověk ví a akceptuje, v tom uzounkém hřišti se hraje relativně dobře. Ale člověk má neustále někde pocit, že mu byla přistřižena křídla (popř. uříznuty ruce ;) ). Autoři tvrdí, že velmi pečlivě zvolili, kde budou řezat a že je to geniální volba pro dobro uživatele. V mnoha případech si tím nejsem ani trochu jist stejně jako oni ;)

Re:Kterým směrem se vydat od C
« Odpověď #44 kdy: 10. 02. 2022, 07:18:26 »
P.S. V žádné případě, ani náhodou, bych Go necharakterizoval jako jazyk, který "tě zbytečně neomezuje". IMHO je to přesně naopak: autoři jsou velmi tvrdohlaví ("opinionated", chce-li kdo) a jazyk obsahuje právě spoustu úplně dementních (z pohledu uživatele) omezení. Go je takové velmi úzce nalajnované hřiště. Když to člověk ví a akceptuje, v tom uzounkém hřišti se hraje relativně dobře. Ale člověk má neustále někde pocit, že mu byla přistřižena křídla (popř. uříznuty ruce ;) ). Autoři tvrdí, že velmi pečlivě zvolili, kde budou řezat a že je to geniální volba pro dobro uživatele. V mnoha případech si tím nejsem ani trochu jist stejně jako oni ;)
Go je holt jazyk, který si Google navrhl přesně pro své potřeby a podmínky. A ty jsou ve spoustě případů dost specifické.
« Poslední změna: 10. 02. 2022, 07:24:00 od Jiří Havel »