Go neden en sevdiğim dil?

Yukarı tıklayın " CSDN "," En İyi Resmi Hesap "ı seçin

Kritik anda teslim edin!

Yazar Michael Stapelberg

Tercüme Vincent

Çevirmenin Notu: Günümüzde çeşitli geliştirme dilleri vardır ve her dilin kendine göre avantajları ve dezavantajları vardır.Bu yazıda yazar, Go dilinin avantajlarını ve neden favori haline geldiğinin nedenlerini tanıtmaktadır. Aşağıdaki tercümedir.

Herkesin kişisel tercihlerine saygı göstermeye çalışıyorum, bu yüzden genellikle en iyi programlama dili, metin editörü veya işletim sistemi nedir gibi konular hakkındaki tartışmalara katılmıyorum. Bununla birlikte, son zamanlarda birçok kişi bana neden Go dilini kullanmayı sevdiğimi sordu, bu yüzden işte geçici kişisel sonsuzluğumu doldurmak için tutarlı bir makale.

Arka plan tanıtımı

Bazı büyük projeleri tamamlamak için C dili ve Perl dilini kullandım. Python, Ruby, C ++, CHICKEN Scheme, Emacs Lisp, Rust ve Java kullandım (sadece Android'i geliştirmek için kullanılır). Ayrıca biraz Haskell, PHP, Erlang ve Lua biliyorum. Daha önce bazı programlar geliştirmek için Delphi'yi kullanmıştım.

Go dili 2009'da ilk çıktığında biraz dikkat ettim. Gerçek kullanım başlangıcı, 2012'de sürüm 1.0'ın piyasaya sürüldüğü zamandı. Sürüm 1.0'ın ana özelliği Go-1 uyumluluk garantisidir. 2012'de yazdığım üretim ortamında hala bazı kodlar var ve birçoğu değiştirilmedi.

1. Açıklık

biçim

Kural olarak, Go kodu gofmt aracı kullanılarak biçimlendirilebilir. Kodun programlı olarak biçimlendirilmesi yeni bir kavram değildir, ancak öncekinden farklı olan gofmt'nin standartlaştırılmış bir stili desteklemesidir.

Tüm kodu aynı şekilde biçimlendirmek, kodu okumayı kolaylaştırır; ayrıca daha tanıdık görünür. Bu sadece standart kitaplığı veya Go dil derleyicisini okumak için yararlı olmakla kalmaz, aynı zamanda birçok kod tabanıyla uğraşırken birçok faydaya sahiptir - Açık Kaynak veya diğer büyük şirketler hakkında düşünün.

Ek olarak, kod inceleme süreci sırasında otomatik biçimlendirme de çok zaman kazandırabilir, çünkü önceki kod incelemesinin boyutlarını ortadan kaldırır: şimdi yalnızca sürekli entegrasyon sisteminin gofmt'nin bir fark yaratmadığını doğrulamasına izin vermek gerekir.

İlginç bir şekilde, düzenleyici dosyayı kaydederken gofmt kullandığından, bu aynı zamanda kod yazma şeklinizi de değiştirir. Kodda hataları bulabilen bazı biçimlendirme araçları bulmaya çalıştım. Ve şimdi fikirlerimi hızlı bir şekilde koda dönüştürebiliyorum, çünkü gofmt kodu çok güzel yapacak (örneğin, girdiğim içeriği biçimlendirmek için Biçimlendir'i tıklayın).

Yüksek kaliteli kod

Aşağıda gösterildiği gibi oldukça fazla standart kitaplık (dokümantasyon, kaynak kodu) kullandım.

Şimdiye kadar okuduğum standart kütüphane kodunun kalitesi çok yüksek.

Örneğin, resim / jpeg paketi: JPEG'in nasıl çalıştığını bilmiyorum, ancak Wikipedia JPEG makalesine ve resim / jpeg koduna bakarak anlaşılması kolay. Bu pakette daha fazla yorum varsa, onu öğretmenin en iyi örneği olarak kullanabilirim.

Görünüm

Go dili topluluğunun birçok görüşüne çok katılıyorum, örneğin:

  • Değişken adı varsayılan olarak daha kısa olmalıdır ve ad kullanıldığında daha açıklayıcı hale gelir.

  • Bağımlılık ağacını küçük tutun (makul ölçüde): Az miktarda çoğaltma, küçük bir bağımlılıktan daha iyidir.

  • Soyutlama katmanının tanıtılmasının bir bedeli vardır. Go kodu, tekrarlama pahasına genellikle oldukça açıktır.

  • CodeReviewComments ve Go Atasözlerine bakın.

Az sayıda anahtar kelime ve soyutlama katmanı

Go dil spesifikasyonu yalnızca 25 anahtar kelimeyi listeler ve bu anahtar kelimeleri kolayca hatırlayabilirim.

Aynısı yerleşik işlevler ve türler için de geçerlidir.

Deneyimlerime göre, az sayıda soyutlama katmanı ve kavramı, dilin anlaşılmasını kolaylaştırabilir ve yeni gelenler daha hızlı başlayabilir.

Bundan bahsetmişken, Go spesifikasyonunun okunabilirliği beni şaşırttı. Programcıları hedef alıyor gibi görünüyor (standartlar komitesi değil mi?).

2. Hız

Hızlı geri bildirim / düşük gecikme

Hızlı geri bildirimi severim: Hızlı yüklenen web sitelerini ve sorunsuz kullanıcı arayüzlerini severim. Ne zaman, güçlü araçlara kıyasla daha hızlı araçlar seçmeyi tercih ederim. Büyük web mülklerinin keşfi, birçok insanın böyle düşündüğünü doğruluyor.

Go derleyicisinin yazarları, düşük gecikme isteğime saygı duyuyorlar: derleme hızı onlar için çok önemli ve yeni optimizasyonlar yapıldığında derleme hızını yavaşlatıp yavaşlatmayacağı, dikkate alınması gereken bir aralık haline geldi.

Bir arkadaşım daha önce hiç Go dilini kullanmamıştı. RobustIRC köprüsünü goget kullanarak kurduktan sonra, Go dilinin yorumlanan bir dil olması gerektiğini hissettiler ve bunları düzeltmem gerekiyor: Hayır, Go derleyicisi çok hızlı.

Çoğu Go aracı istisna değildir, gofmt veya goimportlar gibi çok hızlıdır.

Maksimum kaynak kullanımı

Toplu uygulamalar için (etkileşimli uygulamaların aksine), mevcut kaynakların tam olarak kullanılması genellikle düşük gecikmeden daha önemlidir.

Mevcut tüm IOPS, ağ bant genişliği veya hesaplamaları kullanmak için bir Go programını yapılandırmak ve değiştirmek kolaydır. Örnek olarak, bir Gbps bağlantısı doldurmak ve mevcut tüm kaynakları kullanmak ve çalışma süresini azaltmak için optimize edilmiş debiman hakkında yazdım.

3. Zengin standart kitaplık

Go standart kitaplığı, genel iletişim protokollerini ve veri depolama formatlarını / mekanizmalarını etkin bir şekilde kullanmak için yöntemler sağlar, örneğin: ip, HTTP, JPEG, SQL ...

Go'nun standart kitaplığı şimdiye kadar gördüğüm en iyi kitap. Düzenli, temiz, küçük ve kapsamlı olduğunu düşünüyorum: Genellikle standart bir kitaplığın makul programlar ve bir veya iki harici paket yazmak için kullanılabileceğini düşünüyorum.

Etki alanına özgü veri türleri ve algoritmalar (genel olarak konuşursak) golang.org/x/net/html gibi standart kitaplığa dahil edilmez. Standart kitaplığa girmeden önce, golang.org/x ad alanı aynı zamanda yeni kod için bir hazırlık alanı olarak hizmet ediyordu: Go-1 uyumluluğu, açıkça değerli olsa bile, herhangi bir ani değişikliği dışlamayı garanti ediyor. Öne çıkan bir örnek, daha güvenli varsayılanlar oluşturmak için mevcut kodu kırması gereken golang.org/x/crypto/ssh'dir.

4. Araçlar

Go paketlerini indirmek, derlemek, kurmak ve güncellemek için go get aracını kullanıyorum.

Kullanılan tüm Go kod tabanları yerleşik test araçlarını kullanır. Bu sadece basit ve hızlı bir testle sonuçlanmakla kalmadı, aynı zamanda kapsama raporuna girmek de kolaydı.

Bir program beklenenden daha fazla kaynak kullandığında, pprof'u başlatırım. Golang.org'daki bu blog gönderisine, pprof'a bir girişe veya Debian kod aramasını optimize etme üzerine bir blog gönderisine bakın. Net / http / pprof paketini içe aktardıktan sonra, sunucuyu yeniden derlemeden veya yeniden başlatmadan çalışma zamanında yapılandırabilirsiniz.

Çapraz derleme, GOARCH ortam değişkenini ayarlamak kadar basittir, örneğin: GOARCH = arm64, hedef Raspberry Pi 3'tür. Aracın platformlar arasında da çalışabileceğini belirtmekte fayda var! Örneğin, gokrazy dosyasını bir amd64 bilgisayardan ayrıştırabilirim: go tool pprof ~ / go / bin / linux_arm64 / dhcp http: // gokrazy: 3112 / debug / pprof / heap.

godoc, belgeleri düz metin olarak görüntüler veya HTTP aracılığıyla hizmet sağlar. godoc.org genel bir örnek, ancak çevrimdışı veya yayınlanmamış bir pakette kullanılabilen yerel bir uygulama çalıştırıyorum.

Lütfen bunların dili kullanmak için standart araçlar olduğunu unutmayın. C'den başlayarak, yukarıdakilerin her biri önemli bir başarı olacaktır. Onları hafife alıyoruz.

Başlat

Umarım neden Go diliyle çalışmayı sevdiğimi açıklamışımdır.

İlgilenmeye başlarsanız, yeni başlayanlar için kaynaklara göz atabilirsiniz Bu makale Gophers gevşek kanalına ne zaman katılmanız gerektiğini açıklamaktadır. Https://golang.org/help/ adresine bakın.

uyarı

Elbette hiçbir programlama aracı tamamen sorunsuz değildir. Bu makalenin Go'nun neden en sevdiğim programlama dili olduğunu açıkladığı göz önüne alındığında, Go dilinin olumlu yönlerini tanıtıyor. Ancak yine de bazı sorular soracağım:

  • Go paketi kararlı bir API sağlamadığından, belirli, çalışan bir sürüm kullanmanız gerekebilir. En iyi seçenek, dep aracıdır.

  • Deyimsel Go kodu, en yüksek performanslı makine koduna dönüştürülmek zorunda değildir ve çalışma zamanı (küçük) bir maliyetle gelir. Nadiren performans eksikliği vakalarında, cgo veya assembler'a dönebileceğinizi buldum. Etki alanınız zor bir uygulama veya performans açısından kritik başka bir kodsa, farklı olabilir.

  • Yukarıda Go standart kitaplığının şimdiye kadar gördüğüm en iyi kitap olduğundan bahsetmiştim, ancak bu herhangi bir sorun olmadığı anlamına gelmiyor. Örneğin, standart bir kütüphanenin en eski paketi olan go / ast aracılığıyla, kod programlı olarak değiştirildiğinde, yorumların işlenme şekli çok karmaşık hale gelir.

Geçen haftaki Popüler Haberlerin Gözden Geçirilmesi

Geliştiricilerin hangi geliştirme dillerinde uzmanlaşması gerekiyor?
önceki
499 yuan! OnePlus Explorer sırt çantası piyasaya çıktı: askeri sınıf kumaş
Sonraki
Shuangliu Havaalanına inişten itibaren Chengdu halkının ev yapımı yemeklerini deneyimlemek için "Kolay Yol"
Programcının nesi var? Neden beni cennete kurban etmek için öldürüyorsun
JD.com sebze yetiştirmeye başladı. Kendi kendine kurduğu akıllı bitki fabrikası ilk olarak medyaya açılıyor
2019 Touron hala bir "Big Mac" ve hassas bir yanı var!
Pekin'in 52 çevresel sağlık teknik standardı 2019 Yeni Yıl Günü'nde uygulanacak
Pekin'in "Yeraltı Güney Merkez Eksenini" keşfetmek, ay sonunda Zhushikou'nun güneyinden Hat 8'deki Yinghai'ye deneme operasyonu
OnePlus 6T Ulusal Banka Fiyatı Açıklandı: 3399 yuan'dan başlayarak, Emperor Edition 3999 yuan
Yabancı tüketiciler "ünlüler ekonomisine" mi alışıyorlar? İşte küçük bir anket
Dünyanın dövüş sanatları yalnızca hızlı ve kırılmaz olabilir OnePlus 6T'nin ilk lansman değerlendirmesi: tetiklenen her yönüyle amiral gemisi
55 saniyelik basın toplantısı! "Lezzetli" Oreo Android 8.0 resmi olarak yayınlandı: daha hızlı, daha güçlü ve daha güvenli
Trafik Güvenliği Müzesi bugün Qingdao'da açılıyor
Yeni A6L yakında gelecek, neden bu kadar popüler?
To Top