Yazılıma nereden başlamalı sorusu, yazılıma başlamak isteyenlerin genelde sorduğu bir sorudur. Yazılıma nereden başlanılacağı bilinemez çünkü yazılım bir okyanus gibidir. Ne kadar yüzerseniz yüzün, ne kadar dibine giderseniz gidin bitmeyeceği aşikardır. Fakat elbette bir yerden başlanmalı değil mi? Başlayacağımız yer programlama dilleri olacak. Bu yazı da en çok onlara değineceğiz. Yazının sonunda eğer başlamak isterseniz birkaç kaynak vereceğim. Ancak şiddetle tavsiye ettiğim tek bir şey var. O da İngilizce bilmek. Çünkü eğer İngilizce biliyorsanız okuyabileceğiniz, araştırma yapabileceğiniz, öğrenebileceğiniz kaynak sayısı Türkçeye oranla ölçülemeyecek şekilde artıyor. İngilizce bilmediğiniz takdirde iyi bir yazılımcı olamazsınız demiyorum. Fakat bilmenizin sizi daha iyi bir yazılımcı yapacağı aşikar. Haydi başlayalım!
Programlama Dilleri
Programlama dillerini basitçe anlatacak olursak; bilgisayar ile iletişime geçmemizi sağlayan dillerdir. Bilgisayarlar “binary code” denilen ikili kod sisteminde çalışırlar. Bu ikili sistemin ne olduğuna başka bir yazıda ayrıntılı bir şekilde değinebiliriz. Fakat şimdilik bu sistemin 0 ve 1 kullanılarak her kombinasyona bir sembol, işlem vb. olayların atandığını ve bilgisayarın bunları anladığını düşünün. Programlama dilleri ise yazdığımız kodları “derleyici” veya “yorumlayıcı” olarak adlandırılan yazılımlar ile 0 ve 1 çevirerek bilgisayara iletir. Bizim programlama dilinde yazdığımız koda “kaynak kodu”, compiler yardımı ile çevrilen koda ise “makine kodu” adı verilir. Programlama dillerinin ne işe yaradığını kısa bir şekilde anlattığımıza göre şimdi ‘hangisinden başlamalı?’ sorusuna yanıt bulmaya çalışalım.

