GNU/Linux >> Znalost Linux >  >> Linux

Proč je většina linuxových programů napsána v C?

O tom se vedlo mnoho diskuzí. Důvod je především filozofický. C byl vynalezen jako jednoduchý jazyk pro vývoj systému (ne tolik pro vývoj aplikací). Existuje mnoho argumentů pro použití C++, ale je jich asi tolik pro ne používat C++ a držet se C.

Nakonec je to historický problém. Většina aplikačních věcí je napsána v C, protože většina věcí z jádra je napsána v C. A od té doby byla většina věcí napsána v C, lidé mají tendenci používat původní jazyky.

V tuto chvíli se někdo může zeptat „OK, tak proč je jádro napsaný v C a neportovaný do C++?" . Toto bylo probíráno na kerneltrapu před časem. Jedno pěkné vysvětlení, které lze citovat z tohoto vlákna, je odpověď yoshi314 (cituji přímo):

je to proto, že téměř každá aplikace v c++ potřebuje k provozu samostatnou standardní knihovnu c++. takže by to museli portovat do jádra a všude očekávat další režii.

c++ je složitější jazyk a to znamená, že z něj kompilátor vytváří složitější kód. z tohoto důvodu je v c jednodušší zjistit, že problém pramení z chyby kompilátoru než z chyby kódu.

také jazyk c je více barebone a je snazší sledovat jeho reprezentaci v assembleru, kterou lze často snadno předvídat.

c++ je všestrannější, ale c je vhodnější pro nízkoúrovňové nebo vložené věci.

Na druhou stranu "většina linuxových programů" je dost zavádějící. Podívejte se na grafické aplikace. Python se stále více prosazuje zejména v prostředí GUI na Linuxu. Přibližně to samé, co se děje s Windows a .NET.


Po přečtení následujícího e-mailu od Linuse Torvaldse, tvůrce linuxu. Nemohu se ubránit dojmu, že výše uvedená odpověď je nesprávná. Zdá se, že si myslí, že programátoři v C++ nejsou dobré systémy programátory. A že extra funkce v C++ často způsobují více problémů v dlouhodobém horizontu ve srovnání s výhodami, které přinášejí v krátkodobém horizontu. I když s ním někdo může nesouhlasit, je těžké přeceňovat jeho vliv na operační systém linux.

http://harmful.cat-v.org/software/c++/linus


Linux
  1. Proč se držím xtermu

  2. Proč jsou Makefily v Linuxu tak užitečné?

  3. Detekce Windows nebo Linuxu v C, C++

  1. Jak zjistím, jaký je můj nejpoužívanější linuxový příkaz?

  2. Proč je v Linuxu tolik /dev/tty?

  3. Proč je standardně nainstalován Perl u většiny distribucí Linuxu?

  1. Proč je Linux zásadní pro edge computing

  2. Proč nejsou v Unixu/linuxu povoleny pevné odkazy na adresáře?

  3. Linux – Jsou různá jádra Linux/unix zaměnitelná?