HANGİ YAZILIM DİLİ NEREDE KULLANILIR?
Yazılıma ilgilisiniz ama nereden başlayacağınızı bilmiyor musunuz? Hangi yazılım dili nerede kullanılır merak mı ediyorsunuz? O zaman bu yazı dizim tam size göre. Ufak da olsa bir araştırma yaptıysanız birçok yazılım dili, programlama dili veya farklı bir deyişle kodlama dili olduğunu görmüşsünüzdür. Peki neden bu kadar çok yazılım dili var ve nereden çıktı bunlar? Hangi yazılım dilleri var? Hadi derinlere dalalım.
Not: Yazılım Nedir, Yazılımcı Nasıl Olunur? başlıklı yazımdan sonra bir ihtiyaç olarak gördüğüm bu yazımı yazmaya karar verdim. Dilerseniz ilk önce oradan başlayın.
Öncelikle şunu belirtmeliyim ki pek çok yazılım dili mevcuttur ve bütün yazılım dillerine hakim olmanız neredeyse imkansızdır. Ancak bir yazılım dilinde ustalaşmanız size diğer yazılım dillerini öğrenirken çok büyük kolaylıklar sağlar. Bütün yazılım dillerini bilmenize gerek de yok zaten. Her şeyden önce alanınızı seçmeniz sizin için en iyisidir. Bu küçük gibi görünen detay aslında en önemli adımdır. Çünkü bu yaptığınız işten zevk almanız ve öğrenme devamlılığınız için olmazsa olmazdır. Yazılım öğrenmeyi isteme sebebiniz mobil uygulama yapmak, oyun geliştirmek, web projeleri yapmak, gömülü sistemler ya da yapay zeka gibi konularda projeler geliştirmek olabilir. Kendinize bir alan seçtikten sonra sıra geldi sizin için gerekli olan yazılım dillerini öğrenmeye. Dikkat! Bu yazımda genel olarak popüler dilleri ve framework'leri ele aldım. Unutmayınız ki bunlara çok daha fazla dil ve framework eklenebilir.
Güncelleme (07/2022): Yeni dil ve framework'leri eklediğim için bu yazı fazlasıyla uzadı. Bu nedenle sizleri yormamak için bu yazıyı ikiye bölmeye karar verdim.
Güncelleme (05/2023): Yeni teknolojileri eklemeye devam ettiğim için yazı dizim uzamaya devam etti 🙂 Bu nedenle bu seriyi 3 ayrı sayfaya böldüm.
Bu bölümde veri bilimi, yapay zeka, big data (büyük veri), gömülü sistemler ve web (front-end ve back-end); ikinci bölümde mobil uygulama geliştirme, masaüstü uygulama geliştirme ve oyun geliştirme konularına; üçüncü bölümde ise siber güvenlik, blockchain (blok zinciri) ve robotik değindim. Daha fazla uzatmadan hemen başlayalım.
VERİ BİLİMİ, YAPAY ZEKA, BIG DATA
Bu alanlar iç içe olduğu için hepsini tek başlıkta toparladım. Büyük veri daha fazla çeşitlilik içeren ve hızla artan büyük hacimli veridir. Veri bilimi, yapılandırılmış ve yapılandırılmamış verilerden bilgi ve öngörü elde etmek için bilimsel yöntemleri, süreçleri, algoritmaları ve sistemleri kullanan çok disiplinli bir alandır. Veri bilimi; veri madenciliği, büyük veri ve veri görselleştirme ile ilişkilidir. Makine öğrenmesi insanların öğrenme şekillerini taklit etmek için veri ve algoritmaların kullanımına odaklanıp doğruluğunu kademeli olarak artıran bir yapay zeka dalıdır. Makine öğrenmesi, derin öğrenme ve yapay zeka hakkında yakında yeni bir yazı paylaşmayı planlamaktayım. Lütfen takipte kalın.
R Dili
R dili kısaca; istatistiksel hesaplama, veri analizi ve bilimsel araştırmalarda verileri temizlemek, analiz etmek, görselleştirmek ve anlamlı hale getirmek için istatistikçiler, veri bilimcileri, veri analistleri, araştırmacılar ve pazarlamacılar tarafından yaygın olarak kullanılan bir programlama dilidir. Açık kaynak kodludur ve öğrenmesi Python'a göre biraz daha zordur. R karmaşık matematiksel hesaplamaları ve istatistiksel testleri kullanmayı kolaylaştırır.
Python
Python, nesne yönelimli, yorumlamalı, modüler ve etkileşimli yüksek seviyeli bir programlama dilidir. Girintilere dayalı basit söz dizimi, dilin öğrenilmesini ve akılda kalmasını kolaylaştırır. Geliştirilmeye 1990 yılında Guido van Rossum tarafından başlanmıştır. Python ile çok farklı alanlarda proje geliştirilebilir. Veri bilimi de bu alanlardan biridir. Programlama ve istatistik geçmişi olmayan ve bu alanda çalışmak isteyen kişiler genellikle Python ile başlar. Açık kaynak kodludur ve öğrenmesi en kolay dillerden biridir. Jupyter Notebook gibi araçlar sayesinde veri bilimi uygulamalarında kodu yazmak daha da hızlı hale gelmiştir.
Julia
Julia yüksek seviyeli ve yüksek performanslı bir dildir. MIT tarafından geliştirilmiştir ve kullanıcısına verebileceği en iyi performansı bilgisayarı yormadan vermek için tasarlanmıştır. Büyük hesaplamalar ile uğraşanlar için oldukça iyi bir dildir. Yaptığı işlemleri hızlı ve yüksek doğrulukla yaptığı için kullanıcıların ilgisini çekmektedir. Julia içerisinden C, Fortran ve Python kodları kolayca çağrılabilmektedir. Bu sayede Julia ile yapılamayan işleri bu diller aracılığıyla yazılmış kütüphanelerle yapmak mümkün hale gelmektedir. Öğrenmesi kolaydır ve açık kaynak kodludur.
Matlab
Matrix Laboratory kelimelerinden türetilmiş ismiyle Matlab bir çok paradigmalı sayısal hesaplama dilidir. MathWorks firması tarafından geliştirilmektedir ve açık kaynaklı değil, ticari bir yazılımdır. Sayısal işleme yönelik üretilmiş olmasına rağmen sembolik hesaplama motoru da vardır. Matlab, yaygın olarak akademik ve araştırma kurumlarında olduğu kadar endüstriyel işletmelerde de çok kullanılmaktadır. Makine öğrenmesi, veri bilimi, derin öğrenme, görüntü işleme, veri görselleştirme, simülasyon gibi ileri düzey konularda da sıkça kullanılır. Genellikle fizik, mühendislik, uygulamalı matematik ve ekonomi alanlarında tercih edilmektedir.
Scala
Scala, Java Virtual Machine (JVM - Java Sanal Makinesi) üzerinde çalışan, hem nesneye yönelik hem de fonksiyonel programlama özelliklerine sahip genel amaçlı bir dildir. Bir büyük veri platformu olan Spark ile birlikte kullanılabilmektedir. Büyük hacimli verilerle uğraşırken Scala ideal bir programlama dilidir.
Sql
Sql veri tabanı sorgulama dilidir. Veri bilimindeki ve büyük verideki (big data) en önemli araçlardan biri veri tabanları olduğu için Sql bilmek önemli bir avantaj sağlar. Sql ayrıca web sitelerinde de kullanılmaktadır. Web başlığı altında Sql'e tekrar değindim.
C++ Dili
C++ dili makine diline yakın bir dildir ve öğrenmesi uzun sürer. Makine diline yakın olduğu için çok hızlı bir dildir. Genellikle gömülü sistemler için kullanılmasına rağmen masaüstü uygulama geliştirme, oyun geliştirme, siber güvenlik ve veri bilimi alanlarında da kullanılmaktadır. Veri bilimi alanında deneme ve test için model geliştirirken uygun değildir, çünkü yazması zahmetlidir. Bunun yerine gerçekten performansa ihtiyaç duyulan ve geliştirme süresinin önemli olmadığı noktalarda C++ ile geliştirme yapılabilir.
GÖMÜLÜ SİSTEMLER
Gömülü sistemler deyince yazılımla ilgisi olmayan insanlar genellikle ya bir anlam veremez ya da "nereye gömülü" gibi sorular sorar. İsim olarak korkutucu gelebilir ama evet, aslında bir yere gömülü 🙂 Mikrodenetleyici denilen elektronik elemana! Mikrodenetleyiciler içerisinde mikroişlemci ve birkaç başka şey daha barındıran elektronik devre elemanlarıdır. Yazdığınız kodu bu devre elemanına atarsınız ve o da sizin yazdığınız koda göre çeşitli işlemler gerçekleştirir. Sensörlerden gelen sinyalleri okuyabilir, bu verileri internete gönderebilir, lcd ekrana çeşitli şeyler yazdırabilir, motor kontrol edebilir ve daha pek çok şeyi gerçekleştirebilirsiniz. Küçük oyuncak arabalardan tutun savunma sanayisi ve hatta uzay araçlarına kadar pek çok yerde gömülü sistem yazılımları bulunur. Yazılımda ilk doğan alanlardan birisi budur. Son zamanlarda popülerliği artan akıllı sistemler, örneğin akıllı fabrikalar veya akıllı ev otomasyon sistemleri bu alan üzerine kuruludur. Nesnelerin interneti (internet of things - IoT) de gömülü sistemlerin alt dalıdır diyebiliriz.
Assembly
Assembly dili en eski dillerden biridir ve makine diline en yakın dillerden biridir. Bu sebeple yazılması çok zor bir dildir ve öğrenmek epey zaman alır. Bununla birlikte mikro işlemciyle alakalı çok ince ayrıntıları yönetmeye imkan verir. Bu nedenle çok hızlı çalışır. Yazılan kod çok az yer kaplar. Günümüzde hızın önemli olmadığı yerlerde çok fazla kullanılmamaktadır.
C Dili
C dili 1972 yılında Dennis Ritchie tarafından geliştirildi. Bu program Unix işletim sisteminin yazıldığı dil olarak biliniyordu. Ama hemen hemen bütün işletim sistemlerinde C ya da C++ dilleri kullanılmıştır. Makine diline yakın olmasına rağmen kodlaması ve öğrenmesi Assembly'e göre daha kolaydır. Yazılan kod az yer kaplar ve çok hızlıdır. Günümüzde hala popüler olan bu yazılım dili ile birçok uygulama gerçekleştirilebilir.
C++
C++ dili C dili baz alınarak yazılmıştır ve birbirleriyle çok benzerdir. Genel olarak her C kodu aynı zamanda C++ kodudur diyebiliriz (ancak her C++ kodu bir C kodu olmayabilir). C++ dili 1979 yılında Bjarne Stroustrup tarafından geliştirilmeye başlanmış ve 1983 yılında çıkmıştır. Nesne yönelimli bir dildir. Performansın gerekli olduğu durumlarda kullanılan dillerden biridir ve günümüzdeki en popüler diller arasındaki yerini korumaktadır.
Pic mikrodenetleyicileri programlarken C dili, Arduino (Atmel mikrodenetleyicileri) programlarken basitleştirilmiş bir C/C++ dili versiyonu ve Arm tabanlı mikroişlemcileri programlarken de C++ dili kullanılır.
MicroPython
MicroPython, 2013 yılında bir KickStarter kampanyası ile geliştirilmeye başlandı. Python 3 dilinin sadeleştirilmiş bir hali olan MicroPython'ın geliştirilme amacı Python'ı mikrodenetleyiciler üzerinde çalıştırılmaktı. ESP8266 veya ESP32 gibi mikrodenetleyicileri MicroPython ile kodlayabilirsiniz.
WEB (FRONT-END Ve BACK-END)
Öncelikle Front-end ve Back-end nedir bunu açıklayayım. Web tarayıcımızı (Mozilla Firefox, Google Chrome gibi) açtık ve bir sayfaya gittik diyelim. Örneğin Facebook'a. Butonlar, resimler, videolar, yazılar ve gördüğümüz diğer tüm şeyler aslında web'in front-end tarafıdır. Arka plandaki şeyler, yani bizim görmediğimiz şeyler de web'in back-end tarafıdır. Kullanıcının bilgileri ve paylaşımları server denen ortamda saklanır. Back-end programlama server (veri tabanı) ile front-end arasında bir köprü oluşturur. Örneğin kullanıcı adı ve şifremizi yazıp girişe bastığımızda back-end dili veri tabanına bağlanıp kullanıcı adı ve şifrenin doğruluğunu kontrol eder ve doğruysa girişe onay verir ve giriş sayfasına yönlendirir. Şimdi gelelim dillerimizi tanımaya:
Html (Hyper Text Markup Language - Hiper Metin İşaret Dili)
HTML front-end tarafıdır ve bir yazılım dili değil, işaret dilidir! Öğrenmesi kolaydır. Web programlamayı bir insana benzetirsek Html iskelet sistemidir diyebiliriz. Renk, boyut, arka plan rengi vs gibi tasarım öğeleri eklenebilir ancak kod okumayı zorlaştırdığı ve karmaşıklaştırdığı için bu tercih edilmez. Öğelere class ya da id verilerek tasarım Css'e bırakılır.
Css (Cascading Style Sheets - Basamaklı Stil Şablonları)
İnsan benzetimimizde Css insanın dış görünüşüdür. Yani renkler, öğelerin boyutları, yazı tipi ve boyutları, gölgelendirmeler... Bunların hepsi Html yazarken verdiğimiz class ve id'lere göre Css ile programlanır. Daha sonra oluşturduğumuz Css dosyamızı Html kodumuzun içine ekleriz. Css de kolaydır. Css de bir yazılım dili değil, işaretleme dilidir. Ancak Css'in tekrar eden yapısından kurtulmak için Sass (Syntactically Awesome Stylesheets) ve Scss(Sassy Cascading Style Sheets) yazılım dilleri geliştirilmiştir. Bunlar aslında Css önişlemcisidir ve yazılan kodu derleyerek Css'e çevirir. Css'in Tailwind, Bootstrap gibi framework'leri bulunmaktadır.
Js (Javascript)
Javascript bazen Java ile karıştırılmaktadır ama ikisi çok farklıdır. Javascript bir betik dilidir. İnsan benzetimizde Javascript için verdiğimiz tepkiler diyebiliriz. Örneğin "beğen" butonuna bastığımızda arkada Js kodu çalışır ve boş olan kalp kırmızı renkte görünmeye başlar ya da bir içeriğe puan verdiğimizde de Js kodu çalışır. Menüden "blog" butonuna tıkladığımızda bizi Javascript kodları blog sayfasına yönlendirir. Js yazmak Html ve Css'e göre biraz daha zordur. Ama temelde bu üçü de her web sayfasında bulunmak zorundadır.
Javascript'in framework denilen çeşitli varyasyonları vardır. Hatta NodeJs gibi framework'ler ile back-end programlama da yapılabilmektedir. Framework'ler kod yazmayı kolaylaştırmak, hızlı kod yazmak ve kodun okunurluğunu arttırmak gibi şeyleri sağlar. Popüler olan bazı Js framework'leri: NodeJs, Angular, ReactJs, Vue.
Php (Hypertext Preprocessor - Hiper Metin Önişlemcisi)
Php internet için üretilmiş, sunucu taraflı, yani back-end dediğimiz, çok geniş kullanımlı, genel amaçlı, içerisine HTML gömülebilen betik ve programlama dilidir. Dinamik web sayfaları geliştirmeye yarar. İlk kez 1995 yılında Rasmus Lerdorf tarafından geliştirilmiştir. Php topluluğu tarafından şuanda da geliştirilmeye devam edilmektedir ve açık kaynak kodludur. PHP ile basit bir blog sitesinden tutun da arama motoru, web sayfaları (örneğin Facebook Php ile yapılmıştır), WordPress gibi içerik yönetim sistemleri ve online oyunlar gibi pek çok şey yapılabilir.
Asp ve Asp.Net
Asp (Active Server Pages - Aktif sunucu sayfaları) Microsoft yazılımı olmakla beraberinde bu firmanın geliştirmiş olduğu bir programlama dilidir. Bu programlama dili kullanıcı tarafına etkileşimli, dinamik web sayfaları göstermek için kullanılır. Bu dil sayesinde kodlamanız bittikten sonrasın da kullanıcının sadece sonuçta oluşan Html sayfalarını görmesi olayıdır. Yani sizin kodlamış olduğunuz Asp kodlarınızın gösterilmemesidir. Sunucunuz onun için hazırladığı Html kodlarını gösterir. En büyük avantajlarından biri kullandığınız script'lerin saklı kalmasıdır.
Asp.Net'in ilk sürümü 1992 yılında, Microsoft tarafından geliştirilmiştir ve veri tabanı yardımıyla dinamik internet siteleri oluşturulmak için kullanılan bir programlama çatısıdır. IIS üzerinde çalışan Asp.Net bir programlama dili değil yazılım çatısıdır. Asp.Net ile internet sitesi geliştirmek isteyen yazılımcılar Visual Basic, C++, C# ve Perl gibi programlama dillerini kullanarak dinamik web siteleri ve yazılımlar geliştirebilirler. Açık kaynak kodlu değil ticaridir.
Java
İlk olarak Sun Microsystems tarafından 1995 yılında piyasaya sürülen bir programlama dili ve bilgi işlem platformudur. Java neredeyse her türdeki ağ uygulamalarının temelini oluşturarak gömülü ve mobil uygulamalar, oyunlar, web tabanlı içerik ve kurumsal yazılım geliştirme ve dağıtımı için kullanılabilir. Çok geniş bir alana hitap etmektedir.
Django
Python dilinin web geliştirme framework'lerinden biri olan Django'nun temel amacı, karmaşık bir yapıda olan web uygulamalarının kullanımını kolaylaştırmaktır. Django yeniden kullanılabilirlik, modülerlik, hızlı geliştirme süreci politikasına sahip bir yapıda tasarlanmaktadır. Öğrenilmesi kolaydır.
Flask
Python dilinin bir diğer popüler web geliştirme framework'üdür. Django'ya göre öğrenmesi biraz daha kolaydır. Flask micro framework mantığıyla çalışır. Yani çok basit bir temelle sunulur ve yazılım geliştirici projenin ihtiyaçlarına göre ekstra özellikler ekleyerek projeyi büyütür. Büyük projelerde daha çok Django tercih edilir.
Ruby on Rails
Açık kaynak kodlu bir dil olan Ruby'nin web geliştirme framework'ü olan Ruby on Rails basit yazımı ve öğrenilmesinin kolay olması nedeniyle son dönemlerde popülerleşmiştir. Mvc (model-view-controller) yapısında olan dillerdendir.
Go
Go, GoLang ya da Google Go olarak da bilinir. Google tarafından geliştirilmiş bir dildir ve 2007'de piyasaya sürülmüştür. Açık kaynaklıdır ve statik bir programlama dilidir. Hem hızlı ve hem de yüksek performanslı web uygulamaları yapılabilir. Go dilinde 25 adet anahtar kelime vardır ve bu nedenle öğrenmesi kolaydır. Ram ihtiyacı düşüktür.
Sql (Structured Query Language - Yapılandırılmış Sorgu Dili)
Web sayfalarına kullanıcı verilerini kaydetmek gerekebilir. Bu kayıt işlemi veri tabanına yapılır. Sql burada devreye giriyor. Veri tabanına veri kaydetmek, kaydolmuş verileri okumak, güncellemek, silmek ve çeşitli sorgulamalar yapmak amacıyla kullanılır. Sql de bir yazılım dili değil, veri tabanlarında kullanılan sorgulama dilidir. Sql ilişkisel veriler ve veri tabanları için kullanılır. Veriler tablo şeklinde tutulur. Bazı Sql veri tabanları: MySql, PostgreSql, Microsoft Sql Server, Oracle, Ibm Db2.
NoSql
İlişkisel olmayan veriler ve veri tabanları ile NoSql kullanılmaktadır. Çoğunlukla big data ve gerçek zamanlı web uygulamalarında kullanılır. Veriler Sql'in aksine tablo şeklinde değil, farklı farklı şekilde modeller. NoSql veri tabanlarının anahtar-değer, belge, grafik, bellek içi, arama gibi türleri vardır. NoSql veri tabanları esnektir, performanslıdır, ölçeklenebilirdir. Bazı NoSql veri tabanları: MongoDB, DynamoDB, Apache HBase, Facebook Cassandra, Amazon Dynamo, Couchbase.
Yazı dizimin bu bölümünde veri bilimi, yapay zeka, big data, gömülü sistemler ve web alanlarında kullanılan programlama dillerine ve framework'lere değindim. Diğer bölümlere göz atmayı unutmayın. Geri bildirim, ek bilgi veya eleştiri için yorum yapmaktan çekinmeyin. Ayrıca yazılarımı paylaşarak daha fazla kişiye ulaştırabilirsiniz 🙂
asp assembly c c plus plus c sharp css django flask go html java javascript julia matlab micro python nosql php python r ruby on rails scala sql
2 cevap
Öncelikle eline sağlık hocam kodlama öğrenme isteği vardı ve hangisinin ne olduğunu, daha doğrusu hangisine başlayacağımı bilmiyordum. Sayende kararımı verdim. Teşekkür ederim ? ve son 1 sorum daha var, ücretli veya ücretsiz öğrenebileceğim bir yer var mı, iyi ve kısa zamanda öğreneyim yeterli.
Merhaba Özkan. Aldığım ilk yorum seninki oldu, teşekkürler 🙂 Yazılımda kaynak çok var aslında ama geneli İngilizce. Umuyorum ki İngilizce’n iyidir, değilse bir an önce öğrenmeye bak. Youtube’da çok güzel kanal ve kaynaklar var. Konu başlığına göre videolar bulabilirsin. Udemy’de ücretli ve ücretsiz, Türkçe ve diğer dillerde kurslar bulunmakta. Düzenli takip için Udemy’yi tavsiye ederim. İyi öğrenmek için ise öğrendiğini direkt uygulamak gerek. Kodlaya kodlaya öğrenirsin. Kolay gelsin.
Güncelleme: Türkiye’nin en büyük yazılım topluluğu olan Kodluyoruz‘un bir ürünü olan Patika‘yı şiddetle tavsiye ederim. Patika’da çok güzel ücretsiz eğitimler bulunmakta. Ayrıca eğitiminin yanı sıra sürekli bootcamp’ler ve workshop’lar açılmakta. İşe yerleşmek için de avantaj sağlıyor böylece. Patika’ya kaydolmak için burayı tıklayabilirsiniz.