Google’ın Go’nun ana dil olma şansı nedir? [kapalı]


58

Burada kim Go Go öğreniyor? Başka şirketler bunu kullanmayı düşünüyor mu? Yaygın olarak kullanılması muhtemel midir?


21
Yakut rayları sonra popüler olur, iphone sonra objektif-c, aftergitmek için nedir?
ohho

1
Korkunç, çoğu insan için hiçbir şeyi çözmez.
Daniel Little

6
Şanslar 0 ile 1 arasındadır. Daha spesifik olan herhangi bir şey Prognostikte sahip olmadığım bir doktora gerektirir.
Rein Henrichs

1
@Rein Henrichs - Komite bitirme tezinde birkaç değişiklik gerektirmesine rağmen bir tane alacaksınız
Martin Beckett

3
Google, Go dili için bir Android SDK geliştirmeyi düşünmelidir. En azından başlangıç ​​olarak.
setzamora

Yanıtlar:


46

Programlama dilleri söz konusu olduğunda, eski atasözü, "o kim değil, o kim olduğunu biliyor" kesinlikle geçerlidir. C ve C ++ AT&T tarafından desteklendi, Java bize Sun tarafından getirildi, .NET ailesi Microsoft'tan çıktı ve hepsi çok hızlı bir şekilde popüler oldu. Sonra, bir süredir etrafta olan ve sırasıyla Apple ve Google tarafından keşfedilene ve hipnotize edilinceye kadar gerçekten belirsiz olan Objective-C ve Python'umuz var ve sonra aniden ayrıldılar. Ancak büyük bir sponsoru olmayan diller ne kadar iyi olursa olsun, gizlilik içinde zayıflama eğilimindedir.

Go, Google tarafından desteklenmektedir. Burada doğru sonuca varmak zor değil. Beş yıl verin ve çok büyük olacak.


13
@ixtmixilix: Ciddi misin? App Engine ve GWT başka türlü söyler.
imgx64

4
@ixtmixilix - Guice (Java tabanlı bir IoC çerçevesi) Google tarafından yazılmıştır ve AdWords’ün ön yüzünde ve Wave’de kullanılmaktadır. Google birkaç dil kullanmak için dikiş.
mlk

3
+1 Ana argümanınıza katılıyorum (FORTRAN, COBOL ve C canlı ve iyiler), ancak Go'ya katılmıyorum, çünkü bu sadece kurumsal sponsorluğa sahip olmaktan uzak bir deney.
Apalala

2
AT & T gerçekten C veya C ++ 'a basmadı. C popüler oldu çünkü Unix'in diliydi ve daha sonra daha büyük programlar için Pascal'dan daha iyiydi. C ++, Stroustrup'un "C ++ 'ın Tasarımı ve Evrimi" adlı kitabına göre, sadece bir çeşit yayılma göstermiştir. Tipik olarak, diller büyük bir isabet almak için bir katil uygulamasına veya büyük bir kurumsal sponsorluğa ihtiyaç duyar, ancak diller bu olmadan büyük isabet edebilir veya özlüyor olabilir.
David Thornley

3
Beş yıl oldu - şimdi ne düşünüyorsun?
hippietrail

17

Aslında Go'nun bu kadar başarılı olacağını düşünmüyorum. Büyük kitlelere ulaşmamasının bir nedeni, sistem programlaması için bir dil olması gerektiğidir .


17
Katılmıyorum. 'Echo' için Linux kaynak koduna bakın, sonra Goho'nun eko uygulamasına bir göz atın. Dil bunun gibi basit bir komuttan binlerce satırı tıraş edebiliyorsa, muhtemelen grafik işleme kitaplıkları gibi şeylerden satırları tıraş edebilir. Grafik işleme kitaplıklarındaki satırları tıraş edebiliyorsa, belki de ID yazılımındaki insanlar (örneğin) bir gün C / C ++ 'dan daha yararlı bulurlar. Ve kimliği oyunları için kaynak kodu yayınlama alışkanlığına sahip olduğundan, Go'daki 3d grafikler 5 yıl içinde çok büyük olabilir.
ixtmixilix

14
@ixtmixilix Linux'un GNU'nun bir parçası olan yankı ile ilgisi yok.
alternatif

3
Hiç Erlang'da yazılmış bir şey gördün mü? bu Tanrı korkunç değil.
Unix Kapıcısı

2
Go'nun C / C ++ 'ı bir sistem dili olarak geçebileceğini düşünüyorum. Google’ın işletim sistemi kalkmazsa, ana akıma vuran çok daha zor zamanlar geçireceğini düşünüyorum.
Jordan Parmer,

