Apa peluang Google Go menjadi bahasa umum? [Tutup]

58

Siapa di sini yang belajar Go? Apakah perusahaan lain ingin menggunakannya? Apakah mungkin digunakan secara luas?

interstar
sumber
21
ruby menjadi populer setelah rails, objektif-c setelah iphone, untuk apa afterpergi?
ohho
1
Mengerikan, itu tidak menyelesaikan apa pun bagi kebanyakan orang.
Daniel Little
6
Kemungkinannya antara 0 dan 1. Apa pun yang lebih spesifik akan memerlukan gelar PhD dalam Prognostikasi, yang tidak saya miliki.
Rein Henrichs
1
@Rein Henrichs - Anda akan mendapatkan satu, meskipun panitia akan membutuhkan beberapa perubahan pada tesis akhir
Martin Beckett
3
Google harus benar-benar mempertimbangkan untuk mengembangkan SDK Android untuk bahasa Go. Setidaknya sebagai permulaan.
setzamora

Jawaban:

46

Ketika berbicara tentang bahasa pemrograman, pepatah lama, "bukan siapa Anda, tapi siapa yang Anda kenal" pasti benar. C dan C ++ disponsori oleh AT&T, Java dibawa kepada kami oleh Sun, keluarga .NET keluar dari Microsoft, dan semuanya menjadi sangat populer dengan sangat cepat. Kemudian kita memiliki Objective-C dan Python, yang ada selama beberapa waktu dan tetap benar-benar tidak jelas sampai ditemukan dan dihipnotis oleh Apple dan Google, dan kemudian tiba-tiba mereka benar-benar lepas landas. Tetapi bahasa tanpa sponsor utama cenderung merana dalam ketidakjelasan, tidak peduli seberapa baik mereka.

Go disponsori oleh Google. Tidak sulit untuk sampai pada kesimpulan yang tepat di sini. Berikan lima tahun dan itu akan sangat besar.

Mason Wheeler
sumber
13
@ixtmixilix: Apakah Anda serius? App Engine dan GWT mengatakan sebaliknya.
imgx64
4
@ixtmixilix - Guice (kerangka kerja IoC berbasis Java) ditulis oleh Google dan digunakan di ujung depan AdWords dan Wave. Google seam untuk menggunakan sejumlah bahasa.
mlk
3
+1 Saya setuju dengan argumen utama Anda (FORTRAN, COBOL, dan C hidup dan baik-baik saja), tetapi saya tidak setuju tentang Go, karena itu hanya percobaan yang jauh untuk mendapatkan sponsor perusahaan.
Apalala
2
AT&T tidak benar-benar mendorong C atau C ++. C menjadi populer karena itu adalah bahasa Unix, dan kemudian karena itu lebih baik daripada Pascal untuk program yang lebih besar. C ++ hanya semacam penyebaran, menurut buku Stroustrup "Desain dan Evolusi C ++". Biasanya, bahasa memerlukan aplikasi pembunuh atau sponsor perusahaan besar untuk mencapai sukses besar, tetapi bahasa dapat mencapai sukses besar tanpa itu atau ketinggalan dengan itu.
David Thornley
3
Sudah lima tahun - apa yang Anda pikirkan sekarang?
hippietrail
17

Saya sebenarnya tidak berpikir bahwa Go akan sesukses itu. Alasan mengapa itu tidak akan mencapai massa besar adalah bahwa itu dimaksudkan sebagai bahasa untuk pemrograman sistem.

Jonas
sumber
17
Saya tidak setuju. Lihatlah kode sumber Linux untuk 'echo', lalu lihat penerapan Go dari echo. Jika bahasa dapat mencukur ribuan baris dari perintah sederhana seperti itu, mungkin dapat mencukur garis dari hal-hal seperti perpustakaan pemrosesan grafis. Dan jika itu dapat memotong garis dari pustaka pemrosesan grafik, mungkin orang-orang di perangkat lunak id (misalnya) suatu hari nanti akan merasa lebih berguna daripada C / C ++. Dan karena id memiliki kebiasaan merilis kode sumber untuk gim mereka, grafis 3d di Go bisa jadi sangat besar dalam 5 tahun.
ixtmixilix
14
@ixtmixilix Linux tidak ada hubungannya dengan echo, itu bagian dari GNU.
alternatif
3
apakah Anda pernah melihat sesuatu yang ditulis dalam bahasa erlang? itu bukan dewa yang mengerikan.
The Unix Janitor
2
Saya pikir Go hanya akan melampaui C / C ++ sebagai bahasa sistem jika OS Google lepas landas. Jika OS Google tidak lepas landas, saya pikir itu akan memiliki waktu yang jauh lebih sulit mengenai arus utama.
Jordan Parmer
2
Lebih tepatnya saya pikir Go akan tumbuh sangat cepat. Alasan saya: 1. Sintaksnya sangat aneh 2. Terlalu banyak Limbo 3. Perpustakaan tidak lengkap 4. Model concurrency lebih baik di Erlang
Daniel Voina
15

