apa sebenarnya pemrograman sistem?

26

Saya tidak pernah mengerti apa arti pemrograman sistem. Definisi yang biasa diberikan adalah "... melakukan sesuatu yang dekat dengan Os atau memperluas fitur Os ...".

Apakah menggunakan Windows API secara langsung daripada beberapa perpustakaan untuk mengatakan apakah file i / o membuatnya pemrograman sistem? Apakah menulis pemrograman sistem OS Android? Jika saya menulis sesuatu yang akan mengekspos kernel linux melalui konsol seperti aplikasi di Android apakah saya melakukan pemrograman sistem? Jika saya menulis perangkat lunak untuk mengontrol mesin cuci, apakah saya menulis pemrograman sistem?

Saya seorang pemula dalam pemrograman dan ini membingungkan saya tanpa akhir. Tolong jelaskan kontrasnya dengan "pemrograman aplikasi".

kentjh
sumber
2
Definisi ini telah berubah dan pemrogram sistem itu sendiri tampaknya tidak yakin dengan definisi yang unik saat ini. Masalah ini biasanya muncul ketika orang berdebat tentang apakah bahasa X cocok untuk pemrograman sistem ...
Denys Séguret
@Denys Séguret - Ironis jika tidak ada yang bisa sepakat tentang apa "pemrograman sistem" untuk memulai.
John

Jawaban:

19

Saya pribadi suka definisi dari Wikipedia :

Pemrograman sistem (atau pemrograman sistem) adalah aktivitas perangkat lunak sistem pemrograman. Karakteristik utama yang membedakan pemrograman sistem bila dibandingkan dengan pemrograman aplikasi adalah pemrograman aplikasi bertujuan untuk menghasilkan perangkat lunak yang menyediakan layanan kepada pengguna (misalnya pengolah kata), sedangkan pemrograman sistem bertujuan untuk menghasilkan perangkat lunak yang menyediakan layanan untuk perangkat keras komputer (mis. Defragmenter disk ). Ini membutuhkan tingkat kesadaran perangkat keras yang lebih besar.

Nemanja Trifunovic
sumber
12

Ada beberapa pertanyaan yang bisa Anda tanyakan pada diri sendiri untuk mendapatkan latihan dalam memutuskan pertanyaan itu.

  • Apakah sistem awalnya dijual tanpa program ini? Angry Birds mungkin menjadi "Aplikasi Pembunuh" untuk ponsel pintar (alasan mengapa seseorang membelinya), tetapi itu masih merupakan aplikasi pihak ketiga yang terpisah yang ditulis lama setelah telepon diperkenalkan. Menulisnya adalah pemrograman aplikasi. Tetapi driver tampilan dari ponsel pintar yang sama sangat penting untuk menggunakannya sama sekali, jadi itu akan menjadi pemrograman sistem.
  • Bisakah Anda bayangkan porting kode ke platform lain tanpa sebagian besar menulis ulang? TeX dan trofftelah porting ke hampir semua sistem dengan sedikit perubahan, sehingga mereka adalah aplikasi, meskipun mereka terletak di bagian bawah rantai alat yang biasanya digunakan orang. Sistem file tempat TeX menulis outputnya, misalnya UFS atau VFAT, adalah kasus batas. Anda dapat mem-port sistem file ke OS yang berbeda jika itu benar-benar hebat, tetapi biasanya orang hanya mengambil alih ide-ide luar biasa dan menulis sistem file mereka sendiri untuk OS mereka sendiri. Itu membuat sistem file sistem perangkat lunak.
  • Apakah fungsi diimplementasikan di kernel atau di binari yang terpisah? (Sistem file menempati jalan tengah di sini juga. Banyak bagian dari banyak sistem file sebenarnya adalah kode kernel, tetapi banyak yang memiliki bagian substansial dalam ruang pengguna.) Driver tampilan grafis pada prinsipnya dapat menjadi komponen eksternal yang dapat dicolokkan, tetapi mereka sering diimplementasikan di kernel atau setidaknya dengan akses langsung istimewa ke kernel (atau bahkan ke perangkat keras). Itu akan menjadi pemrograman sistem. Di sisi lain, permainan komputer yang menggunakan tumpukan tampilan grafik adalah aplikasi.

