Hangi Programlama Dilini Öğrenmeliyim ?

Bir soru. Çevremde ve sözlükte bir çok insan tarafından mütemadiyen sorulan bir soru. Soruyu soran şahıs farkında olmasa da, aslında bu soruyu sorarkenki asıl amacı spesifik olarak bir programlama dilini öğrenmek değil. Asıl öğrenmek istediği;

Ben bu işi öğrenmek ve bu alanda çalışmak istiyorum. Nereden başlamalıyım?

sorusunun cevabı. Evet;

Bu işe başlamak isteyenler ya da yeni başlamış olanlar için bir roadmap niteliğinde olmasını umut ettiğim satırlarıma başlamadan önce fon müziği olarak arkada çalabilecek bir parça hazır bulunsun:

2006 yılında, lisede, sınıftaki sevdiğim bir kız arkadaşımın doğum günü vardı. Hediye alacak param olmadığından mütevellit, o zamanlar yeni yeni merak duymaya başladığım programlama ile ilgili bi` şeyler yapmaya karar verdim. Kafamdaki plan, kızın doğum gününü kutlayan bir bilgisayar programı yazmaktı. ADSL bile olmayan internet bağlantım üzerinden, doğru düzgün ingilizce bilmediğim için, türkçe sitelerden bu işi nasıl yaparım diye araştırmaya başladım. Sonuç olarak Visual Basic 6.0 diye bir programlama dili buldum. 1–2 hafta inceledikten sonra programı yazmaya başladım.
Bitirdiğimde; pembe bir arkaplana sahip, ortasında uzun bir doğum günü mesajı olan, sağda solda üzerine basıldığında sempatik (ya da ergence) kutlama mesajları gösteren butonların olduğu bir Windows programı ortaya çıkmıştı.

En son o arkadaşımla konuştuğumda (3–4 yıl önce), hala saklıyordu cdyi. Bu, ciddi (!) anlamda yaşadığım ilk programlama tecrübesiydi.

Eğer ingilizce bilseydim ve beni doğru kaynaklara yönlendirebilecek bir tanıdğım olsaydı, Visual Basic 6.0 nın, son sürümü 1998 yılında yayınlanmış ve artık neredeyse kullanılmayan bir dil olduğunu bilirdim; onun yerine çok daha yeni bir teknoloji olan .NET teknolojsinde yazabilir ya da masaüstü programı yerine bir web uygulaması yazabilirdim.

Konudan bağımsız olarak;

Ya da hiç bunlarla uğraşmayıp; babamdan 50 lira alıp adam gibi bir doğum günü hediyesi de alabilirdim.

İlk bölümden çıkarılacak ders;

İngilizce Öğrenin ( Ya da ailenizden para istemeyi öğrenin )

Yazının bundan sonraki kısmına ingilizce bildiğinizi varsayarak devam ediyorum. Aşağıdaki paragrafı anlamakta zorluk çekiyorsanız ingilizce eksiğiniz olabilir. Yine de merak ediyorsanız devam edebilirsiniz tabii ki.

MIT — Introduction to Computer Science and Programming:

Now, this course is primarily aimed at students who have little or no prior programming experience. As a consequence, we believe that no student here is under-qualified for this course: you’re all MIT students, you’re all qualified to be here. But we also hope that there aren’t any students here who are over-qualified for this course. And what do I mean by that? If you’ve done a lot prior programming, this is probably not the best course for you, and if you’re in that category, I would please encourage you to talk to John or I after class about what your goals are, what kind of experience you have, and how we might find you a course that better meets your goals.

Peki hangi programlama dili ?

Bu sorunun cevabını net olarak veren uluslararsı bir komite ya da otorite yok. Herkes farklı bir cevap verebilir. Ya da herkes kendi başladığı programlama dilini önerebilir. O yüzden, biraz olsun objektif bir sonuca ulaşmak için bu alandaki büyük okulların müfredatlarına bakabiliriz.

M.I.T (massachusetts institute of technology), uzun yıllardır, programlamaya giriş ve algoritma derslerini Python üzerinden vermektedir. Aşağıda da bu dersin videolarını bulabilirsiniz:

Introduction to Computer Science

Ülkemizde de Koç Üniversitesi bu dersleri Python üzerinden vermekteymiş. (Askerdeyken oradan mezun bir arkadaşım söylemişti. Onun yalancısıyım)

Eğitim kurumlarının yanı sıra, internette de kısa bir araştırma yaparsanız, bir çok web sitesinden bir çok programcı ve blogger ın Python ve Javascript gibi yüksek seviyeli dilleri işaret ettiğini görürsünüz. Bu dillerin en büyük avantajı , gerçekten yüksek seviyeli diller oldukları için, sizi Memory Management, Garbage Collection, Thread, Stack, Pointer gibi nispeten low level kavramlarla mümkün olduğunca az muhattap etmesidir.

Mesela aşağıda neden Python’un başlangıç olarak muazzam olduğunu anlatan güzel bir blog yazısı var:

print("Hello, World")

Yukaridaki, en basit ve en kısa python programlarından birisidir. Ekrana Hello World yazdırır. Aynı işi yapan kodu Java da yazmak istediğinizde ise;

public class HelloWorld {
public static void main(String[] args) {
System.out.println(“Hello, World”);
}
}

Şimdi, yeni başlayan birisi bu kodu yazdıktan sonra sırasıyla şunları soracak:

  • public ne?
  • class ne?
  • static ne işe yarar?
  • void ne demek?
  • neden main yazdık ?

Daha da uzar bu liste. Ama Python’da yazdığımız kodu açıklaması çok daha kısa sürer. Özellikle öğrenme aşamasındayken; yazdığımız kodun tam olarak ne işe yaradığını , ne iş yaptığını bilmezsek ileride daha büyük sıkıntılara yol açabilir. O yüzden ilk öğrenme aşamasında mümkün olduğunca basit ve yüksek seviyeli bir dil seçerek, programlamanın temellerini kavramak daha mantıklı olacaktır. Bu, aynı zamanda süreci de hızlandıracaktır.

Ayrıca Python, Ruby ve Javascript gibi diller, kolaylıkla, hem masaüstü hem de web tabanlı uygulamalar hazırlamanıza olanak sağlar. Özellikle Web Programlama, öğrenme sürecini daha eğlenceli bir hale getirecektir.

  • Django [Python]
  • Rails [Ruby]
  • Node.js [Javascript]

Yukarıdaki listede bu 3 ayrı dil ile Web uygulamaları hazırlamanızı sağlayan teknolojiler listelenmiştir. İlgili kelimeleri google da aratarak kendinize bir başlangıç noktası sağlayabilirsiniz. [Unutmayın, ingilizce kaynaklar.]

Bundan sonra ne olacak ?

Asıl olay şimdi başlıyor. Beğendiğiniz dil ile 2–3 ay vakit geçirdikten sonra artık programlamanın temel mantığına neredeyse hakimsiniz. Artık kendinize ilerisi için yol seçmeniz gerekmekte. Bu yolu seçmeye de aşağıdaki soruyla başlayabilirsiniz:

Ben ne programcısı olacağım ?

Envai çeşit programlama alanı var. Bazıları:

  • System Programming
  • Mobile Programming
  • Web Programming
  • Game Programming
  • Desktop Programming

En az 10 gününüzü ayırıp bu başlıkların her birisini tek tek araştırın. Nedir, ne değildir, ne iş yaparlar, örnek projeler, örnek kodlar, programlama dilleri nelerdir, o alan için bi ön gereksinim var mı (Mesela Oyun Programlama için ortalamanın üzerinde bir fizik bilginizin olması büyük avantaj sağlar) vs.

İstediğiniz alana karar verdikten sonra direk olarak bu alanda araştırmaları arttırın. Örnek projelere ve kodlara daha çok bakın. Bu alandaki başarılı adamların kitaplarını ve bloglarını okuyun.

Alanınızda çalışmaya ve öğrenmeye başladıktan 1–2 sene sonra kendinize Junior Developer diyebilirsiniz. Junior, IT dunyasında Bilgisi var ama tecrübesi yok anlamına gelen, şirin bir sıfattır.

Tam bu noktada, kendinize sizi yetiştirmek üzere işe alma cesaretini ve büyüklüğünü gösteren bir yazılım firması bulabilirseniz hayırlı uğurlu olsun. Bu şansı iyi değerlendirin ve profesyonelliğe ilk adımınızı atın.

Bir kaç maddeyle toparlayıp bitirelim:

  • Herhangi bir şeyi öğrenmenin en kolay ve etkili yollarından biri örnek yapmaktır. Mobil programlamaya karar verdiyseniz, elinizdeki Android / iOS telefonunuza kurup çalıştırabileceğiniz bir uygulama yazın. Ekranda sadece merhaba bile yazsa o sizin ilk uygulamanız olacak. Saklayın onu. Web Programlamaya merak duyduysanız, bir blog sitesi yazabilirsiniz.
  • Yukarıda bahsettiğimiz yüksek seviyeli nispeten basit diller ile bir kere olayın mantığını kavradığınızda hepsi gözünüze aynı gelecek. Bir noktadan sonra daha önce hiç kod yazmadığınız bir dilde kod yazmanız gerekse bile, bir kaç saatlik döküman incelemesinden sonra, yavaş da olsa, ortaya bir şeyler çıkartabilirsiniz.
  • Copy / Paste programcısı olmayın. İnternetten işinize yarayacak bir kod parçası aldıysanız bile ( ki alabilirsiniz bunda sorun yok ) aldığınız kodun ne iş yaptığını ve nasıl çalıştığını anlayın. Sonraki kullanımlarda bu kodu kendiniz yazmaya çalışın.
  • Piyasadaki binlerce lira para isteyen kurslara gitmeyin. Oralara vereceğiniz para ve zamanla kendinizi, doğru kaynaklarla, çok daha iyi yetiştirirsiniz.
  • Dünyada sadece c# ve java yok.
  • Üniversitelerimizin çoğunun c# ve java öğretiyor olması bu gerçeği değiştirmez.
  • Ülkemizdeki iş ilanlarının çoğunda c# ve java bilen adam aranması da iki yukarıdaki gerçeği değiştirmez.
  • c# ve java kötü programlama dilleri DEĞİLDİR. Sadece başlangıç için ideal değiller. Olayın temelini kavradıktan sonra pekala kariyerinizi bu dillerden birisinin üzerine kurabilirsiniz.

Son olarak; bu, zorlu ama bir o kadar da eğlenceli, yolculuk süresince her gün bakmanızı tavsiye ettiğim bir kaç web sitesi:

  • Stackoverflow → Kod yazarken takıldığınız bir nokta %99 ihtimalle bu sitede daha önce sorulmuştur ve cevabı verilmiştir. Sorunuz olmasa bile düzenli olarak girip postları inceleyin. Çok faydalı.
  • /r/programming → Güncel haberler, makaleler, sorular ve blog yazıları.
  • Hacker News → Yukaridaki gibi ama sadece programlamaya ozel değil. Genel olarak neredeyse bütün IT dunyasının haberleri ilk buraya düşer. Efsanedir.
Not: Yazının orjinalini Asosyal Sözlük için aşağıdaki adreste yazmıştım. Buraya özel olarak sözlük konseptinden çıkarıp biraz daha düzenli ve sade olarak yazdım.

https://asosyalsozluk.com/e/1314136/