3 poin oleh GN⁺ 2024-01-05 | 1 komentar | Bagikan ke WhatsApp

Menandai 14 tahun sejak peluncuran proyek open source bahasa Go

  • Salah satu pencipta bersama bahasa Go menyampaikan ceramah terakhirnya pada konferensi GopherConAU yang diadakan di Sydney pada 10 November 2023.
  • Dalam ceramah tersebut, ia memperingati 14 tahun sejak bahasa Go dirilis sebagai proyek open source, sambil membahas keberhasilan yang telah diraih dan hal-hal yang perlu direnungkan.
  • Pembicara menegaskan bahwa ia tidak mewakili tim Go maupun Google, melainkan menyampaikan pandangan pribadinya, serta menyampaikan terima kasih kepada komunitas yang telah berkontribusi pada kesuksesan bahasa Go.

Faktor keberhasilan dan area perbaikan bahasa Go

  • Tujuan awal bahasa Go bukanlah menciptakan bahasa pemrograman baru, melainkan memperbaiki cara menulis perangkat lunak.
  • Bahasa Go berupaya mengatasi kompleksitas pembangunan perangkat lunak server modern, seperti manajemen dependensi, kolaborasi dengan tim besar, kemudahan pemeliharaan, pengujian yang efisien, serta pemanfaatan CPU multicore dan jaringan secara efektif.
  • Bahasa Go bukan sekadar bahasa pemrograman, tetapi sebuah proyek untuk membangun perangkat lunak produksi dengan lebih mudah dan produktif.

Maskot bahasa Go, gopher

  • Gopher, maskot bahasa Go, memainkan peran penting dalam kesuksesan Go.
  • Gopher menjadi simbol para programmer Go sekaligus bendera komunitas, dan merupakan unsur penting dalam pertumbuhan proyek ini.
  • Membuka desain gopher di bawah lisensi Creative Commons Attribution membantu mendorong semangat komunitas, tetapi juga menimbulkan kesulitan terkait masalah hak cipta.

Faktor keberhasilan teknis bahasa Go

  • Penulisan spesifikasi resmi, keberadaan banyak implementasi, portabilitas, jaminan kompatibilitas, pustaka yang kaya, kemudahan pengembangan alat, serta alat pemformatan kode otomatis gofmt semuanya berkontribusi pada keberhasilan bahasa Go.
  • gofmt memengaruhi komunitas pemrograman secara luas, hingga menjadi pemicu bagi sebagian besar bahasa untuk memiliki formatter standar.

Concurrency dan interface

  • Bahasa Go menjadikan concurrency sebagai komponen utama bahasa, sehingga membantu menyederhanakan struktur perangkat lunak server.
  • Interface adalah gagasan khas bahasa Go, merupakan jawaban Go terhadap desain berorientasi objek, dan memainkan peran penting dalam standard library maupun manajemen dependensi.

Generics dan compiler

  • Keberadaan interface merupakan salah satu alasan mengapa penambahan generics ke bahasa Go memerlukan waktu yang lama.
  • Compiler Go awal yang ditulis dalam C sempat menjadi bahan kontroversi di komunitas bahasa pemrograman, tetapi merupakan pilihan yang tepat bagi perkembangan bahasa Go.

Manajemen proyek dan manajemen paket

  • Sebagai proyek open source, pengembangan awal bahasa Go dilakukan secara tertutup, tetapi setelah dibuka untuk publik, kontribusi komunitas meningkat secara eksplosif.
  • Proses pengembangan manajemen paket tidak berjalan mulus, dan ada kekurangan pemahaman tentang cara berkolaborasi dengan komunitas.

Dokumentasi dan contoh

  • Dokumentasi awal bahasa Go tidak memenuhi harapan komunitas, tetapi kemudian diperbaiki, termasuk dengan menyediakan contoh yang dapat dijalankan di web.

Pendapat GN⁺

  • Kesuksesan bahasa Go berasal dari unsur-unsur seperti standard library yang kuat, dukungan concurrency, desain berbasis interface, manajemen paket yang jelas, alat build dan testing yang cepat, pemformatan kode yang konsisten, penekanan pada keterbacaan, serta jaminan kompatibilitas.
  • Bahasa Go tidak hanya menghadirkan fungsi sebagai bahasa pemrograman, tetapi juga membawa inovasi pada cara pengembangan perangkat lunak, dan hal ini dimungkinkan berkat keberagaman serta dukungan komunitas.
  • Proses pengembangan bahasa Go dan refleksi terhadapnya memberikan pelajaran penting dalam menjalankan proyek open source.

1 komentar

 
GN⁺ 2024-01-05
Opini Hacker News
  • Rasa terima kasih kepada tokoh-tokoh kunci yang meluangkan waktu untuk refleksi proyek

    • Pembatasan bahasa yang berfokus pada pemrograman sistem
    • Mendefinisikan bahasa dan prinsipnya dengan jelas untuk mencegah ambiguitas dan pemborosan desain dengan tujuan yang berbeda
    • Memprioritaskan kualitas sehingga menyelesaikan masalah sebelum rilis lebih murah bagi semua pemangku kepentingan
    • Menjaga keseimbangan antara berbagi dengan komunitas dan pengelolaan bahasa serta rilis yang ketat
    • Tidak adanya campur tangan Google berkontribusi pada keberhasilan Go, dan memunculkan pertanyaan apakah hal ini juga mungkin pada proyek lain
    • Go adalah teknologi kunci yang memindahkan perangkat lunak sisi server dari Java ke kontainer native, dan mendukung sebagian besar infrastruktur aplikasi web selama 10 tahun terakhir
  • Kecintaan terhadap bahasa Go dan komunitasnya

    • Pertama kali mengenal Go pada 2012 sebagai pengembang Python dan terkejut dengan kemudahan manipulasi bit
    • Setelah 10 tahun, masih terkesan bahwa sebagian besar fitur Go tetap bekerja dengan baik
    • Berterima kasih atas apa yang dilakukan Rob, Ian, Russ, dan lainnya untuk Go serta kejujuran mereka tentang "guncangan di jalan" bersama komunitas
    • Meski ada pandangan kritis tentang masalah manajemen paket, dinilai bahwa sekarang telah sampai pada solusi yang baik
  • Berbagi pengalaman kritis tentang sistem manajemen paket Go

    • Pengalaman diabaikan oleh Rob Pike ketika 10 tahun lalu menyampaikan pendapat kritis di go-nuts tentang cara Go menangani manajemen paket
  • Pandangan kritis terhadap bahasa Go

    • Kurangnya pengakuan terhadap masalah-masalah mendalam pada bahasa tersebut
    • Tidak merekomendasikan Go karena sistem tipe, penanganan error, konkurensi yang tidak aman, dan sintaks yang terlalu sederhana
    • Menggunakan Rust sebagai bahasa utama dan menemukan visi yang tidak dimiliki Go di Rust
  • Hal menarik tentang keputusan Ken Thompson untuk menggunakan kompiler C

    • Keluhan tentang keputusan menggunakan kompiler C buatan Ken Thompson alih-alih LLVM serta penyebutan generasi kode yang tidak teroptimalkan pada versi awal
    • Keputusan ini memungkinkan segmented stack diimplementasikan dengan cepat
  • Penekanan pada keberhasilan adopsi gofmt

    • Memberikan nilai besar dengan sepenuhnya menghilangkan perdebatan tentang format kode sejak awal proyek
    • Terlihat banyak bahasa baru meniru gofmt atau membuat alat serupa
  • Berbagi seluruh playlist sebagai penyelenggara GopherConAU

    • Tidak tahu alasan mengapa playlist tidak bisa dipublikasikan
  • Kelebihan menggunakan Go untuk membuat monorepo dengan mudah dan membangun aplikasi dengan cepat

    • Mudah membuat alat CLI dengan Go dan menggunakannya sebagai bagian dari pipeline Unix
    • Go berguna untuk analisis log berskala besar dan sejenisnya
  • Kurangnya pembahasan tentang interoperabilitas Go dan pilihan C FFI

    • Jawaban "tulis ulang dengan Go" menyingkirkan opsi-opsi lain
  • Pendapat tentang menulis kompiler dengan bahasanya sendiri

    • Mengajukan pertanyaan apakah bahasa yang tidak dapat mengompilasi dirinya sendiri berarti tidak cocok untuk menulis kompiler
    • Tidak memahami implikasi bahwa bahasa yang cocok untuk kompiler tidak akan cocok untuk aplikasi lain, dan meminta konteks lebih lanjut