Bana kod yazmayı öğret baba – Bölüm 1
“Makinelerle konuşup anlaşabilme yetisine kod yazmak denir.” Hafız Lakyab, Aralık 2016
Her şeyin başı empati, sevgili dostlar. Nasıl birbirimizle anlaşırken kendimizi birbirimizin yerine koyuyorsak makinelerle anlaşırken de kendimizi bir makine yerine koymamız gerekiyor. Tüm yapmamız gereken onun hangi mantıkla hareket ettiğini anlayıp onunla anlayacağı dilden konuşmak ve “run” tuşuna basmak. Diğer bir değişle “kod yazmak.” İşte ahan da böyle bir şey yapmamız gerekiyor:
Kod yazarken amacımız, ekrana “Merhaba Dünya!” yazan bir programdan daha fazlası olacak tabii ki. Belki bilgisayarımızdaki dosyaları düzenleyen ufak bir yazılım yazmak istiyoruz. Belki Excel’de formüllerle beceremediğimiz bir işi halletmek istiyoruz. Belki aklımıza çok şahane bir akıllı telefon uygulaması geldi, onu hayata geçirmek istiyoruz. Belki sevgilimizi etkilemek için ekrana yanıp sönen 1500 tane “Seni seviyorum <3” yazan bir program yazmak istiyoruz. Belki Windows’u beğenmedik, yenisini yazmak istiyoruz (bu işe girmeyin, ömür yetmez). Hedefimiz ne olursa olsun değişkenlerin, sabitlerin, arraylerin, fonksiyonların dünyasına girip ellerimizi biraz kirletmemiz gerekiyor.
Neyse efendim, lafı fazla uzatmadan sadede gelelim. Neden böyle bir yazı dizisine giriştik? Dedik ki “Madem üç beş satır kod yazmayı öğrendik, çok faydasını da gördük. Neden öğrendiklerimizi kendi anladığımız dilden anlatmayalım?” Kim bilir, belki takipçilerimizden bir meraklısı çıkar ve içinden şöyle haykırır: “Kod yazmak ne güzelmiş lan!”
O zaman yavaştan kolları sıvayalım ve genel tavsiyelerimizle işe başlayalım:
Ellerinizi kirletin: Elinize herhangi bir matematik kitabını alıp konu anlatımlarını ve örnek çözümleri okuduğunuzda devamlı şöyle söylenirsiniz, “Evet gayet mantıklı,” “Bu soruyu da güzel çözmüş.” Ama aslında konuyu öğrenip sınavdan tam not almak için bölüm sonundaki soruları çözmeniz, yani ellerinizi kirletmeniz gerekir. Aynı şekilde bu yazı dizisini okurken gördüğünüz kod örnekleri size çoğunlukla mantıklı görünecektir. Fakat gerçekten öğrenmek istiyorsanız o örneği alıp biraz kurcalamanız, değiştirmeniz, hata yapmanız, hatanızı düzeltmeniz gerekir. Hayatı öğrenmek gibidir bu işi öğrenmek.
Kendinize küçük ve işe yarar hedefler belirleyin: Bu biraz yaşam koçu tavsiyesi gibi geliyor kulağa ama kod yazmaya başlayanlar için de gayet geçerli. Kendinize çok basit hedefler bulun. Başardıktan sonra bir seviye daha zor bir hedef belirleyin. Böylece adım adım ilerleyin. Mümkünse bu hedeflerinizi günlük hayatınızda veya iş hayatınızdaki keşke olsa diyeceğeniz şeylerden seçin. Hani olur ya, bazen söylenirsiniz “Ya bi’ program olsa şu işi otomatik olarak halletse, her gün bir daha bir daha uğraşmasam.” İşte böyle bir program sizin için muhteşem bir hedef olabilir.
Soru sormaktan kaçınmayın: Özellikle yeni başlayan biri olarak basit ayrıntılara takılıp kalmanız, hevesinizi kaybetmeniz gayet olası. Bunun olmasına izin vermeyin. Takılıp kaldıysanız tutun en yakınınızdaki yazılımcının, bilgisayar okumuş gencin yakasına yapışın. Olmadı bize sorun. O da mı olmadı? Bakın şöyle bir site var, ne sorarsanız sorun cevabını buluyormuş. Uzun lafın kısası, utanacak bir şey yok. Sorun.
Tekerleği tekrar keşfetmeyin: Şahsen benim çokça yaptığım bir şeydir. Bir konuda yazmak istediğiniz ufak bir parça kod olur, fonksiyon olur, önce bir Google amcanıza sorun bu zamana kadar yapan var mıymış sağda solda. Hazırı varsa ne gerek var di mi tekrar uğraşmaya? Saatlerinizi harcayıp yazacağınız birkaç satır kod çok öğretici olabilir ama bir yandan da zaman kaybı olacaktır.
Programlama dili olarak yazılımcı dostu Python’u tercih ettik. Hatta şöyle bir online compiler (Türkçede derleyici diye geçer) bulduk. Örneklerimizi orada hayata geçireceğiz. Tabii ki daha temiz bir seçenek de her okuyucunun bilgisayarına Python kurması. İleride dosya okuma, dosyaya yazdırma, farklı kütüphaneler kullanma gibi işler yaparsak bilgisayarımıza kurulu bir compiler işleri çok daha kolaylaştıracaktır. Onun da sırası gelince nasıl halledileceğini konuşuruz. Ama başlamak isteyenler buradan buyurabilir. Bu arada compiler demişken belirtelim, teknik terimlerin zaman zaman İngilizcesini kullanacağız. Bu terimlerin İngilizcelerini öğrenmek sizlere ileride Google’larda yardım kovalarken çok işe yarayacaktır. Tamam tamam, çok uzattık biliyoruz. Hadi, artık yavaştan başlayalım.
Sabah elinize kahvenizi aldınız, koridordan ofisinize doğru yürüyorsunuz. O sırada karşıdan gelen müdürünüzü gördünüz. Yanında önceden hiç görmediğiniz iki tane genç eleman var. Müdür Bey sizi hemen kendileriyle tanıştırdı. Bu yeni tipler meğer yeni stajyerler Mehmet Bey ve Leyla Hanım’mış. İkisini de bir miktar süzdünüz ve ilk izlenimlerinizi hafızaya attınız. Beyninizin bilgi tutan sabit diskinde “Stajyer Mehmet’in yaşı” bilgisi için bir yer açtınız ve oraya 25 yazdınız. “Stajyer Leyla’nın saç rengi” bilgisi için de bir yer açtınız ve oraya “koyu kahve” yazdınız. Birkaç hafta sonra Mehmet Bey’in doğum günü partisini kutlarken birden Leyla Hanım sarı renge boyatmış saçlarıyla ortama damladı. Siz de hemen hafızadaki “Stajyer Mehmet’in yaşı”nı 26’ya, “Stajyer Leyla’nın saç rengi” ni “sarı”ya değiştirdiniz.
Bir bilgisayar programının çalışma prensibinin de benzer olduğunu söyleyebiliriz. Kendisine hafızada tutması için “Stajyer Mehmet’in yaşı” gibi pek çok değişken (İngilizcede variable) tanımlayacağız. Sonra kendisine bu değişkenlerin değerlerini farklı durumlarda belli kurallara uygun şekilde değiştirmesini söyleyeceğiz. Sonra “çalıştır” butonuna basacağız. Peki, neden program yazmak gibi bir zahmete katlanıyoruz?
- Bir program binlerce, milyonlarca değişkeni hafızada tutup onu milisaniyelerden de kısa bir sürede hatırlayabilir. Mesela bir websitesinde kullanıcı adınızı ve şifrenizi girdikten sonra girdiğiniz bilgilerin doğru olup olmadığı milisaniye gibi bir sürede size söylenecektir. Tabi burada bazı sitelerin milyonlarca kullanıcısı olduğunu hatırlatmakta fayda var. Öte yandan bizler arkadaşlarımızın yaşlarını hatırlamak için çoğu zaman Facebook’a bakmak zorunda kalıyoruz. Eğer yaşlarını gizlememişlerse şanslıyız.
- Bir program değişkenlerin değerlerini milisaniyeden kısa sürelerde değiştirebilir. Böylelikle binlerce değişkenli çok karmaşık matematik problemleri bile çok kısa sürelerde çözülebilir. Biz ise henüz o kadar evrimleşemedik. Daha yaş problemi çözerken 2 değişkenli denklemleri kağıt kalemle çözmemiz 5-10 saniye sürüyor. O da üniversiteye hazırlanırken. Sonra paslanıyoruz.
- Doğru yazılan bir kod hiçbir zaman hata yapmayacak, kuralları harfi harfine uygulayacaktır. Bize dönecek olursak, hatasız kul olmaz.
Şimdi kolları sıvayalım ve 3-5 satır kod yazalım. Öncelikle linkteki compilerımızı açıyoruz. Daha fazla detaya inmeden bu compiler neyin nesi onu da açıklayalım. Kendisi yazdığınız kodu satır satır okuyup doğruluğunu test eden, yanlış bir şey varsa hatanızı acımasızca yüzünüze vuran, her şey doğru görünüyorsa kodunuzu satır satır uygulayan başka bir program. Açtığımız ekranda sol tarafa aşağıdaki kod örneğini kopyalayıp yapıştırıyoruz. Sonra yukarıdan run’a basıyoruz.
mehmetin_yasi = 25 leylanin_sac_rengi = "koyu kahve"
An itibariyle hayatınızın en basit, belki de ilk programını yazdınız ve çalıştırdınız. Sağ taraftaki siyah bölgede sonuçta neler olduğunu görebilirsiniz. Hiçbir şey olmamış gibi görünüyor değil mi?
Aslında çok basit bir iki şey oldu. Yukarıda anlattığımız tanışma sahnesindeki beynimizde yaşanan olayların bir benzerini Python programızda tekrarladık. Programımızın çalışmasıyla kodun çalıştığı serverdaki bilgisayarda hafızada iki adet değişken için yer açıldı ve bu değişkenlere değer atandı. Sonrasında ise program tamamlandığı için bu programa dair her şey hafızadan silindi. “Tamam da kardeşim, ben şimdi ne olup ne bittiğini anlamadım. Siyah bir ekran var sağda sadece?” demeniz gayet olası bu noktada. Bunun için “print” isminde bir yöntem uygulayacağız. Print Python’da bir değişkenin o andaki değerini ekrana yazan bir fonksiyon. Fonksiyon muhabbetinin detaylarına sonradan gireriz, önce şunu kodumuzun son satırına ekleyelim ve tekrar run’a basalım.
print(mehmetin_yasi)
Beklendiği üzere siyahlığın içinde bir adet 25 belirdi. Çünkü mehmetin_yasi değişkenin değeri 3’üncü satıra ulaştığımızda 25’ti. Şimdi aşağıdaki birkaç satır kodu ekleyelim ve bakalım neler oluyor.
mehmetin_yasi = mehmetin_yasi + 12 print(mehmetin_yasi)
Bu iki satırı da ekleyip run’a bastığımızda siyah ekrandaki görüntünün böyle olması lazım.
Şimdi teker teker yazdığımız programda sıra sıra neler oluyor yazalım.
- mehmetin_yasi adında bir değişken yarat ve onun değerini 25 yap.
- leylanın_sac_rengi adında bir değişken yarat ve onun değerini “koyu kahve” yap.
- mehmetin_yasi değişkenin şu anki değerini (an itibariyle 25) ekrana yaz.
- mehmetin_yasi değişkeninin değerini mehmetin_yasi değişkenin değeri + 12’ye eşitle.
- mehmetin_yasi değişkenin şu anki değerini (an itibariyle 37) ekrana yaz.
Birinci kural: Yazdığımız programın derleyicisi yukarıdan aşağı satır satır inerek komutları teker teker uygular.
Aynen de yukarıda listelediğimiz sırada. Arada “27’nci satırdan devam et,” “git şu fonksiyonun içine gir bakalım,” gibi şeyler söylerek bu kuralı biraz törpüleyeceğiz ama oraya daha var. Şimdi dördüncü satırı dikkatle izliyoruz sevgili seyirciler.
mehmetin_yasi = mehmetin_yasi + 12
Bu yazdığınızı matematik hocanıza gösterseniz sizi sopayla kovalayabilir. Aslında yapmaya çalıştığımız şey saçma da olsa mehmetin_yasi isimli değişkenin değerini 12 artırmak. Bunu yaparken de ikinci kuralımızı kullanıyoruz.
İkinci kural: Yazdığınız bir eşitlikte eşitliğin sol tarafındaki değişken eşitliğin sağ tarafında hesaplanan değeri alır. O yüzden (bazı istisnalar haricinde) sol tarafta değerini değiştirmek istediğimiz değişkeni, sağ tarafa da kendisinin sahip olması gereken yeni değeri veya o değeri hesaplayacak denklemi yazarız.
Aynen yukarıda yaptığımız gibi. Compiler 4’üncü satıra ulaştığında mehmetin_yasi‘nın değeri henüz 25’ti. O yüzden eşitliğin sağ tarafı 25 + 12 = 37 olarak hesaplandı. 4üncü satır uygulandığında ise artık mehmetin_yasi‘nın değeri 37 olmuştu.
İkinci kurala dönecek olursak, şöyle bir şey yapıp programınızdan y’nin değerini bulmasını beklemeyin. Hatalardan hata beğenirsiniz.
x = 3 x + y = 10
Ama eğer şöyle bir şey yaparsanız kendisi y’nin değerini hemen bulabilir.
x = 3 y = 10 - x
“Ohooo onu dedem de çözer,” diye içinizden geçirdiğinizi biz taa buradan duyduk. Daha karmaşık problemler için biraz sabredelim ve bu dersi burada kapatalım. İkinci bölümde görüşmek üzere!
Hafız Lakyab
Yazar: Hafız Lakyab (tümünü gör)
- Dev Kütleli Bir Kara Deliğin Olması Gereken Yer, Galaksisinin Merkezi midir? - 17 Eylül 2019
- Bana kod yazmayı öğret baba – Bölüm 9 - 10 Mart 2019
- Bana kod yazmayı öğret baba – Bölüm 8 - 24 Şubat 2019
- Bana kod yazmayı öğret baba – Bölüm 7 - 10 Şubat 2019
- Bana kod yazmayı öğret baba – Bölüm 6 - 27 Ocak 2019
Üstadım 2. bölüm için sabırsızlanıyorum. Lütfen yayımlandığı zaman e-postama düşürebilecek bir hatırlatıcıya halilterzi53@gmail.com adresini ekleyebilir misiniz? Çok teşekkür ederim.
https://bilimneguzellan.net/index.php/feed/ adresinden RSS Feed takibini tarayıcınıza yaptırabilir, yeni yazı yayınladığımızda böylece rahatlıkla erişebilirsiniz.
Link geçersiz diyor
Tekrar deneyebilir misiniz?
Belki anlık bir şeydir, zira biz birkaç kez ve farklı tarayıcılarda denedik, bir sorunla karşılaşamadık.