提交 2d2a38f3 编写于 作者: M Mehmet Kose

convert a block in 02.1 and fix typos in other papers

上级 3425074f
......@@ -4,7 +4,7 @@
Go komutları, önemli bir ortam değişkeni olan $GOPATH üzerinden çalışır. Bu değişkeni Go'nun kurulu olduğu dizini veren $GOROOT ile karıştırmayın. Bu değişken bilgisayarınızdaki Go çalışma ortamının hangi dizinde olduğunu gösterir (Aşağıdaki dizin yapısı örnek olarak verilmiştir, siz kendinize göre dizin yolunu değiştirebilirsiniz).
Unix türevi işletim sistemlerinde, aşağıdaji komutla değişkeni ayarlayabilirsiniz:
Unix türevi işletim sistemlerinde, aşağıdaki komutla değişkeni ayarlayabilirsiniz:
export GOPATH=/home/apple/mygo
......@@ -144,7 +144,7 @@ Yukarıdaki yapından açık şekilde görüldüğü gibi; `bin` çalıştırıl
(Windows'daki ortam değişkenlerinin formatı `%GOPATH%` şeklinde olmalıdır, bu kitap unix türevi sistemler üzerinden anlatılmaktadır, bu sebeble Windows kullanıcıları kendi sistemlerine uygun formatı kullanmalıdır .)
## Linler
## Linkler
- [İçeriik](preface.md)
- Önceki bölüm: [Kurulum](01.1.md)
......
......@@ -8,14 +8,14 @@ Go dili kapsamlı bir araç seti ile beraber geliyor. Terminalinizden `go` komut
Şekil 1.3 Go komutlarnın detaylı gösterimi
Hepsi çok kullanışlı araçlar. Şimdi onları nasıl kullanabileceğimize bakalım.
Bizim için hepsi çok kullanışlı araçlar. Şimdi onları nasıl kullanabileceğimize bakalım.
## go build
Go paketlerini derlemek için kullanılan komuttur. Eğer gerektiği durumlarda bağımlı olan paketleri de otomatik derler.
Go paketlerini derlemek için kullanılan komuttur. Eğer gerekli ise bağımlı olan paketleri de otomatik derler.
- Eğer paket `main` değilde, bölüm 1.2 deki gibi `mymath` ise, `go build` çalıştığında hiç birşey oluşturulmayacak. Eğer `$GOPATH/pkg` içinde `.a` uzantılı derlemiş haline istiyorsanız, `go install` komutunu kullanabilirsiniz.
- Eğer paket `main` ise, aynı dizin içinde çalıştırılabilir haline oluşturacaktır. Eğer oluşacak dosyanın `$GOPATH/bin` içinde olmasını istiyorsanız, `go install` ya da `go build -o ${DİZİN_YOLU}/a.exe` olarak çalıştırın.
- Eğer paket `main` ise, aynı dizin içinde çalıştırılabilir hali oluşturacaktır. Eğer oluşacak dosyanın `$GOPATH/bin` içinde olmasını istiyorsanız, `go install` ya da `go build -o ${DİZİN_YOLU}/a.exe` olarak çalıştırın.
- Dizinde birden fazla go dosyası varsa, ve sadece birini derlemek istiyorsanız, `go build` komutuna dosya ismini argüman olarak vermelisiniz. Örneğin, `go build a.go`. `go build` argüman almaz ise dizindeki bütüm dosyaları derleyecektir.
- Oluşacak dosyanın ismini de önceden belirleyebilirsiniz. Örneğin, `mathapp` projesinde (bölüm 1.2'deki), `go build -o astaxie.exe` komutu `mathapp.exe` yerine `astaxie.exe` adında bir dosya oluşturacaktır. Öntanımlı isimlendirme ya dizin ismi ya da ilk kaynak kodu içeren dosya ismi olarak seçilmiştir.
......@@ -47,20 +47,23 @@ Projelerimi Github'a göndermeden önce genellikle bu komutu çalıştırırım.
## go fmt
Öncede C/C++ ile çalışmış olanlar, hangi kodlama stilinin daha iyi olduğu konusundaki tartışmları biliyordur: K&R-stili ya da ANSI-stili. Go da ise, herkesin kullanmak zorunda olduğu sadece bir kod stili vardır. Örneğin, açma parantezleri satır sonlarını yazılmalıdır, yeni bir satırda yazılamazlar, eğer bu kurala uymazsanız derleme hatası alacaksınız! Neyse ki, bu kuralları ezberlemek zorunda değilsiniz. `go fmt` bu işi sizin yerinize yapacaktır. Terminalinizde `go fmt <dosya_ismi>.go` komutunu çalıştırmanız yetecektir. Bir çok IDE siz dosyayı kaydettiğinizde otomatik olarak bu komutu çalıştıracaktır. IDE'ler hakkında bir sonraki bölümde daha ayrıntılı bilgi vereceğim.
Öncede C/C++ ile çalışmış olanlar, hangi kodlama stilinin daha iyi olduğu konusundaki tartışmları biliyordur: K&R-stili ya da ANSI-stili. Go da ise, herkesin kullanmak zorunda olduğu sadece bir kod stili vardır. Örneğin, açma parantezleri sadece satır sonlarına yazılmalıdır, kendi satırlarına yazılamazlar, eğer bu kurala uymazsanız derleme hatası alacaksınız! Neyse ki, bu kuralları ezberlemek zorunda değilsiniz. `go fmt` bu işi sizin yerinize yapacaktır. Terminalinizde `go fmt <dosya_ismi>.go` komutunu çalıştırmanız yetecektir. Bir çok IDE siz dosyayı kaydettiğinizde otomatik olarak bu komutu çalıştıracaktır. IDE'ler hakkında bir sonraki bölümde daha ayrıntılı bilgi vereceğim.
`go fmt` sadece bir takma addır ve 'gofmt -l -w' komutu ile, **klasör yolları** olarak adlandırılan paketlerin üzerinde çalışır.
`gofmt` şeklind değilde `go fmt -w` şeklinde kullanmanız daha iyi olcaktır. `-w` parametresi formatladıktan sonra değişiklikleri kaydetcektir. `gofmt -w src` ise src altındaki butun dosyaları formatlar.
## go get
Bu komut üçüncü parti paketleri almanızı sağlar. Şuanda; BitBucket, Github, Google Code ve Launchpad desteği sunuyor. Bu komutu çalıştırdığımızda iki şey yapılıyor. Birincisi Go kaynak kodunu indiriyor, ikinci olarakta `go install` komutunu çalıştırıyor. Bu komutu çalıştırmadan önce, gerekli araçları kurudğunuzdan emin olun.
Bu komut üçüncü parti paketleri almanızı sağlar. Şuanda; BitBucket, Github, Google Code ve Launchpad desteği sunuyor. Bu komutu çalıştırdığımızda iki şey yapılıyor. Birincisi Go kaynak kodunu indiriyor, ikinci olarakta `go install` komutunu çalıştırıyor. Bu komutu çalıştırmadan önce, gerekli araçları kurduğunuzdan emin olun.
BitBucket (Mercurial Git)
Github (git)
Google Code (Git, Mercurial, Subversion)
Launchpad (Bazaar)
Bu komutu kullanmak için, yukarıdaki araçları kurmuş olmanız lazım. `$PATH` değişkenini ayarlamayıda unutmayın. Bu arada, özel alan adlarınıda destekliyor. `go help remote` komutu ile daha ayrıntılı bilgi edinebilrsiniz.
Bu komutu kullanmak için, yukarıdaki araçları kurmuş olmanız lazım. `$PATH` değişkenini ayarlamayı da unutmayın. Bu arada, özel alan adlarını da destekliyor. `go help remote` komutu ile daha ayrıntılı bilgi edinebilrsiniz.
## go install
......@@ -79,7 +82,7 @@ Bu komut `*_test.go` ile biten dosyaları derleyip çalıştırır, gerekli bil
## go doc
Bir çok insan Go için üçüncü parti bir dökümantasyona aracına gerek olamdığını düşünüyor (aslına bakarsanız ben bir tane yazdım bile [CHM](https://github.com/astaxie/godoc)). Go dökümanları yönetmek için çok güçlü bir araca sahip.
Bir çok insan Go için üçüncü parti bir dökümantasyona aracına gerek olmadığını düşünüyor (aslına bakarsanız ben bir tane yazdım bile [CHM](https://github.com/astaxie/godoc)). Go dökümanları yönetmek için çok güçlü bir araca sahip.
Peki bir paketin dökümantasyonuna nasıl bakabiliriz? Örneğin, Eğer bir `builtin` paket hakkında daha fazla bilgi istiyorsanız, `go doc builtin` komutunu işinizi görecektir. Benzer şekilde, `go doc net/http` komutu ile `http` paketi hakkında bilgi elde edebilirsiniz. Fonksiyonlar hakkında daha ayrıntılı bilgi istiyorsanız, `godoc fmt Printf` ve `godoc -src fmt Printf` komutları işinizi görecektir(`-src` fonksiyonun kodlarını göstercektir).
......
......@@ -114,7 +114,7 @@ Sıradaki IDE'miz Sublime Text 2 (kısaca Sublime'de diyebilirsiniz) + GoSublime
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'
Kurulum tamamlandıktans sonra Sublime yeniden başlatın. "Preferences" menüsünde "Package Control" sekmesine tıklayın.
Kurulum tamamlandıktan sonra Sublime'ı yeniden başlatın. "Preferences" menüsünde "Package Control" sekmesine tıklayın.
![](images/1.4.sublime3.png?raw=true)
......@@ -130,7 +130,7 @@ Sıradaki IDE'miz Sublime Text 2 (kısaca Sublime'de diyebilirsiniz) + GoSublime
Herşey tamamsa, kurulum başarıyla tamamlanmıştır demektir.
Eğer değilde terminali açıp `gocode` komutunu çalıştıramıyorsanız $PATH değişkeniniz doğru ayarlanmamış demektir.
Eğer terminali açıp `gocode` komutunu çalıştıramıyorsanız $PATH değişkeniniz doğru ayarlanmamış demektir.
## Vim
......
......@@ -8,7 +8,7 @@ Go, C ailesine ait derlenen bir sistem programala dilidir. Fakat, derlenme hız
const fallthrough if range type
continue for import return var
Bu bölümde size temel Go bilgisi öğreteceğim. Go dilinin özünü ve tasarımının ne kadar güzel olduğunu göreceksiniz. Go ile programlama çok eğilenceli olabilir. Bu unitenin sonunda, yukarıdaki kelimelere aşina olacaksınız.
Bu bölümde size temel Go bilgisi öğreteceğim. Go dilinin özünü ve tasarımının ne kadar güzel olduğunu göreceksiniz. Go ile programlama çok eğlenceli olabilir. Bu ünitenin sonunda, yukarıdaki kelimelere aşina olacaksınız.
## Linkler
......
## Go'yu diğer dillerden farklı kılan nedir?
Go programlama dili tek bir amaçla oluşturuldu; büyük bir ziyaretçi kitlesi için, büyük bir ekip içinde ölçeklenebilir web uygulamaları geliştirmek. Dilin mümkün olduğunda standartlaştırılmış olmasının nedeni budur, dolayısıyla `gofmt` aracı ve sık kullanım yönergeleri geliştirici tabanında gruplaşmalarının bulunmaması içindir. Diğer programlama dillerinde 'parantezin nerede açılacağı' hususunda dini savaşlar verilmektedir.
public static void main() {
}
veya
public static void main()
{
}
veya python için, 4 boşluk, 6 boşluk, bir tab veya iki tab veya diğer kullanıcı ayarlarını mı kullanmalıyız?
Bu biraz sığ bir problem gibi görünse de, kod tabanı büyüdükçe ve daha fazla insan aynı projede çalışırken kodu 'güzel' tutmak zordur. Eğer python biliyorsanız zarif kodu nasıl yazacağınız hakkında bir dizi kural olan PEP8'in farkında olmalısınız. Robotların araba kullanabildiği bir dünyada yaşıyoruz, sadece kod yazmamalıyız, kodu zarif yazmamız gerekiyor.
Diğer dillerde iş kod yazmaya gelince bir çok değişken var, her programlama dili bu kullanım olarak iyidir fakat Go bu konuda biraz özel çünkü internet ile eşanlamlı bir şirkette tasarlandı. Tipik olarak kod yazım akışı Python'dan Java'ya, Java'dan C++'a optimizasyon amacıyla gider. Problem ise şu anda yaygın olan dillerin tamamı onlarca yıl önce 1GB depolama alanının şimdiye oranla çok yüksek bir fiyata sahip olduğu yıllardan geldi. Bilgisayarlar işlemcilerinin çekirdek sayılarını katlarken "eski diller" bunların üzerinde eşzamanlı olarak koşamıyor. Fakat bu diller kötü oldukları için değil, basitce bu diller gelişirken kullanım bu şekilde değildi.
Böylece, Google şu an kullandığı araçlarıyla karşılaştığı tüm sorunları hafifletmek için, şu an GO adını verdikleri sistem dilini yazdılar. Golang kullanmanın bir çok avantajı var fakat bazen paranın iki tarafı da dezavantajlı olabilir. Ancak bazı kısımlarda iyileştirmeler yapıldı, kod iyileştirme gibi. Dili kod biçimlendirme konusunda savaşlar olmayacak şekilde tasarladılar. Yazılan go kodu ('gofmt' kullandıklarını var sayarsak) dünyanın her yerinde tam olarak aynı şekilde görünüyor. Bu bir ekip içinde çalışmaya başlayıncaya kadar önemsiz görünebilir. Kod standart bir formata ve yazım kurallarına sahip değilse, şirketin otomatik kod incelemesi veya başka bir fantazi teknik kullanması durumunda sıçabilir, fakat Go'da bu olmaz.
Go **concurrency** (eşzamanlılık) göz önüne alınarak geliştirildi, lütfen şunu not edin; paralelizm != eşzamanlılık. Şurada bulabileceğiniz, konu konu hakkında Rob Pike tarafından yazılmış şahana bir yazı var; **blog.golang.org**, okuduğunuza değecek.
# 2.1 Hello, Go
Go ile uygulamalar geliştirmeden önce, nasıl basit programlar yazabiliriz onu öğrenelim. Temeli atmadan koca bir bina inşa edemezsiniz. Bu yüzden, bu bölümde basit bir program yazarak söz dizimini öğreneceğiz.
## Program
Uluslararası gelenekler göre, bir programala dilini öğrenmeye başlarken genelde "Merhaba dünya" ile kodlanmaya başlanır.
Uluslararası geleneklere göre, bir programlama dilini öğrenmeye başlarken genelde "Merhaba dünya" ile kodlanmaya başlanır.
Hazır mısınız? Öyleyse başlayalım!
......@@ -16,15 +39,15 @@ Hazır mısınız? Öyleyse başlayalım!
fmt.Printf("Merhaba, dünya ya da 你好,世界 ya da καλημ ́ρα κóσμ ya da こんにちは世界\n")
}
Aşağıdaki cümleyi ekrana basavaktır.
Aşağıdaki cümleyi ekrana basacaktır.
Merhaba, dünya ya da 你好,世界 ya da καλημ ́ρα κóσμ ya da こんにちは世界
## Açıklama
Bilmeniz gereken ilk şey Go programları `package`(paket)'lerden meydana gelir.
Bilmeniz gereken ilk şey Go programları `package` (paket)'lerden meydana gelir.
`package<paketİsmi>` (Bu örnekte `package main`) satırı bize bu programın `main` paketine ait olduğunu, ve `main` kelimesi ise bu programın uzantısı `.a` olan bir kütüphane olarak değil bir yazılım olarak derleneceğini söylüyor.
`package <paketİsmi>` (Bu örnekte `package main`) satırı bize bu programın `main` paketine ait olduğunu, ve `main` kelimesi ise bu programın uzantısı `.a` olan bir kütüphane olarak değil bir yazılım olarak derleneceğini söylüyor.
Her çalıştırılabilir program sadece bir `main` paketi içerebilir, ve `main` adında argüman almayan ve bir değer dönemeyen fonksiyona sahip olamalıdır.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册