Untuk pertanyaan Anda, menulis OS Android jelas merupakan pemrograman sistem. Menulis program yang menggunakan panggilan Windows API adalah pemrograman aplikasi. Ini tidak portabel seperti jika Anda menggunakan pustaka lintas platform seperti SDL atau OpenGL, tetapi pada prinsipnya dapat diangkut, itu adalah kode pihak ketiga, dan itu berjalan di ruang pengguna. Aplikasi konsol yang memperlihatkan keadaan kernel Linux adalah eksperimen pemikiran yang menarik. Saya pasti akan mengatakan ini melibatkan pemrograman sistem, karena Anda harus tahu banyak tentang struktur Linux (perhatikan bahwa "Linux" hanya kernel, bukan distribusi) untuk ditulis, dan mungkin bahkan untuk menggunakannya!

Kilian Foth
sumber
4

Singkatnya: Menulis perangkat lunak yang memperluas atau meningkatkan fungsi suatu OS, seperti driver, pembaruan utilitas sistem untuk OS atau bahkan OS baru.

Sebagian besar melibatkan Manajemen Memori; Operasi I / O dalam arti luas seperti jaringan, akses file, dan manajemen perangkat; manajemen proses (multi tasking, proses administrasi, dll); pengguna <-> metode interaksi sistem (masuk dan keluar) dan administrasi pengguna. Pada dasarnya segala sesuatu yang merupakan bagian dari OS yang bukan aplikasi adalah pemrograman sistem.

Onno
sumber
3

Menggunakan Windows API secara langsung, pada satu titik, merupakan cara yang umum untuk menulis aplikasi untuk Windows. Jadi tidak, itu bukan pemrograman sistem.

Pemrograman sistem tidak hanya "dekat dengan OS" - itu adalah sesuatu yang penting untuk fungsi inti dari sistem komputer. Jadi menulis OS adalah pemrograman sistem. Menulis driver video, driver sistem file, driver jaringan untuk OS itu adalah pemrograman sistem. Menulis kompiler untuk kombinasi bahasa / chipset tertentu adalah pemrograman sistem.

Konsol 80x24
sumber
1

Biasanya, ini mengacu pada "hal-hal tingkat rendah yang pengguna akhir non-teknis tidak tahu ada atau tidak tahu dengan jelas bahwa mereka menggunakan atau apa yang mereka lakukan".

Beberapa contoh yang sering dianggap pemrograman sistem:

  • sistem operasi dan driver
  • kompiler
  • emulator dan virtualisasi
  • pembuatan distribusi, yaitu pembuatan gambar userland.

    Ini biasanya melibatkan pemilihan pustaka standar C, sistem init dan komponen-komponen dasar pengguna tanah seperti sebuah shell.

Sistem pemrograman sering dilakukan dalam bahasa tingkat rendah dikompilasi tanpa pengumpulan sampah otomatis seperti C atau perakitan, dan cenderung mengakses sistem yang kurang umum panggilan seringkali melalui antarmuka POSIX C .

Saya mengelola tutorial yang membahas beberapa topik pemrograman sistem di sini .

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
0

Saat mendefinisikan ini, saya akan menghindari semua detail teknis. Maka itu menjadi mudah.

Aplikasi memungkinkan pengguna untuk melakukan sesuatu yang bermanfaat dengan beberapa teknologi. Jadi pemrograman aplikasi ditargetkan untuk menyediakan fitur kepada pengguna, secara langsung.

Pemrograman sistem di sisi lain akan meletakkan dasar untuk membuat pemrograman aplikasi mungkin. Ini memberikan fitur ke programmer aplikasi daripada ke pengguna.

Definisi ini akan berlaku, tetapi ini adalah masalah perspektif dan konteks dan peran. Bagi seorang programmer komputer, alat pemrograman adalah aplikasi. Bagi seorang pengguna akhir mereka tidak ada artinya, hanya keluar dari gambar.

Martin Maat
sumber
-3

Singkatnya, Pemrograman sistem bila dibandingkan dengan pemrograman aplikasi adalah bahwa SP menangani perangkat lunak OS untuk bekerja dengan sumber daya perangkat keras dan AP menangani aktivitas pengguna akhir.

TUSHAR
sumber
4
ini tampaknya tidak menawarkan sesuatu yang substansial atas poin yang dibuat dan dijelaskan dalam 4 jawaban sebelumnya
nyamuk