Fitur skrip shell mana yang relevan untuk pengembangan PHP / Python? [Tutup]

28

Saya seorang programmer PHP / Python yang mempelajari Java dan C # (. NET).
OS pengembangan utama saya adalah windows 7 tetapi saya telah menggunakan Linux dan saya saat ini dual-boot dengan Ubuntu. Namun pengetahuan Linux saya, sangat terbatas. Saya dapat bekerja dengan baris perintah pada tugas-tugas sederhana tetapi cukup banyak. Saya tidak melakukan scripting shell dan saya tidak tahu banyak perintah penting.

Minat saya adalah pengembangan web, aplikasi seluler, dan mungkin beberapa hal yang disematkan di masa depan. Apakah keterampilan shell scripting bermanfaat untuk minat ini dan jika demikian, bagaimana?

Maxtor
sumber
9
Siapa pun yang memberi tahu saya 5 tahun yang lalu "Pria sejati fasih dalam C ++, pria sejati menggunakan baris perintah dan mem-boot Linux mereka dari gambar floppy" - fvck you! Saya ingin memberi tahu mereka "pria sejati" menggunakan kepala mereka dan memilih alat terbaik yang bisa mereka temukan untuk pekerjaan itu. Mereka juga tahu bagaimana bersenang-senang dalam kehidupan di luar pekerjaan. Ladies, maaf untuk jawaban yang berpusat pada pria. Yang dimaksud dengan "laki-laki" yang saya maksudkan adalah programmer, tetapi bukan itu yang dikatakan pada saat itu.
Pekerjaan
3
Siapa pun yang memulai pertengkaran dengan "Pria Sejati" adalah bercanda, atau penuh dengan omong kosong. Namun, para idiot seperti ini seharusnya tidak mengurangi nilai memahami hal-hal yang, pada awalnya, tampak sulit, pemrograman shell vs menyeret hal-hal GUI di sekitar seringkali jauh lebih efisien. Dan jika faktor-faktor tertentu C ++ centric mutlak diperlukan, maka C ++ adalah jalan yang harus ditempuh. (mis. kinerja tinggi, atau lebih penting lagi, penggunaan perpustakaan C atau C ++ / basis kode yang ada ... dll.) - pada dasarnya, jika Anda tidak pragmatis, lupakan pekerjaan ini.
ocodo
6
@Slomojo: Pria sejati mencintai istri dan anak-anak mereka dan memperlakukan mereka dengan baik. ;)
Mason Wheeler
@Mason, Anda adalah seorang pangeran Pak
ocodo
1
PHP / Python sering digunakan pada kotak Linux karena lebih murah daripada kotak Windows. Oleh karena itu, jika Anda perlu merawat mereka, Anda lebih baik dengan mengetahui cara kerja dan apa yang Anda lakukan.

Jawaban:

35

Jika saya mengode aplikasi windows (atau aplikasi mac) mengapa saya harus tahu Linux? Haruskah mekanik Ford mengenal traktor John Deer? Semuanya tergantung pada apa yang Anda lakukan, secara profesional atau pada waktu "hobi" Anda sendiri.

Sekarang, tidak ada salahnya untuk mengetahuinya. Bahkan, saya sangat percaya pada "semakin banyak Anda tahu, semakin baik Anda"

Muad'Dib
sumber
Alasan saya bertanya adalah karena Linux dianggap sebagai 'harus belajar' untuk semua jenis programmer hari ini. Namun saya mungkin salah.
Maxtor
@ Max: Itu hanya akan membuat Anda pintar jika Anda tahu cara menggunakannya dan tahu bagaimana dan mengapa Linux melakukannya. Kode sumber Linux memiliki pengetahuan luas yang tertanam di dalamnya tetapi seperti yang dikatakan Muad, itu bukan suatu KEHARUSAN.
Geek
1
Dia perlu belajar linux jika dia berharap untuk menyebarkan program-programnya sendiri di lingkungan produksi, yang bisa menjadi sebagian besar waktu linux.
dukeofgaming
@dukeofgaming, Anda dapat menjalankan IIS dan PHP tanpa masalah. linux akan BAIK untuk dipelajari, tetapi perlu? tidak juga.
Muad'Dib
@dukeofgaming Saya belum pernah menggunakan aplikasi ASP.NET saya ke server linux, dan saya ragu saya akan pernah melakukannya!
Kirk Broadhurst
29

