Memulai pemrograman sistem? [Tutup]

8

Sejak saya menemukan pemrograman lima tahun lalu, saya telah melakukan banyak hal. Saya telah belajar banyak bahasa dan teknologi pemrograman dan mencoba banyak hal menarik. Saya telah menulis game, baik konsol maupun dengan grafik, konsol, dan aplikasi berjendela yang berjalan di desktop, aplikasi web CRUD, database file flat saya sendiri (jelek) berbasis XML XML. Selain Web dan desktop, saya sudah mencoba pengembangan ponsel dengan Android tetapi tidak menikmatinya, jadi saya menghentikannya. Saya baru saja menyelesaikan proyek Web saya dan saya sedang belajar pemrograman fungsional sekarang (Haskell).

Tapi saya belum pernah mencoba-coba pemrograman sistem sebelumnya. Gagasan membangun perangkat lunak (saya bahkan tidak yakin apakah itu istilah yang tepat untuk menggunakannya) pada tingkat rendah yang berinteraksi dengan sistem operasi tampaknya menarik. Masalahnya adalah, saya tidak yakin bagaimana tepatnya memulai, dan perlu lebih banyak contoh tentang apa yang saya lakukan dengan ini.

Haruskah saya mulai dengan mempelajari API Win32? Saya tahu beberapa C ++ karena saya menggunakannya untuk membuat beberapa aplikasi dan game konsol, tetapi belum menggunakannya dalam beberapa tahun. Apakah itu cara untuk pergi? Juga, bagaimana dengan C? Saya berencana untuk belajar lebih banyak tentang C (menggunakan buku K&R) sebelum musim panas berakhir dan kuliah dimulai. Saya ingin mendapatkan awal yang baik sebagai mahasiswa baru dengan latar belakang pemrograman yang solid.

Ryan
sumber
Saya pikir Anda harus mengklarifikasi pertanyaan Anda: apa yang ingin Anda lakukan? Tulis OS? Ikuti tutorial SIGOPS, baca buku Tanenbaum. Pelajari Win32? Ada buku Petzold (walaupun saya tidak yakin mengapa seseorang ingin melakukannya tanpa motif yang kuat). Driver perangkat? Pemrograman sistem adalah konsep yang sangat luas.
Vitor Py
Mengapa Anda mengatakan bahwa ada sesuatu yang tidak ingin belajar Win32 tanpa motif yang kuat?
Ryan
2
Karena Win32 API mentah membawa banyak cruft: berasal dari Win16 API, ada banyak hal yang tampaknya tidak masuk akal. Menggunakan toolkit GUI modern untuk sebagian besar aplikasi Anda dan hanya memanggil beberapa metode API Win32 di mana Anda benar-benar membutuhkannya, biasanya merupakan pendekatan yang lebih baik dan tidak terlalu menyakitkan.
Vitor Py

Jawaban:

6

Gagasan membangun perangkat lunak (saya bahkan tidak yakin apakah itu istilah yang tepat untuk menggunakannya) pada tingkat rendah yang berinteraksi dengan sistem operasi tampaknya menarik.

Saya percaya Anda membuat pemrograman sistem bingung dengan pengembangan aplikasi . Pemrograman sistem akan lebih sesuai dengan penulisan sistem operasi, tidak berinteraksi dengannya. Saya mungkin akan menyarankan memulai dengan pengembangan aplikasi biasa (pada Windows yang akan menjadi WinAPI ), kemudian beralih ke mengeksplorasi subsistem yang Anda temukan menarik secara mendalam.

K&R jelas merupakan panduan pasti tentang C, dan jika Anda akan menargetkan aplikasi Windows, saya sangat merekomendasikan untuk mengambil salinan Programming Windows .

Jika Anda benar-benar tertarik dengan interaksi "tingkat rendah", saya mungkin menyarankan tutorial Win32 Assembly dari Iczelicon ( MASM hebat, dan juga gratis).

Jika Anda berhasil memahami bahkan sebagian kecil dari informasi itu sebelum tahun pertama Anda kuliah, Anda akan menjadi tahun-tahun depan mungkin hampir semua orang.

Brandon Moretz
sumber
Sangat sulit bagi saya untuk merekomendasikan API Win32 kepada seseorang. Mengapa tidak menargetkan sesuatu yang lebih modern dan bermanfaat seperti Qt, GTKmm, atau heck, bahkan MFC? Saya melihat tidak ada gunanya pemrograman Win32 API, meskipun telah mempelajarinya untuk beberapa pekerjaan.
Vitor Py
@ Viktor Saya kira itu hanya karena masalah pilihan pribadi. Saya "memotong gigi" pada Win32 C, jadi saya kira saya memiliki koneksi nostalgia pribadi dengannya. Meskipun saya tidak menggunakannya terlalu sering dalam pekerjaan saya saat ini, saya masih menggunakannya secara teratur untuk proyek orang / pengembangan rekreasi (terutama melalui pembungkus Interop atau CLI / C ++ dan semacamnya). Saya memang berpikir bahwa Win32 C langsung "lebih dekat ke logam" karena OP lebih menginginkan daripada lapisan abstraksi yang ditawarkan oleh kerangka kerja (terutama MFC, tuan yang baik ...).
Brandon Moretz
10

Pertimbangkan untuk menulis proyek tertanam kecil pada pengontrol tertanam seperti Arduino. Ini adalah cara yang bagus untuk memulai proses pemrograman sistem pembelajaran, karena memulai Anda pada tingkat dasar dan memungkinkan Anda untuk berkembang ke dalamnya.

Robert Harvey
sumber
+1 untuk jawaban "to the point". Bisakah Anda menjelaskan lebih banyak dan menambahkan beberapa referensi?
Md Mahbubur Rahman
Situs web Arduino merinci secara signifikan tentang platform dan cara menggunakannya, serta banyak sumber daya lain yang sudah tersedia di Internet.
Robert Harvey
4

Jika Anda tertarik pada pemrograman sistem, tidak ada yang lebih baik daripada yang bekerja pada sistem operasi (baik pada inti kernel OS atau pada driver perangkat terkait)

Karena itu saya menyarankan untuk terlibat dalam pengembangan Linux - ini adalah komunitas yang sangat baik untuk belajar tentang OS internal. Saya belajar banyak tentang sistem operasi hanya dengan mengikuti daftar diskusi linux-kernel ....

Ini juga merupakan kesempatan untuk mengambil proyek nyata dan meningkatkan keterampilan Anda. Sebagai perekrut pengembang perangkat lunak, saya benar-benar memperhatikan ketika seseorang berkontribusi pada proyek open source - hampir selalu merupakan indikator positif dari keterampilan dan komitmen!

mikera
sumber