1 / 83

Go Programlama Dili - Seminer

Bu seminerde Go programlama diline hizli bir bakis attik. 2017'de verdigim Go seminerinin baglantisina da bu sunumun kaynaklar kismindan ulasabilirsiniz.<br><br>www.cihanozhan.com<br>www.deeplab.co<br>www.darkfactory.co

cihanozhan
Download Presentation

Go Programlama Dili - Seminer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GoProgramlama Dili www.cihanozhan.com

  2. Go Nedir? • Açık kaynak kodlu, sade ve güçlü bir programlama dilidir. • Google tarafından, kendi altyapı sorunlarını çözmek için geliştirildi. • KenThompson, Rob Pike ve Robert Griesiemer tarafından 2007 yılında geliştirilmeye başlandı. • 10 Kasım 2009 yılında tanıtıldı ve 28 Mart 2012’de Go 1.0 yayınlandı. • Mevcut Go versiyonu Go 1.13. KenThompson(B, C, Unix, UTF-8) Rob Pike (Unix, UTF-8) Robert Griesemer (Hotspot, JVM)

  3. Google’ın Sorunu Ne? • Dev donanım ve yazılım altyapısı var. • Milyarlarca satır kod var. • Sunucular çoğunlukla C++, Java ve Pythonüzerinde koşuyor. • Binlerce mühendis aynı altyapıyı üzerinde çalışıyor. • Yüksek yüksek anlık trafik alıyor. • Ve tabi ki milyonlarca sunucu bilgisayar… • Google’ın 2006 raporuna göre 2.5 milyon sunucu…

  4. Go’yaHızlı Bakış • Go programlama dilinin official web sitesi golang.org’dur. • Go’yu bilgisayarıma nasıl indiririm? https://golang.org/dl/ • Godökümantasyonuna erişim: https://golang.org/doc/ • Go paketlerine online erişim: https://golang.org/pkg/ • Online Go geliştirme ortamı: https://play.golang.org/

  5. Neden Go? • Sade, kolay ve hızlı öğrenilebilir. • Sadece 25 anahtar kelimeye sahiptir. • Cross-platform bir dildir: Linux, Windows, MacOSX, Plan9 • Söz dizimi tartışmaları sevmez! Kendi kuralarıyla bu sorunu çözer… • StaticTyped! • Pointer • Geriye dönük uyumluluk • Eşzamanlı(Concurrency) programlama için dil seviyesinde destek. • Gogarbagecollector mimarisine sahiptir. Hafızayı kendisi yönetir. • Sorun/Çözüm: Derleme işlemlerinin uzun sürmesi! • Sorun/Çözüm: Dillerde genellikle sadece belirli yeteneklerin kullanılması. Go’da bir işin genellikle tek bir yolu vardır. • Sorun/Çözüm: Kodu farklı sunuculara dağıtmak! Go tek bir dosyaya derlenir. Bu sayede tek bir binary dosyayı dağıtarak kolayca çalıştırılabilir. • Güçlü bir StandardLibrary’e sahip.

  6. Go’daNe Yok? • ExceptionHandling • Class • Inheritance • Generics • MethodOverload

  7. Biraz İstatistik

  8. Go’nunGüçlü Olduğu Alanlar • Sistem • Veri Odaklı & Veri işleme • In-Memory, Veritabanı, XML, JSON, ZIP/RAR, Doküman vb… • Microservices, RESTful, API • Back-End • Real-time • Web • Oyun • IoT • Security

  9. Go Programlama Dili Kullanıcıları • Google • Apple • Alibaba • Docker • Kubernetes • Twitter • Amazon • GitHub • Dropbox • Facebook • Tesla & SpaceX • Koding • YouTube • Ve diğer: https://github.com/golang/go/wiki/GoUsers

  10. GoIDEs • Visual StudioCode: https://github.com/Microsoft/vscode-go • Vim: https://github.com/Fatih/vim-go • Emacs : https://github.com/dominikh/go-mode.el • SublimeText : https://github.com/DisposaBoy/GoSublime • IntelliJ : https://github.com/go-lang-plugin-org/go-lang-idea-plugin • Eclipse : https://github.com/GoClipse/goclipse • LiteIDE : https://github.com/visualfc/liteide • Atom: https://atom.io/packages/go-plus

  11. GoAraçları • gotool : Go dilinin en temel aracıdır. Go uygulamanızın derleme esnasındaki işlemleri konsol üzerinden parametrik olarak yönetmenizi sağlar. • godoc: Kod içerisinde, örneğin bir metod üzerinde yazdığınız açıklama satırına göre bir belgelendirme-dökümantasyon üretmeyi sağlar. godoc.org sitesi üzerinden de Githubya da dilin gömülü özelliklerinin dökümanlarına online olarak ulaşmak mümkündür. Örn; http://godoc.org/fmt#Println • gofmt: Go dili söz dizimi kurallarını(bazıları katıdır) yöneten bir orkestra şefidir. Go kodu söz dizimi standartlarını uygular.

  12. Standard Library • compress • compress/gzip • crypto • database • database/sql • encoding • encoding/csv, encoding/json, encoding/xml, encoding/binary • errors • html • html/template • net • net/http • os • reflect • runtime • runtime/cgo • runtime/pprof

  13. GoFrameworks • Beego (Web) • Gin (Web) • Gorilla Toolkit (Web) • Revel (Web) • Goji (Web) • Buffalo (Web) • GORM (ORM) • XORM (ORM) • Gobot (Robotik ve IoT) • EMBD.KIDOMAN (Robotik ve IoT) • Makine Öğrenmesiwww.cihanozhan.com/go-library-makine-ogrenmesi-kutuphaneleri

  14. GoFrameworks(Microservices) • Go-Micro • Go-Kit • Gizmo • Kite Daha fazlası : http://awesome-go.com/

  15. GoFrameworks(Testing) • testingPackage(Standard Library) • Testify : Assertionandmockhelperfunctions • gocheck : Powerassertionhelperfunctions. • gopwt : Powerassertionhelperfunctons. • go-testdeep : Deepcomparisonhelperfunctions. • ginkgo ve gomega : A heavyweigth BDD testingframwork + assertionhelpers. • goblin : A Mocha-like BDD testingframework. • GoConvey : BDD testingframeworkwith web UI.

  16. GoFrameworks(AI, ML, DL, ComputerVision) • Gorgonia (https://github.com/gorgonia/gorgonia) • GoCV (OpenCV için bir wrapper) (https://gocv.io/) Daha birçok : http://www.cihanozhan.com/golang-machine-learning-libraries/

  17. GoFrameworks(Game) • Ebitenhttps://ebiten.org/ (2D Game Library) • G3N https://github.com/g3n/engine (3D Game Engine) • Engohttps://engoengine.github.io/ (2D Game Engine) • Azul3D https://azul3d.org/(3D Game Engine) Biraz da oyun geliştirme eğitimi : https://gameswithgo.org/

  18. Keywords

  19. Operatör ve Sınırlayıcılar

  20. Types

  21. HelloMars!

  22. Paketler Her Go uygulaması paketlerden oluşur. Paketler ne içerir? • Fonksiyon • Türler(types) • Değişkenler • Sabitler(constants) Bir paket bir dosya ve 10 satırdan oluşabileceği gibi, onlarca dosya ve binlerce satır koddan da oluşabilir. Başka paketleri kod dosyasına dahil etmek için import kullanılır.

  23. Paketler Nasıl Kullanılır?

  24. İsimlendirme • Büyükharf ile başlayan tanımlamaları kullanabiliyorsunuz(public). • Küçükharf ile başlayan tanımlamaları dışarıdan erişemezsiniz(private).

  25. Değişkenler • Staticallytyped • Örtülü(implicit) ya da belirgin(explicit)ilklendirme(initialization) • Kısaltılmış değişken bildirimleri(sadece fonksiyonların içinde geçerli) • Adresini almak için(C’deki gibi)

  26. Mini Uygulama(Değişkenler)

  27. Hata Yönetimi(Errors) • Çoklu sonuç dönüyor, peki neden sonuçlardan biri hata türünde olmasın? • Exception yok. • Hataları her zaman yönetmeniz gerekiyor, kaçış yok! C’de Go’da

  28. Tools

  29. gotool(paket derleme) • Go kodunu inşa etmek ve kurmak içingo aracı kullanmak gerekiyor. • Bir tane dosya(main paketli) çalıştırmak için. Derleyip çalıştırır: • Mevcut dizindeki paketi derlemek için: • Go aracı diğer tüm Go araçları için aynı zamanda bir proxy görevi yapıyor. Yani onun sayesinde diğer gerekli araçları çağırabilirsiniz • Örn: gotoolproof

  30. gotool(Importpath) • Importpath’leri URL şeklinde olabilir. • İndirmek için go aracını kullanabiliriz: • goget sırayla şunları sizin için yapar: • Git reposundan GOPATH/src/github/cihanozhan/libraryName olarak indirir. • Tüm paketi derler ve kurar. • Eğer –u parametresini verirseniz paketi günceller.

  31. godoc • godoc kodun içinde yer alan belgelendirmeyi çekip çeşitli şekillerde sunar. • Yorum(comment) olarak ilgili tanımlamanın üst kısmına eklenirken: Kodun içinde yer alan belgelendirmenin bakımı daha kolay yapılmaktadır.

  32. godoc Online olarak godoc.org’dan bakılabilir. http://godoc.org/fmt#Println http://godoc.org/github.com/cihanozhan/libraryName Çevrimdışı bir sunucu çalıştırılabilir. godoc–http:6060 Terminal üzerinden kullanılabilir. godocfmt godocgithub.com/koding/logging

  33. gofmt • Go kodunu güzelleştirmek için kullanılır. • Tüm Go kaynak kodu fmt ile güzelleştirildi. gofmt’siz kod eklenmez. • Go kodunun syntax standardını belirler ve korur. • Kod okuma ve yazmayı kolaylaştırır.

  34. Testing Go aracı ve testin paketi hafif bir test framework’ü sunar.

  35. Testing(Çalıştırmak) Go aracı ile testleri çalıştırabiliriz. Mevcut tüm projeler için çalıştırmak için:

  36. Türler(Go Temelleri) • Basit türler • Birleşik(composite)türler: • Soyut tür:

  37. Türler(Go Temelleri)

  38. Akış kontrolleri Basit akışlar • if, else • for, break, continue • switch, case, default, fallthrough • return • goto Gelişmiş akışlar • range • select • go • defer

  39. defer

  40. defer

  41. defer defer deyimi, kendisini çevreleyen fonksiyon dönene kadar fonksiyonun çalışmasını erteler.

  42. range • String • Slice • Map • Channel

  43. slice?

More Related