mitä järjestelmän ohjelmointi tarkalleen tarkoittaa?

En ole koskaan ymmärtänyt, mitä järjestelmän ohjelmointi tarkoittaa. Tavallinen määritelmä on ”… tehdä jotain lähellä Os: ia tai laajentaa Os-ominaisuuksia …”.

Tekeekö Windows-ohjelmointisovelluksen käyttö suoraan suoraan joidenkin kirjastojen sijasta sanomalla, että tiedosto on olemassa / ei, tehdä siitä järjestelmäohjelmointi? Kirjoittiinko Android-käyttöjärjestelmän ohjelmointia? Jos kirjoitan jotain, joka paljastaa Linux-ytimen Android-konsolin kaltaisen konsolin kautta, teen ohjelmointia? Jos kirjoitan ohjelmistoa pesukoneen ohjaamiseen, kirjoitanko järjestelmän ohjelmointia?

Olen aloittelija ohjelmoinnissa ja tämä hämmentää minua loputtomasti. Selitä sen erottaminen ”sovelluksen ohjelmoinnista”.

Kommentit

  • Tämä määritelmä on muuttunut, ja järjestelmän ohjelmoijat itse eivät ’ ei näytä olevan varma ainutlaatuisesta määritelmästä tänään. Tämä ongelma ilmenee yleensä, kun ihmiset keskustelevat siitä, onko kieli X sopiva järjestelmän ohjelmointiin …
  • @Denys S é guret – ironinen, jos kukaan ei voi sopia mistä ” järjestelmän ohjelmointi ” on aloitettava.
  • Lainaus Perlin keittokirjasta – Luku 16. Prosessinhallinta ja Viestintä: ” Tässä luvussa käsitellään komentojen käynnistämistä ja erillisten prosessien yhdistämistä toisiinsa. Kyse on heidän luomisensa, viestinnän ja lopullisen kuoleman hallinnasta. Kyse on järjestelmien ohjelmoinnista. ”

Vastaa

Minä henkilökohtaisesti kuten määritelmä Wikipediasta :

Järjestelmän ohjelmointi (tai järjestelmien ohjelmointi) on ohjelmointijärjestelmäohjelmistojen toiminta. Systeemien ohjelmoinnin ensisijainen erottava ominaisuus verrattuna sovellusohjelmointiin on, että sovellusten ohjelmoinnin tavoitteena on tuottaa ohjelmistoja, jotka tarjoavat käyttäjälle palveluja (esim. Tekstinkäsittelyohjelma), kun taas järjestelmien ohjelmoinnin tavoitteena on tuottaa ohjelmistoja, jotka tarjoavat palveluja tietokonelaitteistolle (esim. ). Se vaatii suurempaa tietoisuutta laitteistosta.

Vastaa

On olemassa useita kysymyksiä, joita voit kysyä itseltäsi saadaksesi käytäntöä kysymyksen ratkaisemisessa.

  • Myydäänkö järjestelmä alun perin ilman tätä ohjelmaa? Angry Birds voi olla älypuhelimen ”Killer-sovellus” (syy miksi joku ostaa sen), mutta se on silti erillinen kolmannen osapuolen sovellus, joka on kirjoitettu kauan puhelimen käyttöönoton jälkeen. Sen kirjoittaminen olisi ollut sovellusten ohjelmointia. Mutta saman älypuhelimen näyttöajuri on välttämätön sen käyttämiselle ollenkaan, joten se olisi ollut järjestelmien ohjelmointi.
  • Voitteko kuvitella koodin siirtämisen toiselle alustalle kirjoittamatta sitä suurelta osin? TeX ja troff on siirretty käytännöllisesti katsoen mihin tahansa järjestelmään muutamilla muutoksilla, joten ne ovat sovelluksia, vaikka ne sijaitsevatkin tavallisesti ihmisten käyttämän työkaluketjun pohjassa. Tiedostojärjestelmä, johon TeX kirjoittaa lähdön, esim. UFS tai VFAT on rajatapaus. Voisit siirtää tiedostojärjestelmän toiseen käyttöjärjestelmään, jos se oli aivan mahtavaa, mutta yleensä ihmiset vain ottavat haltuunsa mahtavia ideoita ja kirjoittavat oman tiedostojärjestelmän omalle käyttöjärjestelmälle. Se tekee tiedostojärjestelmäohjelmistosta.
  • Onko toiminnallisuus toteutettu ytimessä vai erillisissä binääreissä? (Tiedostojärjestelmät ovat tässäkin keskipisteenä. Monet osat monista tiedostojärjestelmistä ovat itse asiassa ydinkoodeja, mutta monilla on merkittäviä osia käyttäjäalueessa.) Grafiikkanäyttöajurit voivat periaatteessa olla kytkettävissä olevia ulkoisia komponentteja, mutta ne toteutetaan usein ytimessä tai ainakin etuoikeutetulla suoralla pääsyllä ytimeen (tai jopa laitteistoon). Se olisi järjestelmien ohjelmointi. Toisaalta grafiikkanäyttöä käyttävät tietokonepelit ovat sovelluksia.