Jika Anda seorang programmer PHP, Anda pasti harus mengenal Linux. PHP dibuat di Linux, dan PHP adalah bagian penting dari tumpukan LAMP: Linux + Apache + MySQL + PHP. Bahkan jika Anda memiliki kesempatan untuk mengembangkan untuk server Windows sekarang, pekerjaan Anda berikutnya mungkin akan membuat Anda mengembangkan untuk server Linux, dan Anda harus terbiasa dengan lingkungan Linux sehingga Anda tidak menjalankan pertengkaran dengan isme khusus Window ' dari PHP.

Di ruang aplikasi seluler, mengetahui Linux akan (sayangnya) memiliki sedikit relevansi dengan lingkungan yang Anda kembangkan. iPhone OS tidak ada hubungannya dengan Linux, dan Android membuat Anda begitu ketat berpagar menjadi mesin virtual, Anda tidak akan pernah tahu ada Linux di bawah Anda. Anda dapat memprogram untuk Linux di Meego atau Maemo, tetapi mereka tidak memiliki popularitas yang mendekati iPhone dan Android.

Di ruang yang tertanam, Anda harus tahu Linux. Embedded Windows jarang, tetapi embedded Linux cukup umum. (Tentu saja, pemrograman tertanam bare-metal juga cukup umum, jadi itu tergantung di mana Anda ingin pergi.)

Jika Anda mempelajari Linux secara mendalam selama beberapa tahun, Anda akan memiliki beberapa tingkat pemahaman tentang setiap bagian sistem dari kernel, melalui proses bootup, hingga baris perintah, dan GUI.

Ken Bloom
sumber
3
Saya setuju bahwa embedded Linux cukup umum untuk perangkat 32-bit. Namun mayoritas embedded micros masih 8 dan 16-bit, yang tidak dapat menjalankan Linux. (Anda menyinggung ini dalam komentar "bare-metal" Anda, saya hanya mengklarifikasi sedikit.) Perangkat 32-bit adalah segmen yang paling cepat berkembang.
tcrosley
+1 untuk tumpukan LAMP dan ruang tertanam. Senang rekomendasi buku Anda tentang hal ini untuk programmer Unix / Linux pemula.
Anthony
17

Ada beberapa tingkat pemikiran 80/20 yang dapat Anda terapkan di sini. Sebenarnya tidak butuh waktu lama untuk mempelajari dasar-dasar cara kerja Linux dan perintah inti yang perlu Anda ketahui dari Shell. Konfigurasi dasar Apache juga sangat nyaman untuk dimiliki jika Anda membutuhkannya. Anda tidak perlu mendedikasikan hidup Anda selama bertahun-tahun untuk itu, tetapi tentu saja cukup berharga untuk mempelajari dasar-dasar yang dapat Anda peroleh dengan menjalankan server Anda sendiri jika perlu.

Ini garis yang bagus. Jika Anda tidak berhati-hati, Anda dapat dengan cepat menemukan Windows mulai benar-benar memberi Anda tanda centang ketika Anda terbiasa dengan apa yang Linux tawarkan ...

glenatron
sumber
12
+1 - jangan belajar Linux jika Anda ingin terus menikmati menggunakan Windows.
Mongus Pong
6
+1 - [mengangkat tangan malu-malu] Um. Nama saya Inaimathi ... dan uhh, saya adalah mantan pengguna Windows.
Inaimathi
6

