Nu am înțeles niciodată ce înseamnă programarea de sistem. Definiția obișnuită dată este „… să faci ceva apropiat de Os sau să extinzi caracteristicile Os …”.
Utilizarea directă a API-ului Windows, mai degrabă decât a unor biblioteci, pentru a spune că i / o fișier îl face să fie programarea sistemului? Scria programarea sistemului de operare Android? Dacă scriu ceva care ar expune nucleul Linux printr-o consolă ca o aplicație pe Android, fac programare de sistem? Dacă scriu software pentru a controla o mașină de spălat, scriu programarea sistemului?
Sunt un începător în programare și acest lucru mă încurcă până la capăt. Vă rugăm să explicați contrastul cu „programarea aplicației”.
Comentarii
- Această definiție s-a schimbat și programatorii de sistem înșiși nu ‘ t pare a fi sigur de o definiție unică astăzi. Această problemă apare de obicei atunci când oamenii discută dacă limbajul X este convenabil pentru programarea sistemului …
- @Denys S é guret – Ironic dacă nimeni nu poate fi de acord cu ce este ” programarea sistemului ” cu care începe.
- Citat din Perl Cookbook – Capitolul 16. Managementul proceselor și Comunicare: ” Acest capitol este despre lansarea comenzilor și conectarea proceselor separate împreună. Este vorba despre gestionarea creației, comunicării și decesului final. Este vorba despre programarea sistemelor. ”
Răspuns
Eu personal la fel ca definiția din Wikipedia :
Programarea sistemului (sau programarea sistemelor) este activitatea software-ului sistemului de programare. Principala caracteristică distinctivă a programării sistemelor în comparație cu programarea aplicației este aceea că programarea aplicațiilor vizează producerea de software care furnizează servicii utilizatorului (de exemplu, procesor de text), în timp ce programarea sistemelor vizează producerea de software care furnizează servicii hardware-ului computerului (de exemplu, defragmentarea discului ). Necesită un grad mai mare de conștientizare a hardware-ului.
Răspuns
Există mai multe întrebări pe care ți le poți pune pentru a câștiga practică în a decide acea întrebare.
- Sistemul a fost vândut inițial fără acest program? Angry Birds poate fi o „aplicație ucigașă” pentru un telefon inteligent (motivul pentru care cineva îl cumpără), dar este totuși o aplicație separată de la o terță parte scrisă cu mult timp după introducerea telefonului. Scrierea acestuia ar fi fost programarea aplicațiilor. Dar driverul de afișare al aceluiași telefon inteligent este esențial pentru a-l utiliza, așa că ar fi fost programarea sistemelor.
- Vă puteți imagina portarea codului pe o altă platformă fără a fi rescris în mare măsură? TeX și
troff
au fost portate la practic orice sistem cu puține modificări, deci sunt aplicații, chiar dacă sunt situate în partea de jos a lanțului de instrumente pe care oamenii îl folosesc de obicei. Sistemul de fișiere în care TeX își scrie ieșirea, de ex. UFS sau VFAT, este un caz limită. Ați putea să portați un sistem de fișiere pe un alt sistem de operare, dacă acesta era total minunat, dar de obicei oamenii preiau idei minunate și își scriu propriul sistem de fișiere pentru propriul sistem de operare. Asta face software-ul sistemelor de fișiere. - Funcționalitatea este implementată în kernel sau în binare separate? (Sistemele de fișiere ocupă și un punct intermediar și aici. Multe părți ale multor sisteme de fișiere sunt de fapt codul nucleului, dar multe au părți substanțiale în spațiul utilizatorului.) Driverele de afișare grafică pot fi, în principiu, componente externe conectabile, dar sunt adesea implementate în kernel sau cel puțin cu acces direct privilegiat la kernel (sau chiar la hardware). Aceasta ar fi programarea sistemelor. Pe de altă parte, jocurile pe computer care utilizează graficul de afișare grafică sunt aplicații.
La întrebările dvs., scrierea sistemului de operare Android era cu siguranță programarea sistemelor. Scrierea unui program care utilizează apeluri API Windows este programarea aplicației. Nu este la fel de portabil ca și cum ar fi dacă ați utiliza biblioteci multiplataforma, cum ar fi SDL sau OpenGL, dar poate fi, în principiu, portat, este un cod terț și rulează în spațiul utilizatorului. O aplicație pentru consolă care expune starea kernel-ului Linux este un experiment de gândire interesant. Aș spune cu siguranță că implică programarea sistemelor, deoarece ar trebui să știți multe despre structura Linux (rețineți că „Linux” este corect doar nucleul, nu distribuția) pentru a scrie și, probabil, chiar pentru a-l utiliza!
Răspuns
Pe scurt: software de scriere care extinde sau îmbunătățește funcționarea unui sistem de operare, cum ar fi driverele, actualizările de utilități de sistem pentru sistemul de operare ” sau chiar sisteme de operare noi.
Aceasta implică în cea mai mare parte gestionarea memoriei; Operațiuni I / O în sensul cel mai larg al cuvântului, cum ar fi rețeaua, accesul la fișiere și gestionarea dispozitivelor; managementul proceselor (multi tasking, administrarea proceselor etc.); utilizator < -> metode de interacțiune a sistemului (atât în interior cât și în afara) și administrarea utilizatorului. Practic tot ceea ce face parte din sistemul de operare care nu este o aplicație este programarea sistemelor.
Răspuns
Utilizarea directă a API-ului Windows a fost, la un moment dat, un mod obișnuit de a scrie aplicații pentru Windows. Deci nu, asta nu este programarea sistemelor.
Programarea sistemelor nu este doar „aproape de sistemul de operare” – este ceva esențial la funcționarea de bază a sistemului computerului. Deci, scrierea unui sistem de operare este programarea sistemelor. Scrierea driverelor video, driverele sistemului de fișiere, driverele de rețea pentru sistemul de operare respectiv este programarea sistemelor. Scrierea unui compilator pentru o anumită combinație de limbă / chipset este programarea sistemelor. p>
Răspuns
În mod normal, se referă la „lucruri de nivel scăzut pe care utilizatorii finali non-tehnici nu știu că există sau nu știu foarte clar că folosesc sau ce fac „.
Câteva exemple care ar fi adesea considerate programarea sistemului:
- sisteme de operare și drivere
- compilatoare
- emulatoare an d virtualizare
-
crearea distribuției, adică crearea de imagini userland.
Acest lucru implică în mod normal selectarea bibliotecii standard C, sistemul init și componentele de bază userland, cum ar fi un shell.
Programarea sistemelor se face adesea în limbaje de nivel redus compilate fără colectarea automată a gunoiului, cum ar fi C sau asamblare, și tind să acceseze apeluri de sistem mai puțin frecvente, adesea prin Interfețe POSIX C .
Mențin un tutorial practic care acoperă mai multe subiecte de programare a sistemului aici .
Răspuns
Atunci când definesc acest lucru, m-aș îndepărta de toate detaliile tehnice. Apoi devine ușor.
O aplicație permite utilizatorului să facă ceva util cu o parte din tehnologie. Așadar, programarea aplicațiilor vizează furnizarea de caracteristici unui utilizator, destul de direct.
Programarea sistemului, pe de altă parte, ar pune bazele pentru a face posibilă programarea aplicației. Oferă caracteristici programatorului de aplicații mai degrabă decât utilizatorului.
Această definiție va fi valabilă, dar este o chestiune de perspectivă, context și roluri. Pentru un programator de calculator, instrumentele de programare sunt aplicații. Pentru un utilizator final, ei nu au sens, au ieșit din imagine.
Răspuns
Pe scurt, programarea sistemului în comparație cu programarea aplicației este că SP gestionează software-ul sistemului de operare pentru a lucra cu resurse hardware și AP gestionează activitatea utilizatorilor finali.
Comentarii
- acest lucru nu ‘ t pare să ofere ceva substanțial asupra punctelor aduse și explicate în cele 4 răspunsuri anterioare