Ada kebutuhan nyata untuk bahasa sistem dengan fitur yang lebih modern. C dan C ++ terlalu terikat oleh kode lama dan kompatibilitas di sini untuk meningkatkan banyak. Yang mengatakan, saya tidak berpikir Go memenuhi peran itu dalam bentuknya saat ini. Desainnya terlalu minimalis. Walaupun model konkurensi-nya menarik, ia menghadirkan beberapa fitur lain dari bahasa tingkat yang lebih tinggi ke dunia sistem. (Terakhir kali saya mengecek, yang memang diakui beberapa waktu lalu, bahkan tidak ada pengecualian.) Lebih jauh, setidaknya sejauh bahwa Bahasa Komputer Benchmark Game adalah ukuran yang baik (ini diakui sebagai indikator yang sangat kasar), itu bukan hampir secepat bahasa sistem "nyata".

Saya pikir bahasa dengan kesempatan terbaik untuk mengisi kekosongan bahasa sistem yang lebih modern adalah D . D secara teknis jauh lebih kuat daripada Go tetapi secara politis lebih lemah. Itu tidak didukung oleh perusahaan besar. Yang benar-benar dibutuhkan adalah beberapa perpustakaan (ini sedang ditangani dengan cepat sekarang karena spesifikasi bahasa stabil) dan aplikasi pembunuh.

dsimcha
sumber
7
re "bahkan tidak memiliki pengecualian" Ini adalah keputusan besar yang dibuat - golang.org/doc/go_faq.html
user151019
1
@ Mark: Menarik. Panik dan pulih terlihat seperti pengecualian yang cacat. D memiliki pernyataan lingkup, yang kira-kira setara dengan defer (), tetapi dengan pengecualian normal.
dsimcha
3
Itu tidak memiliki pengecualian, tetapi tidak membutuhkannya. Sebagai gantinya, ini memungkinkan beberapa nilai pengembalian, menjadikannya foo, err := SomeFunc()biasa. Untuk masalah besar, atau tempat di mana kesalahan tidak bekerja dengan baik, Anda dapat menggunakan panic()dan recover(). Namun, ini sengaja digunakan sangat jarang; tidak ada cara untuk melewatkan pengecualian jika tumpukan sangat pendek, dan tumpukan pendek adalah hal biasa di mana ada banyak utas bersamaan.
crazy2be
3
"D secara teknis jauh lebih kuat daripada Go", "Desainnya terlalu minimalis". Menarik bagaimana Anda mengatakan ini seperti itu fakta. Itu hanya pendapat Anda, hadapi saja.
Moshe Revah
10

Saya belajar Go dan ya, digunakan secara produktif selain Google dan Heroku.

Go jelas merupakan bahasa yang bagus untuk Pemrograman Sistem. Kode sederhana seperti di C, struktur yang kuat seperti di C ++ dan fitur keamanan seperti di Jawa. Karena ini adalah bahasa yang sangat muda, banyak hal baik dari bahasa lain yang telah diwarisi:

  • iterasi pada rentang
  • Saluran (lupakan mutex dll.)
  • tidak ada tipe hierarki, hanya pewarisan antarmuka
  • pada kenyataannya Go bahkan tidak tahu kelas tetapi "Jenis" yang lebih fleksibel: antarmuka secara otomatis diwarisi ketika metode yang didefinisikan cocok
  • less boilerplate: i := 1bukannya int i = 1, func f(x, y, z int)bukannya void f(int x, int y, int z), type Foo struct { a, b int }; bar := Foo{1, 2}bukannyaclass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
  • pengecualian ("panik") hanya untuk kasus yang benar-benar luar biasa: dalam kasus lain fungsi rawan kesalahan dapat mengembalikan parameter kesalahan tambahan yang dapat Anda abaikan dengan mudah

Mempertimbangkan semua hal-hal baik ini dan keselamatan serta kinerja yang hanya diketahui dari bahasa yang diketik secara statis, banyak orang dari komunitas bahasa dinamis mulai menyukai Go. Dalam kebanyakan kasus, Go-code tidak lebih lama dari Ruby-code, tetapi dalam setiap kasus lebih aman dan terstruktur lebih baik.

Tetapi pada akhirnya saya kira argumen pembunuh untuk Go adalah konkurensi. Ini adalah bahasa mirip-C yang memiliki dukungan konkurensi kuat yang hanya diketahui dari bahasa fungsional.