Anda tidak harus mempelajarinya tetapi itu akan membuat Anda seorang programmer yang lebih baik. Anda akan belajar cara melakukan berbagai hal dengan cara yang berbeda dari cara Windows. Menggunakan salah satu shell * sh pada akhirnya akan mengarah ke scripting dan menggunakan ekspresi reguler, mengotomatisasi instalasi, mem-parsing file besar, dll.

Saya tidak peduli tentang diejek karena tidak mengetahuinya, sebanyak saya peduli tentang betapa kerennya setiap kali saya belajar bagaimana melakukan sesuatu yang lain di Linux. Itu terus menjadi lebih baik dan lebih baik dengan setiap bit baru.

Powershell memiliki banyak yang berasal dari dunia nix, mereka akhirnya menyadari bahwa untuk memiliki otomatisasi Anda memerlukan konsol yang baik (pujian untuk MS untuk itu). Baik Perl dan Python tampaknya merupakan campuran C, bash, sed, awk, semuanya disatukan menjadi hal yang baik dengan cara mereka sendiri.

Paling tidak Anda akan memiliki sesuatu yang lain untuk dimasukkan ke dalam resume Anda, tetapi itu sebenarnya bukan hal terbaik yang akan Anda dapatkan darinya.

Saya yakin Anda akan menemukan barang-barang Anda sendiri yang akan membuat Anda pergi: "Wow, keren sekali!" Pertama saya bisa "membunuh" Apache menggunakan sinyal USR1 untuk membuatnya memuat ulang file konfigurasi baru dan restart log, tanpa pernah menghentikan layanan dan terus menerima koneksi. Juga ssh dan rsync, duka yang bagus mengapa MS port tidak akan berada di luar jangkauan saya.

Marlon
sumber
+1 Untuk menunjukkan MS bergerak ke arah shell dan kurangnya melakukannya sepenuhnya!
Orbling
4

Itu tidak akan menyakitimu. Bahkan di semua perusahaan Microsoft, semakin besar kemungkinan Anda akan bertemu dengan setidaknya beberapa server Linux. Stack Overflow, misalnya, menggunakan Linux untuk penyeimbang bebannya. Ini terutama benar ketika virtualisasi mulai berlaku.

Sebagai seorang programmer, Anda mungkin lebih baik dengan mempertimbangkan untuk terbiasa dengan POSIX, bukan hanya varian seperti UNIX. Walaupun memang memiliki beberapa keanehan, itu mewakili banyak upaya yang masuk ke upaya luar biasa untuk membangun antarmuka standar yang (kebanyakan) portabel di semua lingkungan seperti UNIX. Catatan, banyak sistem seperti UNIX tidak 100% "benar benar", tetapi ini adalah titik awal yang baik.

Sebagai pengguna biasa, saya hanya dapat menyarankan bahwa itu menyenangkan untuk mencari sesuatu yang baru dan mempelajari hal-hal baru. Saya kira adalah mungkin untuk menjadi 'guru' dengan setiap sistem operasi yang dapat dipikirkan seseorang, tetapi saya tidak berpikir itu adalah upaya yang paling berguna bagi seorang programmer. Namun, pengetahuan yang baik tentang hal-hal yang mungkin Anda temui adalah baik .. dan dari pertanyaan Anda, Anda sepertinya akan menghadapi Linux di masa depan.

Pos Tim
sumber
+1 pengetahuan saya tentang linux (saya telah mengelola server web linux selama bertahun-tahun) banyak membantu saya dalam pengembangan "Microsoft" saya. Padahal, setiap solusi itu masalahnya.
Mengenal distro Linux (yang merupakan sistem perangkat lunak aktual yang dapat Anda mainkan) dan POSIX (spesifikasi abstrak) adalah dua hal yang sangat berbeda. Jika Anda terbiasa dengan satu OS seperti Unix atau Unix (sebagian besar Mac OSX dikecualikan), Anda tidak akan kesulitan mentransfer pengetahuan Anda ke yang lain.
David Thornley
3

