16 poin oleh GN⁺ 2024-05-21 | 5 komentar | Bagikan ke WhatsApp
  • 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 Makefile pertama 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

 
zihado 2024-05-23

Di Windows, mungkin itu Everything ya hehe

 
bus710 2024-05-23

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...

 
bbulbum 2024-05-23

Saya juga merekomendasikan lazygit, hehe

 
bus710 2024-05-23

Terima kasih.
Sepertinya akhir pekan ini saya harus memasang superfile dan lazygit lalu melihat-lihat sedikit.

 
GN⁺ 2024-05-21
Opini Hacker News

Ringkasan kumpulan komentar Hacker News

  • Compiler Explorer:

    • Compiler Explorer sangat mengubah diskusi tentang compiler dan optimisasi performa.
    • Memberikan dampak positif pada kualitas diskusi di forum.
    • Klaim-klaim berani dapat diverifikasi dengan cepat melalui tautan.
    • Alat seperti llvm-mca dan uiCA juga berguna.
  • Pendapat tentang penggunaan Windows:

    • Menyajikan sudut pandang yang seimbang tentang Windows.
    • Windows lini NT adalah sistem operasi yang hebat.
    • Windows tetap dipasang untuk bermain game.
  • Docker:

    • Docker menghemat banyak waktu selama karier konsultasi.
    • Memungkinkan proyek lama dijalankan dengan cepat.
    • Tidak perlu lagi memasang banyak server database.
    • Memungkinkan environment Python direproduksi dan dijalankan secara paralel.
  • Spring Framework:

    • Spring Framework menghambat pemahaman terhadap konsep dependency injection.
    • Membuat banyak pengembang Java merasa bahwa framework yang kompleks itu diperlukan.
    • Spring sendiri berguna, tetapi dapat membuat perangkat lunak menjadi lebih kompleks dan kurang portabel.
  • Nix:

    • Banyak pekerjaan kompleks dapat dilakukan dengan Nix dan Nixpkgs.
    • Hal-hal seperti static build untuk biner Rust dapat dilakukan dengan mudah.
    • Menyediakan beragam opsi build dan fitur caching.
    • Nix sangat berguna, tetapi NixOS perlu didekati dengan hati-hati.
  • Emacs:

    • Emacs mengubah pekerjaan memperbaiki bug menjadi latihan keterampilan teknis.
    • Membuat pekerjaan yang membosankan menjadi menyenangkan.
  • Konsep 'Round':

    • Konsep 'Round' memberikan area antarmuka semaksimal mungkin dengan volume inti seminimal mungkin.
    • Inti Emacs dan Git kecil dan sederhana, tetapi kuat.
  • Magit:

    • Magit adalah contoh textbook tentang kesederhanaan, efektivitas, dan kemudahan untuk ditemukan.
    • Mengekspos fungsi Git dengan lebih baik.
    • Tidak memperkenalkan istilah maupun alur kerja sendiri.
  • Perbandingan SVN dan Git:

    • Pengalaman menggunakan SVN sangat negatif.
    • Git jauh lebih intuitif dan mudah dipahami.
    • Alur kerja menjadi lebih baik setelah menggunakan Git.
  • Pengalaman menggunakan Linux, Emacs, Bazel, dan Magit:

    • Bekerja menggunakan Emacs dan Bazel di Linux.
    • Mencari-cari blog, menyimpan pekerjaan di Emacs, dan menulis pesan commit dengan Magit.
    • Melakukan push ke repositori Git.