Programlama Dilleri, Avantajları ve Farkları

Pogramlama Dilleri

Yazılım geliştirmek veya oyun program yazmak isteyen arkadaşlara “programlama dilleri nedir?” diye sürekli güncel kalacak bir derleme yapmak istedim. Her bir dilin mimarisi, çalışma tarzı farklı olduğundan her istediğinizle her projeyi gerçekleştiremezsiniz. Ayrıca öğrendiğiniz dili geliştirmeye ve o alanda uzmanlaşmaya çalışmalısınız. İki metre zıplayabilen iki kişiyle dört metre aşılamaz :)

 – Ne yapacağınıza karar verin
Unutmayın ki programlama dili bir amaç değil, araçtır. Önce öğreneyim, sonra yapayım demek yanlış bir düşüncedir. Yazılım Yaparken öğrenilir. Her dilin iyi olduğu, kötü olduğu konular vardır. Peki, hangi amaç için hangi programlama dilleri kullanılabilir? Birkaç güncel kullanım alanı :

  • Ben mobil uygulama geliştireceğim diyorsanız :
    • iOS –> Objective-C , Swift
    • Android –> Java
    • Windows Mobile –> .NET ile kullanılabilen bir dil (Visual C++, Visual C#, VB,F#…)
  • Masaüstü uygulama geliştireceğim diyorsanız :
    • Uygulamanız Windows üzerinde çalışacaksa
      • .NET kullanan dil (Visual C#, Visual F#, Visual C++, Visual Basic)[C# önerilir]
    • Uygulamanızın tüm ortamlarda çalışmasını istiyorsanız (Mac, Windows, Linux…)
      • Java (Önerilir)
      • Python
      • C++
  • Oyun geliştireceğim diyorsanız :
    • Lua (Önerilir)[Hem mesaüstü hem de mobil pek çok ortamda kullanılabiliyor.]
    • C# (Windows altında XNA Game Studio ile iyi işler çıkartılabiliyor.)
    • C (OpenGL gibi temel grafik kütüphaneleri ile uğraşacaksanız gerekli)
  • Elektronik cihazlara hükmedeceğim, donanımın derinliklerine ineceğim diyorsanız :
    • C
    • Assembly (Başlangıç için hiç gerek yok.)
  • Yapay zeka ile uğraşacağım, zeki sistemler yapacağım diyorsanız :
    • Haskell
    • Prolog
    • Scala
  • Benim işim web ve sunucular diyorsanız :
    • Front-end için : (Kullanıcı ile etkileşime giren kısım, görsel kısım da denilebilir)
      • HTML (Mutlaka!)(Programlama dili değil, işaretleme dilidir)
      • CSS (Mutlaka!)
      • JavaScript (İstemci taraflı programlamanın can alıcı noktasıdır.)
        • JS üzerinde ilerlendikten sonra CoffeeScript’e de bakılabilir.
    • Back-end için : (Sunucu tarafı)(Kırılma noktası)
      • Kolay öğrenip bir an önce başlamak mı istiyorsunuz?
        • PHP
        • ASP.NET + C#
      • Kolayca geliştirilebilir, kolay dağıtılabilir uygulamalar geliştirmek mi istiyorsunuz?
        • Ruby (Ruby on Rails isminde şahane bir framework var)
        • Python (Django framework’ü ile birlikte)
        • JavaScript (Günümüzün yükselen gözdesi : Node.js isimli web framework’ü var.)
        • Scala (Play! Framework ve Lift)
      • Taş gibi, sapasağlam uygulamalar istiyorsanız :
        • Java (JavaEE isimli kavram bu yüzden var.)
        • ASP.NET (Burada bulunması tartışılabilir.)

 

Artıları ve Eksileri

Java
+ Tüm ortamlarda çalışabilir.
+ C’ye benzer söz dizimi vardır.
+ Stabil çalışır. 
+ Çok geniş bilgi birikimi, çok geniş kütüphanesi vardır.
– Bytecode’a derleme, makina koduna yorumlama yapılır. (JVM burada devreye giriyor). Bu yüzden C’ye göre yavaş çalışır.
– Çalıştırılacak bilgisayarda JRE kurulu olmalıdır.

PHP
+ Günümüzde halen en çok kullanılan web programlama dillerinden biridir. e.g.(wordpress)
+ Öğrenmesi diğer dillere göre kolaydır
+ Türkçe pek çok kaynak vardır.
+/- Veri tipleri dinamik olarak belirlenir. (Programlamayı kolaylaştırır ancak hata denetimini zorlaştırır ve performansı düşürür)
– Dilin kendi içerisinde tutarsızlıkları vardır. (metod isimleri, kurallar kesin değildir, pek standart yoktur. Bu da giriş seviyesi öğrenmeyi kolay, uzmanlaşmayı zor kılar.)

C#.Net
+ Windows masaüstü uygulama denince akla ilk gelendir.
+ Visual Studio gibi işleri çok kolaylaştıran bir IDE’ye sahiptir.
+ Oldukça tutarlı, oturmuş bir dildir. C’ye benzer söz dizimine sahip diller arasında yapısal olarak en gelişmişidir denebilir.(Evet, yapısal olarak Java’dan daha iyidir  )
+ Türkçe kaynak bulmak kolaydır.
– Microsoft’un tekelinde olan bir dildir.(Aslında tam değil de, .NET olmadan bir işe yaramaz  Ayrıca, Microsoft’un sahip oladığı ürünler ile beraber kullanımı sıkıntılar doğurabilir. )
– Windows olmadan bir işe yaramaz. 

JavaScript
*JavaScript(JS), Java ile aynı şey değildir! 
+ Pek çok alanda doğrudan kullanılır. Kullanım alanı sınırsızdır denilebilir.
+ Hem iteratif hem de fonksiyonel programlama dili özelliği gösterir.
+ Yavaştır denemez. Google V8 Engine ile çalışma hızı bambaşka bir boyuta taşınmıştır.
+/- Tüm olaylar dinamik olarak gerçekleşir. Derlenmez.
– Debug yapmak zordur (kısmen).

C/C++
+ Pek çok dilin atasıdır.
+ 70’li yıllarda ortaya çıkmasına rağmen halen güncellenmektedir (C++ için bahsedersek, ANSI-C aynı )
+ Hızlı işlemler ve temel düzey görevler için biçilmiş kaftandır.
+ Donanıma en yakın dillerdendir. Doğrudan assembly olarak derlenir.
– Hata alınabilecek çok nokta vardır. Dil sizin için pek kontrol yapmaz. Küçücük hata çılgın sonuçlar doğurabilir.
– Debug yapmak oldukça zordur.
– Kullanımı zordur.

Python
+ Kullanımı kolay bir dildir.
+ Google tarafından çok sevilir.
– Türkçe kaynak bulmak çok kolay değildir.

Scala
+ Yükselişte olan yeni gözde dildir. 
+ Hem nesne yönelimli hem de fonksiyonel dil özelliği gösterir.
+ JVM üzerinde çalışır, Java’ya ait tüm kütüphaneler kullanılabilir.
– Türkçe kaynak bulmak çok zordur.

Lua
+ Hızlı çalışan, kullanımı kolay olan scripting dilidir.
+ Oyun dünyasında pek çok noktada kullanılır
– Türkçe kaynak az sayıdadır.
-Kitaplardan öğrenmek zor olabilir başlangıçta videolu anlatımlar izleyerek öğrenebilirsiniz. Kalan kısmı için kitap gerekebilir ama kitap başlangıç için ağır gelebilir.

-Uygulamalı öğrenmek kalıcı olacaktır. Deneme projeler yapabilirsiniz gerekli aşamalarda netten araştırarak eksiklerinizi tamamlayabilirsiniz.

Ayrıca http://www.codecademy.com/ yeni başlayanlar için mükemmel bir kaynak. JS, Python, Ruby derslerine buradan bakabilirsiniz.

HTML/CSS için http://www.w3schools.com/ ‘u öneririm.

Ve olmazsa olmaz şey İngilizce’nizi geliştirin. Dersleri olabildiğinizde ingilizce dinleyin. Türkçe kaynaklar güncel değildir. Ve her zaman güncel kalın!

 

Buradan düzenlenerek alınmıştır, Sürekli güncellenecektir :)

mustafa candan

Bahçeşehir Üniversitesi Yazılım Mühendisliği, VR First BAU, Crytek, Virtual Reality Turkey,

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir