Saya pemula DBA dengan banyak pengalaman dalam pemrograman.
Saya telah mengembangkan beberapa aplikasi CLI, non-interaktif yang menyelesaikan beberapa tugas harian yang berulang-ulang atau menghilangkan kesalahan manusia dari tugas yang lebih kompleks walaupun tidak begitu sehari-hari. Alat-alat ini sekarang menjadi bagian dari kotak alat kami.
Saya menemukan aplikasi CLI sangat bagus karena Anda dapat memasukkannya dalam alur kerja otomatis.
Juga filosofi Unix untuk melakukan satu hal tetapi melakukannya dengan baik, dan membiarkan output dari suatu proses menjadi input dari yang lain, adalah cara yang bagus untuk membangun satu set alat daripada akan dikonsolidasikan ke dalam keuntungan strategis.
Bos saya baru-baru ini berkomentar bahwa mengembangkan alat CLI adalah "mundur", atau merupakan "regresi".
Saya mengatakan kepadanya bahwa saya tidak setuju, karena sebagian besar alat CLI yang ada sekarang bukan warisan tetapi proyek langsung dengan versi yang ditingkatkan dirilis sepanjang waktu.
Apakah perkembangan semacam ini dianggap "terbelakang" di pasar?
Apakah terlihat buruk pada resume?
Saya juga mempertimbangkan semua solusi apakah itu web atau desktop, harus memiliki baris perintah, opsi non-interaktif. Beberapa orang menganggap ini sebagai pemborosan sumber daya pemrograman.
Apakah tujuan ini layak dalam proyek perangkat lunak?
Saya juga berpikir bahwa untuk aplikasi web atau desktop, memiliki antarmuka CLI alternatif adalah cara yang bagus untuk menunjukkan bahwa logika bisnis sepenuhnya dipisahkan dari GUI.
Jawaban:
Memiliki kemampuan untuk bekerja dengan CLI bukanlah hal yang saya anggap mundur. Ini terlihat hebat pada resume, terutama jika Anda dapat memutarnya pada resume Anda dengan frase seperti "Digunakan (Powershell / Bash) untuk membangun seperangkat alat otomatisasi untuk mengirim pesan SMS ketika Database turun".
Ketika saya bertanggung jawab untuk merekrut orang, pengetahuan tentang CLI adalah sesuatu yang saya cari.
sumber
Itu pada dasarnya turun untuk "menggunakan alat yang tepat untuk pekerjaan itu."
Jika Anda harus berinteraksi dengan pengguna, Anda akan menginginkan semacam GUI. Kami memiliki beberapa dekade penelitian dan pengalaman yang menunjukkan bahwa mereka membuat komputasi jauh lebih intuitif dan produktif. Itu sebabnya GUI telah mengambil alih dunia sejak 1984: mereka bekerja lebih baik untuk berinteraksi dengan orang-orang.
Tetapi jika Anda mengotomatisasi suatu program dengan skrip, program Anda tidak berinteraksi dengan orang-orang; itu berinteraksi dengan skrip. Dan antarmuka terbaik untuk itu adalah berbasis teks, untuk alasan yang seharusnya jelas secara intuitif.
Pengembangan program CLI untuk pengguna untuk bekerja secara langsung dianggap mundur, dan dengan alasan yang bagus. Tetapi jika itu bukan yang Anda lakukan, jika Anda menulis alat produktivitas otomasi, maka Anda tidak melakukan kesalahan dengan memberi mereka CLI.
sumber
The Art of Unix Programming karya Eric Raymond adalah karya kanonik untuk argumen yang Anda buat. Saya tidak akan mencoba menyingkat bukunya menjadi beberapa paragraf. Namun, perlu diingat bahwa argumen sebagian besar berlaku untuk programmer, administrator mengotomatisasi tugas menggunakan skrip, atau memberi kekuatan pengguna perangkat lunak yang sangat teknis seperti CAD.
Bahkan dengan pengguna yang sangat teknis, Anda harus mempertimbangkan topi mana yang mereka kenakan saat itu. Sebagai contoh, saya menulis perangkat lunak tertanam untuk peralatan jaringan untuk mencari nafkah. Semua produk kami memiliki CLI dan GUI, tetapi pengembang hampir secara universal lebih menyukai CLI, karena fleksibilitas, skripibilitas, ketersediaan, kecepatan, dll.
Namun, kelompok pengembang yang sama persis lebih suka GUI pada perangkat lunak kontrol versi kami, meskipun CLI-nya lebih kuat dan didukung dan didokumentasikan sama halnya dengan GUI. Perbedaannya adalah kita adalah pengguna akhir dari perangkat lunak kontrol versi, bukan administrator atau pengembang.
Jadi, pertimbangkan dengan cermat peran apa yang dilakukan pengguna saat mereka menggunakan utilitas Anda, dan rencanakan antarmuka pengguna sesuai dengan itu. Jika bos Anda menyebutkannya, kemungkinan Anda perlu meningkatkan dokumentasi dan / atau pelatihan tentang CLI paling tidak. Jika Anda terus-menerus memberi tahu orang-orang bahwa fitur hanya tersedia di CLI ketika mereka mengharapkannya untuk GUI, Anda mungkin perlu memikirkan kembali prioritas pengembangan Anda, dengan mempertimbangkan kebutuhan pengguna Anda dengan lebih baik.
sumber
Bukan hanya Unix yang didorong oleh program baris perintah. Microsoft juga menuju ke sana.
Microsoft telah mendorong PowerShell untuk beberapa waktu sekarang. Semua perangkat lunak server mereka saat ini (Exchange, SharePoint, Server 2012, System Center, dll) dapat sepenuhnya dikontrol melalui baris perintah PowerShell. Dan PowerShell bergantung pada fungsi-fungsi kecil yang melakukan satu hal dengan baik dan menyalurkan data ke yang berikutnya (meskipun itu menyalurkan objek bukan hanya teks).
Sebagian besar GUI untuk program-program itu hanyalah tampilan depan dari perintah PowerShell, banyak yang bahkan memberi tahu Anda apa perintah yang akan dijalankan untuk membuat skrip lebih mudah. Semua yang dapat Anda lakukan dari GUI dapat Anda lakukan dari PowerShell. Kebalikannya tidak benar - ada beberapa fungsi yang diekspos hanya di PowerShell.
Jadi jika * nix selalu melakukannya, dan Microsoft sedang menuju ke sana ... sepertinya tidak terlalu terbelakang bagi saya!
sumber
Saya pasti tidak akan mengatakan itu hal yang buruk. Yang menyenangkan tentang program CLI adalah ketika mengimplementasikannya Anda dapat memiliki cakupan yang sangat terbatas. Sebagai contoh, jika saya ingin menulis
cat
klon atau "program untuk mencetak isi file ke layar", itu sangat layak dilakukan dengan CLI.Namun, bagaimana jika Anda tidak menggunakan CLI, maka Anda akan memiliki program dasar dengan GUI yang menampilkan beberapa teks. Tetapi kemudian Anda juga harus mengikat dalam membuka dialog file dan mengaitkannya .. tetapi kemudian seseorang juga ingin dapat memodifikasi teks dan menyimpannya di tempat lain ..
Cakupan creep konyol dengan aplikasi GUI. Sangat mudah untuk menghindarinya meskipun dengan aplikasi CLI. "Anda ingin mengedit file dan kemudian menyimpannya?
cat foo > ed > bar
" Dengan aplikasi CLI itu sepele bagi pengguna Anda (bukan Anda, pengembang) untuk menggabungkannya dengan alat lain.Sekarang, yang dikatakan, program CLI mulai dilihat sebagai "mundur". Ini karena banyak pengembangan aplikasi dewasa ini terjadi di pasar di mana pengguna yang menggabungkan alat Anda dengan alat lain nyaris tidak mungkin. Saya tidak akan membahasnya di sini, tapi saya memang menulis posting blog tentang bagaimana "pasar memberlakukan mentalitas yang tidak ada", yang merupakan kebalikan dari aplikasi CLI yang dirancang dengan baik (untuk melakukan satu hal dan melakukannya dengan baik )
sumber
GUI dan CLI keduanya memiliki tempat masing-masing. GUI sangat bagus untuk memungkinkan pengguna untuk melakukan operasi kalengan tertentu dengan cepat. CLI adalah untuk saat Anda ingin melakukan hal-hal yang GUI tidak memungkinkan Anda untuk melakukannya. CLI biasanya lebih kuat dan lebih sulit digunakan.
Sebuah baik alat CLI memungkinkan pengguna untuk melakukan hal-hal orang yang menulis alat tidak pernah memikirkan. Salah satu contoh adalah perintah 'temukan' UNIX. Perintah ini:
menemukan file di bawah direktori saat ini (tetapi terbatas pada 5 level ke bawah) yang memiliki nama yang dimulai 'xyzzy' dan telah dimodifikasi lebih dari 3 hari yang lalu dan kemudian menghapusnya (catatan: kode yang belum diuji). Dan itu penggunaan yang cukup sederhana. Anda dapat menggunakan manajer file untuk melakukan hal semacam itu, tetapi akan memakan waktu lebih lama dan rentan kesalahan. Tentu saja, menjadi lebih kuat berarti CLI dapat lebih mudah disalahgunakan dan menciptakan masalah bagi diri Anda sendiri!
Pengembang yang baik dapat menulis alat CLI sedemikian rupa sehingga juga memiliki GUI yang memungkinkan serangkaian operasi terbatas dilakukan. Pengguna dapat mulai dengan GUI dan mempelajari kompleksitas CLI nanti.
Bacaan yang bagus (panjang dan bias (?)) Di trade off CLI / GUI ada di:
sumber
Tidak, itu tidak mundur sama sekali.
"Arahan" banyak terkait dengan perspektif kita. Seorang pengguna senang dengan jalur saat ini menuju antarmuka sederhana, "satu pengalaman semua perangkat" akan melihat CLI sebagai kemunduran atau regresi pasti. Itu tidak sesuai dengan harapan mereka secara keseluruhan.
Seorang programmer, administrator atau pengguna listrik mungkin melihatnya sebagai perkembangan logis dari alat sesuai dengan pengalaman mereka. Banyak dari ini mulai menggunakan alat GUI. Ketika mereka ingin atau perlu mengukur, mereka dengan cepat mencari tahu mengapa CLI ada dan perkembangan itu beresonansi dengan mereka yang membangun lebih banyak alat CLI.
Ada ini oleh Paul Ferris: http://www.linuxplanet.com/linuxplanet/opinions/1505/1
Bagi saya pribadi, gagasan sintaksis membedakan keduanya. Ketika sintaks agak hadir dalam GUI, hasilnya hampir tidak pernah baik dan sefleksibel sintaks CLI. Ketika ini digabungkan dengan pipa dan pengalihan, GUI jatuh datar karena itu tidak terlalu berguna di luar kasus penggunaan yang direncanakan.
Preferensi pribadi saya tentang ini adalah alat CLI yang menawarkan opsi - gui atau --verbose yang cukup untuk memungkinkan pembungkus GUI untuk berinteraksi dengan cara yang kuat termasuk bilah status dan elemen dasar lainnya yang dilihat orang untuk GUI.
Tentu saja biaya ini pada dasarnya adalah dua program dengan satu agak tidak berguna tanpa yang lain, tetapi manfaat utama adalah dapat menggabungkan satu atau lebih alat CLI yang hebat ke dalam GUI kustom tanpa modifikasi ke alat CLI tersebut. Paling sering ini hanya dilakukan untuk menawarkan opsi GUI pada CLI tertentu, tetapi gagasan mengemudi beberapa alat dengan satu "proses" atau "use case" yang berorientasi GUI dapat memberikan hasil yang mirip dengan pemipaan dan pengalihan dan pembuatan skrip untuk kasus penggunaan tersebut, membuatnya tersedia bagi orang-orang yang tidak akan melakukan operasi-operasi itu secara cukup teratur untuk mencapai penguasaan sementara masih tidak menghambat pengguna CLI.
Saya menemukan pendekatan ini pada SGI IRIX dan sangat menyukainya. Saya menemukan diri saya menggunakan GUI atau baris perintah sesuai kebutuhan dan yang menyenangkan adalah mengetahui persis apa yang sebenarnya dilakukan tombol mewah.
Di mana ada banyak lingkungan operasi yang berbeda, pembungkus GUI dapat sangat berbeda tanpa berdampak pada alat CLI juga.
Saya melihat ini di Linux hari ini dengan hal-hal seperti alat disk / sistem file, di mana GUI dapat menambahkan banyak nilai bahkan untuk pengguna yang akrab dengan CLI.
Dalam kasus filesystem / disk / perangkat yang dikenal, mematikan CLI tidak sulit, dan tentu saja dapat dituliskan skrip. Namun kesalahan bisa menyakitkan.
Di mana hal itu mungkin tidak diketahui, atau mungkin melakukan operasi tidak dilakukan secara cukup teratur untuk tetap solid dan bebas dari kesalahan, menjalankan GUI menyediakan lingkungan yang dapat dengan mudah diverifikasi, operasi dirantai bersama dan kemudian dijalankan dengan percaya diri, tanpa skrip yang diperlukan.
sumber