Ben de bu tür sorularla sıkça karşılaşıyorum. Bu makalede yazılım ile ilgili çok sorulan “Yazılım Nedir?”, “Yazılım Yazmaya Başlarken Nelere Dikkat Edilmelidir?”, “Yazılım Çeşitleri Nelerdir?”, “Programlama Yaparken Hangi Yazılım Dili Kullanılmalıdır?” gibi sıkça sorulan sorulara yanıt vermek istedim.

Yazılım Nedir?

En yalın tanımıyla yazılım; elektronik bir donanımı, belirli bir işi yapmak için derlenmiş komutların bütünüdür. Bu komutlar işlemcilerde işlenerek bir olaya dönüştürülür. Türk Dil Kurumu Sözlüğü’ne göreyse yazılım;  Bir bilgisayarda donanıma hayat veren ve bilgi işlemde kullanılan programlar, yordamlar, programlama dilleri ve belgelemelerin tümü. (TDK Sözlük)

Yazılım aslında hayatımızın her alanında bulunmaktadır ve hayatımızı kolaylaştırır. Bilgisayarlar, telefonlar, televizyonlar, mobil teknoloji, internet, sanayide kullanılan yeni nesil cihazların neredeyse tamamı, otomotiv, inşaat, eğitim, reklam, pazarlama, iletişim, medya, eğlence, sağlık başta olmak üzere hemen hemen tüm sektörlerde, uzay sanayisinde, günlük hayatta kullanılan bazı teknik aksesuarlarda kısacası “yazılım” yaşamın her alanında kullanılmaktadır.

Yazılım Yazmaya Başlarken Nelere Dikkat Edilmelidir?

Bir fikrinizin, yada size verilen bir yazılım işini yapabilmek için ilk önce donanımı ve/veya işletim sisteminiseçmek gerekir.

Eğer elektronik bir donanım yapılıyorsa ihtiyaca göre en uygun performanslı ve en uygun fiyatlı işlemci ve donanımlar seçilmelidir. İşlemciler günümüzde 5 TL’den başlayıp binlerce liraya kadar çıkabilmektedir bu yüzden doğru işlemci seçimi çok önemlidir. Ardından bu işlemcinin desteklediği dil ve dile uygun derleyicibelirlenmelidir. Her işlemcinin her dile ait desteği olmadığı için, desteklediği diller arasındaki seçim bu dillerin sağladığı hız ve kolaylığa göre olmalıdır.

Eğer bilgisayar için bir yazılım yapılıyorsa öncelikle hangi işletim sistemi için yazılım yapılacağı seçilir. Ardından hangi programlama dilinin kullanılacağı belirlenir. Bunun akabinde derleyici yardımı ile yazılan kodlar makine diline çevrilir. Yazılan dile uyumlu bir derleyici kullanılması bu yüzden zorunludur. Bilgisayarda dil ve derleyici uyumu elektronik cihazlara göre daha çeşitli ve kolay erişilebilir olduğu için kısa bir araştırma ile ihtiyaçlar kolaylıkla bulunabilir. Burada önemli olan programı hangi işletim sistemi için derleyeceğinizdir. Linux için derlenen program Windows’ta, Windows için derlenen program Linux’ta çalışmayacaktır. Aynı şeyler MacOsiçinde geçerlidir.

Yazılım Çeşitleri Nelerdir?

Bu başlıkta yazılımı iki ana başlık altında inceleyeceğim:

  • Bilgisayar Yazılımı
  • Elektronik Yazılımı

Bilgisayar, temelde elektronik bir cihaz olsa da içindeki yazılım mantığı temel elektronik cihazlardan biraz daha farklı olduğu için bunları ayrı iki kategoriye ayırmak daha doğru olur. Mobil cihazlar bilgisayar ile aynı kategoride anlatılabilir, aralarında pek fark yoktur.

Bilgisayar Yazılımı

Bilgisayar yazılımları işlev olarak üçe ayrılır. Bunlar;

  • Uygulama Yazılımı
  • Sistem Yazılımı
  • Bilgisayar Programlama Araçları

Uygulama Yazılımları: Bilgisayarda kullanılan, bir görevi yapmak için yazılmış yazılımlardır. Web programları, Ofis Programları, Resim ve Video Düzenleme Programları, Oyunlar gibi birçok kategoride uygulama bulunmaktadır. İnsanların çalışmalarını hızlandırmak, bir işlemi bir veya birkaç tuşla yapabilmek için yazılmış yazılımlardır.

Sistem Yazılımları: Her okurun bildiği gibi Windows, Android, iOS gibi kullanıcının ilk karşılaştığı, donanımların ve yazılımların uyumlu çalışmasını sağlayan temel yazılımlardır. Uygulama yazılımlarından daha derin bir bilgisayar bilgisi gerekmektedir.

Bilgisayar Programlama Araçları: Aslında elektronik kategorisinde de geçerlidir. Bu yazılımlar, yazılan kodları bilgisayar diline çevirerek donanımlara ne yapması gerektiğini söyler. Bu sayede bilgisayar uygulamaları çalıştırabilir. Eğer yazılım dili ile kullanılan programlama aracı uyuşmuyorsa veya doğru işletim sistemine ait değilse çalışmayacaktır tıpkı Türkçe bilmeyen birine Türkçe anlatmak gibi bir sonuç ortaya çıkacaktır.

Elektronik Yazılımları; Belirli bir veya birkaç görevi yapması için yazılan, genellikle işlemcinin pin giriş-çıkışlarına bağlı sensörlerden veri okumak ve işlemek, giriş-çıkışlara bağlı olan motor veya led gibi elektronik cihaza bir iş yaptırmak amacıyla yazılan yazılımlardır.