Philip
sumber
2
Saya baru-baru ini jatuh cinta pada Go sambil mempelajarinya untuk pemrograman AppEngine, dan saya tidak bisa mengatakannya lebih baik daripada Anda. Sudah selesai dilakukan dengan baik.
Adam Crossland
5

Saya akan mengatakan bahwa ini terutama tergantung pada perpustakaan / layanan / perangkat lunak yang akan dibuat di / untuk / menggunakan Go. Orang menggunakan sesuatu dalam tiga situasi (urutan masalah): ketika mereka praktis tidak memiliki pilihan lain (Objective-C), ketika lingkungan mereka menggunakannya (FORTRAN), ketika itu membuat hidup mereka lebih mudah (Ruby).

mbq
sumber
5

Mungkin agak terlambat untuk ini, tetapi Go menjadi bahasa populer sekarang dan kemungkinan akan masuk ke arus utama dengan Google mendorongnya ke depan. Ini sedang didorong sebagai bahasa yang digunakan untuk sistem dan produk dalam Google dan sedang didorong sebagai bahasa untuk digunakan dengan Google App Engine. Ada beberapa orang yang sangat tajam di backend Go building dan meningkatkannya. Ada beberapa orang yang sangat pintar dan imajinatif yang bekerja di perpustakaan pihak ketiga untuk Go.

Go mengisi kekosongan yang belum diisi oleh bahasa lain. Bagi saya, saya dulu mencoba mengisi kekosongan itu dengan Perl dan banyak solusi dan trik. Saya tidak percaya itu adalah bahasa yang sempurna untuk semua situasi dan semua orang, tetapi tentu saja itu adalah kandidat untuk sejumlah besar situasi. Sebagai contoh, ini berfungsi baik untuk aplikasi web sementara juga berfungsi baik untuk aplikasi desktop atau aplikasi berbasis server. Itu melakukan pekerjaan yang fantastis dengan HTTP dan WebSocket (yang berarti Anda dapat melewati Apache atau nginx sama sekali) sementara juga berjalan dengan sangat baik di Windows, Linux, dan OS X untuk kedua daemon dan untuk aplikasi desktop biasa. Saat ini satu-satunya situasi yang gagal bagi saya adalah untuk aplikasi Android, yang saya harap segera diperbaiki. Saya menggunakannya untuk aplikasi desktop Windows, aplikasi desktop Linux, dan aplikasi web berbasis Linux.

Saya percaya itu akan beberapa tahun sebelum benar-benar menyentuh arus utama, tetapi akan sampai di sana. Saya pikir itu perlu untuk mendapatkan lebih banyak perpustakaan pihak ketiga dibangun, seperti jenis nomor dan pilihan yang dimiliki Perl dengan CPAN. Itu akan sampai di sana.

Emmaly Wilson
sumber
3

Apa artinya "arus utama"? Tanpa mengetahui itu, sangat sulit untuk menjawab pertanyaan ini. Mari kita lihat sedikit itu.

Ada banyak definisi yang mungkin. Berikut ini beberapa di antaranya:

Pandangan manajemen:

  • Minta pelanggan meminta Anda menggunakannya
  • Minta manajemen meminta Anda menggunakannya
  • Tidak akan dikritik oleh manajemen karena menggunakannya

Pandangan pengembang:

  • Alat bahasa umumnya tersedia (misalnya, dalam distribusi Linux)
  • Alat bahasa akan tersedia secara umum selama 10 tahun
  • Membuat artefak perangkat lunak yang akan bertahan dan digunakan setidaknya selama 10 tahun

Pandangan karir:

  • Keterampilan khusus bahasa dapat ditransfer ke pekerjaan lain
    • Perekrut memintanya

Mengingat semua hal di atas, saya berpendapat bahwa satu-satunya jawaban yang jujur ​​mungkin "terlalu dini untuk mengatakan" tapi saya percaya indikator terbaik dari umur panjang yang nyata adalah jumlah kecilbisnis yang menggunakan bahasa. Organisasi besar semuanya sangat baik - mereka bahkan mungkin penting untuk pertumbuhan bahasa atau sistem alat karena skala investasi yang dapat mereka terapkan - tetapi mereka agak rentan terhadap mode pakaian (dengan beberapa pengecualian). Sebaliknya, jika sebuah bisnis kecil membangun dirinya menggunakan bahasa untuk mengirimkan produk dan layanan, mereka sangat mungkin ingin berkontribusi untuk memastikan bahwa mereka masih akan dapat melakukannya di masa depan. Mereka juga membentuk landasan pasar kerja yang kuat di daerah tersebut, dan permintaan akan alat juga. Lucunya, itu adalah beberapa indikator pengarusutamaan dalam daftar saya (mungkin lebih, tergantung pada keinginan manajemen).

