* All translation references added to all other translation documents which have "non-speakers" section * Remove link to English in README.md
16 KiB
Nasıl Haskell Öğrenirim - Kılavuz
Başkalarına yardım ederek deneyimlenmiş, Haskell öğrenmek için önerilen yöntemdir. Haskell Book kitabının yazarlarından birine ait önerilerin listesidir.
Türkçe Bilmeyenler İçin
Anlamadığın şeyleri hemen başına dert etme. Devam et!
Topluluk
İnternet söyleşi kanalımıza Freenode üzerinden #haskell-beginners
etiketi ile ulaşabilirsiniz.
İnternet söyleşi kanalımızın ağ istemcisi için.
Haskell e-posta listesi.
Topluluk Kuralları
Chris Done'ın eğitim hakkındaki gönderisine göz atın
Nazik ve kibar olun. Kabalık ve edepsizlik insanları korkutur ve onları iletişime katkı yapmalarını engeller.
Yapıcı olmayan eleştiriler sadece söyleyene yarar sağlar, dinleyene değil.
Olayları "çok basit" veya "önemsiz" olarak nitelendirmeyin. Bu şekilde insanlar sıkı çalışmaları gerektiğinde kötü hissederler. Yavaş öğrenen kişiler genellikle titizlerdir ve bu övülmesi gereken bir şeydir!
Şaşırmış gibi yapmayın. Birisi size bir şeyi bilmediğini söylediğinde şaşırmış numarası yapmayın. Bu durumda karşınızdaki berbat hisseder ve siz de kendinizi uyanık hissetmekten başka hiçbir şey elde etmezsiniz.
"Aslında..." cümlesini kurmayın. Biri, çoğunluğu doğru olan - fakat tamamı değil - bir şey söylediğinde, siz de, "Aslında…" diyip küçük bir düzeltme yaparsınız. Bu özellikle yapılan düzeltme ana konuyla alakasız bir şey olduğu zaman irite edici olabilir. Ayrıca bu durum #haskell-beginners kanalının doğruluğa ve kusursuz olmaya önem vermeyen bir kanal olduğu anlamına gelmez. "Aslında ..." diye başlayan cümlelerin çoğu gösterişle alakalıdır, doğruluğa ulaşmakla alakalı değildir.
Üzerinize vazife olmayan konularda akıl vermeyin. Bir problemi çözmeye çalışan kişiler gördüğünüzde hemen araya kendi tavsiyelerinizi sıkıştırmaya çalışmayın. Biri yardım isteyene kadar onları çalışmalarıyla başbaşa bırakın. Birbirinin sözünü kesmeden konuşmak #haskell-beginners kanalının kuruluş amaçlarından biridir.
Irkçılık, seksistlik, homofobi, transfobi, veya herhangi bir önyargı ya da nefret söylemi hoş karşılanmayacak ve kesinlikle müsamaha gösterilmeyecektir.
İlkeler Recurse Center 'ın yayınladığı kılavuzdan alınmıştır. Recurse Center'a yayınladığı için teşekkürler!
What are Haskell, GHC, and Cabal?
Haskell raporlarda belirtildiği üzere bir programlama dilidir, son sürümü 2010 yılında çıkmıştır. Rapora buradan ulaşabilirsiniz.
GHC
GHC , Haskell çalışmak için en yaygın yoldur. Derleyicinin yanında, REPL (yorumlayıcı - "interpreter"), paket yöneticisi, ve diğer yararlı şeyleri kapsar.
Cabal
Cabal proje yönetimini ve bağımlılık çözümünü yapar. Cabal ile projeleri oluşturabilir ve genellikle kendi yalıtılmış ortamına ("sandbox") indirebilirsiniz.
Cabal Ruby'deki Bundler, Python'daki pip, Node'daki NPM ve Maven'e eş değerdir. GHC paketleri yönetir, Cabal hangi sürümlerin kurulacağına karar verir.
Haskell Kurulum Rehberi
Haskell'e başlamak için Stack kullanın
GHC indirmek ve projelerinizi oluşturmak için Stack'ı edinin .
Eğer Stack hakkında hiçbir bilginiz yoksa ve genel bir tanıtıma ihtiyacınız varsa, kapsamlı Stack video eğitimine buradan ulaşabilirsiniz.
HASKELL PLATFORM İNDİRMEYİN
Haskell.org'da bulunan yönergeyi izlemek yerine Stack edinin.
Neden Haskell Platform kullanmıyoruz?
https://mail.haskell.org/pipermail/haskell-community/2015-September/000014.html
Aşağıdaki yönergeler artık kullanılmamaktadır
Aşağıdaki yönergeleri izlemek yerine Stack edinmenizi öneriyoruz, fakat asgari düzeyde kurulum yapmak isteyenler için yönergeler muhafaza edilmektedir.
GHC & Cabal Kurulumu
Ubuntu
Bu arşiv (PPA) mükemmel ve tüm Linux makinelerimde bunu kullanıyorum.
Yani:
$ sudo apt-get update
$ sudo apt-get install python-software-properties # v12.04 and below
$ sudo apt-get install software-properties-common # v12.10 and above
$ sudo add-apt-repository -y ppa:hvr/ghc
$ sudo apt-get update
$ sudo apt-get install cabal-install-1.24 ghc-7.10.3 happy-1.19.5 alex-3.1.4
Ardından aşağıdakini $PATH
değişkeninize ekleyin (bash_profile, zshrc, bashrc, etc):
export PATH=~/.cabal/bin:/opt/cabal/1.24/bin:/opt/ghc/7.10.3/bin:/opt/happy/1.19.5/bin:/opt/alex/3.1.4/bin:$PATH
Opsiyonel: Path değişkeninize .cabal-sandbox/bin
de ekleyebilirsiniz. Geliştirdiğiniz
koda komut satırından erişebilirsiniz. Bu sadece şu anda çalıştığınız dizin Cabal sandbox ise çalışır.
Debian
Ubuntu PPA kullanarak
Eğer stabil sürümü kullanmıyorsanız, Ubuntu'daki adımları olduğu gibi yapabilirsiniz, fakat ekstradan
bir komut daha çalıştırmanız gerekecek.
sudo add-apt-repository -y ppa:hvr/ghc
çalıştırıldıktan hemen sonra aşağıdaki kodu çalıştırın:
$ sudo sed -i s/jessie/trusty/g /etc/apt/sources.list.d/hvr-ghc-jessie.list
Diğer Debian sürümleri için, yukarda gördüğünüz komuttaki
bütün jessie
'leri kendi sürümünüzün adıyla değiştirin.
Herhangi bir sebepten ötürü, /etc/apt/sources.list.d/hvr-ghc-jessie.list
dosyası
yoksa, /etc/apt/sources.list
dosyası aşağıdaki gibi bir satır içermelidir:
deb http://ppa.launchpad.net/hvr/ghc/ubuntu jessie main
Bu satırda jessie
yerine trusty
yazın.
Manuel compilation
Mac OS X için yazılmış olan buradaki kılavuzu kullanabilirsiniz:
Not:
- GHC'yi yapılandırırken ön eklerinizi (prefix) de düzenleyin.
cabal-install
dosyası yerine, kaynağı indirin vebootstrap.sh
komut dizisini çalıştırın.
Fedora 21
Haskell 7.8.4 sürümünü resmi olmayan repodan kurmak istiyorsanız (Fedora 22+ resmi sürümü içerir):
$ sudo yum-config-manager --add-repo \
> https://copr.fedoraproject.org/coprs/petersen/ghc-7.8.4/repo/fedora-21/petersen-ghc-7.8.4-fedora-21.repo
$ sudo yum install ghc cabal-install
petersen/ghc-7.8.4 copr page 'de bahsedildiği gibi bu ghc, Fedora/EPEL ghc ile birlikte kurulamaz.
Arch Linux
Haskell'i Arch Linux'ün resmi reposundan indirip kurmak için aşağıdaki komutu çalıştırın:
$ sudo pacman -S cabal-install ghc happy alex haddock
Gentoo
Gentoo'da, Haskell Platform'un parçalarını Portage aracılığı ile ayrı ayrı
kurabilirsiniz. Eğer ACCEPT_KEYWORDS=arch
kullanırsanız (
ACCEPT_KEYWORDS=~arch
yerine) Portage, Haskell'deki eski bazı şeyleri de kuracaktır.
Bunu göz önünde bulundurarak, sadece ve sadece ACCEPT_KEYWORDS=arch
kullanacaksanız, aşağıdaki
satırları /etc/portage/package.keywords
dosyasına ekleyin.
dev-haskell/cabal-install
dev-lang/ghc
Bunu tamamladıktan sonra aşağıdaki komutları çalıştırın:
$ emerge -jav dev-lang/ghc dev-haskell/cabal-install
Gentoo cabal-install
'ın "stabil" (diğer bir tabirle: eski) bir sürümünü Portage
ağacında tutar. Eğer cabal-install
'ın daha yeni bir sürümü kullanmak istiyorsanız
aşağıdaki komutları çalıştırın. Burada "" işaretlerinin gerekli olduğuna dikkat edin.
$ \cabal update # Ters eğik çizgiler
$ \cabal install cabal-install # gereklidir.
Şu anda Cabal'ı Portage kullanarak global şekilde ve cabal-install
kullanarak
ana dizininize kurdunuz. Sonraki adım terminalde cabal
çalıştırdığınızda
shell'in ana dizininizdeki güncel sürümü çalıştırdığından emin olmak
Bunu da aşağıdaki satırları shell'in konfigürasyon dosyası ekleyerek yapabilirsiniz:
PATH=$PATH:$HOME/.cabal/bin
alias cabal="$HOME/.cabal/bin/cabal"
Shell'in ne olduğunu bilmiyorsanız, büyük bir ihtimalle,shell Bash olarak geçmektedir.
Eğer Bash kullanıyorsanız, düzenleyeceğiniz dosya ~/.bashrc
olmalı. Eğer Z-shell kullanıyorsanız,
dosyanın ismi ~/.zshrc
. Kullandığınız shell'in ne olduğunu öğrenmek için aşağıdaki komutları
çalıştırabilirsiniz.
echo $SHELL | xargs basename
Örneğin ben zsh kullanıyorum, bu yüzden komutu çalıştırdığımda zsh
yanıtını aldım.
Bunların hepsini yaptıktan sonra, ek araçlar olarak alex
ve happy
kurun. Bunun için:
$ cabal install alex happy
Tebrikler! Şu anda çalışan bir Haskell kurulumuna sahipsin!
Mac OS X
10.9
GHC ve Cabal içeren GHC for Mac OS X uygulamasını kurun.
Uygulamada, .app
dosyasını bir yere koyduktan sonra GHC ve Cabal'ı
path değişkenine nasıl ekleyeceğinizi anlatan yönergeleri de bulabilirsiniz.
10.6-10.8
Buradaki tar dosyasını indirip kurulumu gerçekleştirin.
Windows
- Minimum GHC Installer
network
kütüphanesini ve diğer kütüphaneleri derleyebilmektedir. Minimal GHC ortamının ("environment") yanında Cabal ve MSYS'yi (network
gibi kütüphaneleri indirmenize yarayan derleyici ortamı) de içerir.
minghc web sayfasında birkaç detaya rastlayabilirsiniz, fakat normal olanın tüm sistem dizini yerine sadece local AppData dizinine kurmanız olduğunu unutmayın. (C:\Users<kullaniciadi>\AppData\Local\Programs)
Diğer Linux Kullanıcıları
Cabal and ghc'nin son sürümlerini aşağıdaki linklerden indirebilirsiniz:
Diğer Unix-benzeri Sistem Kullanıcıları
Paket yükleyicinizden GHC ve Cabal'i indirip kurun, sonra $PATH
değişkeninize ~/.cabal/bin
dizinini atayın. Son olarak cabal
'ı güncelleyin ve alex
ve happy
'i kurun.
$ cabal update
$ cabal install cabal-install alex happy
Nasıl Haskell öğrenmeliyim?
Ana tavsiyemiz, cis1940 kursunun Bahar'13 versiyonundaki ve İşlevsel Programlama kursundaki dersleri okumanız ve tüm alıştırma/ödevleri tamamlamanızdır. İkisini de aşağıda bulabilirsiniz. Bunlar dışındaki her şey opsiyoneldir ve size nereye bakmanız gerektiğiyle ilgili fikir vermek için bahsedilmiştir.
"Haskell Programming from First Principles" - Kitap.
@dmvianna size tavsiye edilen kaynaklardan sadece ücretsiz olanlarının aşağıda olduğunu hatırlatmamı istedi. Eğer bir kitap incelemek istiyorsanız, kendimize ait Haskell Book! kitabını içtenlikle öneririz. Herhangi bir sebepten ötürü kitabın ücretini karşılayamıyorsanız, lütfen destek sayfamızdaki iletişim bilgilerini kullanarak bize mail atın.
"Haskell Book" Kitabı burada önerilen birincil kaynakların hepsini içerir.
Yorgey'in cis1940 kursu
Bununla başlayın; Eğer "Haskell Book" kitabını almayı düşünmüyorsanız bu kurs Haskell'e giriş için en iyi ücretsiz kaynak.
Çevrimiçi erişim.
Brent Yorgey'in kursu şu ana kadar bulabildiğim en iyi kurs. Bu kurs sadece Haskell yazmayı öğretmekle kalmayıp üstüne "Parser Combinator"ler hakkında bilgi sahibi olmanızı sağladığından dolayı çok değerli bir kaynak. Eğer bilgisayar programcısı değilseniz veya yeterince deneyminiz yoksa cis1940 kursuyla başlamanızı tavsiye etmiyoruz. Bu durumda Simon Thompson'ın kitabıyla başlayıp daha sonra cis1940 kursuna geçin.
İşlevsel Programlama Kursu
Bu kursu Yorgey'in cis1940 kursunu tamamladıktan sonra öneriyoruz.
Kursa github üzerinden erişmek için tıklayınız.
Bu kurs cis1940 kursunda bahsedilen kavramları uygulayarak size deneyim katacak ve Haskell'deki Functor/Applicative/Monad/vb. kavramlarını rahatça kullanmanıza kritik düzeyde katkı sağlayacak bir kurs. cis1940 ve ardından İşlevsel Programlama kursunu tamamlamak benim tavsiyelerimin özünü oluşturuyor ve biz herkese Haskell'i bu şekilde öğretiyoruz.
Tamamlayıcı Kurs - cis1940 ve İşlevsel Programlama kursundan sonra
Orta seviye konularda daha fazla materyal içerir
cs240h kursuna çevrimiçi olarak aşağıdaki linklerden erişebilirsiniz:
Bu kurs Bryan O'Sullivan 'ın Standford'da verdiği derslerin online derlenmiş hali. Eğer kendisinin kim olduğunu bilmiyorsanız, herhangi bir Haskell uygulamasının kütüphanelerine göz atın. En az yarısında ismine rastlayacaksınızdır. Eğer Yorgey'in kursunu tamamladıysanız phantom types, bilgi akışı kontrolü, dil eklentileri, concurrency, pipes, ve lenses hakkındaki modüller ilginizi çekebilir.
Haskell'deki Belirli Konular için Kaynaklar
Bu kaynaklar cis1940 and IP kurslarının aksine test edilmemiştir, yine de konu listesi'den nereden başlamanız gerektiğine dair bilgi alabilirsiniz. Belgede orta/ileri düzeydeki konseptleri ve "işleme" ve "metin editörleri" gibi konuları bulabilirsiniz.
Araçlar
Eğer acemiyseniz ghc-mod indirmeyin ve kullanmaya çalışmayın
Biraz kırılgan ve daha yavaştır, çaba sarfetmeye değmez.
Text Editors
-
Emacs
- haskell-mode yükleyin
- flycheck yükleyin
- Haskell'i etkinleştirin ve ayarlayın, diğer şeyleri önemsemiyorsanız
(require 'haskell)
modülünü gerektirir. - flycheck'i etkinleştirin
- Stack'in
/usr/bin
dizinine kısayol bağlantısını yapın veya flycheck'in onu görebildiğinden emin olun. - dunzo.
-
Vim
- Biz Stephen Diehl'in vim yönergesini öneriyoruz fakat şimdilik ghc-mod'u aşağıdaki satırlarla değiştirin.
- Vim'de type hatalarını eksiksiz biçimde almak için (ghc-mod yerine)
autocmd FileType haskell setlocal makeprg=stack\ build
autocmd FileType haskell setlocal errorformat=%f:%l:%v:%m
-
Notepad++, Haskell destekler.
-
gedit, Haskell destekler.
Other
- Haskell For Mac
Diyaloglar
Burada muhafaza edilmektedir.
Bu diyaloglar aslında çok önemli ve öğreticidir. Birçok konuda derin sohbetler için buraya bakabilirsiniz.