Je jazyk C skutočne ťažký?

Re:Je jazyk C skutočne ťažký?
« Odpověď #210 kdy: 13. 06. 2025, 09:39:41 »
Nedefinované chování umožňuje primitivní operace pokrýt jednou CPU intrukcí. Když bude definované všechno, na každou prkotinu bude knihovní funkce, která bude emulovat operátor přesně každý bit výsledku.

Teď jde použít oboje - rychlý operátor s nejistým chováním, nebo si zavolat funkci a mít výsledek pomalu, ale precizně.


Re:Je jazyk C skutočne ťažký?
« Odpověď #211 kdy: 13. 06. 2025, 11:21:18 »
Nedefinované chování umožňuje primitivní operace pokrýt jednou CPU intrukcí. Když bude definované všechno, na každou prkotinu bude knihovní funkce, která bude emulovat operátor přesně každý bit výsledku.

Teď jde použít oboje - rychlý operátor s nejistým chováním, nebo si zavolat funkci a mít výsledek pomalu, ale precizně.
Na tohle by bohatě stačilo implementačně definované chování (jako je třeba u signed dělení). Rozdíl oproti UB je velký :
- To chování se vždycky stane. Překladač nemůže předpokládat, že daná situace ve validním kódu nesmí nastat. Takže opravdu vygeneruje odpovídající CPU instrukce.
- Překladač/platforma musí zdokumentovat, jak se ta operace bude chovat.

Ve výsledku mám jednu CPU instrukci a žádné démony z nosa. :)


Re:Je jazyk C skutočne ťažký?
« Odpověď #213 kdy: 13. 06. 2025, 13:44:59 »
https://wordsandbuttons.online/so_you_think_you_know_c.html

5/5

Nikdy o sobě neřeknu, že dokonale ovládám češtinu, třebaže ji používám celý život. Ale myslím, že ji ovládám velmi obstojně, rozhodně dostatečně, abych v ní mohl vyjádřit jakoukoli svou myšlenku. Takhle přistupuji i k programovacím jazykům. Ve sveřepých šakalech chybu neudělám, ale jistě by se našel jiný špek, na který bych se nachytal. Jenže to, podle mě, není podstatné. O jazyku samotném to nic nevypovídá. Ukažte mi programovací jazyk, v němž nenajdete konstrukci, která by se dala považovat za špek. Někdo považuje vyjmenovaná slova za špek, někdo shodu podmětu s přísudkem. Ve skutečnosti to není nic komplikovaného na používání - s trochou cviku. Opravdovým špekům se lze i při pokročilém používání vyhnout.

Např. mnohými tolik opěvovaný Rust. Na mě působí dojmem, že přechodníky nemá, protože v nich spousta lidí dělá chyby, tak mě nutí místo nich použít nějaký krkolomný konstrukt.

Ink

  • *****
  • 683
    • Zobrazit profil
    • E-mail
Re:Je jazyk C skutočne ťažký?
« Odpověď #214 kdy: 14. 06. 2025, 13:04:09 »
Např. mnohými tolik opěvovaný Rust. Na mě působí dojmem, že přechodníky nemá, protože v nich spousta lidí dělá chyby, tak mě nutí místo nich použít nějaký krkolomný konstrukt.

Naopak. Rust má spoustu možností, jak cokoli naprasit jakkoli - počínaje inline asm, přes "normální" unsafe Rust až po FFI.  Kromě toho nabízí spoustu abstrakcí a pohodlných způsobů, jak se v normálním kódu vyvarovat různých problémů s pomocí jazyka. Na rozdíl třeba od C, které má jenom režim "pras jak umíš".
« Poslední změna: 14. 06. 2025, 13:08:07 od Ink »


Re:Je jazyk C skutočne ťažký?
« Odpověď #215 kdy: Dnes v 12:37:30 »
Na rozdíl třeba od C, které má jenom režim "pras jak umíš".
Při práci v C taky fungujou příčetnějí režimy, které krotí ty nejprasáčtějí praktiky. Jen nejsou nijak vynucené jazykem, takže to hlídají lintery, code review a podobně.

Ink

  • *****
  • 683
    • Zobrazit profil
    • E-mail
Re:Je jazyk C skutočne ťažký?
« Odpověď #216 kdy: Dnes v 13:17:03 »
Na rozdíl třeba od C, které má jenom režim "pras jak umíš".
Při práci v C taky fungujou příčetnějí režimy, které krotí ty nejprasáčtějí praktiky. Jen nejsou nijak vynucené jazykem, takže to hlídají lintery, code review a podobně.

Code review je ultimátní řešení, jenže má dvě nevýhody:

1. Není podpořené jazykem
2. Je opět závislé na lidském faktoru

Všechny ty bezpečnostní problémy v OpenSSL a jinde existovaly i přes možnost review člověkem a existenci linterů.