Saya agak kagum bahwa ini belum ditanyakan oleh siapa pun, tetapi pada tingkat tinggi, apa yang harus diketahui setiap pengembang tentang bekerja dengan sistem berbasis UNIX?
Pengalaman * nix saya sangat terbatas, karena saya sama sekali tidak punya alasan untuk menggunakannya di Windows untuk keperluan saya sendiri, tetapi saya memiliki dua wawancara yang datang di mana perusahaan idealnya menginginkan seseorang dengan pengalaman * nix. Saya tidak punya masalah berkenalan dengannya jika mereka membuat penawaran yang ingin saya ambil, tetapi itu tidak sebanding dengan investasi ketika sebagian besar penawaran saya berhubungan dengan sistem Windows; semoga ini bisa dimengerti.
Alat apa yang harus saya ketahui? Adakah keanehan yang harus saya ketahui? Adakah sumber daya yang bagus dan singkat yang dapat dibaca dengan cepat untuk mendapatkan pemahaman yang luas?
Jawaban:
Selain dasar-dasar seperti bagaimana menggunakan baris perintah dan sebagainya, saya pikir yang mendasar adalah memahami bagaimana sistem terstruktur.
Saya pikir perbedaan terbesar ketika seseorang datang dari Windows ke Unix adalah memahami bagaimana sistem tersebut cocok. Windows cocok bersama dengan menggunakan API dan komponen OS yang mendasarinya seperti COM. Meskipun ini sering disarikan dari programmer, satu ketika coding untuk waktu yang lama akan tahu tentang model threading COM, GDI, dan sebagainya. Unix cocok dengan cara yang sangat berbeda. Unix didasarkan pada gagasan untuk membangun komponen kecil dan membangun sistem yang lebih besar dari mereka menggunakan IPC (seringkali melalui pipa sederhana).
Anda meminta sumber daya yang singkat dan, setidaknya bagi saya, titik awal tunggal untuk memahami bagaimana Unix bekerja sebagai lingkungan pemrograman adalah buku Kernighan dan Pike buku Unix Programming Environment . Walaupun buku itu sendiri terasa sedikit ketinggalan zaman, itu adalah contoh sempurna dari apa itu filosofi Unix dan bagaimana seseorang dapat memanfaatkan "cara Unix" ketika menulis kode.
Jika Anda setidaknya membaca halaman-halamannya, Anda akan memahami cara menggunakan Unix untuk membantu Anda membuat program yang lebih baik. Bahkan jika Anda mengidentifikasi diri Anda sebagai orang Windows, pengetahuan yang akan Anda peroleh darinya kurang lebih universal seperti pola desain atau praktik rekayasa perangkat lunak.
Jika ingin tahu lebih banyak - mungkin untuk pekerjaan Anda atau mungkin hanya karena Anda menyukainya - setelah membaca Lingkungan Pemrograman Unix, cobalah Pemrograman Tingkat Lanjut di Lingkungan UNIX (R) dari Stevens. Ini melengkapi buku Kernighan dan Pike dengan baik dan, setelah keduanya, Anda akan membahas sebagian besar apa yang saya harapkan seorang programmer Unix ketahui. Ada juga buku Stevens tentang pemrograman jaringan, juga direkomendasikan.
Selain Linux, ada dua OS yang patut dicoba: satu adalah Plan9 , yang dalam beberapa hal adalah Unix yang lebih baik daripada Unix, dan yang lainnya adalah OpenBSD . OpenBSD dibangun oleh tim kecil sehingga sangat konsisten dan didokumentasikan dengan sangat baik, jadi menyenangkan untuk menyodoknya.
sumber
Jika suatu organisasi menggunakan sistem operasi mirip Unix, semua pengembang harus mengetahui perintah terminal dasar untuk menavigasi struktur file, membuat file dan direktori baru, menghapus file, alat bantu pembuatan baris perintah, menggunakan kontrol versi pada baris perintah, dan mungkin skrip shell dasar untuk membantu mengotomatiskan tugas yang berulang. Menurut pendapat saya, kekuatan terminal dan ketersediaan alat baris perintah pada sistem mirip Unix adalah keuntungan besar, ditambah dengan betapa mudahnya menulis skrip untuk mengotomatisasi sejumlah tugas kompleks yang mungkin Anda lakukan secara teratur dasar.
Ada sejumlah aplikasi baris perintah yang mungkin ingin Anda kenali. Alat seperti
cat
,grep
,head
,tail
,more
, danless
berguna untuk sejumlah tugas, mulai dari mencari melalui file untuk menemukan pertandingan teks, untuk membaca file log untuk membantu dalam debugging aplikasi. Kemampuan untuk menggunakan pipa dan mengumpankan output melalui aplikasi ini juga berguna untuk membantu Anda membaca informasi yang tersedia.Pengetahuan tentang salah satu editor teks utama (vi atau emacs) juga akan sangat membantu. Yang mana yang Anda gunakan adalah pendapat pribadi, tetapi saya akan merekomendasikan menggunakan apa yang digunakan tim Anda (dengan begitu, jika Anda memiliki pertanyaan, akan ada seseorang di tim Anda yang menjawabnya). Dalam pengalaman saya, banyak pengembang "hardcore" Unix lebih suka alat ini daripada IDE. Saya sendiri, saya lebih suka IDE (bahkan di lingkungan seperti Unix), tetapi editor teks memiliki kelebihan mereka ketika membaca file. Sifat baris perintah mereka memudahkan pencarian melalui file dengan alat yang saya sebutkan di paragraf terakhir dan kemudian buka semua file yang cocok dalam salah satu editor ini.
Di luar penggunaan alat yang disediakan dengan sistem operasi, Anda juga ingin mengetahui perbedaan dalam perpustakaan. Perpustakaan yang membuat panggilan sistem (hal-hal yang melibatkan threading datang ke pikiran, sebagai contoh spesifik) mungkin akan berbeda di seluruh sistem operasi. Makefile yang memiliki flag untuk dikompilasi pada arsitektur tertentu atau untuk OS tertentu juga berpotensi menimbulkan masalah. Mengetahui sistem operasi mana yang digunakan akan membuat ini lebih mudah - Anda dapat menemukan referensi yang membahas bagaimana mengimplementasikan fungsi tertentu dalam OS tersebut. Namun, ini adalah sesuatu yang saya harapkan Anda dapat mengambil on-the-job (terutama untuk sistem operasi yang biasanya digunakan di lingkungan perusahaan dan bahwa individu tidak sering memiliki akses ke, seperti Solaris).
sumber
Buku yang saya gunakan di kelas UNIX saya adalah "UNIX untuk Programmer dan Pengguna" Glass and Ables . Pengantar solid yang baik untuk perintah sistem, alat pengarsipan dan pemrograman, ikhtisar sistem dan jaringan serta beragam cangkang. Cukup pendek juga kalau agak mahal baru. Hadir dalam rasa Linux juga.
Untuk lebih mendalam: "Antarmuka Pemrograman Linux" . Ini bukan intro yang ringan tetapi jika Anda membutuhkan manual referensi untuk mengakhiri semua manual referensi pada pemrograman level sistem pada sistem keluarga * nix, saya akan memilih ini.
sumber
Pertama-tama, saya sarankan Anda menginstal ubuntu , yang merupakan titik awal yang baik, di sebuah partisi di komputer Anda. Cobalah untuk bermain dengannya sedikit. Seperti, menonton video dengan codec aneh ... Maka Anda mungkin perlu menggunakan terminal untuk menjalankan beberapa
apt-get install
perintah, dan bang! Anda sedang belajar cara menggunakan sistem seperti Unix. Itu dia. Mulai koding dan Anda akan merasa perlu untuk belajar saat Anda kode.Daftar cepat yang muncul di pikiran:
Jika Anda benar-benar ingin tahu bagaimana sebuah OS bekerja dan bagaimana sistem seperti Unix bekerja, mulailah dengan melihat minix dan membaca buku OS Tanenbaum .
sumber
apt-get
mungkin tidak berguna dangedit
harus akrab bagi siapa saja yang pernah menggunakan editor teks sebelumnya. Setiap distro Linux (dan OS berbasis Unix) memiliki alat instal / perbarui yang berbeda, dan saya tidak akan mengharapkan pengembang harus menjaga lingkungan seperti yang akan dilakukan oleh TI. Juga, Anda lupa menyebutkanemacs
sebagai alternatifvi
- yang mana yang Anda gunakan sangat bergantung pada preferensi pribadi (dan, menurut saya, preferensi tim).purge
sesuatu .. . Kau tak pernah tahu.