2
Neiter ben Go çok hızlı büyüyecek diye thik. Sebeplerim: 1. Sözdizimi oldukça garip 2. Çok fazla Limbo 3. Kütüphane ayrıntılı değil 4. Eşzamanlılık modeli
Erlang'da

15

Daha modern özelliklere sahip bir sistem diline gerçek bir ihtiyaç var. C ve C ++, eski kodlarla çok sınırlıdır ve daha fazlasını geliştirmek için geriye dönük uyumluluktur. Bununla birlikte, Go'nun bu rolü şu an yerine getirdiğini sanmıyorum. Tasarımı çok minimalist. Eşzamanlılık modeli heyecan verici olsa da, üst seviye dillerden sistem dünyasına birkaç başka özellik getiriyor. (En son kontrol ettiğimde, bir süre önce kuşkusuz ki, istisnalar bile yoktu.) Ayrıca, en azından, Bilgisayar Dili Kıyaslama Oyunu'nun iyi bir önlem olduğu ölçüde (şüphesiz çok kaba bir gösterge), öyle değil. neredeyse bir "gerçek" sistem dili olması gerektiği kadar hızlı.

Ben daha modern bir sistem dilinin boşluğunu doldurmak için en iyi şansı olan dilin D olduğunu düşünüyorum . D teknik olarak Go'dan çok daha güçlü fakat politik olarak daha zayıf. Büyük bir şirket tarafından desteklenmiyor. Gerçekte ihtiyaç duyduğu şey bazı kütüphaneler (bu, dilin belirlediği özelliklerde sabit bir şekilde ele alındığı) ve bir katil uygulama.


7
"İstisnalar bile yoktu" önemli bir karar verildi - golang.org/doc/go_faq.html
user151019

1
@Mark: İlginç. Panik ve toparlanma sakatlanmış istisnalar gibi görünüyor. D, defer () 'e kabaca eşdeğer ancak normal istisnalar dışında kapsam ifadelerine sahiptir.
dsimcha

3
İstisnaları yoktur, ancak bunlara ihtiyacı yoktur. Bunun yerine, foo, err := SomeFunc()normal hale getirerek, çoklu dönüş değerlerine izin verir . Başlıca konular veya hataların çok iyi çalışmadığı noktalar için, panic()ve kullanabilirsiniz recover(). Bununla birlikte, bunlar kasıtlı olarak çok nadir kullanılmaktadır; istif çok kısa ise istisnaları istifleme yolundan geçmenin bir yolu yoktur ve çok sayıda eşzamanlı iş parçacığının olduğu yerlerde kısa istifler yaygındır.
crazy2be

3
"D teknik olarak Go'dan çok daha güçlü", "Tasarımı çok minimalist". Bunu nasıl söylediğin ilginç. Bu sadece senin fikrin, yüzleş.
Moshe Revah

10

Go öğreniyorum ve evet, Google ve Heroku’nun yanı sıra üretken olarak kullanılıyor.

Go kesinlikle Sistem Programlama için güzel bir dildir. C'deki gibi basit kod, C ++'daki gibi güçlü yapılar ve Java'daki güvenlik özellikleri. Çok genç bir dil olduğu için diğer dillerden bir çok güzel şey miras kalmıştır:

  • aralıklardaki yineleme
  • Kanallar (mutekseleri unut vb.)
  • tür hiyerarşisi yok, sadece arayüz devralma
  • Aslında Go sınıfları tanımıyor ama daha esnek "Türler" bile bilmiyor: tanımlı yöntemler eşleştiğinde arayüzler otomatik olarak miras alınır
  • daha az klişe: i := 1yerine int i = 1, func f(x, y, z int)yerine void f(int x, int y, int z), type Foo struct { a, b int }; bar := Foo{1, 2}yerineclass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
  • istisnalar ("panik") sadece gerçekten istisnai durumlar için: diğer durumlarda hataya açık fonksiyon, kolayca göz ardı edebileceğiniz ekstra bir hata parametresi döndürür

Tüm bu güzel şeyleri ve sadece statik olarak yazılmış dillerden bilinen güvenlik ve performansı göz önüne alarak, dinamik diller topluluğundan birçok insan Go'dan hoşlanmaya başladı. Çoğu durumda Go-kodu Ruby kodundan çok daha uzun olmamakla birlikte her durumda daha güvenli ve daha iyi yapılandırılmıştır.

