HANGİ PROGRAMLAMA DİLİ NEREDE KULLANILIR? – 3
Programlama dili ve framework'ler hakkında yazdığım yazı dizimin bu üçüncü ve son bölümüdür. Bu bölümde siber güvenlik, blockchain (blok zinciri) ve robotik alanlarına odaklandım. İlk bölümde veri bilimi, yapay zeka, big data (büyük veri), gömülü sistemler ve web (front-end ve back-end) ve ikinci bölümde mobil uygulama geliştirme, masaüstü uygulama geliştirme ve oyun geliştirme alanlarında kullanılan programlama dili ve framework'lere değindim. Daha fazla uzatmadan hemen başlayalı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.
Dikkat! Bu yazımda genel olarak popüler programlama dili ve framework'leri ele aldım. Unutmayınız ki bunlara çok daha fazla dil ve framework eklenebilir.
SİBER GÜVENLİK
Siber güvenlik, dijital cihazlarda (bilgisayarlar, akıllı telefonlar, akıllı ev otomasyon sistemleri vb.) veya internet üzerindeki herhangi bir yapıda meydana gelebilecek zararlı faaliyetleri önlemek için alınan güvenlik önlemlerinin tamamına verilen isimdir. Kişisel bilgilerin çalınması, veri ihlalleri, bilgisayar korsanlığı, fidye yazılımları, kimlik hırsızlığı, sosyal mühendislik saldırıları ve daha birçok durumda siber saldırılar meydana gelebilir. Siber güvenlikte birçok farklı programlama dili kullanılır.
Python
En popüler programlama dillerinden biri olan Python'ın siber güvenlik alanında da karşımıza çıkması şaşırtıcı olmamalı. Çok geniş kütüphane seçenekleri olan Python'da veri analizi, anomali tespiti, veri tabanı işlemleri, ağ güvenliği ve sızma testi gibi işlemler için de kütüphaneler bulunmakta ve bu sektörde de oldukça yaygın kullanılmakta.
Java
Bir başka popüler programlama dili olan Java ile de siber güvenlik alanında çalışmalar yapabilirsiniz. Network güvenliği, veri yedekleme ve kurtarma, kimlik doğrulama, veri şifreleme ve kayıt defteri izleme gibi birçok siber güvenlik uygulamasının geliştirilmesine olanak tanıyan birçok kütüphane ve araç içerir. Ayrıca Java, güvenlik açıklarını tespit etmek için tarayıcılar ve sunucular gibi siber riskler içeren sistemlerin test edilmesi için kullanılan bir dizi açık kaynaklı güvenlik aracı içerir.
Go (GoLang)
Hızlı çalışma süreleri ve küçük boyutları nedeniyle ideal bir dildir. Ayrıca, bellek güvenliği ve paralel işlem mimarisi konularında da üst düzey bir performans gösterir. Özellikle ileri seviyedeki siber güvenlik ihtiyaçları için öne çıkan bir dildir.
C#
C#, özellikle masaüstü kullanıcılarına yönelik tehditleri engellemek için kullanılır. Ama web uygulamaları ve mobil uygulamalar gibi diğer uygulama türlerinde de sıklıkla tercih edilir. Windows işletim sistemlerinde kayıt defteri izleme, ağ protokol analizi, güvenlik duvarları ve virüs koruma programları gibi siber güvenlik araçları geliştirilmesi için kullanılır.
C ve C++
C ve C++ programlama dilleri düşük seviyelidir. Yani makine diline yakındır ve etkinlikleri çok fazladır. Bu nedenle, doğrudan bellek erişimi ve kontrolü yapılabilir. Bu siber saldırıları ve güvenlik açıklarını belirlemek için önemlidir. Ayrıca, güçlü hata ayıklama özelliği sayesinde güvenlik açıklarını tespit etmek ve çözmek daha kolay hale gelir. C ve C++ dilleri, siber güvenlik açıklarını kapatmak için sık sık kullanılan güvenlik yamalarının geliştirilmesinde yaygın olarak kullanılır. Ayrıca, donanım tabanlı güvenlik sistemlerinin tasarımında ve uygulanmasında da kullanılabilir. Üstelik malware'lerin çoğunun bu iki dil ile yazıldığı bilinmektedir.
Ruby
Ağ güvenliği endüstrisindeki test araçları için kullanılan bir başka popüler programlama dili de Ruby'dir. Ruby, esneklik, basit syntax yapısı ve güçlü kütüphaneleri nedeniyle özellikle test otomasyonu ve web uygulamaları güvenliği gibi birçok siber güvenlik uygulamaları için tercih edilir. Aynı zamanda, siber güvenlik olaylarını izlemek için kullanılan bir araç olan Logstash ile birlikte çalışır. Logstash, veri güvenliği, veri erişimi ve sorun gözlemlemenin yanı sıra, günlük dosyaları ve syslog dosyalarını işlemek için kullanılır.
Sql
Web sitelerinin veri tabanlarını yönetmede kullanılan SQL, siber güvenlikte de önemlidir. Hacker'lar veri tabanına erişerek SQL aracılıyla verileri güncelleyebilir, silebilir, değiştirebilir veya indirebilir. SQL injection gibi güvenlik açığına karşı da önlem almak gerekiyor. SQL'in haricinde veri tabanları hakkında da bilgiye sahip olunması gerekli. Kısacası SQL web tabanlı güvenlik önlemleri için gereklidir.
JavaScript
Genellikle web (front-end ve back-end) tarafında kullanılan JavaScript siber güvenlikte de önemli bir dildir. Uçtan uca şifreleme, saldırı tespiti, güvenlik açığı tarama ve güvenlik testleri gibi amaçlar için kullanılabilir. Bununla birlikte JavaScript'in kötü amaçlı kullanımı da mümkündür. Özellikle Cross-Site Scripting (XSS) saldırılarında, kötü niyetli kullanıcılar web sitelerine zararlı JavaScript kodları enjekte ederek, site kullanıcılarının cihazlarına zarar verebilir ve verileri çalabilir. Bunun yanında, JavaScript, Distributed Denial of Service (DDoS) saldırılarında, saldırganların hedeflenen bir web sitesini işlemek için de kullanılabilir.
BLOCKCHAIN (BLOK ZİNCİRİ)
Blockchain (blok zinciri) teknolojisi adından son zamanlarda sıkça bahsettirdi. Bu teknoloji, aslında bir veri tabanı veya kayıt defteri gibi düşünülebilir. Ama Sql veya NoSql veri tabanlarına pek benzememekte. Tamamen açık ve değiştirilemez bir yapıdadır. Birden çok bilgisayarın paylaşılan bir ağda bulunduğu merkezi olmayan bir yapıya sahiptir. Ağdaki tüm bilgisayarlarda aynı kayıt bulunduğu için herhangi bir noktadaki veri değişikliğinin geçerliliği yoktur. Yeni eklenen kayıtlar ise ağdaki tüm bilgisayarlara işlenir. Bu sayede, kayıtların güvenliği ve doğruluğu en üst düzeyde olur. Kripto paralar, NFT'ler, merkeziyetsiz uygulamalar, akıllı sözleşmeler ve oylama sistemleri gibi blockchain uygulamaları vardır.
Solidity
Ethereum geliştiricileri tarafından üretilen bu dil ile EVM (Ethereum Virtual Machine) tabanlı blok zincirler için akıllı kontrat (smart contract) geliştirebilirsiniz. Statik bir dildir ve öğrenmesi kolaydır. Yeni bir dildir. Bu yüzden topluluğu henüz çok gelişmemiştir. Ancak popülerliği hızlı artmaktadır. Söz dizimi Javascript ve C++ dillerin karışımı gibidir.
Vyper
Vyper, Python 3 dili ile blok zinciri uygulamaları oluşturmak için geliştirilmiş bir dildir. Solidity diline alternatif olarak geliştirilmiştir. Sözleşmeleri daha güvenli ve denetlenmesi daha kolay hâle getirmek amacıyla kasti olarak Solidity'den daha az özelliğe sahiptir. Bu sebeple hızlı prototipler geliştirilebilir.
JavaScript
En popüler dillerden olan JavaScript blockchain alanında da kullanılmaktadır. Ethereum ağı ve akıllı sözleşmelerle etkileşime geçmek için web3.js ve ethereum.js gibi kütüphaneleri bulunur. Kullanıcılar web sitesi aracılığıyla bu kütüphaneler üzerinden Ethereum ağı sorgulamaları yapabilir ve sonuçları görebilir. En popüler Js framework'lerinden biri olan Node.js için HyperLedger Fabric SDK (Yazılım geliştirme kiti) bulunmaktadır.
C++
En popüler dillerden biri olan C++, hızlı olması, nesne yönelimli olması ve derlenen bir dil olması gibi sebeplerle blockchain alanında da kendine yer bulmakta. Bitcoin, Bitcoin Cash, Litecoin ve Ripple gibi kripto paraların geliştirilmesinde C++ kullanılmıştır.
Python
Python bu ekosistemde çok farklı alanlarda kullanılmaktadır. HyperLedger için akıllı sözleşme veya Neo için sözleşme yazılabilir. Node işlemleri için de Python kullanılabilir. Blockchain altyapısı üzerinde yapay zeka uygulamaları geliştirmek mümkündür ve burada da Python kullanılabilir.
Java
Java programlama dili, blockchain teknolojisi için de kullanılabilecek güvenilir bir dil olarak kabul edilmektedir. Bazı blockchain uygulamaları, Java kullanılarak geliştirilmiştir. Ticari kullanım için tasarlanan açık kaynak kodlu bir blockchain platformu olan HyperLedger Fabric, Java dilinde yazılmış birçok bileşen içerir ve işletmelerin kendi özel blockchain altyapılarını oluşturmalarına olanak tanır. Finansal hizmetler ve işlemler için tasarlanmış özel bir blockchain platformu olan Corda'nın temel bileşenleri de Java dilinde yazılmıştır. BitcoinJ, Bitcoin blockchain teknolojisinin Java diline uyarlanmış versiyonudur. Bu tekniğin kullanım amacı, Android gibi Java tabanlı sistemlerde bir Bitcoin istemcisi yazmaktır. Ethereum Java, Java dilinde geliştirilmiş özel bir Ethereum müşterisidir. Bu müşteri, akıllı sözleşmeler yazmak ve düğüm yönetimi yapmak için kullanılabilir.
Rust
Son zamanlarda blockchain teknolojisi dünyasında popülerleşen bir dil haline gelmiştir. Rust, yüksek performans, güvenlik ve ölçeklenebilirlik sağlar. Bundan dolayı özellikle blockchain dünyası için kullanışlı bir dil olarak kabul edilir. Polkadot, Rust programlama diliyle yazılmıştır. Bu platform, farklı blockchain ağları arasında veri paylaşımı yapmak için özel olarak tasarlanmıştır. ZCash blockchain ağı, Rust dilinde yazılmıştır. ZCash, gizlilik odaklı bir kripto para birimidir ve anonim işlemler yapılmasına olanak tanır. Holochain, Rust dilinde yazılmış bir blockchain teknolojisi ile çalışan ölçeklenebilir bir dağıtık uygulama platformudur. Conflux, Rust dilinde yazılmış olan ve ölçeklenebilirliği ile tanınan bir blockchain altyapısıdır.
ROBOTİK
Robotik, robotların tasarımı, üretimi, işletimi, programlanması ve kontrolü ile ilgili bilim dalıdır. Bu; elektronik, mekanik ve yazılım teknolojilerinin kombinasyonundan oluşur. Otonom robotlar, otomatik yönlendirmeli robotlar, eklemli robotlar (robotik kollar), insansı robotlar ve cobot'lar (yardımcı robotlar) gibi çeşitli robotlar vardır.
C ve C++
C'nin düşük seviyeli bir dil olması ve donanımlarla etkileşime girme yeteneği onu robotik programlamada öne çıkarıyor. Özellikle düşük hafızaya sahip olunması durumunda ilk tercih edilen dillerdendir. Ayrıca gerçek zamanlı uygulamalar için de C önemli bir avantaja sahiptir. Yüksek performanslı bir dil olması da bir diğer avantajdır. C++, C dili üzerinden geliştirilmiştir ve nesneye yönelik programlama, veri sınıfları ve kalıtım gibi ek özellikler eklenmiştir. C++ dili C dilinden daha karmaşıktır. Bellek kaynağı sınırlı değilse genelde C++ tercih edilir.
Python
Python ile kodlama ve prototip geliştirme diğer dillere göre oldukça hızlı olduğundan robotikte öne çıkan dillerden biri olmuştur. Ancak yorumlanan bir dil olması sebebiyle hata tespiti zor olabilir. Robot işletim sistemi (robots operating system - ROS) için de Python öne çıkan dillerdendir. Robotikte görüntü işleme ve nesne tanımlama gibi durumlarda da Python avantaja sahiptir. Yapay zekaya ihtiyaç duyulan robotik alanlarında ilk sırada Python gelir.
Java
Robotikte çok kullanılan dillerdendir. Yazılım mimarisi, nesne yönelimli programlama, esnek ve modüler olması, güvenilirlik, hata yönetimi, veri işleme yeteneği, kolay okunabilirlik gibi özellikleri nedeniyle Java öne çıkan dillerdendir.
MatLab / Simulink
MatLab ve onun bir aracı olan Simulink robotikte çok farklı alanlarda kullanılabilir. Robotik algılama, nesne algılama ve tanımlama, 3d senaryo oluşturma gibi alanlarda kullanılabilir. Ayrıca kameradan gelen görüntülerin işlenmesi, yüz tanıma ve konum belirleme gibi işlemler yapılabilir. Matlab ve Simulink, robotik sistemleri kontrol etmek için kullanılan güçlü araçlar sunar. Robot hareketlerinin kontrolü, pozisyon, hız ve ivme kontrolü, kinematik ve dinamik kontrol, yol planlama ve simülasyon gibi işlemler için kullanılabilir. Matlab ve Simulink, robotikte yapay zeka işlemlerini yönetmek için kullanılabilir. Bu nedenle birçok robotun öğrenme becerileri ve karar vermek için kullanabileceği bir dizi işleve sahip olmasını sağlar. Robotik sistemlerin simülasyonu için Simulink kullanılabilecek güçlü bir araçtır. Bu, robotik sistemlerin performansı, yeni devre tasarımları ve işlevsel özelliklerin sınaması hakkında bilgi toplamak için kullanılabilir.
Lua
Lua dilinin robotik alanında kullanıldığı birçok uygulama alanı vardır. Robotların hareketlerini kontrol etmek için kullanılabilir ve kontrol edilmesi gereken makinelerde program kontrolü için de kullanılabilir. Lua dilinin, robotik sistemlerden gelen sensör verilerinin işlenmesinde kullanımı da sıklıkla görülmektedir. Ayrıca, gömülü sistemlerde kullanılabilen Lua, geliştiricilerin projelerini optimize etmelerine ve kodlama süreçlerini hızlandırmalarına yardımcı olur. Kolay bir söz dizimi vardır ve öğrenmesi kolaydır. Bu nedenle geliştirme süresi kısadır. Hızlı bir dildir. Düşük işlemci gücü olan uygulamalarda kullanılabilir. Verimli bir hafıza yönetimine sahiptir. Robotik sistemlerde kullanılan gömülü sistemlerde de kullanılabilen bir dildir.
C#
Microsoft'un geliştirdiği bir dil olan C#, robotik programlamada da kullanılır. Microsoft Robotics'in geliştirme dilidir. C#, robotların kontrol işlevleri için kullanılabilecek farklı işlevler sunar. Robot kollarının mekanik kontrolü, hareket kontrolü, kinematik ve dinamik kontrol gibi işlemler için kullanılabilen işlevler içerir. Robotik görüntü işleme projelerinde görüntü algılama, yüz ve nesne tanıma için kullanılabilir. Robot kollarının mekanik kontrolü, hareket kontrolü, kinematik ve dinamik kontrolü için kullanılabilir.
Bu üç adet yazımda sektörlere göre kullanılan programlama dili ve framework'leri ele aldım. Yazılımı hiç bilmeyen ve yazılımda kariyer yapmak isteyen kişiler ve giriş seviyesi bilgiye sahip olan kişiler için yazdığım bu yazılarımda genel anlamda pek çok bilgiyi sığdırmaya çalıştım. Yazılımcı olmak isteyen ama hangi alanda kariyer yapmak istediğinden emin olamayan kişiler umarım bu yazılarımla beraber fikir edinebilirler. 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 🙂
c c plus plus c sharp go java javascript lua matlab python ruby rust simulink solidity sql vyper