Yanda görmüş olduğunuz üzere C dilinde yazılmış olan bir kod compiler yardımı ile Makine koduna çevriliyor.
Yazılıma Nereden Başlamalı? – Hangi Programlama Dili?
Hangi programlama dilinden başlayacağımızın kesin bir cevabı olmamakla birlikte birden çok tavsiye verilebilir. Fakat bu soruyu araştırdığınızda alacağınız cevapların çoğunluğu “C Programlama Dili” olacaktır. Bunun sebebi gerçekten C’nin temel bir dil olmasıdır. C’yi öğrendiğiniz taktirde diğer dillere geçişiniz çok daha kolay olacaktır. Örneğin ben Python dilinden başladım ve C’yi sonradan öğrendim. Fakat ilk önce C’yi öğrenip sonra Python’a geçseydim Python’ı öğrenme sürecimin daha kolay olacağını gördüm. Evet bu açıdan baktığımız zaman C öğrenmenin daha mantıklı bir başlangıç olacağını görüyoruz. Şimdi baktığımız açıyı değiştirmek istiyorum. Python’ın sözdizimi (yani syntax dediğimiz dil bilgisi kuralları) C’ye oranla çok daha kolay ve anlaşılabilir düzeyde. Eğer ben C ile başlasaydım, belki de C’nin sözdizimi gözüme karmaşık ve zor gözükecek, Python’da aldığım yolu C’de büyük ihtimalle daha uzun zamanda veyahutta hiç alamayacaktım. Bu yönden baktığımızda da Python gibi sözdizimi kolay bir dille başlamak mantıklı geliyor.
Böyle bir ikilemimiz varken ne yapmalıyız? Aslında burada zor bir ikilem yok. İki yol da mantıklı ve ikisinden de başlanılabilir. İkisinde de önemli olan kişinin çalışması ve azmidir. Programlama dillerinde genel hep aynı şeyler anlatılır. Basit sözdizimi kuralları farklılık gösterir. Aslında hepsinde temelde anlatılan konseptler aynıdır. Siz zaten herhangi bir dilde herhangi bir konsepti (örneğin if-else yapısını) öğrendiğiniz taktirde bunu sadece yazılışındaki ufak bir değişiklikle başka bir dilde uygulayabilirsiniz.
Bu yazıyı yazmadaki amacım yazılıma başlamaya karar verdiğinizde hangi programalama dilinden başlayacağınızı size söylemek değil, bir fikir edinmenizi sağlayıp kendinizin karar vermesini istedim. Yazılım gerçekten bir okyanus gibidir. Eğer çok hızlı bir şekilde açılırsanız, boğulursunuz. Konseptleri sindirerek öğrenmelisiniz. Yazılımın içine girdikçe öğrenecek, öğrendikçe gelişeceksiniz ve benzetmemizden yola çıkacak olursak; iyi bir denizci olacaksınız.
Birkaç Tavsiye ve Önerdiğim Kaynaklar
Tavsiyelerimin başında İngilizce öğrenmeniz olacaktır. İnternette çok zaman geçireceksiniz, yazdığınız kodun hatasını saatlerce internette arıyor olabileceksiniz. Hata yapmalısınız. Hata yapmadan öğrenemeyeceksiniz. Fakat asla pes etmemelisiniz. Yazılımcı olarak sürekli kendinizi geliştirmeli, her gün yeni bir şeyler katmalı ve bundan zevk almalısınız. Teorik bilgiyi de öğrenip pratik bilginizle harmanlamalısınız.
Kaynaklar:
- Udemy Kursları
- Khan Academy (İngilizce veya Türkçe siz bilirsiniz)
- Medium (İçeride gerçekten faydalı makaleler bulacaksınız)
- edX Kursları
- Şadi Evren Şeker
- Atahan Çelebi
- Corey Schafer
- sentdex
- Yazılım Bilimi
Tabii ki çok daha fazla kaynak var. Şimdilik bu kadar yeterli olur diye düşünüyorum. Eğer sizin de kullandığınız bir kaynak varsa yorum olarak yazabilirsiniz. Şimdilik esen kalın!
Bizleri Instagram ve Twitter hesaplarımız üzerinden takip edebilirsiniz. Diğer içeriklerimize de göz atmayı unutmayın!
Kaynaklar’a Çağatay Çebi’de eklenebilir.
Makale güzel olmuş elinize sağlık.
Teşekkürler
Programlama dikkatimi çektiğinde Visual Basic, Pascal, daha sonrasında Delphi sık konuşuluyordu ve bunlar kapalı kaynak idiler. Onlardan uzak durdum ve Web programlama ile başladım. Seyir HTML4, JavaScrip, Css3, PHP olarak başladı. Sonra Flash’ın hem ActionScript2 hem de ActionScript3’ü ile de çalıştım. Daha köklü bir yazılım dili hep aklımdaydı ve C üzerine okumaların oluyordu. Böylece Türkçe’de yayınlanmış C kitalarından aynı konuyu nasıl açıkladıklarını karşılaştırarak on iki tanesini okudum. Sonra kendime txt saflarına özel yazılmış metinleri veri olarak çeken bir küçük uygulama yazdım. Bu arada Java da ilgimi çekiyordu. İki yıl önce mobil programlama bahanesiyle ona da başladım. Ancak Java’nın dibi yok. Son 6 aydır Dart üzerine çalışıyorum. Kimi yerde C#, kimi zaman Java, kimi durumda JavaScript, kimi koşulda PHP, kimi tavrıyla da C gibi davranan bu dil ilginç Collection’ları, anonim fonksiyonlar, asenkron tavırları, işi ‘=’ operatöründen sonra kotarması, Flutter’ın bu dille yazılması, web’te dartpad’de kolayca kodlanması ile çokca dikkatimi çekiyor ve öğrenmemi sürdürüyor. Yalnızca ‘List’ sınıfının kurucularını, özelliklerini, yöntemlerini, operatörlerini ve statik yöntemlerini ikişer üçer satır kod yazarak çalıştığım dart dosyası açıklama metinleri ile 1100 satırı geçti.
Sonuçta benim önerim öğrencilerime açık kaynak olduğu, pahalı donanım gerektirmediği, hem web’e, hem IOT’a, hem mobile hem de masaüstüne yönelik yazılım geliştirebilecekleri ve hem de kolayca web üzerinde dartpad’de küçük deneme yapabilecekleri için Dart’ı önereceğim ve isteyene de öğreteceğim. Genel okul olanakları açısından bakıldığında yukarıdaki bu özellikleri taşıyabilen başka bir dil daha var mı bilmiyorum.
Eğer bu özellikleri taşıyan bildiğiniz bir dil varsa onun hakkında da bilgilenmek isterim.
Ek olarak, İngilzce’nin okuduğunu anlayacak kadar kazanılması kesinlikle çok önemli. Daha Türkçe’de yayınlanmış tek bir Dart kitabı yok. Ama İngilizce’de ikinci, üçüncü baskısını yapmış onlarcası var.
Bu içten, olumcul (sesli harflerde nokta yok), gayrete getiren, emeği güzel hoş yazınız için teşekkür etmek bir zorunluluk.
Teşekkür ederim!
Güzel yorumunuz için teşekkür ederim.
Güzel. Bence de Python ve C dilleri önemli ama önemli bir şey daha var. Hangi işletim sistemi?
Ya da şöyle diyelim: Öğreneceğim dil çok platformlu mu? Yazdığım kod her işletim sisteminde fazladan emeğe gerek olmadan çalışabiliyor mu?
Bir de C# gibi bana saçma gelen diller var. Ben denedim ve denemeye de niyetim yok. sadece MS kütüphanelerine bağımlı olacağıma Assembly ile yazılım yaparım daha iyi. Ama neyse ki C, Python, Perl, LISP, Scheme gibi hackerler tarafınndan geliştirilen gerçek yazılım dilleri ve GNU, BSD gibi yine hackerlerın emek verdiği gerçek işletim sistemleri var.
Bu arada buradaki hacker’dan kastım bilgisayar korsanı değil. Şayet onlara Cracker denir. Buradaki hacker’dan kastım Üstat’ dır. Yani interneti tasarlayanlar, ilk sunucuları kuranlar, şu anki sunucularda çalışan işletim sistemlerini yazanlar.