Ama sonunda Go'nun katil argümanının eşzamanlılık olduğunu tahmin ediyorum. Yalnızca işlevsel dillerden bilinen güçlü eşzamanlılık desteğine sahip C benzeri bir dildir.


2
Son zamanlarda AppEngine programlaması için öğrenirken Go'ya aşık oldum ve sizden daha iyisini söyleyemezdim. Aferin.
Adam Crossland

5

Bunun esas olarak Go'da kullanılacak / kullanılacak kütüphanelere / hizmetlere / yazılıma bağlı olduğunu söyleyebilirim. İnsanlar üç durumda bir şey kullanırlar (sipariş önemlidir): pratikte başka seçenekleri olmadığı zaman (Amaç-C), çevreleri onu kullandığında (FORTRAN), yaşamlarını kolaylaştırdığı zaman (Ruby).


5

Bunun için biraz geç olabilir, ancak Go şu anda popüler bir dil haline geliyor ve Google’ı ileri sürerek ana akıma girecek. Google’daki sistemler ve ürünler için kullanılan bir dil olarak itiliyor ve Google App Engine ile kullanmak için bir dil olarak itiliyor. Go binasının arka tarafında çok keskin insanlar var ve onu geliştiriyorlar. Go için üçüncü taraf kütüphanelerinde çalışan çok zeki ve yaratıcı insanlar var.

Go, diğer dillerin tam doldurmadığı bir boşluğu dolduruyor. Benim için, bu boşluğu Perl ve bir sürü geçici çözüm ve püf noktası ile doldurmaya çalışırdım. Bunun tüm durumlar ve tüm insanlar için mükemmel bir dil olduğuna inanmıyorum, ancak kesinlikle çok sayıda durum için aday. Örneğin, masaüstü uygulamaları veya sunucu tabanlı uygulamalar için harika çalışırken, web uygulamaları için harika çalışıyor. HTTP ve WebSocket ile harika bir iş çıkarıyor (hem Apache'yi hem de nginx'i tamamen atlayabilirsiniz). Ayrıca Windows, Linux ve OS X'te hem servis hem de normal masaüstü uygulamaları için çok iyi çalışıyor. Şu an benim için başarısız olan tek durum Android uygulamaları için, umarım yakında düzeltilebilir. Windows masaüstü uygulamaları, Linux masaüstü uygulamaları ve Linux tabanlı web uygulamaları için kullanıyorum.

Ana akıma girmeden birkaç yıl olacağına inanıyorum, ama oraya varacak. Perl'in CPAN'da sahip olduğu sayı ve seçim gibi, daha çok sayıda üçüncü taraf kütüphanesi kurması gerektiğini düşünüyorum. Oraya gelecek.


3

“Ana akım” ne anlama geliyor? Bunu bilmeden, bu soruya cevap vermek çok zor. Şuna biraz bakalım.

Pek çok olası tanım var. Burda biraz var:

Yönetim görünümü:

  • Sizden talep eden müşterilerin kullanmasını isteyin
  • Kullanmanızı isteyen bir yönetim var mı
  • Yönetim tarafından kullanılması nedeniyle eleştirilmeyecek

Geliştiricilerin görüşü:

  • Yaygın olarak bulunan dil araçları (örneğin, Linux dağıtımlarında)
  • Dil araçları 10 yıl boyunca yaygın olacak
  • En az 10 yıl boyunca devam edecek ve kullanılacak yazılım eserlerini yaratır

Kariyer görüşü:

  • Dile özgü beceriler diğer işlere aktarılabilir
    • İşverenler bunun için ister

Yukarıdakilerin hepsine bakıldığında, tek dürüst cevabın muhtemelen “söylemek için çok erken” olduğunu iddia ediyorum, ancak herhangi bir gerçek ömrün en iyi göstergesinin küçüklerin sayısı olduğuna inanıyorum.dili kullanan işletmeler. Büyük organizasyonlar çok iyi durumdalar - uygulayabilecekleri yatırım ölçeği nedeniyle bir dilin veya araç sisteminin büyümesi için bile gerekli olabilirler - ancak modası geçmeye eğilimli (birkaç istisna dışında). Buna karşılık, küçük bir işletme, ürünü ve hizmetleri sunmak için dili kullanma konusunda kendini geliştirmişse, gelecekte de bunu yapabilmelerini sağlamak için katkıda bulunmaları çok muhtemeldir. Ayrıca, bölgede güçlü bir iş piyasasının temel taşını oluşturuyor ve alet talep ediyorlar. İlginçtir ki, bunlar listemdeki ana akımlık göstergeleridir (muhtemelen yönetimin kaprislerine bağlı olarak).

