Nikdy jsem nepochopil, co znamená programování systému. Obvyklá daná definice je „… dělat něco blízkého OS nebo rozšiřovat funkce Os …“.
Znamená to, že díky přímému použití Windows API místo některých knihoven je programování systému souborů? Psalo se programování systému Android OS? Pokud napíšu něco, co by vystavilo linuxové jádro prostřednictvím konzoly jako aplikace pro Android, dělám systémové programování? Pokud píšu software pro ovládání pračky, píšu programování systému?
Jsem začátečník v programování a to mě matoucí do nekonečna. Vysvětlete, prosím, kontrast s „programováním aplikací“.
Komentáře
- Tato definice se změnila a samotní programátoři systému ‚ Zdá se, že si dnes není jistá jedinečná definice. Tento problém obvykle nastane, když lidé debatují o tom, zda je jazyk X vhodný pro programování systému …
- @Denys S é guret – ironický, pokud se nikdo nemůže dohodnout čím “ programováním systému “ je třeba začít.
- Citát z Perl Cookbook – Kapitola 16. Správa procesů a Komunikace: “ Tato kapitola je o spouštění příkazů a propojení jednotlivých procesů. Jde o správu jejich tvorby, komunikace a konečného zániku. Jde o programování systémů. “
Odpověď
Já osobně jako definice z Wikipedie :
Systémové programování (nebo systémové programování) je činnost softwaru programovacího systému. Primární rozlišovací charakteristikou systémového programování ve srovnání s aplikačním programováním je to, že aplikační programování má za cíl produkovat software poskytující služby uživateli (např. Textový procesor), zatímco programování systémů má za cíl produkovat software poskytující služby počítačovému hardwaru (např. Defragmentátor disku) ). Vyžaduje větší míru povědomí o hardwaru.
Odpověď
Existují několik otázek, které si můžete položit, abyste získali praxi při rozhodování o této otázce.
- Byl systém původně prodáván bez tohoto programu? Angry Birds může být „aplikace zabijáka“ pro chytrý telefon (důvod, proč si ho někdo koupí), ale stále se jedná o samostatnou aplikaci třetí strany, která byla napsána dlouho po zavedení telefonu. Psát by to bylo programování aplikací. Ovladač displeje stejného chytrého telefonu je ale pro jeho používání nezbytný, takže by šlo o programování systémů.
- Dokážete si představit přenesení kódu na jinou platformu, aniž byste jej do značné míry přepsali? TeX a
troff
byly přeneseny do prakticky jakéhokoli systému s několika změnami, takže se jedná o aplikace, i když jsou umístěny ve spodní části řetězce nástrojů, který lidé obvykle používají. Souborový systém, do kterého TeX zapisuje svůj výstup, např. UFS nebo VFAT, je hraniční případ. Mohli byste přenést souborový systém na jiný OS, pokud by to bylo naprosto úžasné, ale obvykle lidé prostě převezmou úžasné nápady a napíší vlastní souborový systém pro svůj vlastní OS. Díky tomu je systémový systém souborových systémů. - Je funkce implementována v jádře nebo v samostatných binárních souborech? (Souborové systémy zde také zaujímají prostřední místo. Mnoho částí mnoha souborových systémů je ve skutečnosti kód jádra, ale mnoho z nich má podstatné části v uživatelském prostoru.) Ovladače grafického displeje mohou být v zásadě zásuvné externí komponenty, ale často jsou implementovány v jádře nebo alespoň s privilegovaným přímým přístupem k jádru (nebo dokonce k hardwaru). To by bylo programování systémů. Na druhou stranu, počítačové hry využívající sadu grafických displejů jsou aplikace.
Na vaše otázky bylo psaní systému Android rozhodně programování systémů. Psaní programu, který používá volání rozhraní Windows API, je programování aplikací. Není to tak přenosné, jako by to bylo, kdybyste použili knihovny pro různé platformy, jako jsou SDL nebo OpenGL, ale v zásadě je možné je přenést, jedná se o kód třetí strany a běží v uživatelském prostoru. Konzolová aplikace, která odhaluje stav jádra Linuxu, je zajímavým myšlenkovým experimentem. Rozhodně bych řekl, že to zahrnuje programování systémů, protože byste měli vědět hodně o struktuře Linuxu (všimněte si, že „Linux“ je správné pouze jádro, nikoli distribuce), abyste mohli psát a pravděpodobně ho dokonce používat!
Odpověď
Stručně řečeno: Psaní softwaru, který rozšiřuje nebo vylepšuje fungování OS, jako jsou ovladače, aktualizace systémových nástrojů na OS “ nebo dokonce zcela nový OS.
Většinou se jedná o správu paměti; I / O operace v nejširším slova smyslu, jako je síť, přístup k souborům a správa zařízení; řízení procesů (multi tasking, správa procesů atd.); uživatel < -> metody interakce systému (dovnitř i ven) a správa uživatelů. V zásadě vše, co je součástí operačního systému a která není aplikací, která programuje systémy.
Odpověď
Přímé použití Windows API byl na jednom místě běžným způsobem psaní aplikací pro Windows. Takže ne, to není programování systémů.
Programování systémů není jen „blízké OS“ – je to něco zásadního k základnímu fungování počítačového systému. Takže psaní OS je programování systémů. Psaní ovladačů videa, ovladačů souborových systémů, síťových ovladačů pro tento OS je programování systémů. Psaní kompilátoru pro konkrétní kombinaci jazyka / čipové sady je programování systémů.
Odpověď
Normálně se jedná o „věci na nízké úrovni, které netechničtí koncoví uživatelé nevědí, nebo o nich nevědí velmi jasně, že používají nebo co dělají. “
Některé příklady, které by se často považovaly za programování systému:
- operační systémy a ovladače
- kompilátory
- emulátory a d virtualizace
-
Vytvoření distribuce, tj. vytváření obrázků uživatelských zemí.
To zejména obvykle zahrnuje výběr standardní knihovny C, systému init a základních komponent uživatelské země, jako je shell.
Programování systémů se často provádí v jazycích s nižší kompilovanou úrovní bez automatického sběru odpadu, jako je C nebo sestavení, a mají tendenci přistupovat k méně běžným systémovým voláním často prostřednictvím Rozhraní POSIX C .
Udržuji výukový program, který pokrývá několik témat programování systému zde .
Odpověď
Při definování toho bych se vyhnul všem technickým podrobnostem. Pak je to snadné.
Aplikace umožňuje uživateli něco užitečného s nějakou technologií. Programování aplikací je tedy zaměřeno na poskytování funkcí uživateli zcela přímo.
Programování systému na druhé straně by položilo základy umožňující programování aplikací. Poskytuje funkce spíše aplikačnímu programátorovi než uživateli.
Tato definice bude platit, ale jde o perspektivu, kontext a role. Pro počítačového programátora jsou programovací nástroje aplikace. Pro koncového uživatele jsou nesmyslní, jen mimo obraz.
Odpověď
Stručně řečeno, programování systému ve srovnání s programování aplikací spočívá v tom, že SP zpracovává software OS pro práci s hardwarovými prostředky a AP zpracovává aktivitu koncových uživatelů.
Komentáře
- to nedělá ‚ Zdá se, že nenabízí nic podstatného nad body a vysvětleny v předchozích 4 odpovědích