Ya, tetapi Anda tidak terdengar seperti Anda perlu mempelajarinya secara aktif.

Bagi saya, keakraban saya dengan linux dikembangkan melalui penggunaannya sebagai OS pekerjaan saya. Sepotong demi sepotong aku mempelajari hal-hal yang perlu kuketahui saat mereka muncul, dan terus melakukannya. Internet penuh dengan sumber daya tentang cara melakukan apa saja yang perlu Anda lakukan dengan linux, jadi alih-alih saya menyarankan agar Anda pandai membaca halaman manual dan dokumentasi dan membiarkan otak Anda menyerap (dan melupakan) perincian cara mencapai tugas spesifik saat Anda pergi .

Yang sedang berkata pasti ada beberapa perintah yang Anda akan dijauhi dari dunia linux karena tidak memiliki pemahaman dasar.

contoh dari Tom
sumber
3

Dalam empat dari lima pekerjaan terakhir yang pernah saya jalani, para pengembang dan QA (setidaknya mulai) bekerja pada Windows, tetapi server pengujian dan produksi adalah Linux / UNIX. Semua dari mereka perlu mengetahui setidaknya sejumlah kecil UNIX untuk setidaknya bisa mendapatkan pada server uji dan melihat log atau men-debug program yang sedang berjalan di lingkungan 'nyata'. Sangat sedikit perkembangan yang sebenarnya ditakdirkan untuk Windows di perusahaan-perusahaan yang sudah dalam 20 tahun terakhir.

Menggemari orang lain di sini, sangat sedikit yang mungkin "perlu" untuk pekerjaan atau karier Anda, tetapi itu akan membantu pemahaman Anda tentang pekerjaan Anda sendiri, manfaat dan keterbatasan bahasa atau sistem yang Anda gunakan.

Arcege
sumber
2

IMHO, untuk seorang programmer yang kompeten yang mengetahui Linux / Unix akan menjadi batu loncatan besar untuk filosofi Unix yang lebih penting

Maglob
sumber
2

Ketika saya mengambil kursus Sistem Operasi Ilmu Komputer, kami mempelajari sistem operasi berbasis UNIX dan melakukan pekerjaan kami di RedHat karena itu open source dan karena kami dapat melihat kode dan karena kami dapat melakukan hal-hal dengan itu yang tidak dapat dilakukan di Windows.

Saya akan mengatakan jika Anda akan mempelajari dasar-dasar bagaimana sistem operasi bekerja di bawah tenda, Anda mungkin harus memiliki pengalaman dengan Linux, bahkan jika itu hanya dalam lingkungan akademik.

Saya baru saja kembali ke Windows 7 dari Ubuntu 10.04. Saya merasa sedikit tersesat tanpa grep dan beberapa alat baris perintah lainnya. Saya lebih suka berkembang di lingkungan Linux karena saya merasa sistemnya lebih kondusif bagi pengguna dan pengembang yang tangguh.

Saya tahu benar. Pemrogram NET yang keluar dari perguruan tinggi yang tidak tahu apa-apa tentang Linux, jadi itu bukan keharusan, tapi saya berharap siapa pun dengan pengalaman pemrograman lebih dari 5 tahun telah terpapar ke Linux dalam satu bentuk atau lainnya dalam satu bentuk waktu dalam karir mereka.

Anda harus menjadi juri dari apa yang Anda fokuskan; namun. Jika saat ini ada jalur untuk Anda mengembangkan aplikasi seluler, dan mengetahui Linux sebenarnya bukan keharusan, maka mungkin Anda fokus mempelajari lebih lanjut tentang SDK seluler alih-alih Linux. Ada tradeoff untuk semuanya, dan sepertinya Anda memiliki beberapa paparan dasar ke Linux di mana Anda bisa belajar lebih banyak tentang hal itu jika diperlukan.

