Python ile başlayın. Temiz, güçlü, estetik olarak hoşlanabileceğiniz ve öğrenmesi kolay bir dildir. Smalltalk'un modern bir sürümü olan Squeak de harikadır ancak bu aralar pek popüler değil. Mutlaka bir gün C programlama dilini de öğrenmeniz gerekecek ancak Python gibi bir dilin üst seviye soyutlamaları cinsinden düşünür ve yazarken bunları C diline çevirirseniz daha iyi programlar yazdığınızı göreceksiniz. Bir ara, Lisp de öğrenmelisiniz.
Teknik detayları bir yana, programlama dilleri aslında programcı camiaları demektir. Seçeceğiniz dilin iyi programcılarla iletişim kurmanıza imkan tanımasını istersiniz çünkü iyi programcılardan çok şey öğrenebilirsiniz. İyi programcılar Python, Lisp, C++ gibi güçlü dilleri tercih ederler. Bu yüzden, örneğin Visual Basic her ne kadar güçlü ve tam bir dil olsa da gerçekten iyi olan programcıların çok küçük bir kısmı VB kullanır. Java programcılarının %99'undan öğrenmeye değer bir şey duyamazsınız.
Diğer yandan, C++ kötü tasarlanmış bir dildir ancak tarihi sebeplerden ötürü pek çok zeki insan bu dili kullanmıştır dolayısı ile akıllı bir topluluk ile muhatap olursunuz.
Benzer prensip işletim sistemleri için de geçerlidir. Her ne kadar Windows 2000 ve ardından gelen işletim sistemleri gayet iyi işletim sistemleri olsalar da gerçekten iyi olan programcıların ancak küçük bir kesimi bu işletim sistemlerini kullanır yani eğer siz bu işletim sistemini tercih ederseniz bunun üzerinden tanıdığınız insanlar da ortalama insanlar olacaktır. FreeBSD ve Linux gibi sistemlerin etrafında ise çok daha iyi bir camia vardır.
Programlama öğrenmeye başlıyorum. Birkaç iyi kitap tavsiye edebilir misiniz?
Pek çok dil için O'Reilly yayınevinden çıkan kılavuzlar yeterince iyi sayılır. Kerninghan ve Pike'ın "The Practice of Programming"i harikadır. Ne sebeple olursa olsun "21 Günde Java Öğrenin" gibi bir kitabı okumamalısınız.
Nasıl daha iyi programcı olabilirim?
Diğer programcıların yazdıkları kaliteli program kaynak kodlarını okumak için vakit ayırın. Maalesef Linux ve GNOME gibi açık kodlu projelerdeki kodların büyük kısmı kötü yazılmıştır. İyi kaynak kodlara sahip olduğunu gördüğüm açık projelerden birkaçı şunlardır:
- FreeBSD çekirdeği ve yardımcı programları.
- Bittorrent: Hem karmaşık algoritmalar barındıran hem de güzel bir kullanıcı arayüzü olan, Python ile yazılmış bir program.
- Squeak: Kendi dilinde yani Squeak ile yazılmıştır. Güçlü grafik kullanıcı arayüzünün kaynak kodu sistemle birlikte gelir ve şimdiye dek gördüğüm arayüz sistemleri içinde temiz, okunabilir ve kolayca müdahale edilebilir tek grafik kullanıcı arayüzü.
- Python: Hem C ile yazılmış yorumlayıcı kısmı hem de işlev kitaplıkları (bunlar Python ile yazılmıştır)
- LCC (lightweight C compiler): Bu C derleyicisi, David R. Hanson'ın yazdığı "A Retargetable C Compiler: Design and Implementation" isimli harika kitapla birlikte incelenirse çok faydalı olur. Hayatınız boyunca bir derleyici yazmayacak olsanız dahi bu kitabı okumanız size çok şey öğretecektir.
Uzman bir programcıyım. Bana birkaç iyi kitap önerebilir misiniz?
Cormen, Leiserson ve Rivest'in yazdığı "Algorithms"; Abelson ve Sussman'dan "The Structure and Interpretation of Computer Programs", Paul Graham'dan "On Lisp" (Lisp kullansanız da kullanmasanız da bu kitabı mutlaka okuyu), Don Knuth'un tüm kitapları (her ne kadar bunun için biraz çaba sarf etmeniz gerekse de). Özel konularda bir iki kitap tavsiye etmem gerekirse öncelikle Stevens'dan "Unix Network Programming", Jones ve Lin'den "Garbage Collection" ve Fraser ve Hanson'dan "A Retargetable C Compiler: Design and Implementation" kitaplarını önerebilirim.