Hangi Programlama Dilini Öğrenmeliyim?

       Bu soruyu soranlar genelde sayfalarda Google araştırması, onlarca makale okur, bir iki tanıdık yazılımcı bulup, özellikle sektörde çalışan yazılımcılarla iletişime geçip bu soruyu yöneltir. Her kafadan ayrı bir ses, farklı bir düşünce, farklı bir dil önerisiyle karşılaşabilir. Araştırmayı tamamladığında önünde bir çok programlama dili olur.

“İyi bir yazılımcı olmak istiyorum”

“Bu programcılıkta çok para var diyorlar”

“Kafamda süper proje var, kendim geliştirmek istiyorum.”

hangi programlama dilini ogrenmeliyim

       Bu sorular ile bir araştırma yaptığınızda birçok cevap ile karşılaşmanız aslında normal bir durum. Çünkü programcılığın ne tek bir dili, ne tek bir yazım şekli, ne de tek bir platformu vardır. Haliyle siz bu sorunuza cevap aradığınızda bir okuduğunuz makale iOS platformunda mobil uygulamalar geliştiren uzman bir yazılımcıya ait olurken bir diğer makale Raspberry Pi ile nesnelerin interneti (IoT) üzerine geliştirmeler yapan başka uzman bir yazılımcıya ait olabliir. Ne onlar yalan söylüyor, ne de siz yanlış bir siteye girdiniz.

       Aslında şöyle de bir gerçek var; tek bir dilde uzman olarak bir yerlere gelmeniz, ona uygun işler bulabilmeniz çok zor. Yeri geldiğinde aklınızdaki bir proje başka dilleri de size çekecek, yeri geldiğinde de işe girdiğiniz firma biz X dilini kullanıyoruz, sen de onu kullanacaksın, yada biz artık X dilinden Y diline geçiyoruz diyebilir. Burada asıl amacınız dil fanatikliğini de kenara bırakıp programlamayı öğrenmek olmalıdır. Eğer siz gerçek bir programcı olursanız ilk kez karşılaştığınız bir dili öğrenmeniz, onu projelerinize katmanız en fazla 1 hafta hatta 1 gün olacak. Programlamayı araba sürmek olarak düşünebilirsiniz, siz araba sürmeyi bildikten sonra bindiğiniz arabanın bir önemi olmamalı. Araba sürmeyi Tofaş’ta öğrenmiş olabilirsiniz ama günü geldiğinde şirket size Mustang verdiğinde ( ne güzel şirketmiş o ) “ben tofaşçıyım, haydi eyvallah” diyip gitmemeniz gerekir. O yüzden tekrar söylüyorum, asıl amacınız iyi bir program nasıl geliştirilir, yazılım nasıl inşa edilir temel amacınız bu olmalı.

 

Programlamaya nereden başlamalıyım?

       Yazılıma yeni başlayacaksanız, aklınızda bir proje varsa öncelikle bunun ne tür bir uygulama olduğunu(masaüstü, web, mobil, gömülü sistem) belirlemeniz gerekir. Bunu belirledikten sonra hangi platformları hedeflediğinizi düşünmeniz gerekir. Örneğin; masaüstü bir uygulama için Windows, Linux veya Mac, mobil için Android, iOS veua Windows Phone, gömülü sistem için Arduino, Raspberry Pi belkide arm veya başka bir mikroişlemci. Bunlar en genel düşündüğümde aklıma gelen seçenekler. Kafanızda yöneleceğiniz alanı belirledikten sonra yapacağınız araştırmalar size daha iyi sonuç verecek, daha işinize yarar seçenekler ile karşılaşacaksınız.

“iOS programlamak için hangi dili öğrenmeliyim?”

“Mobil uygulama geliştirmek için nereden başlamalıyım?”

“Web sitesi geliştirmek için hangi diller gerekir?”

 