Kysymyksiinne Android-käyttöjärjestelmän kirjoittaminen oli ehdottomasti järjestelmien ohjelmointia. Windows API-kutsuja käyttävän ohjelman kirjoittaminen on sovellusohjelmointia. Se ei ole niin kannettava kuin jos käyttäisit alustojen välisiä kirjastoja, kuten SDL tai OpenGL, mutta se voidaan periaatteessa siirtää, se on kolmannen osapuolen koodi ja se toimii käyttäjän tilassa. Konsolisovellus, joka paljastaa Linux-ytimen tilan, on mielenkiintoinen ajatuskokeilu. Sanon ehdottomasti, että siihen liittyy järjestelmien ohjelmointia, koska sinun on tiedettävä paljon Linuxin rakenteesta (huomaa, että ”Linux” on oikein vain ydin, ei jakelu) kirjoittaa ja todennäköisesti jopa käyttää sitä!

Vastaus

Lyhyesti: Kirjoitusohjelmisto, joka laajentaa tai parantaa käyttöjärjestelmän toimintaa, kuten ohjaimet, järjestelmän apuohjelmien päivitykset käyttöjärjestelmään ” tai jopa upouusi käyttöjärjestelmä.

Siihen sisältyy enimmäkseen muistin hallinta; I / O-toiminnot sanan laajimmassa merkityksessä, kuten verkko, tiedostojen käyttö ja laitteiden hallinta; prosessinhallinta (monitoiminen, prosessinhallinta jne.); käyttäjän < -> järjestelmän vuorovaikutustavat (sekä sisään että ulos) ja käyttäjien hallinta. Pohjimmiltaan kaikki käyttöjärjestelmään kuuluva osa, joka ei ole sovellus, on järjestelmien ohjelmointi.

Vastaa

Windows-sovellusliittymän käyttö suoraan oli yhdessä vaiheessa yleinen tapa kirjoittaa sovelluksia Windowsille. Joten ei, se ei ole järjestelmien ohjelmointi.

Järjestelmäohjelmointi ei ole vain ”lähellä käyttöjärjestelmää” – se on jotain olennaista tietokonejärjestelmän ydintoimintaan. Joten käyttöjärjestelmän kirjoittaminen on järjestelmien ohjelmointia. Video-ohjainten, tiedostojärjestelmäohjainten, verkkoajurien kirjoittaminen kyseiselle käyttöjärjestelmälle on järjestelmien ohjelmointi. Kääntäjän kirjoittaminen tietylle kielen / piirisarjan yhdistelmälle on järjestelmien ohjelmointi.

Vastaus

Normaalisti se viittaa ”matalan tason juttuihin, joita ei-tekniset loppukäyttäjät eivät tiedä tai eivät tiedä hyvin selvästi, että he käyttävät tai mitä tekevät ”.

Joitakin esimerkkejä, joita voidaan usein pitää järjestelmän ohjelmoinnissa:

  • käyttöjärjestelmät ja ohjaimet
  • kääntäjät
  • emulaattorit an d virtualisointi
  • jakelun luominen, eli userland-kuvien luominen.

    Tähän sisältyy yleensä C-standardikirjaston, init-järjestelmän ja userland-peruskomponenttien kuten kuoren valinta.

Järjestelmien ohjelmointi tapahtuu usein alemman tason käännetyillä kielillä ilman automaattista roskien keräystä, kuten C tai kokoonpano, ja niillä on taipumus käyttää vähemmän yleisiä järjestelmäkutsuja usein POSIX C -rajapinnat .

Ylläpidän opetusohjelmaa, joka kattaa useita järjestelmän ohjelmoinnin aiheita täällä .

vastaus

Tätä määrittäessäni vältän kokonaan tekniset yksityiskohdat. Sitten siitä tulee helppoa.

Sovellus antaa käyttäjälle mahdollisuuden tehdä jotain hyödyllistä jollakin tekniikalla. Joten sovellusohjelmointi on suunnattu ominaisuuksien tarjoamiselle käyttäjälle aivan suoraan.

Toisaalta järjestelmäohjelmointi loisi perustan sovellusten ohjelmoinnin mahdollistamiselle. Se toimittaa ominaisuuksia sovellusohjelmoijalle eikä käyttäjälle.

Tämä määritelmä pysyy voimassa, mutta se on näkökulma, asiayhteys ja roolit. Ohjelmointityökalut ovat tietokoneohjelmoijille sovelluksia. Loppukäyttäjälle he ovat merkityksettömiä, vain kuvan ulkopuolella.

Vastaa

Lyhyesti sanottuna järjestelmän ohjelmointi verrattuna sovelluksen ohjelmointi on, että SP käsittelee käyttöjärjestelmän ohjelmistoa toimimaan laitteistoresurssien kanssa ja AP käsittelee loppukäyttäjien toimintaa.

Kommentit

  • tämä ei ole ’ ei näytä tarjoavan mitään merkittävää yli neljässä edellisessä vastauksessa esitetyistä ja selitetyistä pisteistä

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *