Programlamayı nasıl öğreneceğim?t

Neden programlama dili öğrenmek zor?

Diğer derslerde başarılı olmama rağmen programlama dersim neden kötü?

Programlama dersini geçtim, neden program yazamıyorum?

Konuları anlıyorum ama soruyu koda dönüştüremiyorum.

Bu programlama işi gözümde çok büyüdü.

Bu ve benzeri soruları öğrencilerden çok duyuyorum. Onun için bu makaleyi yazmaya karar verdim. Bu makale size doğru ve etkili bir şekilde bir programlama dilini nasıl öğreneceğinizi anlatmayı amaçlıyor.

Programlama öğrenmek matematik, fizik gibi sayısal derleri veya tarih psikoloji gibi sözel dersleri öğrenmeye benzemez. Çünkü bu derslerde bölümler kısmen de olsa birbirinden farklıdırlar. Onun için bir bölümü anlamasanız da diğerini anlayabilirsiniz. Trigonometriyi anlamamanız, denklemler konusunu anlamanıza engel değildir. Fizikte basit makineleri anlamamanız, optik konusunu anlamanıza engel değildir. Tarihte bir savaşı öğrenmemiş olmanız, başka bir savaşı öğrenmenize engel değildir.

Programlamayı öğrenmeyi bir yabancı dili öğrenmeye benzetiyorum ben. Yada müzik aleti çalmaya, spor yapıp belirli bir hedefe uzun emekler sonucu ulaşmaya. Hayatta bazı şeyler ciddi emek vererek elde edilir. Ama bunun güzel yanı emek veren herkesin bunları elde edebilmesidir. Her insan yeterli emeği verdiği taktirde bir müzik aleti çalabilir, spor yapıp kilo verebilir, bir yabancı dil öğrenebilir ve bir programlama dilini öğrenebilir. İngilizce öğrenmek için hiç birimizin dahi olmasına gerek yok. Ancak yukarıda saydıklarımın hiç biri akşamdan sabaha öğrenilmez.

Buradan sonra yabancı dil öğreğiyle devam etmek istiyorum. Çünkü programlama da bilgisayarla konuşmamızı sağlayan bir dil. Kendine ait bir grameri, kelimeleri, yazım kuralları var. İngilizceyi, fransızcayı, almancayı nasıl öğrenmeniz gerekiyorsa, programlama dilini de öyle öğrenmelisiniz. Öncelikle bu işin kısa bir sürede olmayacağını anlamamız gerekiyor. Nasıl ki hiç bilmeyen birinin fransızcayı bir kaç ayda öğrenmesi mümkün değilse. Hiç programlama bilmeyen biri de programlamayı bir kaç ayda öğrenemez. Eğer başka bir bilgisayar programlama dilinde tecrübeniz varsa bu süre çok kısalacaktır. Bunun nedenini makalenin ilerisinde açıklayacağım.

Hiç programlama dili bilmiyorsunuz yada çok az biliyorsunuz, eğitim almamışsınız yada okulda ders olarak almışsınız ve en önemlisi bu alanda tecrübeniz yok yani oturup düzenli bir şekilde haftalarca, aylarca kod yazmamışsınız. Nasıl öğreneceksin? Hemen anlatayım 🙂

Öncelikle aşağıda belirtiğim konuları tek tek çalışmak ve sonrasında çözebileceğiniz kadar çok soru çözmek gerekiyor. Ne yazık ki türkçe kitaplarda çok fazla soru olmuyor. Bundan dolayı ingilizce kitaplardaki soruları çözmenizi tavsiye ediyorum. Bir süredir sonra her konuyla ilgili 100 a yakın soru oluşturup buraya linklerini koyacağım.Konu da fazla yok aşağıda sıraladığım gibi 9 veya 10 konudan bahsediyoruz burada. Bitti bu kadar 🙂 Bir programlama diliyle ve bütün konularıyla ilgili toplam 1000 kadar küçük soruyu çözdüğünüzde programlama öğrenmiş olacaksınız. Bu soruları kas hareketleri gibi düşünün. Hiç koşmamış bir koşucu olmaz, sizin koşunuzda bu sorular. Dediğim gibi 1000 e yakın türkçe soru oluşturup / çevirip javaci.net te yayınlayacağım.

Öğrenmeniz gereken konu başlıklarını özetleyeyim. Modern programlama dilleri iki programlama yaklaşımını birlikte kullanırlar Yordamsal / metotsal / prosedürel programlama (Procedural programming) ve nesne yönelimli programlama (Object oriented programing). Bunların dışında başka yaklaşımlar da var ama en önemlileri bunlar ve programlama öğrenmeye bunlarla başlanmalıdır.

Yordamsal / metotsal / prosedürel programlama

  1. Değişken tanımlama ve operatörler
  2. if else switch gibi akış yönlendiriciler
  3. Döngüler (for, while)
  4. Metodlar
  5. Diziler ve çok boyutlu diziler

Nesne yönelimli programlama (NYP)

  1. Nesne ve sınıf
  2. Türetme ve çok biçimlilik
  3. Exception handling
  4. Soyut sınıf ve arayüzler

Yukarıdaki konu başlıkları üç aşağı bey yukarı bütün nesne yönelimli programlama dillerinde vardır. Nesne yönelimdi diller aynı zamanda prosedürel programlama dilleridir. Dünyada SIMULA (1965), smalltalk (1972) gibi çok eski NYP dilleri olmasına rağmen NYP’nın yaygınlaşması C++ (1983) la olmuştur. 83 te yayınlana C++ ancak 90 ların başında çok yaygınlaşmıştır. Sonra da java ve C# takip etmiştir C++ ı. Dünyaca ünlü TOIBE indexinde %21.46 ile java dünyanın en çok kullanılan programlama dili. C %16 ile ikinci ve C# %4.7 ile 4 sırada yer alıyor. Detaylı analiz için bu linki tıklayabilirsiniz.

makale1

NYP nın her yerde her zaman bütün sorunları çözdüğüne dair bir yanlış alğı var. 1945 lerden 1990 lara kadar dünyada yazılan kodların neredeyse tamamı prosedürel programlama araçlarıyla yazılıyordu. NYP tarihçesinden kısaca bahsetmemin nedeni prosedürel programlamanın ne kadar önemli olduğuna vurgu yapmak içindi. Gördüğüm kadarıyla, bütün eğitim kurumlarında (üniversite ve kurslar) prosedürel programlamaya yeteri kadar değer verilip yeteri kadar üzerinde durulmuyor. prosedürel programlamanın her konusunda -ki bunlar bir kaç taneler, yeteri kadar soru çözüp kod yazıp kendinizi geliştirmelisiniz. Dediğim gibi bunları bilek hareketleri gibi düşünün ve kaslarınızı geliştirin arkadaşlar 😀