jmort253
sumber
2
Saya selalu punya grep et al di kotak Windows saya, mereka adalah suatu keharusan.
Orbling
1

Apakah salah satu dari yang berikut ini mengganggu Anda?

  1. Anda tidak dapat / tidak seharusnya menempatkan Linux pada resume Anda.
  2. Anda tidak memenuhi syarat untuk bekerja di toko Linux murni.
  3. Permintaan pekerjaan Anda saat ini dan tingkat ketertarikan untuk menguasai Linux melalui belajar mandiri tidak ada, sehingga situasi Anda tentang Linux tidak akan berubah.
  4. Pengembang non-Windows akan mengejek Anda (Mungkin tidak ke wajah Anda.).

Ada banyak peluang kerja dan jalur karier yang masih bisa Anda kejar. Saya tidak mengatakan semua ini 'harus' mengganggu Anda. Jujur saja dengan diri Anda sendiri dan awasi industri pada umumnya dan Linux pada khususnya untuk melihat apakah jalur Anda mungkin melintas. Tidak diragukan lagi Anda bisa mencari tahu kapan saatnya tiba. Siapa tahu, proyek Linux mungkin datang besok.

JeffO
sumber
1

Saya selalu kode di lingkungan Windows. Bagi saya, Linux hanya digunakan sebagai OS lain yang saya miliki sebagai cadangan jika Windows saya mengalami masalah. Saya hanya tahu perintah dasar dan semua yang saya coba lakukan sepertinya sulit. Tapi sekarang pada pekerjaan saya saat ini sebagai pengembang web, kita semua menggunakan Linux jadi saya terpaksa mempelajarinya dan menggunakannya untuk semuanya. Semakin saya menggunakannya, semakin saya menyukainya dan saya pikir itu jauh lebih produktif dan fleksibel. Saya menyesal tidak pernah mengacaukan Linux sebelumnya. Sekarang saya hanya mengejar ketinggalan.

Jadi ya, Anda harus mempelajarinya kapan pun Anda bisa.

chiurox
sumber
1

Linux adalah alat di kotak alat Anda dengan cara yang sama seperti Windows "hanya" alat. Menjadi fasih dalam keduanya memungkinkan Anda untuk melakukan beberapa hal lebih baik tetapi tidak relevan untuk hal-hal lain.

Secara pribadi saya telah menemukan Linux dalam bentuk Ubuntu sangat berguna karena memungkinkan saya untuk dengan mudah membuat dan memelihara hal-hal seperti server database, server mail, server web pengujian dan banyak lagi di mesin virtual tanpa harus mempertimbangkan biaya lisensi (ditambah versi server membutuhkan sumber daya lebih sedikit daripada Windows). Jika Anda tidak melakukan hal-hal ini, saya rasa Linux tidak masalah bagi Anda.


sumber
0

Ketahuilah bahwa jika Anda bermaksud untuk menyebarkan ke OS tertentu, maka Anda dapat memastikan bahwa aplikasi Anda berfungsi, tetapi jika tidak ... Anda tidak perlu tahu apa-apa.

Steven Evers
sumber
jika Anda menggunakan OS yang berbeda dari yang Anda kembangkan, Anda mungkin perlu banyak pengetahuan tentang OS baru. satu faktor besar adalah seberapa banyak fungsionalitas tingkat yang lebih rendah hadir dalam aplikasi Anda (yaitu- akses tipe port serial)
Patrick
0

Kecuali saya sedang melakukan .NET, saya lebih suka menggunakan Linux. Tumpukan LAMP hanya terasa lebih alami bagi saya daripada WAMP.

Saya pasti akan merekomendasikan mempelajarinya jika Anda memiliki minat sama sekali dalam mempelajari sesuatu selain dari hal-hal Microsoft.

TaylorOtwell
sumber