Java’ya Nasıl Başlarım? Java’yı Nasıl Öğrenirim? – II
Java’yı öğrenmeye bu yazıyla daha önce hızlı bir giriş yaptıktan sonra şimdi de daha detayda, Java SEyi öğrenmenin ne anlama geldiğinden bahsedelim.
Öncelikle, Java’nın, nesne-merkezli, standartlar üzerine kurulmuş, hem derlenen hem de yorumlanan ve sanal bir makina ile başarılan platformdan bağımsız yapısını, kavramsal olarak algılamak lazım. Ben bunu, Java Dersleri sayfasındaki ilk konu olan Java’ya Giriş ile vermeye çalışıyorum. Bu yapıları anlatırken, Java’nın hem nesne yapısı, hem derlenen ve yorumlanan yapısını, dolayısıyla platformdan bağımsız olmasını da sağlayan sanal makina yani JVM (Java Virtual Machine) yapısını ve bytecode kavramını, tamemen en basit araçları kullanarak anlatıyorum. Yani Selam.java ve SelamTest.java kodlarından oluşan ilk Java örneğini, hiç bir IDE kullanmadan, Windows makinada Notepad, CMD kullanarak, MacOS’da ise benzer şekilde TextEdit gibi basit bir editör ve terminal kullanarak ve pek tabi ki javac ve java komutlarıyla derleyip çalıştırıyorum. Bunları yapmadan tabi ki, Java ya da daha doğrusu JDK (Java Development Kit) nereden, makinaya nasıl hızlıca kurulur, kurulum dosyaları nerededir gibi basit konfigürasyon yapılarını da gösteriyorum. Tabi ki güçlü ve şık IDEler kullanarak daha rahat kod geliştireceğiz ama öncelikle, iyi bir Javacı adayının, basit bir editör ile kodunu yazıp, , javac derleyicisi ile derleyip, varsa hatalarını giderip, gerekli class dosyasını üretebilmek ve sonrasında onu da java yorumlayıcısı ile çalıştırabilmesi gereklidir.
Pek çok genç yazılımcının bana sorduğu sorularda çok sık bir şekilde “Eclipse’de kod yazıyorum” gibisinden cümleler geçiyor. Ve çok garip bir şekilde sorununun Eclipse’de nasıl çözüleceğini öğrenmeye çalışıyor. Halbuki sorun, bir Eclipse problemi değil 🙂 Soru, “Eclispe’de kod bloğunu açıp kapamayı nasıl yaparım” değil mesela. Sorunu bir Java problemi, hatta çoğu kez, yukarıda bahsettiğim en temel derleme ve çalıştırma problemi, ama genç arkadaşımız, Eclispe ya da Netbeans bağımlı bir Java algısı geliştirdiği için, elma ile armutu birbirine karıştırıyor ve soruyu yanlış soruyor. Sağlam Javacı ya da herhangi bir dildeki programcı, üzerinde çalıştığı işletim sistemi ne olursa olsun, kullandığı dilin en temel yapılarını, yani derleme ve çalıştırma zamanı yapılarını bilmeli, konfigürasyonunu en temel araçlarla, doğrudan işletim sistemi üzerinde yapabilmeli. Bu yetkinlikleri kendi kendine çalışarak kazanmak zor, dolayısıyla bunlar, ya çok açıklayıcı, kendi kendine öğren (yani tutorial) tarzında bir kitap ya da yayın ile öğrenilmeli ya da bizzat işi iyi bilenin yanına oturup, bir eğitimle öğrenilmelidir.
Sonrasında, İngilizce kitaplarda “nuts and bolts” adı altında geçen ve çoğu zaman yeni öğrenenlere kuru gelen, en temel bilgiler öğrenilmeli. Yani, anahtar kelimeler (keywords ve reserved words), yorumlar (comments), isimlendirme kuralları ve veri tipleri. Veri tipleri derken, Java’da ilkel veri tipleri (primitive data types) ve karmaşık ya da referans tiplerini (complex or reference types) kastediyorum. Bu noktada refenras veri tiplerini detayına girmeden ayırımdan bahsedilip, daha çok, 8 tane olan ilkel veri tipleri ve özellikleri öğrenilmeli. Sonrasında bu tiplerden değişken tanıtma ve tanımlama, aralarındaki tip çevrimleri (casting), Java kaynak kodunun yapısı, ifade (expression), cümle (statement), blok (block) ve kapsam (scope) gibi en temel noktalar da bu sırada ele alınmalıdır. Bu konular, Java Dersleri sayfasında 3. konu olan Java’nın Temelleri altında ele alınmaktadır.
Sonrasında, yukarıda başlanan “nuts and bolts”a operatörler, akış kontrolu ve diziler ile devam edilmelidir. Malum operatörleren kasıt, bir, iki ya da üç tane girdi alıp farklı iplerde sonuç üreten işlemcilerdir. Mantıksal operatörler boolean sonuç üretirler örneğin. Bu gibi konular da yeni öğrenenlere sıkıcı gelebilmektedir çoğu zaman. Bunu aşmanın yolu, sık örnek yapmaktır. Örnekler üzerinde oynayıp, orasını burasını kurcalayarak değiştirip, dilin davranışını görmek hem zevkli hem de öğreticidir. Bu gibi konular, basit ve önemsiz görülüp üstün körü geçilirse, ileride problem çıkarırlar. Örneğin, toplama, cıkarma, çarpma, bölme, ve kalan operatörlerini, zaten biliniyor diye bakmadan geçmek mümkündür. Lakin, böyle bir durumda, Java’da iki tane byte değerin toplamının bir başka byte etmediği, bir int ettiği şaşırtıcı gerçeğini öğrenemeyeceksiniz demektir 🙂
If, if-else, if-else if, while, do-while, switch, break ve continue gibi yapı ve anahtar kelimeleri içeren akış kontrolü de benzer şekilde hızlı da olsa, bol örnekle öğrenilmeli, varsa püf noktaları görülmelidir. Sonrasında ise diziler ele alınabilir. Önce standart , tek boyutlu diziler, sornasında iki ve üç boyutlu diziler öğrenilmelidir. Özellikle iki ve üç boyutlu dizileri, sağlam kafayla, örneğin sabahın erken saatlerinde ele almaktya fayda vardır, yoksa zihniniz su kaynatabilir 🙂
Operatörler, konrol yapıları ve dizileri öğrendikten sonra, bunların birlikte kullanılabileceği güzel uygulamaları yapmak, öğrenilenleri pekiştirir ve prosedürel yapıların sindirilmesini sağlar. Bu amaçla ben, önce en ilkel yolla, girilen bir sayının asal olup olmadığını ve girilen sayıya kadar hangi asalların olduğunu bulan uygulamalar yaptırıyorum. Sonra olayı biraz daha zevkli kılmak ve zekanın ne olduğunu ortaya koymak için mesela girilen bir sayıya kadar olan asal sayıları, Sieve of Eratosthenes algoritmasıyla nasıl bulunacağını açıklayıp, bunu yaptırıyorum katılımcılara. Benzer şekilde Monta Carlo yöntemiyle Pi sayısına nasıl yakınsayacağımızı gösteriyorum. Bu konuları içeren ve nispeten daha genişce bir uygulama olarak Conway’in “Hayat Oyunu” (Game of Life) düşünülebilir. Bu konular, tamamen algoritmik olduklarından, hem bu üç konuyu iyice pişirmeyi sağlıyor hem de nefis bir beyin jimnastiği yapmanıza vesile oluyorlar. İnsan kendini hakikatten programcı gibi hissediyor 🙂
Bu konular, Java Dersleri sayfasında, 4, 5 ve 6 nolu konular olarak ele alınmaktadırlar.
Buraya kadar olan kısımlar, günde 6 saat ders yapılan bir eğitimde, sınıfın seviyesine göre 2 ila 3 günde verilir rahatlıkla.
Sonrasında, Java’nın nesne yapılarına gelir sıra. Buradan sonrası çok daha zevklidir tabi ki. Ama bu kısmı bir sonraki yazı ile ele alalım.
Toplam görüntülenme sayısı: 16871