Bu yazılımlar küçük projelerden sanayide kullanılan büyük cihazlara kadar her alanda kullanılmaktadır. Elektronik yazılımı dilleri ile bilgisayar dilleri aslında farklı değildir.Birçok ortak yazılım dili bulunmaktadır. Elektronik yazılımının bilgisayar yazılımından farkı; elektronik yazılımlarda, programlanan işlemciyi mutlaka bir elektronik devre ile, gerekiyorsa da mekanik tasarım ile birleştirilip kullanmak gerekmektedir. Yani elektronik yazılımlarda; kimi zaman kamera, kimi zaman ise motor gibi fiziksel bir karşılık mutlaka bulunmaktadır.

Programlama Yaparken Hangi Yazılım Dili Kullanılmalıdır?

Aslında bu soru çok fazla sorulmasına rağmen çok genel bir soru olduğu için tek bir karşılığı yoktur. O nedenle bu soruyu parçalara bölerek cevaplamak gerektiğini düşündüm.

Kullanıcı arabirimine sahip uygulama yazılımı yapmak isteniyorsa arayüzü sürükle bırak mantığı ile daha kolay ve hızlı yapılabildiği için C#, Visual Basic veya Java tercih edilebilir. Oyun yazmaya yeni başlayan yazılımcılar genellikle hazır motor kullandığı için C# dilini öğrenmeleri kesinlikle gereklidir.  Dillerin üçünü de denediğim için en kolay anlaşılabilir dilin Visual Basic olduğunu ve başlangıçta programlama mantığını öğrenmek için ideal olduğunu düşünüyorum. Java dili, yazılım işinde profesyonelleşmek, bu konuda bir işte çalışmak için mutlaka geliştirilmesi gereken çok önemli bir dildir.

Hesaplama, dosya okuma ve yazma gibi arayüz gerektirmeyen, hız gerektiren işlemler için yazılacaksa C, C++veya Python dili başta öğrenmek için çok daha idealdir. Aynı zamanda C dili elektronik devrelerin neredeyse tamamında kullanılmaktadır. Diğer dillerle yapılan çalışma süresi hız karşılaştırmasına göre C dili, makine diline en yakın dil olduğu için en hızlı çalışan programlama dilidir. Öğrenmek için biraz daha zor bir dil olsa da hız ve kaynak kontrolü açısından mutlaka öğrenilmesi gereken çok önemli bir dildir. 

Assembly dilini bu kıyaslamanın dışında tuttum, çünkü bir bilgisayar programı yazmak için Assembly dili çok fazla zaman ve enerji sarf ettirecektir. Elektronik devrelerde ise daha basit işlemler için Assembly dili tercih edilebilmektedir, fakat karmaşık işlemlerde bilgisayarda olduğu gibi zaman ve enerji kaybı üst seviyede olacaktır. C++ dilini kullanmadığımdan, yanlış bilgi vermemek adına onun hakkında bilgi yazmadım. Eğer C++ dili hakkında bilginiz varsa yorumlarda okumak ve öğrenmek isterim.

Web sitesi veya web uygulaması yapmak isteniyorsa mutlaka HTML, CSS ve JavaScript bilinmelidir. HTML ve CSS tek başına kullanılamadıkları için biri HTML olmak üzere en az ikisi mutlaka bilinmelidir.Bu üç dilin internette ve kitapçılarda oldukça fazla kaynağı ve ücretsiz örnek çalışmalar var, o yüzden günümüzde öğrenilmesi çok kolay olan dillerdir. Aynı zamanda sitenin hayata geçmesi için PHP gibi sunucu üstünde çalışan programlama dillerinin de bilinmesi gerekmektedir. Django, Flask gibi Python tabanlı web çatıları da web sitesi oluştururken kullanılmaktadır.

Python dili tüm dünyada çok popüler bir dil olmasına rağmen önceki paragraflarda pek üstünde durmadım. Python, hemen hemen tüm işletim sistemlerinde kullanılabilen, sistem programlama, uygulama programlama, web programlama gibi birçok alanda kullanılabilen gelişmiş bir dildir. Özellikle internette, her alanda oldukça fazla kaynak vardır. Çok az kodla çok fazla iş yaptırılabilir. Ancak büyük programlarda diğer dillere göre oldukça yavaş kalmaktadır.

Kullanıcı arabirimi tasarlamak isteyen kişiler için C#, Java gibi nesne-tabanlı dillere göre daha zordur. Çok küçük işlemler yapılacaksa hız bir sorun olmayacağından C veya C++ diline göre tercih edilebilirler fakat işlem yükü büyüdüğünde oldukça hız kaybı ortaya çıkaracaktır. Bu yüzden zorunda kalmadıkça Python dilini ikinci, üçüncü dil olarak öğrenmenin daha doğru olacağını düşünüyorum.

Microsoft yakın zamanda kuantum programlama dili olan Q# dilini de yayımladı. Evlerde kuantum bilgisayar kullanılmasa da, hatta dünyada bile sayılı kuantum bilgisayarı mevcut olsa da gelecekte yaygınlaşma ihtimaline karşı bu programlama dilinin de üstünde durulabilir.

Yazılım ile ilgili bir yazı dizisine bu makaleyle başlamış bulunmaktayız. Başlarken de belirttiğim gibi yazılım yalnızca elektronik bir mesele değil hayatın her alanında kullanılmaktadır. Dolayısıyla yazılım; reklam, pazarlama, iletişimi, medya, pr, satış, satın alma, ik, finans başta olmak üzere dijital markalaşma (dijital pazarlama & marka yönetimi – iletişimi) odağında da kullanılmaktadır.