Merhaba arkadaslar,
Siklikla sorulan, tartisilan, dile getirilen Hangi Programlama Dilini Ögrenmeliyim? Sorusuna birlikte cevap bulmaya çalisacagiz...
Öncelikle sunu belirtmekte fayda var, Wikipedia’ya göre aktif olarak kullanilan 350 civari programlama dili bulunmakta.
Programlama dilleri, yazilimin kodlara dökülmesini saglayan aracilardir. Bu cümle ilk basta çok mantikli gelmeyebilir, ancak kapsamli düsündügümüzde, “Yahu neden bu kadar programlama dili var ki? Bir tane programlama dili neye yetmiyor?” diye soru sorabiliriz.
Günümüzde bilinen (en azindan kulak asinaligi olan) Fortran, Cobol, QuickBasic, C, Embedded C, Objective C, C#, Java, Swift, Kotlin gibi bir çok programlama dilini inceledigimizde, hepsinin bir kullanim alani oldugunu görürürüz. Bazilari Cross Platform Programlama Dilleri bazilari ise degil. Örnegin C#’ta Xamarin ile Mobil Uygulama Gelistirme yapilabilir, öte yandan native olarak Masaüstü Uygulama gelistirme ve Web Uygulamasi gelistirme yapilabilir.
Java için de benzer durumlar geçerli. Java’yi C#’tan farkli kilan çesitli noktalar vardir arti ve eksi yönde, Ancak en belirgin olani Java ile native android uygulama gelistirilebilmesi. Native masaüstü uygulama gelistirme ve native web uygulamasi gelistirme de yapilabiliyor.
Java ile C#’in arasindaki farkliliklar neler? Hangisini tercih etmeliyim?
C#, Java’dan yaklasik 2 sene sonra piyasaya sürülen bir programlama dili. Java’da olan bazi eksiklikleri tamamlayarak çikarilmis ve arkasinda Microsoft destegi var. Tabii Microsoft destegi olunca durum kurumsallasiyor. Bildiginiz üzere Microsoft pahali platformlara sahip bir sirket. Gerçi .Net Core Cross Platform uygulama gelistirme olanagi sagliyor. Yani .NET Core Framework ile gelistirdigimiz uygulamalari yalnizca Windows tabanli bir sunucuda yayinlama zorunlulugumuz ortadan kalkmis oluyor. Sanirim Microsoft bu konuda gelistiricilerin sesine kulak verdi.
Peki tek fark bu mu? Tabii ki degil. Java’nin Eclipse,Netbeans hatta Android Studio gibi çesitli gelistirici IDE’leri mevcut ve özellikle intellisense konusunda çok yeterli degiller. C# bu konuda Java’nin oldukça önünde. Öyle ki Visual Studio her yeni versiyonuyla birlikte ciddi sekilde gelistirilen ve gelistiricilerin imdadina kosan mükemmel bir IDE. Az önce Eclipse,Netbeans hatta Android için intellisense eksikliginden bahsetmistim, simdi de Visual Studio için intellisense mükemmelliginden bahsedebilirim.
Yazilim egitimlerinde siklikla söyledigim bir sey var;
Visual Studio kod yazmayi ögretir.
Bir diger farklilik ise Microsoft’un C#’i sürekli gelistirirken, Oracle’in Java’ya gerekli destegi vermemesi.
Amma ve lakin…!!! Java’nin Open Source olmasi C#’a göre çok ciddi avantaj. C#’ta gelistirilen kütüphanelerin içerigini görüntüleyemezsiniz ancak Java’da görüntüleyebilir hatta güncelleyebilirsiniz. Bir yazilimci için bu çok önemli.
Daha bir çok farkliliklari var, ben birkaç tanesini açiklamaya çalistim. Peki bunlarin neticesinde hangisi daha iyi diye sorsalar bana, su cevabi veririm;
Proje hangi programlama dili için daha uygunsa onu kullanirim. Her ikisi de kullanilabilir ve son derece gerekli. Örnegin az önce de söyledigim gibi, C#’la native mobil uygulama gelistiremezsiniz ancak Java ile rahatlikla gelistirebilirsiniz.
Peki Java rakipsiz mi? Native olarak Android Uygulama Gelistirme yalnizca Java ile mi yapilir?
Hayir. Native olarak Kotlin ile de Android Uygulama Gelistirebilirsiniz.
Hocam kotlin ne o nereden çikti diye sorabilirsiniz, hemen anlatayim;
Official Android Uygulama Gelistirme IDE’si olan Android Studio’da Java programlama dili ile Android uygulama gelistiriliyordu. Ancak Open Source olmasina karsilik, Oracle, Microsoft’a dava açti. Nedeni ise benim programlama dilimi sen nasil kullanilirsin gibilerinden bazi olaylar. Su an dava devam ediyor, ancak Google her türlü ihtimale karsilik kendi programlama dilini gelistirdi.(Kotlin)
Su anda da Android Studio’da Kotlin kullanilmakta ve uygulamalar gelistirilmekte.
Kotlin syntax olarak Java’dan daha farkli, konusma diline daha yakin bir programlama dili. Bir göz gezdirmenizi tavsiye ederim.
Bu durumda C#’ta alternatifsiz degil Java’da alternatifsiz degil Kotlin’de. Demek ki her biri kullanilabilir.
Daha önceki programlama dillerine bakarsak;
Mesela sene olmus 2017 hala 1960’li yillarda piyasaya sürülen Cobol Programlama Dilini kullanan firmalar var ve bu firmalar küçük ölçekli firmalar degil, kullanilan uygulamalar da basit uygulamalar degil. Örnegin çogu banka halen Cobol Programlama Dilini kullanmaktadir.
Nostalji yapalim, Quick Basic’i konusalim. Commodore 64 zamanlari. Tamamen prosedürel bir programlama dili. Kodlari alt alta yaziyorsunuz, eger kopyala yapistir yapmak istemiyorsaniz, Go to anahtar kelimesi ile istediginiz satir numarasina gidebiliyorsunuz. Aslinda programlama dillerindeki döngülerin temelinde de bu yatar. Kosul saglandikça çalisacak, örnegin kodu yazdiniz, goto ile belirli bir satira yolladiniz kosul saglandi devam etti. Tabii bu kadar basit degil ama basit bir örnek sadece. Ögrenmek gerekir mi? Bence tamamen ögrenmeseniz dahi göz gezdirmeniz, bu konuda fikir sahibi olmaniz önemli.
Sonraki dönemlerde C var mesela ki bence C programlamanin dönüm noktasidir. Öyle ki C’den sonra piyasaya sürülen programlama dillerinin hemen hemen hepsi C syntax programlama dilleridir. Örnek mi? Hemen vereyim; Embedded C, Objective C, C++(Genellikle donanim sürücüsü gelistirmek için), Java, C#, Swift, Kotlin vs. Dikkat ederseniz içlerinde 3 tanesi Microsoft’a ait degil (Java,Swift,Kotlin) ancak onlarda C syntax.
C’nin türevlerinden Embedded C (Gömülü sistemler için) ve Objective C (Genellikle IOS uygulama gelistirmek için) kullanilir ve her ikisinin de syntax’lari birbirinden oldukça farkli.
A aa! Objective C ile IOS uygulama gelistirilebiliyor, e Swift ile de gelistirilebiliyordu! Demek ki Objective C’de Swift’de rakipsiz, alternatifsiz degil. Her ikisi de bu alanda kullanilabilir.
Hiç bahsetmedigimiz PHP, Perl, Phyton, Delphi, Pascal gibi programlama dilleri var mesela.
PHP ile web uygulamalari gelistirilebiliyor. Hemen akliniza facebook gelecektir, ancak facebook yalnizca PHP ile çalismiyor. Kullandigi farkli programlama dilleri de var. Ancak su bir gerçek ki, PHP ile de çok iyi web uygulamalari gelistirilebiliyor.
Phyton mesela, bir döneme damga vuran Firsat Sitelerinin bir çogu Phyton ile gelistirilmisti. Ayni zamanda sistem programlama da yapilabiliyor. Örnegin donanim sürücüsü yazabiliyorsunuz.
C++ ile de donanim sürücüsü yaziliyordu, Phyton ile de yaziliyor. Üstüne üstlük Phyton ile Web Uygulamasi da gelistiriliyor, Masaüstü uygulama da. Ayni sekilde C++’la da öyle.
Aslinda dikkat edilmesi gereken konu, hangi yazilim dilini ögrenmeliyim diye sordugunuzda, yazilimin hangi alaninda ilerlemek istediginizi bilmenizden baslar, yapacaginiz arastirmalarla devam eder.
Hiçbir programlama dili digerinden iyi ya da kötü, eksik ya da fazla degildir. En iyi programlama dili hangisidir diye sordugumuzda aslinda en iyi programlama dili diye bir sey olmadigini ya da programlama dillerinin arasinda çok fazla farklilik olmadigini görürüz.
Hangi programlama dilini ögrenirsem ne kadar para kazanirim gibi sorular aklimiza gelebilir, bu durumda yazilim piyasasinda ihtiyaç duyulan programlama dilleri arastirilabilir ki en büyük yardimcimiz is ilani siteleri olacaktir. Ancak bu bize belli bir ortalama almamizi saglar, çünkü her bir programlama dili için gelistiricilere ihtiyaç var. QuickBasic (QBasic)’ten tutun Fortran’a, Fortran’dan tutun C’ye, C’den tutun Visual Basic’e, Visual Basic’den tutun C#’a, C#’tan tutun da Kotlin’e kadar…
Her bir programlama dilinin kendine özgü artilari ve eksileri mevcuttur. Önemli olan konu seçtiginiz programlama dilini ögrenebilmek için çalismak, mücadele etmektir.
Programlama dillerinin fanatikleri de var arkadaslar. C#’mi Java’mi? C# Java’dan daha iyi, Java Visual Basic’ten daha iyi gibi kiyaslamalar sürekli yapiliyor. Ancak ben programlama dillerinin fanatikligini yapmaya karsiyim. Zira ben çesitli programlama dilleri ile uygulamalar gelistirmekteyim ve her birini projenin ihtiyacina göre kullaniyorum.
Yazilim Mühendisligi Egitimi, bu konuda oldukça önem tasimaktadir. Eger iyi bir üniversitede Yazilim Mühendisligi Egitimi aldiysaniz, çalisarak ve kendinizi gelistirerek iyi bir yazilimci olabilirsiniz.
Yazilimci olmak istiyorum deyip, birkaç haftada birakan, ne kadar sürede yazilimci olurum deyip ayni sekilde birakan o kadar çok yazilimci adayi var ki.
Makale içerisinde de belirttigim gibi yazilimin yalnizca %30’u kod yazmaktir arkadaslar. Önemli olan yazacaginiz kodu bilmeniz, programlamanin mantigini anlamaniz ve gelistireceginiz uygulamaya göre algoritmalari olusturabilmeniz.
Eger Yazilim Mühendisligi Egitimi almadiysaniz ve yazilimci olmak istiyorsaniz, Yazilim Kursuna gitmenizde büyük fayda var. Istanbul’da ki en iyi yazilim kurslari, En iyi Yazilim Mühendisligi Egitimi veren üniversiteleri internetten arastirabilirsiniz. Ayni zamanda biz de yazilim egitimleri vermekteyiz.
Verdigimiz egitimlerden bazilari;
- Web Yazilim Uzmanligi Egitimi (.NET)
- Android Uygulama Gelistirme Egitimi (Java-Kotlin)
- IOS Uygulama Gelistirme Egitimi (Swift – Objective C)
- Masaüstü Uygulama Gelistirme Egitimi
- Mobil Uygulama Gelistirme Egitimi
- Microsoft Yazilim ve Veritabani Uzmanligi Egitimi (MCSD)
- Microsoft Sinavlarina Hazirlik Egitimi
- C# Egitimi
- ASPNET Egitimi
- Java Egitimi
- Swift Egitimi
- Kotlin Egitimi
- C++ Egitimi
- C Egitimi
- Fortran Egitimi
- Cobol Egitimi
Istanbul’da en iyi yazilim egitimleri ve en iyi yazilim kurslari tarafimizdan verilmektedir.
Eger yazilimci olmak istiyorsaniz, yazilim egitimi almak istiyorsaniz bizimle iletisime geçebilirsiniz.