Programcılığa sıfırdan başlamak istiyorum

       Tabi bu söylediklerim aklında bir fikir olanlar için en iyi sonucu verecektir. Ama birde benim aklımda bir fikir şimdilik yok, sadece bir iki uygulama yapmak istiyorum,  programlama benim için uygun mu onu görmek istiyorum diyecek olanlar da vardır. Soru bu şekilde genel olduğunda yukarıda bahsetmiş olduğum her kafadan çıkan ayrı sese dahil olacağım bende.

       Çevremde yapabildiğim kişisel gözlemlerin, okuduğum makaleler, bloglardan çıkardığım kendi düşüncelerim sonucunda programlamaya sıfırdan başlayacak biri için en uygun dilin Python olduğunu düşünüyorum. Yeni başlayacak biri için C zor, C++ karmaşık veya C#, Java yazımı zor gelebilir. Ama Python günümüzde mevcut diller arasında yüksek seviyeli dillerden biri ve en popüler diller arasındadır.

       Programlama dilleri düşük ve yüksek seviye olarak kendi içlerinde ayrılırlar. Düşük seviye programlama dilleri makine diline daha yakın olup (machine language, assembly ) yazımı daha zordur. Yüksek seviye diller ( Python, Ruby, T-SQL)  ise daha çok günlük hayatta kullandığımız kelimeleri kullanarak, basit kelimeler ile bilgisayara işlerimizi yaptırabileceğimiz kullanımı kolay dillerdir.

       Python ile girişi yaptıktan sonra yapacağınız örnek uygulamalar ile zaten ilginizi tam olarak hangi alanın daha çok çektiğini göreceksiniz. O noktaya geldiğinizde ister yukarıda anlattığım daha amacına yönelik sorular ile cevaplar arayabilir, isterseniz de Python ile devam edebilirsiniz.

       Buraya kadar okudunuz ve dediniz ki benim kafamda yapmak istediğim belli. Ben de kendi bilgim doğrultusunda cevap verebileceğim sorulara cevaplarımı yazacağım.