Jadi, berapa banyak orang di luar Google yang menggunakan Go untuk pekerjaan mereka? Saya tidak punya ide. (Saya tidak. Kebutuhan saya saat ini dilayani dengan baik oleh campuran Java, C dan Tcl. YMMV.)

Donal Fellows
sumber
Ringkasan hebat tentang apa artinya "arus utama". Saya pikir Go memiliki semua ini, kecuali untuk "permintaan pelanggan Anda menggunakannya."
Wildcard
2

Ini sudah lebih populer daripada beberapa bahasa.

Ada kemungkinan, bahwa Go adalah bahasa yang paling penting dalam 20+ tahun. Ini benar-benar menghadirkan beberapa manfaat besar dalam hal kumpulan data besar, yang situs media sosial, komputasi awan, Pencarian dan Seluler hadir.

Situs-situs seperti Facebook, Twitter, Linkedin, YouTube dan jaringan Penyajian Iklan memiliki lebih banyak kegunaan untuk Google Go daripada Ruby On Rails, setidaknya dalam beberapa konteks.

mrhassell
sumber
1

Saya melihat ke dalam Go ketika saya mendengarnya. Sebagai seorang pemula yang lengkap saya masih belajar bahasa-bahasa pemula (dalam kasus saya Java, C #, Python dan Skema) yang banyak untuk diterima, tetapi jika saya tidak asyik dengan begitu banyak bahasa yang berbeda saya akan dengan serius mempertimbangkannya

Saya pikir pada tingkat saya, tidak ada salahnya mendapatkan dasar-dasar sebelum melompat naik kereta musik. Meskipun, jika saya ingat benar, ketika saya mencari Go, saya menjadi sangat tertarik pada Erlang untuk beberapa alasan.

SnowMonkey
sumber
1

Saya baru saja melihat Go karena pertanyaan ini jadi saya tidak bisa mengomentari apakah itu akan menjadi bahasa utama, tetapi satu hal yang membuat saya sangat bersemangat:

http://golang.org/doc/go_spec.html#Channel_types

Saya pertama kali menemukan konsep Channels di Occam-pi dan saya harus mengatakan itu adalah salah satu konsep pemrograman terbaik yang pernah ada . Itu membuat konkurensi tampak begitu mudah di mana melakukan hal yang sama dalam bahasa tipe-C terkadang bisa menyebalkan.

Dari apa yang saya lihat (dalam 10 menit saya telah melihat), Go terlihat mencoba untuk menggabungkan banyak konsep pemrograman yang berbeda, tetapi itu memang berisiko menjadi Jack dari semua perdagangan, master tidak ada.

Richard
sumber
0

Saya menduga bahwa apakah itu menjadi mainstream akan tergantung pada apakah Google mengadopsinya sebagai bahasa yang didukung untuk appengine dan / atau GWT.

Chris Buckett
sumber
2
Bagaimana bahasa sistem berguna untuk Google App Engine?
ixtmixilix
Saya akan mengatakan itu hanya karena itu adalah bahasa sistem yang dikompilasi ke kode mesin saat ini tidak akan menghentikan Google dari menargetkan platform lain di masa depan. Lihat saja apa yang telah mereka lakukan dengan kompilasi java ke JavaScript dalam kasus GWT dan mengatur dalvik vm untuk android. Begitupun Facebook mengkompilasi PHP. Saya bisa membayangkan output Go yang dapat diinstal ke appengine di suatu tempat di masa depan.
Chris Buckett
+1 - yang penting itu berguna untuk sesuatu. Lihat saja apa yang dilakukan iPhone untuk Objective-C.
3
Nah itu baru saja terjadi . Sekarang mari kita lihat apakah itu lepas landas ...
Elad
3
Sebagai catatan, saat ini saya sedang mengembangkan aplikasi web yang besar dan ambisius di runtime AppEngine Go. Go sangat produktif dan cepat. Kode ini sangat mudah dibaca. Bahasa yang sangat bagus.
Adam Crossland
0

Saya berharap Go akan menjadi populer.

Sangat kuat dalam sintaksis. (Pelajari keuntungan dari python, C, Java). Ini bagus untuk CPU multi-core. (Fungsi saluran jauh lebih baik daripada pemrograman thread). Desain mencegah banyak perangkap programmer. (penunjuk yang salah, gaya pengkodean yang sama dengan alat gofmt, mencegah variabel uninitialized bug, Pada awalnya, saya mencobanya pada saat pertama karena python + C tetapi dengan kecepatan mendekati 1/2 kecepatan C.

Tetapi, setelah mempelajari secara mendalam, saya menemukan bahwa mungkin cocok untuk mengembangkan toleransi kesalahan dan arsitektur yang dapat diskalakan

Daniel YC Lin
sumber