Peki, Google’ın dışındaki kaç kişi Go’yu işlerinde kullanıyor? Hiç bir fikrim yok. (Ben değilim. İhtiyaçlarım şu anda Java, C ve Tcl. YMMV karışımıyla iyi bir şekilde karşılanmaktadır.)


“Yaygın” ın ne anlama geldiğinin büyük özeti. Go'nun “müşterilerin onu kullanmanı talep etmesi” dışında tüm bunlara sahip olduğunu düşünüyorum.
Wildcard

2

Zaten bazı dillerden daha popüler.

Muhtemelen, Go 20+ yıl içinde en önemli dildir. Sosyal medya sitelerinin, bulut bilişimin, Arama ve Mobil'in sunduğu büyük veri kümeleri açısından gerçekten büyük faydalar sağlıyor.

Facebook, Twitter, Linkedin, YouTube ve Ad-Serving ağları gibi siteler Google Go için en az bazı bağlamlarda Ruby On Rails'ten çok daha fazla yararlanıyor.


1

Bunu duyduğumda Go'ya baktım. Tam bir acemi olarak, hala benim için çok fazla olan acemi dilleri öğreniyorum (benim durumumda Java, C #, Python ve Scheme), fakat çok fazla farklı dilde yer almasaydım, bunu ciddiye alabilirdim.

Benim seviyeme geldiğinde, bant vagonlarına atlanmadan önce temelleri azaltmanın bir zararı olmadığını düşünüyorum. Olsa da, doğru hatırlıyorsam, yukarıdan bakarken Go, bir nedenden ötürü Erlang'ı çok etkilemiştim.


1

Go'ya sadece bu soru yüzünden baktım, bu yüzden anadil olarak geçip geçmeyeceği konusunda gerçekten bir yorum yapamam, ancak bir şey beni gerçekten heyecanlandırdı:

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

İlk olarak Occam-pi'daki Kanallar kavramına rastladım ve bunun şimdiye kadarki en iyi programlama kavramlarından biri olduğunu söylemeliyim . Eşzamanlılığın çok kolay görünmesini sağlar, aynı şeyi C tipi bir dilde yapmak bazen acı verici olabilir.

Gördüklerime göre (baktım 10 dakika içinde), Go birçok farklı programlama kavramını bir araya getirmeye çalışıyor gibi görünüyor, ancak bunun hiçbirinin ustası olmadığına dair tüm esnafların Jack'i olma riski taşıyor.


0

Ana akım haline gelip gelmeyeceğinin Google’ın appengine ve / veya GWT için desteklenen bir dil olarak benimsemesine bağlı olup olmayacağından şüpheleniyorum.


2
Bir sistem dili Google App Engine için nasıl faydalı olabilir?
ixtmixilix

Ben sadece şu anda makine koduna derlenmiş bir sistem dili olduğu için Google’ın gelecekteki diğer platformları hedeflemesini engellemeyeceğini söyleyebilirim. GWT durumunda java-JavaScript'i derleyerek ve android için dalvik vm etiketini tattıktan sonra neler yaptıklarına bir bakın. Aynı şekilde Facebook PHP derleme. Gelecekteki bir yerde appengine'e yerleştirilebilecek bir Go çıktısı öngörebilirdim.
Chris Buckett

+1 - önemli olan şey, bir şey için faydalı olması. Sadece iPhone'un Objective-C için neler yaptığına bir bakın.

3
Peki bu yeni oldu . Şimdi bakalım
kaçar mı

3
Kayıt için şu anda AppEngine Go çalışma zamanında büyük ve iddialı bir web uygulaması geliştiriyorum. Go muazzam üretken ve hızlı. Kod çok okunaklı. Harika bir dil.
Adam Crossland

0

Keşke Go popüler olacaksa.

Sözdiziminde güçlü. (Python, C, Java'nın avantajlarını öğrenin). Çok çekirdekli işlemci için iyidir. (Kanal, iplik programlamasından çok daha iyi çalışır). Tasarım birçok programcının tuzağını engelliyor. (yanlış işaretçi, aynı gofmt aracıyla aynı kodlama stili, değişken başlatılmamış hatayı önler, İlk seferde ilk kez python + C olduğundan, ancak 1/2 C hızına yakın bir zamanda denedim.

Ancak, derinlemesine öğrendikten sonra hata toleransı ve ölçeklenebilir mimari geliştirmenin uygun olabileceğini öğrendim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.