Web siteleri yapmak istiyorum hangi dili öğrenmeliyim?

       Başlangıç için web sitesi yapmayı seçmenin öncelikle doğru bir adım olduğunu düşünmüyorum. Çünkü tek bir dili kullanarak profesyonel bir site yapamazsınız. Şöyle bir örnek vereyim siteyi bir insan vücudu olarak düşünürsek eğer öncelikle vücudun iskeletini oluşturmak lazım ( HTML ). Her vücudun olmazsa olmazı iskelet sistemidir ki bir web sitesi için de iskelet HTML’dir. HTML ile ana iskeleti oluşturduk. Bitti mi? Hayır. O iskeleti eli yüzü düzgün insana dönüştürmemiz lazım, birazcık makyaj katmak lazım gerekirse bir manken yapmalıyız onu J işte burada  da CSS devreye giriyor. İskeleti oluşturduk, insana benzettik, çok güzel site oldu. Bitti mi? Eğer içerik değişeyecek, sabit bir HTML web sitesiyse bitti ama günümüzde en kişisel siteler bile bir admin paneli , içerik yönetim sistemi (CMS) istiyor yani oluşturduğumuz vücuda hareket sistemi, kas istiyorlar. O yüzden bitmedi. Günümüzde kullanılan popüler kas sistemleri…düzeltiyorum web programlama dilleri MVC .net (C#), PHP, JSP (Java). Tabi başka diller de mevcut ama en popülerleri bunlar diyebiliriz o yüzden bu dillerden de birini bilmeniz sizin için faydalı olacaktır.  Gördüğünüz üzere bir web sitesi yapmak aslında birden fazla dili içerdiği için başlangıç seviyesindeki biri için karmaşık gelebilir.

       Profesyonel bir web sitesine örnek vermem gerekirse HTML, CSS, Bootsrap (dinamik (responsive) tasarım için), Javascript, MVC bileşenlerinden oluşur.

 

Mobil uygulama yapmak istiyorum hangi dili öğrenmeliyim?

       Burada öncelikle tek bir platform mu, ayrı ayrı her platforma mı yoksa tüm platformlara tek bir uygulama (cross platform) mu yapmak istiyorsunuz onu belirlemeniz lazım.

Platforma özgü uygulamar için;

Andoid

       Android ile en çok kaynağı bulabileceğiniz dil Java’dır. Bu yüzden Java diliyle beraber Android Studio uygulaması (IDE) üzerinden android uygulamaları yapabilirsiniz.

iOS

       iOS ile uygulama geliştirmeniz için öncelikle bir adet Mac cihazınız, bir adet Apple geliştirici lisansınız gerekmektedir. Ardından Mac cihazınızdan Swift veya Objective-C dillerinden birini seçip geliştirme yapabilirsiniz. Daha yeni ve daha popüler olduğu için Swift diliyle başlamanız daha avantajlı olacaktır sizin için.

Windows Phone

       Visual Studio uygulaması (IDE) üzerinden C# dilini kullanarak uygulama geliştirebilirsiniz.

Tüm platformlarda çalışan(cross-platform) için;

       Cross-platform uygulamalar her cihaza ayrı ayrı uğraşmak istemeyen kişi ve firmalar için son yıllarda popülerleşmiş bir geliştirme şeklidir. Burada tek bir alternatifiniz bulunmamakta. Farklı firmalar, farklı dillere göre cross-platform kütüphaneler geliştirmiştir. En popülerlerine örnek vermek gerekirse;

Xamarin; ister Visual Studio ile isterseniz de kendisinin geliştirdiği Xamarin Studio kullanarak C# ve Ruby diliyle uygulamalar geliştirebilirsiniz.

Qt; Qt Creator ismini verdiği derleyicisi (IDE) ile C++ dilini kullanarak cross-platform uygulama geliştirmenizi sağlar.

Corona; C dilini kullanarak mobil uygulamalar geliştirmenizi sağar. Ek olarak gelişmiş grafik motoru ile 2 boyutlu (2D) oyunlar da yapılıyor.

Cocos2d; 2 boyutlu cross-patform oyunlar yapabilmeniz için kullanabilirsiniz. Kendi içerisinde dillere özgü sürümleri mevcuttur. Kullanabileceğiniz diller C++, JavaScript, C#, Objective-C, Python

PhoneGap; genel olarak HTML5-CSS-JavaScript olarak tasarlanmış web sitelerini cross-platform uygulamaya dönüştürür.

IntelXDK; PhoneGap benzeri

Ve araştırdıkça daha da örnekleryle karşılaşabilirsiniz.

Masaüstü uygulama geliştirmek istiyorum hangi dilleri öğrenmeliyim?

       Geçmişte popüler olan fakat mobil uygulamalar ve dinamik web sitelerinin daha kullanışlı hale gelmesiyle çoğu firma ve insanlar Web ve Bulut Sistem tabanlı yapılara geçti. Fakat yine de programcılığa yeni başlayan biri için bil dili kavrayabilmesi adına öğrenilebilir. Ek olarak günlük hayatta, iş yerinde, okulda ufak bir uygulama yapmanız gerekebilir. Masaüstü uygulama geliştrebilen biriyseniz hızlıca işinizi halledebilirsiniz.

       C#, Java, Python ile masaüstü uygulamalar da geliştirebilirsiniz. Python dilini başlangıç olarak seçmiş biriyseniz zaten Python ile yine devam etmenizi öneririm. Python ile görsel arayüzler tasarlayabileceğiniz birçok kütüphane mevcuttur.

       C# ile Visual Studio üzerinden sürükle-bırak yöntemiyle kısa süre içerisinde form ara yüzünüzü tasarlayabilir, kullanışlı uygulamalar yapabilirsiniz.

       Java için de Eclipse, NetBeans popüler derleyicilerdendir(IDE). Bu IDE’leri kullanıp masaüstü uygulamalar geliştirebilirsiniz.

Robot, drone, kumandalı araba yapmak istiyorum hangi dilleri öğrenmeliyim?

       Son yıllarda Nesnelerin İnterneti ( Internet of Things) konusunun popülerleşmesi ile beraber bu alanlarda çalışmalar yapabileceğiniz geliştirme kartları da yaygınlaştı. Bunlar içerisinde yaygın olarak kullanılanlar; Raspberry Pi, Banana Pi, İntel Galileo, Arduino. Bunlara ek olarak PIC programlama da yıllardır bu alanda tercih edilen yöntemlerden biridir.

       Eğer elektrik ve yazılım bilginizin iyi olduğunu düşünüyorsanız PIC programlama ile başlayabilrisiniz. Fakat zor bir seçim olduğunu şimdiden söyleyebilirim.

       Temel elektrik ve orta yazılım bilginiz varsa Raspberry Pi, Banana Pi kullanabilirsiniz. Raspberry Pi için açık kaynak (open source) olarak geliştirilen  Raspbian işletim sistemini kullanarak C, Python,Java,C#, Windows 10 ile beraber IoT cihazlar için çıkarılmış Windws IoT kullanarak da C# dilinde projeler gerçekleştirebilirsiniz.

       Temel elektrik bilginiz ile yazılıma başlayacaksanız da Arduino kullanmanız ideal bir seçim olabilir. C dilinden türetilmiş Arduino yazım şeklini ve kütüphanelerini kullanarak projeler gerçekleştirebilirsiniz.

 

Infografik kaynağı: WebMasto

 

Add comment