C Programlama dilini öğrenmeye karar vermek ve bununla ilgili gelen soruları cevaplıyoruz.
SORU:
“
Öncelikle merhaba. Ben bilişim dünyasına adımımı C diliyle atmaya karar verdim. C dilinde geliştikten sonra C++ diline geçmek istiyorum ama önce C dilinde gelişmem gerek. Ancak kafama takılan bazı hususlar var. Şuan lise öğrencisiyim ve bildiğim İngilizce çok alt düzeyde yani hiç bilmiyorum diyebilirim. Yazılım ile ilgili kaynakların çoğunluğu İngilizce ile hazırlanmış olduğundan kaynak sıkıntısı yaşıyorum. Düşüncem internette sağlam bir görsel eğitim setiyle başlayıp yanında bir C kitabı okumak istiyorum. Tabii bunları yaparken de sürekli pratik yapacağım veya proje yapmaya çalışacağım. Sorularıma gelecek olursak;
-C dili için internetteki sağlam kaynak(lar) nelerdir ? (Türkçe)
-C dili için güzel bir kitap öneriniz var mıdır ?
-C diliyle konsol uygulamaları dışında Windows uygulamaları yapılabiliyormuş sanırım, bunu nasıl yaparım ve nelere ihtiyacım var ?
-Windows işletim sistemi için yapılmış bir IDE önerebilir misiniz C dili için ?
-C dilini tamamen öğrendim diyebilmek için kaç ayımı/yılımı vermem gerekir ?
-Son soruma gelecek olursak İngilizcemi (en azından bilişim alanındaki İngilizcemi) nasıl geliştirebilirim ? Neler önerirsiniz ?
Çok soru oldu ama kafama takılanları tek size sorabiliyorum..
Teşekkür ederim şimdiden.
CEVAP:
Yazılım Diline Karar Vermek
Öncelikle programlama dillerini öğrenmeye dair kararların ya sağdan soldan okunan bir kaç yazı veya yorum ile ya o programlama dilini bilen kişilerin tavsiyeleri ile yada kulaktan dolma bilgiler ile alındığına inanıyorum. Çünkü bu kararların iyice araştırılmadan karar verildiğini görüyorum.
Bana da bu zamana kadar “hangi yazılım dilini öğreneyim?” gibi bir sürü soru geldi. Fakat bu tarz sorulara hiç kimse sizin için ideal cevabı veremez. Çünkü C++ bilen, “C++ öğren” der, PHP bilen “PHP öğren” der yani kim hangi dili biliyorsa onu kolay olarak görüp onu tavsiye eder. Bu normal bir durum çünkü bilene her şey kolay, bilmeyene her şey zordur. Fakat önemli olan sizin için hangi dilin en uygun olacağıdır.
Örneğin benim için ASP.Net çok güzel bir yazılım dili çünkü biliyorum. Fakat bilmeyene yada kısa bir süre ilgilenene sorsanız uzak durulması gerektiğini söyleyebilir. Tüm bunların neticesinde ben hiç bir zaman yazılım dili tavsiyesinde bulunmadım, sadece bildiklerim ve araştırmalarım neticesinde, objektif bir şekilde, söz konusu yazılım diline dair artıları ve eksileri anlattım her zaman. Bu artılar ve eksiler neticesinde kararı her daim size bırakıyorum.
Diğer bir mesele günümüzde “C++ ‘mı yoksa C# ‘mı öğrensem” şeklinde sorular ve düşünceler var iken neden C öğrenilmesi gerektiğini anlamıyorum. Şimdi C bilen arkadaşlar “C güzeldir, C öğrenilmelidir” şeklinde düşünüp, benim bu düşüncemi yadırgayabilir. Fakat düz mantık düşündüğümüzde dahi C++ var iken C öğrenmek gereksiz. Çünkü C++ dili C dilinden geliştirilmiştir. Dolayısıyla C dilinde eksik olanları, yapılamayanları ve zorlukları, tamamlamak, yapabilmek ve kolaylaştırmak için ortaya çıkmış bir dildir. Hal böyle iken “ben önce C öğrenicem sonra C++ öğrenicem” şeklindeki bir düşünceye sahip olma nedeni ya kulaktan dolma bilgilerdir yada çeşitli nedenler ile gaza gelip “yazılımın temeline kadar inicem, iliğini kemiğini sömürücem” düşüncesidir. Yazılıma böyle bir gaz ile başlıyorsanız zaten yazılım sizin gazınızı alır merak etmeyin =)
Yazılım Öğrenmek
Yazılım ÖğrenmekDemem o ki, ben sizleri tanıyorum gençler. Hepinize bir genellemeye sokmaya çalışmıyorum ama lisede öğretmenlik yapmış, bu zamana kadar bin civarı soru cevaplamış, sıkça gözlem yapan ve empati kuran biri olarak sizin istek, düşünce ve beklentilerinizi az çok biliyorum. Bunun yanı sıra yazılım dünyasını da bildiğim için sizlerin hangi duygular ile yazılıma merak saldığınızı, bunların neticesinde yazılım öğrenmeye başladıktan sonra karşılaşacağınız zorluklar nedeniyle nasıl duygu ve düşüncelerde olacağınızı az çok görebiliyorum. Kimse bunu “ben en doğrusunu biliyorum” olarak algılamasın. Sadece günümüz şartları itibari ile bir gencimizin zor olana tahammül etmesi, çeşitli imkanlardan feragat etmesi çok daha zor.
Akıllı telefonu elinden düşürmeyen kaç kişi yazılım öğrenmek için telefonunu kullanmamaya razı olabilir… Ben bile akıllı telefonu fazla eline almayan biri olarak geçtiğimiz ay telefonu garantiye gönderdim ve o 2 hafta benim için zor geçti =) Her gün bir kaç saat dahi olsa oyun oynayan kaç kişi o oyunu bir daha oynamaktan vazgeçebilir… Sosyal medyada bir şey paylaşmadan, arkadaşları ile sürekli internet üzerinden sohbet etmeden duramayan kaçınız bunlardan vazgeçebilir yada bunları minimize edebilir… Bu bahsettiğim şeyleri de bir gün değil, her gün yapacak kaç kişi var… “Bunları yapmayan yazılım dili öğrenemez” demiyorum ama yazılım öğrenmekte günde 1-2 saatinizi ayırarak olabilecek bir şey değil. Dolayısıyla bugün yapmaktan zevk aldığınız bir çok şeyden yazılım öğrenmeye yer açmalısınız. Neyse biz sorulara daha fazla odaklanalım…
C Programlama Dilini Öğrenmek
Öncelikle beni kesinlikle yanlış anlamanı istemiyorum kardeşim. Zira sorduğun soruları saçma bulmuyorum ve seni yadırgamıyorum. Fakat sorularının arasında çok tezat noktalar var.
Her şeyden önce soruya “ben C öğrenmeye karar verdim” şeklinde başlıyorsun. Bir yazılım dilini öğrenmeye karar vermek, giyim mağazasında giyilecek tişört kararı vermeye benzemez. Yani “eve gidince giyerim, olmazsa değiştiririm” mantığıyla düşünemezsin. Yazılım diline karar vermek, uzun bir yolculuğa çıkmaya karar vermeye benzer. Dolayısıyla yolun sonunda nereye varacağını ve gideceğin yolları önceden bilmelisin. Fakat sorduğun soru yola, yolun nereye çıktığına ve yolda nasıl ilerleyeceğine dair hiç bir fikrin olmadığını gösteriyor. Bir yazılım dilini öğrenmeyi geçtim, ilkokuldan bu yana dersi verilen İngilizce bilgini geliştirmek için dahi neler yapabileceğine dair bilgi sahibi olmamak bir yazılım dilini öğrenmeye dair büyük sıkıntı. Tekrar söylüyorum, yanlış anlamanı istemiyorum, bilmemek ayıp değil, öğrenmemek ayıptır. Sadece bilmeden karar almanın yanlışlığına vurgu yapmak istiyorum. Şimdi sorularını sırasıyla cevaplayayım;
* Daha öncede kaynak ile alakalı çok soru geldi.Herkese aynı cevabı veriyorum. Benim için internetteki en iyi kaynak Google ‘dır. Arama yaparsınız, yaptığınız aramaya dair en iyi bilgiyi size sunar. Ben hiç bir yazılım dili için belli bir kaynağa bağlı kalmadım. Sizinde bağlı kalmanızı tavsiye etmiyorum. Dolayısıyla “şu kaynak süper” diye bir cevabım yok.
* Aynı şekilde kitap önerisinde de bulunamıyorum. Zira ben kitaplardan yazılım öğrenmeyi başarabilmiş biri değilim. Android uygulama geliştirmeye başladığım günlerde gittim bir kitap aldım. Bir kaç sayfasına baktım sonra kapattım. Aylardır kenarda duruyor. Verdiğim para da boşa gitti.
Yazılım öğrenme konusunda kitapları sadece müfredat olması açısından tavsiye ediyorum. Çünkü kitaplar belli bir düzene sahiptir. Temelinden zora doğru ilerler. İlk öğrenmeniz gereken konuları görürsünüz. O konuları da Google ‘da arama yapıp, internetten öğrenmenizi tavsiye ederim. O konularda hemen hemen ilgili yazılım diline dair bütün kitaplarda aşağı yukarı aynı şekilde vardır.
* Evet, C programlama dili ile Windows uygulaması yapılabilir. C programlama dili geliştirmek ve onunla bir şeyler yapabilmek için bir sonraki sorunda bildiğin gibi bir IDE ‘ye ihtiyacın var.
C programlama dili geliştirmek* C programlama dili geliştirmek için Code::Blocks tavsiye ediliyor. Bu adreste kendisi mevcut: http://www.codeblocks.org/downloads/26
* Hiç yazılım bilmeyen biriyseniz öncelikle bir yazılım dilini öğrenmek için ay bazlı süreyi unutun. Yıl bazlı sürede sizin o programlama diline günde ne kadar vakit ayırdığınız ile alakalıdır. Söz konusu C Programlama Dilini Öğrenmek olduğu için ve kendisi kolay bir dil olmadığı için bu bana göre en az 2-3 yıl alabilir diye tahmin ediyorum. Diğer yandan tamamen öğrenmek diye bir şey olduğunu da düşünmüyorum. Zira bir yazılım dili için öğrenilebilecek şey çok fazladır. Bunu öngörebilmek de kolay değildir.
* Son olarak İngilizce meselesi. Söz konusu İngilizce teknik İngilizce ‘dir. Dolayısıyla normal İngilizce ‘yi öğrenmenin yanı sıra teknik tabirleri de öğrenmen gerekli. Teknik tabirleri de biraz çeviri siteleri ile birazda araştırma yaparak öğrenebilirsin. Örneğin yazılımda “String” diye bir ifade vardır. Sözlük anlamı “Dizi” dir. Fakat yazılımda yazı karakteri tanımlamada kullanılır. Mesela 5 bir sayıdır fakat bunu String olarak belirtirsen yazı olur ve matematiksel işlem yapamazsın gibi…
SONUÇ
Soruya hem genel hemde özel cevap vermeye çalıştım. Yazdıklarımdan olumsuz bir sonuç çıkarılmasın. Sadece karar alırken balıklama dalarak karar almayın demek istiyorum. Bu yazılım dili öğrenmek olabilir, proje fikri olabilir, üniversite bölüm tercihi olabilir, hayatınızda maddi yada manevi veya zamansal olarak önemli herhangi başka bir karar olabilir. Hepsinde iyice düşünün, iyice araştırın, artılarını eksilerini göz önünde bulundurun ve o şekilde karar alın 😉