Yazılım Dünyasının Yeni Yıldızları – Bölüm II : ChainCode ve GoLang
BlockChain ile başladığımız yazımıza ChainCode ile ilgili detayları inceleyerek devam ediyoruz. Eğer Bölüm-I ‘ i okumadıysanız buraya uğramanızı öneririm.
ChainCode Nedir?
BlockChain(BC) sadece işlemler ve değer depolamak için kullanılan bir ağ değildir. Bazı BC’ler “Smart Contract” (akıllı sözleşme) gibi programlar içerebilir. İşte Ethereum yapısı içinde kullanılan “Smart Contract” kavramı HyperLedger teknolojisinde “ChainCode” olarak karşımıza çıkmaktadır.
ChainCode , para, içerik , mülkiyet, paylaşımlar veya değerli şeylerin alışverişini kolaylaştıracak bir bilgisayar kodunu tanımlamak için kullanılan bir ifadedir ve kullanıcıların bir blockchain ağı ile etkileşime girmesini sağlayan bir kod parçasıdır da diyebiliriz. Yine başka bir ifadeyle, bir BC ağındaki farklı varlıkların veya tarafların birbiriyle nasıl etkileşimde bulunduklarını yöneten iş mantığıdır. Ağ üstündeki bir işlemi her çağırdığınızda, değerleri ledger’dan okuyup yazan bir ChainCode fonksiyonu çağırmış olursunuz.
GoLang: Sevimli Gopher İş Başında
GoLang olarak da anılan Go Programlama Dili , Google ekibinden Robert Griesemer, Rob Pike ve Ken Thompson tarafından deneysel bir proje olarak 2007’de tasarlandı ve ilk kez Kasım 2009 açık kaynak olarak piyasaya sürüldü. Dilin ilk sürümü Aralık 2012’de çıktı. Şu an geçerli olan son sürümü Şubat 2017’de release olan Go 1.8 ‘dir. Hatta bu yazıyı yazmaya başladığım sıralarda 1.9 versiyonunun beta sürümü de yayınlamış ki şu linkten bu yeni sürüm ile ilgili detaylı bilgilere ulaşabilirsiniz.
IBM Bluemix üzerinde ChainCode yazmak için desteklenen tek dil şu an Go. (Java henüz Beta aşamasında) ChainCode bir SDK veya CLI (Command Line Interface) aracılığıyla Hyperledger Fabric ağına yüklenir ve bu ağın shares ledger’i (paylaşılan defter) ile etkileşime girer.
Temel kavramlardan sonra geldik ChainCode ile Go’nun ilişkisine. İşin uzmanları BC ve bu teknoloji içinde çalışan ChainCode için neden Go’yu tercih etmiş olabilirler? ChainCode ve Go arasındaki kesişim noktalarını yakalayabilmek için Go’nun özelliklerine göz atalım:
- Açık kaynak kodlu bir yazılımdır.
- Onu tasarlayan ekip, onun hızlı, üretken ve en önemlisi de eğlenceli olmasına önem vermiş. Dili bilmeyenler için bile Go maskotu ile tanışmak bu dil ile aranızda bir eğlence akımı başlatıyor.
- Kodlarda geriye dönük bakım yapmak oldukça kolay. Uzun ömürlü projeler için bu çok önemli. ChainCode da uzun ömürlü tasarlanan/tasarlanması gereken bir teknoloji.
- Modern bir dil ve modern teknolojinin ihtiyaçları göz önünde bulundurularak tasarlandı.
- Go, metin tabanlı iş akışı, minimalist tasarım ve net dil özellikleri ile temiz bir sözdizimine sahiptir. Böylece bu dili hızla öğrenebilirsiniz. Bu basitlik sayesinde kodun bakımı daha ucuz ve geliştirme süreci daha hızlı olur. BlockChain‘in bir çok sektörde kullanılabilir hale gelmesi için bu özellikler önemli diyebiliriz.
- Çıkan her yeni sürüm dilin özelliklerini frenlemiyor.
- Etkin derleme, etkin yürütme ve programlama kolaylığı
- Dinamik olarak yazılan bir dilin programlama kolaylığı + statik olarak yazılmış ve derlenmiş bir dilin etkinliği ve güvenliği => İşte bu bileşimden Go ortaya çıkmış.
- Ağa bağlı ve çok çekirdekli hesaplama desteği ile modern olmayı hedeflemektedir.
- Go ile çalışmanın hızlı olması amaçlanmıştır: Tek bir bilgisayarda büyük bir yürütülebilir dosyanın oluşturulması en fazla birkaç saniye sürer.
- Hız, basitlik , ölçeklenebilirlik onun genlerinde var.
- Ağa bağlı hizmetleri yazmak için çok uygun.
- Yenilikçi projeler için oldukça uygun.
- Yüksek performans ve hızlı gelişebilme özelliği ile Java’ya karşı sıkı bir rakip . HyperLedger için Java beta’da kalmaya devam edebilir. Teknoloji dünyasının Go gibi taze bir kana ihtiyacı var
- Dinamik ve derlenmiş diller arasında orta bir yerde ve bu da onu mükemmel kılıyor.
- Kullanımı kolaydır. Çoğu iş sadece standart kütüphaneler ile yapılabiliyor
- Google’ın da dediği gibi ; “Go, C veya C ++ gibi derlenmiş bir dilin performansı ve güvenliği Python gibi dinamik bir dilde çalışma geliştirme hızını birleştiriyor.”
- Go, Docker ve Cloud Foundry gibi bazı yüksek profilli projelere dahil edildi ve bu durum yükselişine hız kazandırdı.
- Go, makine kodunu derleyerek onu çok hızlı ve güvenilir hale getirir. BC’nin tamda da ihtiyacı olan şey.
- Go’daki eşzamanlılık, işlevlerin birbirinden bağımsız olarak çalışabilme kabiliyeti olarak ifade edilir. Eşzamanlılık mekanizmaları, çok çekirdekli ve ağa bağlı makinelerden en iyi şekilde yararlanacak programlar yazmayı kolaylaştırırken, yeni tür sistem esnek ve modüler program yapılandırmasını mümkün kılıyor. Kulağa hoş geliyor. En büyük kesişim noktası diyebilir miyiz?
- Yine eşzamanlılığa vurgu yapalım. Go’nun concurrency modeli çok kolay ve sezgiseldir . Go, eşzamanlılık için mükemmel bir seçimdir. Basitliği, sadeliği, hızı, eşzamanlılığı ve yüksek performansı nedeniyle Go görevlerini en iyi şekilde yerine getirebiliyor.
- Network applicationları yazmak için Go son derece iyi bir seçim
- DevOps giderek daha fazla Go kullanmaya başladı.
- Go’nun gücü sağlam ve iyi yazılmış standart kütüphanesinden geliyor… Çok kapsamlı bir libary setine sahip. Go ile kendi kütüphanelerini kurabilirsiniz. Java ekosisteminde bulunanlar gibi şişirilmiş ve düşük kaliteli kütüphanelerden kurtulursunuz.
- Kısaca eş zamanlı programlamada Go basit ancak performansı yüksek imkanlar sunmaktadır. C ve C++’ın static yürütme tekniğini kullanmaktadır.
Dünyada BlockChain teknolojisine doğru hızlı bir yönelim var. BC’nin en önemli yapı taşlarından biri olan ChainCode‘un Go gibi esnek, hızlı ve modern bir dil ile yazılıyor olması aslında hiç de şaşırılacak bir durum değil. O zaman, gelişen teknolojiye ayak uydurabilmek için ne diyoruz? Hızlı ol basit ol.. Go’ da kal
Ben Go bilmiyorum, kurs araştırdım bulamadım. Gopher bir çevrem yok diyenlere birkaç kaynak önereyim. “Self Training + Özgüven” Bu bileşime inanın ve harekete geçin. İşte bu linkler, konfor alanının dışına çıkmak isteyen cesur yazılımcılara gelsin.
- Ücretsiz Kitaplar
- Gopher Academy
- GopherCon2016 Con2017 için takipte olun!
- Turuncu Gopher ile mutlaka tanışın
Ama ben öyle kendi kendime motive olamam bana ekosistem lazım diyenler için de buyurun efendim Gopher’larla kaynaşıp, tartışabileceğiniz platformlar:
- Go Programlama Dili Türkiye Topluluğu
- Golang Twitter Hesabı (@golang)
- Golang News Twitter Hesabı (@golang_news)
Go öğrenmemek için bahanemiz var mı? Hızla gelişen ve büyüyen bu topluluğun parçası olmak için beklemeyin. Harekete geçin.
1 Comment
Nihal
3 Şubat 2018 at 21:51Paylaşımlarınız için teşekkürler . “Self Training + Özgüven”