hva er egentlig systemprogrammering?

Jeg har aldri forstått hva systemprogrammering betydde. Den vanlige definisjonen som er gitt er «… å gjøre noe nær Os eller utvide Os-funksjoner …».

Bruker du Windows API direkte i stedet for noen biblioteker for å si at fil i / o gjør det til systemprogrammering? Skrev du Android OS-systemprogrammering? Hvis jeg skriver noe som vil avsløre Linux-kjernen gjennom en konsoll som app på Android, gjør jeg systemprogrammering? Hvis jeg skriver programvare for å kontrollere en vaskemaskin, skriver jeg da systemprogrammering?

Jeg er nybegynner innen programmering, og dette forvirrer meg til ingen slutt. Vennligst forklar at du kontrasterer det med «applikasjonsprogrammering».

Kommentarer

  • Denne definisjonen har endret seg og systemprogrammerere selv ‘ ser ut til å være sikre på en unik definisjon i dag. Dette problemet kommer vanligvis når folk debatterer om språk X er praktisk for systemprogrammering …
  • @Denys S é guret – Ironisk hvis ingen kan bli enige om hva » systemprogrammering » er til å begynne med.
  • Sitat fra Perl Cookbook – kapittel 16. Prosessledelse og Kommunikasjon: » Dette kapittelet handler om å starte kommandoer og koble separate prosesser sammen. Det handler om å styre deres skapelse, kommunikasjon og ultimate død. Det handler om systemprogrammering. »

Svar

Jeg personlig som definisjonen fra Wikipedia :

Systemprogrammering (eller systemprogrammering) er aktivitet av programmeringssystemprogramvare. Den primære kjennetegn ved systemprogrammering sammenlignet med applikasjonsprogrammering er at applikasjonsprogrammering tar sikte på å produsere programvare som gir tjenester til brukeren (f.eks. Tekstbehandler), mens systemprogrammering tar sikte på å produsere programvare som leverer tjenester til maskinvaren (f.eks. ). Det krever større grad av maskinvarebevissthet.

Svar

Det er flere spørsmål du kan stille deg selv for å få øvelse i å avgjøre det spørsmålet.

  • Ble systemet opprinnelig solgt uten dette programmet? Angry Birds kan være en «Killer App» for en smarttelefon (grunnen til at noen kjøper den), men det er fortsatt en egen tredjepartsapp skrevet lenge etter at telefonen ble introdusert. Å skrive det ville ha vært programmering av programmer. Men skjermdriveren til den samme smarttelefonen er viktig for å bruke den i det hele tatt, så det ville ha vært systemprogrammering.
  • Kan du forestille deg å overføre koden til en annen plattform uten i stor grad å omskrive den? TeX og troff har blitt portet til praktisk talt ethvert system med få endringer, så de er applikasjoner, selv om de er plassert mot bunnen av verktøykjeden som folk vanligvis bruker. Filsystemet som TeX skriver utdataene til, f.eks. UFS eller VFAT, er en grensesak. Du kunne portere et filsystem til et annet operativsystem hvis det var helt fantastisk, men vanligvis tar folk bare over fantastiske ideer og skriver sitt eget filsystem for sitt eget operativsystem. Det gjør filsystem til systemprogramvare.
  • Er funksjonaliteten implementert i kjernen eller i separate binære filer? (Filsystemer opptar også en midtvei. Mange deler av mange filsystemer er faktisk kjernekode, men mange har betydelige deler i brukerområdet.) Grafikkdrivere kan i prinsippet være pluggbare eksterne komponenter, men de implementeres ofte i kjernen eller i det minste med privilegert direkte tilgang til kjernen (eller til og med til maskinvaren). Det ville være systemprogrammering. På den annen side er dataspill som bruker grafisk skjermstabel applikasjoner.

På spørsmålene dine var det absolutt systemprogrammering å skrive Android OS. Å skrive et program som bruker Windows API-anrop er applikasjonsprogrammering. Det er ikke så bærbart som om du brukte biblioteker på tvers av plattformer som SDL eller OpenGL, men det kan i prinsippet porteres, det er tredjepartskode og kjører i brukerområdet. En konsollapp som avslører tilstanden til Linux-kjernen er et interessant tankeeksperiment. Jeg vil absolutt si at det innebærer systemprogrammering, siden du «må vite mye om strukturen til Linux (merk at» Linux «bare er kjernen, ikke distribusjonen) for å skrive, og sannsynligvis til og med å bruke den!

Svar

Kort sagt: Skriveprogramvare som utvider eller forbedrer funksjonen til et operativsystem, som drivere, oppdateringer av systemverktøy til OS » es eller til og med splitter nye operativsystemer.

Det involverer mest Memory Management; I / O-operasjoner i vid forstand av ordet som nettverk, filtilgang og enhetsadministrasjon; prosessledelse (multi tasking, prosessadministrasjon, etc.); bruker < -> systeminteraksjonsmetoder (både inn og ut) og brukeradministrasjon. I utgangspunktet er alt som er en del av operativsystemet som ikke er et program, systemprogrammering.

Svar

Bruker Windows API direkte var på et tidspunkt en vanlig måte å skrive applikasjoner for Windows på. Så nei, det er ikke systemprogrammering.

Systemprogrammering er ikke bare «nær operativsystemet» – det er noe viktig til kjernefunksjonen til datasystemet. Så å skrive et operativsystem er systemprogrammering. Skriving av videodrivere, filsystemdrivere, nettverksdrivere for det operativsystemet er systemprogrammering. Å skrive en kompilator for en bestemt kombinasjon av språk / brikkesett er systemprogrammering. p>

Svar

Normalt refererer det til «ting på lavt nivå som ikke-tekniske sluttbrukere ikke vet om eksisterer eller ikke vet veldig tydelig at de bruker eller hva de gjør «.

Noen eksempler som ofte kan betraktes som systemprogrammering:

  • operativsystemer og drivere
  • kompilatorer
  • emulatorer og d virtualisering
  • oppretting av distribusjon, dvs. opprettelse av brukerlandbilder.

    Dette innebærer spesielt å velge C-standardbibliotek, init-systemet og grunnleggende brukerlandskomponenter som et skall.

Systemprogrammering gjøres ofte på språk på lavere kompilerte nivå uten automatisk søppelsamling som C eller montering, og har en tendens til å få tilgang til mindre vanlige systemanrop ofte gjennom POSIX C-grensesnitt .

Jeg opprettholder en praktisk veiledning som dekker flere systemprogrammeringsemner her .

Svar

Når jeg definerer dette, vil jeg fjerne alle tekniske detaljer helt. Da blir det enkelt.

En applikasjon lar en bruker gjøre noe nyttig med noe stykke teknologi. Så applikasjonsprogrammering er rettet mot å tilby funksjoner til en bruker, ganske direkte.

Systemprogrammering derimot vil legge grunnlaget for å gjøre applikasjonsprogrammering mulig. Den leverer funksjoner til applikasjonsprogrammereren i stedet for til brukeren.

Denne definisjonen holder, men det er et spørsmål om perspektiv og kontekst og roller. For en dataprogrammerer er programmeringsverktøy applikasjoner. For en sluttbruker er de meningsløse, bare utenfor bildet.

Svar

Kort sagt, Systemprogrammeringen sammenlignet med applikasjonsprogrammering er at SP håndterer OS-programvaren for å arbeide med maskinvarressurser og AP håndterer sluttbrukernes aktivitet.

Kommentarer

  • dette gjør ikke ‘ t ser ut til å tilby noe vesentlig over poeng gjort og forklart i tidligere 4 svar

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *