diff options
| author | Shulhan <m.shulhan@gmail.com> | 2020-01-30 00:26:46 +0700 |
|---|---|---|
| committer | Shulhan <m.shulhan@gmail.com> | 2020-01-30 00:26:46 +0700 |
| commit | f9811430c59c956d503ee9f0f7cc31d609204438 (patch) | |
| tree | 5734477b4ddbf16032cf3ba43c9cf45b81f1bc45 | |
| parent | bdb6932aca813340373bc98962bebfc714cc0196 (diff) | |
| download | golang-id-web-f9811430c59c956d503ee9f0f7cc31d609204438.tar.xz | |
blog: terjemahkan blog "Go 2, here we come!"
| -rw-r--r-- | content/blog/go2-here-we-come/index.adoc | 249 | ||||
| -rw-r--r-- | content/blog/index.adoc | 5 |
2 files changed, 252 insertions, 2 deletions
diff --git a/content/blog/go2-here-we-come/index.adoc b/content/blog/go2-here-we-come/index.adoc new file mode 100644 index 0000000..6bca33e --- /dev/null +++ b/content/blog/go2-here-we-come/index.adoc @@ -0,0 +1,249 @@ += Go 2, kami datang! +:author: Robert Griesemer +:date: 29 November 2018 + +== Latar belakang + +Di GopherCon 2017, Russ Cox secara resmi mulai membayangkan versi besar +selanjutnya dari Go dengan wicara tentang +https://www.youtube.com/watch?v=0Zbh_vmAKvk[Masa depan Go] +(https://blog.golang.org/toward-go2[blog]). +Kita menyebut masa depan bahasa secara informal dengan Go 2, walaupun sekarang +kita paham bahwa ia akan datang secara inkremental bukan dengan tiba-tiba +dalam sebuah rilis mayor. +Tetap saja, Go 2 adalah julukan yang berguna, sebagai suatu cara untuk +membicarakan tentang masa depan bahasa, jadi mari kita tetap menggunakan +istilah tersebut untuk saat sekarang. + +Perbedaan besar antara Go 1 dan Go 2 adalah siapa yang memengaruhi rancangan +dan bagaimana keputusan akan dibuat. +Go 1 adalah usaha dari tim kecil dengan sedikit pengaruh dari luar; +Go 2 akan lebih dipengaruhi oleh komunitas. +Setelah lebih dari 10 tahun, kita telah belajar banyak tentang bahasa dan +pustaka-pustaka yang tidak kita ketahui sejak awal, dan hal ini bisa terjadi +lewat umpan balik dari komunitas Go. + +Pada tahun 2015 kami memperkenalkan +https://golang.org/s/proposal[proses proposal] +untuk mengumpulkan umpan balik: proposal untuk perubahan bahasa dan pustaka. +Sebuah komite yang terdiri dari anggota tim Go secara berkala telah mengulas, +kategorisasi, dan menentukan proposal-proposal yang masuk. +Cara ini bekerja cukup baik, namun sebagai bagian dari proses tersebut kami +telah mengindahkan semua proposal yang tidak menjaga kompatibilitas, dengan +memberi label Go 2. +Di tahun 2017 kami juga telah berhenti membuat perubahan bahasa demi menjaga +kompatibilitas bahasa secara inkremental, sekecil apa pun, dengan memilih +rencana yang lebih komprehensif yang mendukung gambaran besar dari Go 2. + +Sekarang adalah saatnya beraksi terhadap proposal Go 2, namun untuk itu kita +perlu sebuah rencana. + + +== Status + +Saat artikel ini ditulis, ada sebanyak 120 +https://github.com/golang/go/issues?page=1&q=is%3Aissue+is%3Aopen+label%3Aproposal+label%3AGo2&utf8=%E2%9C%93[isu +terbuka berlabel Go 2 proposal]. +Setiap proposal mengajukan perubahan bahasa atau pustaka yang signifikan, +sering kali ada yang tidak memenuhi +https://golang.org/doc/go1compat[jaminan kompatibilitas Go 1]. +Ian Lance Taylor dan Saya telah melihat proposal-proposal tersebut dan +mengategorikan mereka +(https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Aproposal+label%3AGo2+label%3AGo2Cleanup[Go2Cleanup], +https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Aproposal+label%3AGo2+label%3ANeedsDecision[NeedsDecision], +dan lain-lain) +untuk mendapatkan ide tentang apa saja yang ada di sana dan mempermudah +bekerja dengan mereka nantinya. +Kami juga menggabungkan beberapa proposal yang berkaitan dan menutup proposal +yang jelas-jelas keluar dari skop Go, atau yang tidak bisa diterapkan. + +Ide-ide dari proposal yang tersisa bisa jadi memengaruhi bahasa dan pustaka +dari Go 2. +Dua tema utama muncul: dukungan untuk penanganan error yang lebih baik, dan +generik. +https://blog.golang.org/go2draft[Rancangan draf] +untuk kedua area ini telah diterbitkan pada GopherCon tahun ini, dan lebih +banyak eksplorasi dibutuhkan. + +Lalu bagaimana dengan sisanya? +Kami +https://blog.golang.org/toward-go2[dibatasi] +oleh fakta bahwa kita sekarang punya jutaan pemrogram Go dan sejumlah besar +kode Go, dan kita harus membawa semuanya secara bersamaan, mengurangi risiko +terpecahnya ekosistem. +Ini berarti kita tidak dapat membuat banyak perubahan, dan perubahan yang kita +buat harus dipilih secara hati-hati. +Supaya ada progres, kita mengimplementasikan sebuah proses evaluasi +proposal yang baru untuk potensi perubahan yang signifikan ini. + + +== Proses evaluasi proposal + +Tujuan dari proses evaluasi proposal adalah untuk mengumpulkan umpan balik +pada sejumlah proposal yang terpilih supaya keputusan terakhir dapat dibuat. +Proses tersebut kurang lebih berjalan secara paralel dengan siklus rilis dan +terdiri dari langkah-langkah berikut: + +1. _Pemilihan proposal_. Tim Go memilih sejumlah kecil +https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3AGo2+label%3AProposal[Go +2 proposal] +yang layak diterima, tanpa membuat keputusan akhir. +Lihat bagian bawah untuk kriteria pemilihan. + +2. _Umpan balik proposal_. Tim Go mengumumkan daftar dari proposal yang + terpilih. + Pengumuman ini menjelaskan kepada komunitas niat tentatif untuk maju ke + depan dengan proposal yang terpilih dan mengumpulkan umpan balik untuk + setiap proposal. + Hal ini memberi komunitas kesempatan untuk memberi saran dan + menyatakan kepedulian mereka. + +3. _Implementasi_. Berdasarkan umpan balik, proposal tersebut kemudian + diimplementasikan. + Target dari perubahan signifikan dari bahasa dan pustaka ini yaitu supaya + dapat dikirim di hari 1 pada siklus rilis. + +4. _Umpan balik implementasi_. Selama siklus pengembangan, tim dan komunitas + Go memiliki kesempatan bereksperimen dengan fitur-fitur baru dan + mengumpulkan umpan balik selanjutnya. + +5. _Mengambil keputusan_. Di akhir +https://github.com/golang/go/wiki/Go-Release-Cycle[siklus pengembangan] tiga +bulan (saat repositori dibekukan sebelum rilis), dan berdasarkan pengalaman +dan umpan balik yang diterima selama siklus rilis, tim Go membuat keputusan +terakhir tentang menerbitkan setiap perubahan. +Hal ini menyediakan kesempatan untuk mempertimbangkan apakah perubahan telah +mendapatkan keuntungan yang diharapkan atau menciptakan biaya yang tidak +terduga. +Sekali kita telah merilis, perubahan tersebut menjadi bagian dari bahasa dan +pustaka. +Proposal yang tidak diterima diperbaiki lagi atau mungkin ditolak demi +kebaikan. + +Dengan dua ronde umpan balik, proses ini lebih condong ke penolakan proposal, +yang semoga dapat mencegah fitur yang pincang dan membantu menjaga bahasa +tetap kecil dan bersih. + +Kita tidak dapat menggunakan proses ini untuk setiap proposal Go 2, karena +begitu banyaknya mereka. +Karena itulah kriteria pemilihan digunakan. + + +== Kriteria pemilihan proposal + +Sebuah proposal setidaknya harus: + +1. _membahas isu penting untuk banyak orang_, +2. _memiliki impak yang minim bagi orang lain_, dan +3. _memiliki solusi yang jelas dan mudah dipahami_. + +Kebutuhan 1 menjamin bahwa setiap perubahan yang kita buat membantu sebanyak +mungkin pemrogram Go (membuat kode mereka lebih kuat, mudah ditulis, lebih +tepat, dan seterusnya), sementara kebutuhan 2 menjamin supaya kita +menyakiti sedikit mungkin pengembang lainnya, baik dengan merusak program +mereka atau menyebabkan kesalahan yang lain. +Sebagai aturan praktis, kita harus dapat membantu paling tidak sepuluh kali +pengembang yang kita sakiti dengan sebuah perubahan. +Perubahan yang tidak memengaruhi penggunaan Go di dunia nyata adalah sebuah +keuntungan kosong yang dibayar dengan biaya implementasi yang besar dan +hal ini sebaiknya dihindari. + +Tanpa kebutuhan 3 kita tidak memiliki implementasi dari proposal. +Misalnya, kami percaya bahwa suatu bentuk generik bisa jadi menyelesaikan isu +penting bagi banyak orang, namun kami belum memiliki solusi yang jelas dan +mudah dipahami. +Tidak apa-apa, ini artinya proposal tersebut butuh perbaikan sebelum dapat +dipertimbangkan. + + +== Proposal + +Kami merasakan bahwa rencana ini adalah hal baik yang dapat melayani kita +namun penting juga dipahami bahwa ini hanyalah titik awal. +Saat proses berjalan kita akan menemukan cara-cara yang mana ia gagal bekerja +dengan baik dan kita akan memperbaikinya. +Bagian kritisnya yaitu sampai kita dapat menggunakannya kita tidak akan tahu +bagaimana cara memperbaikinya. + +Bagian yang aman untuk memulai yaitu dengan sejumlah kecil proposal bahasa +yang tetap menjaga kompatibilitas. +Kami sudah lama tidak melakukan perubahan besar pada bahasa dalam waktu lama, +sehingga hal ini membuat kita kembali ke mode tersebut. +Juga, perubahan tersebut tidak membuat kita khawatir tentang merusak kode yang +sudah ada, oleh karena itu membuat mereka sebagai tempat percobaan yang +sempurna. + +Dari semua yang telah kita bahas, kami mengajukan beberapa pilihan berikut +dari proposal Go 2 untuk rilis Go 1.13 (langkah 1 dalam proses evaluasi +proposal): + +1. https://github.com/golang/go/issues/20706[#20706] Identifikasi Unicode + umum berdasarkan + http://unicode.org/reports/tr31/[Unicode TR31]: Isu ini penting bagi + pemrogram Go yang menggunakan alfabet selain latin dan seharusnya memiliki + impak yang sedikit atau tidak sama sekali pada orang lain. + Ada beberapa pertanyaan normalisasi yang perlu kita jawab yang mana umpan + balik dari komunitas diperlukan, namun setelah itu implementasi akan mudah + dilakukan. + Perlu dicatat bahwa aturan pengidentifikasi ekspor tidak akan terpengaruh + oleh hal ini. + +2. https://github.com/golang/go/issues/19308[#19308], + https://github.com/golang/go/issues/28493[#28493] Binary integer + dan dukungan untuk _ pada angka: + Isu ini perubahan yang relatif kecil yang tampaknya sangat populer di + antara banyak pemrogram. + Isu ini mungkin tidak mencapai ambang batas dari menyelesaikan "isu + penting" (bilangan heksadesimal cukup bekerja baik selama ini) namun ia + membawa Go sejajar dengan bahasa pemrograman lain dan menyelesaikan + beberapa masalah bagi beberapa pemrogram. + Isu ini memiliki pengaruh kecil bagi pemrogram lain yang tidak begitu + peduli dengan integer atau format angka, dan implementasi cukup mudah + dipahami. + +3. https://github.com/golang/go/issues/19113[#19113] Membolehkan signed + integer untuk operasi _shift_. + Diperkirakan 38% dari semua operasi _shift_ membutuhkan konversi uint + (lihat halaman isu untuk penjelasan lebih rinci). + Proposal ini akan membersihkan banyak kode, membuat ekspresi _shift_ sama + dengan ekspresi indeks dan fungsi bawaan `cap` dan `len`. + Kemungkinan akan membawa impak yang positif pada kode. + Implementasinya cukup mudah dipahami. + + +== Langkah berikutnya + +Dengan blog ini kita telah mengeksekusi langkah pertama dan memulai langkah +kedua dari proses evaluasi proposal. +Sekarang terserah Anda, komunitas Go, untuk menyediakan umpan balik terhadap +isu-isu yang disebutkan di atas. + +Untuk setiap proposal yang memiliki umpan balik yang jelas, kita akan bergerak +maju dengan implementasi (langkah 3 dari proses). +Karena kita ingin perubahan diimplementasi pada hari pertama dari siklus rilis +selanjutnya (secara tentatif 1 Februari 2019) kita mungkin memulai +implementasi sedikit lebih awal supaya punya waktu sekitar dua bulan untuk +umpan balik (Desember 2019 sampai Januari 2019). + +Untuk siklus pengembangan 3 bulan (Feb. sampai Mei 2019) fitur-fitur yang +terpilih diimplementasikan dan tersedia pada `tip` dan setiap orang akan punya +kesempatan untuk mendapatkan pengalaman dengan fitur tersebut. +Hal ini menyediakan kesempatan lain untuk umpan balik (langkah 4 dari proses). + +Terakhir, setelah repositori dibekukan (1 Mei 2019), tim Go membuat keputusan +terakhir apakah tetap menjaga fitur tersebut (dan mengikutkan mereka dengan +jaminan kompatibilitas Go 1), atau meninggalkan mereka (langkah terakhir dari +proses). + +(Secara ada kesempatan bahwa sebuah fitur bisa jadi dihapus saat kita +membekukan repositori, implementasi haruslah dijaga supaya fitur tersebut +dapat dimatikan tanpa mengganggu keseluruhan sistem. +Untuk perubahan bahasa hal ini berarti bahwa semua kode yang berkaitan dengan +fitur dijaga oleh sebuah flag internal.) + +Ini pertama kalinya kita mengikuti proses ini, oleh karena itu pembekuan +repositori menjadi momen yang baik untuk melihat proses and memperbaiki bila +diperlukan. +Mari kita lihat bagaimana ia berjalan. + +Selamat mengevaluasi! diff --git a/content/blog/index.adoc b/content/blog/index.adoc index 571dd58..dfa1293 100644 --- a/content/blog/index.adoc +++ b/content/blog/index.adoc @@ -21,8 +21,9 @@ November 2019. _Jean de Klerk and Tyler Bui-Palsulich_ -* link:/blog/go1.13-errors[Menggunakan Errors pada Go 1.13], 17 Oktober - 2019, _Damien Niel_ dan _Jonathan Amsterdam_ +* link:/blog/go2-here-we-come[Go 2, kami datang!], + 29 November 2018. + _Robert Griesemer_ * link:/blog/errors-are-values[Error adalah nilai], 12 Januari 2015, _Rob Pike_ |
