Enlightenmentware - Perangkat Lunak yang Mencerahkan Saya
(mmapped.blog)- UNIX, Git, Emacs, Boost.Graph, Bazel
- Sebagai programmer, saya berinteraksi dengan alat perangkat lunak setiap hari, tetapi sebagian besar alat hanya dipakai untuk sekadar menyelesaikan pekerjaan
- Kadang saya menemukan perangkat lunak yang melampaui kegunaan sederhana: memicu imajinasi, membuka kemungkinan baru, dan memengaruhi cara merancang sistem
- Perangkat lunak seperti ini saya sebut sebagai ‘perangkat lunak pencerahan’ (Enlightenmentware)
- Bagi programmer, sumber pencerahan yang paling umum adalah bahasa pemrograman yang mereka gunakan, termasuk bahasa yang dipelajari sebagai hobi
- Saya mengalami banyak pencerahan saat berurusan dengan bahasa pemrograman seperti MASM, C, Prolog, dan Idris
- Karena pengaruh pembelajaran bahasa terhadap perluasan cara berpikir sudah lama diketahui, tulisan ini memilih untuk tidak berfokus pada bahasa dan hanya menyoroti perangkat lunak yang memberi pencerahan
UNIX
UNIX ramah terhadap pengguna—hanya saja ia pilih-pilih teman.
Anonim, "Art of unix Programming" oleh Eric S. Raymond
- Pada 2008, saat kuliah, saya mulai mencari pekerjaan pemrograman pertama saya.
- Sebagian besar lowongan meminta pengetahuan tentang UNIX dan socket.
- Karena kurikulum kampus tidak memiliki mata kuliah tentang UNIX maupun sistem operasi, saya memutuskan untuk mempelajarinya sendiri.
- Saya memasuki dunia UNIX melalui buku "The unix Operating System" karya Andrey Robachevsky dkk.
- Dengan memasang Mandriva Linux, saya mulai menjelajahi lingkungan UNIX.
- Sejak itu, UNIX menemani setiap tahap hidup saya.
- Sebagian besar perangkat lunak berjalan di lingkungan UNIX, dan saya masih merujuk buku "Advanced Programming in the unix Environment".
Git
Mudah menembak kaki sendiri dengan git, tetapi juga mudah kembali ke kaki sebelumnya lalu menjahitkannya dengan kaki yang sekarang melalui merge.
Jack William Bell
- Pada awal 2009, saya pertama kali mengenal sistem kontrol versi lewat Rational ClearCase.
- ClearCase sangat membingungkan dan hanya menangani kebutuhan minimum.
- Setelah itu saya menggunakan Subversion dan mempelajarinya lewat buku "Version Control with Subversion".
- Subversion mudah dipahami dan mudah digunakan, tetapi kurang nyaman untuk proyek pribadi.
- Lalu saya menemukan Git.
- Git memiliki kurva belajar yang curam dan membingungkan, tetapi kebingungannya berbeda dari ClearCase.
- Git menghilangkan friksi dalam penggunaan kontrol versi sehingga semua hal yang bernilai bisa dimasukkan ke dalam kontrol versi.
- Desain Git menarik karena merupakan perpaduan elegan antara sistem terdistribusi, graf tak bersiklus, dan penyimpanan beralamat konten.
- Mempelajari bagian dalam Git begitu menyenangkan sampai membuat saya tertarik pada sistem kontrol versi lainnya juga.
- Kekurangan utama Git adalah pendekatannya yang berorientasi snapshot membuat merge lebih sulit dipahami.
Emacs
Editor teks mana pun bisa menyimpan berkas, tetapi hanya Emacs yang bisa menyelamatkan jiwa.
Per Abrahamsen
- Saya mengedit program pertama saya di jendela biru yang akrab milik Turbo Pascal 7.0.
- Di kampus saya belajar pemrograman dengan Pascal, lalu berlanjut ke C++ dan Java.
- Di pekerjaan pemrograman pertama saya, saya menggunakan NEdit, tetapi kemudian tertarik pada Vim dan Emacs.
- Vim menantang namun menyenangkan, seperti memainkan alat musik.
- Emacs adalah mesin Lisp yang menyediakan kemampuan penyuntingan teks dan manajemen jendela.
- Struktur internal Emacs bersih, tertata rapi, dan terdokumentasi dengan baik.
- Memperluasnya dengan Emacs Lisp jauh lebih mudah dibanding editor lain.
Boost.Graph
Saya punya prasangka kuat terhadap tren kode yang dapat digunakan ulang. Saya rasa "kode yang bisa disunting ulang" jauh lebih baik daripada kotak hitam atau toolkit.
Donald Knuth, wawancara dengan Andrew Binstock
- Pada malam tahun baru 2013, saya membaca Boost Graph Library.
- Sebagian besar pustaka algoritma bergantung pada representasi data tertentu, sehingga sulit diintegrasikan ke proyek yang sudah ada.
- Boost.Graph menyelesaikan masalah ini dengan pemrograman generik.
- Saya belum pernah benar-benar memakai pustaka ini, tetapi desainnya memperdalam pemahaman saya tentang desain STL dan pemrograman generik.
Bazel
Jika make tidak berjalan seperti yang Anda harapkan, besar kemungkinan makefile-nya yang salah.
Adam de Boor, "PMake—A Tutorial"
- Pada 2009, saya menulis
Makefilepertama untuk proyek riset. - Karena kompleksitas
make, saya mulai mendambakan alat yang lebih baik. - Saya mencoba berbagai sistem build, tetapi semuanya tidak memuaskan.
- Pada 2016, saya bergabung dengan Google dan mulai menggunakan
blaze. - Bazel adalah kepingan puzzle terakhir dari sistem build.
- Bazel cepat, akurat, mudah digunakan, dan tidak terikat pada bahasa tertentu.
Kesimpulan
- Ciri umum enlightenmentware yang baik:
- Menyelesaikan masalah yang mendalam dan menangani persoalan yang kita hadapi sehari-hari.
- Memuat banyak kedalaman dalam permukaan yang kecil.
- Mengundang dan mendorong kita untuk menjelajahi bagian dalamnya.
Pendapat GN⁺
- Pentingnya UNIX: UNIX digunakan sebagai sistem operasi dasar di banyak lingkungan pemrograman dan penting untuk memahami dasar-dasar pemrograman sistem.
- Kurva belajar Git: Git pada awalnya sulit, tetapi merupakan alat yang sangat penting untuk kontrol versi. Terutama berguna dalam sistem terdistribusi dan lingkungan kolaboratif.
- Fleksibilitas Emacs: Emacs menawarkan lebih dari sekadar editor teks, dan sangat layak direkomendasikan khususnya bagi orang yang tertarik pada pemrograman Lisp.
- Pemrograman generik di Boost.Graph: Boost.Graph adalah contoh kuat pemrograman generik, dan darinya kita bisa mempelajari cara mengimplementasikan algoritma kompleks secara efisien.
- Efisiensi Bazel: Bazel adalah alat yang dapat memaksimalkan efisiensi sistem build dalam proyek berskala besar, dan sangat berguna terutama di perusahaan besar seperti Google.
5 komentar
Di Windows, mungkin itu Everything ya hehe
Sehebat apa sih Magit sampai bisa masuk ke jajaran software mahakarya seperti ini? Karena saya tidak memakai Emacs, saya jadi tidak tahu.
Di Nvim, katanya Neogit terinspirasi dari Magit, jadi mungkin saya harus mencoba yang itu setidaknya...
Saya juga merekomendasikan lazygit, hehe
Terima kasih.
Sepertinya akhir pekan ini saya harus memasang superfile dan lazygit lalu melihat-lihat sedikit.
Opini Hacker News
Ringkasan kumpulan komentar Hacker News
Compiler Explorer:
Pendapat tentang penggunaan Windows:
Docker:
Spring Framework:
Nix:
Emacs:
Konsep 'Round':
Magit:
Perbandingan SVN dan Git:
Pengalaman menggunakan Linux, Emacs, Bazel, dan Magit: