Her şey tamamda ver tipleri ne işe yarıyor. BTK Akademi'ye geçtim youtubedekiler anlatamıyor.
En temelinde verimlilik var, kod yazarken işin mühendisliğinde isen yani kaliteli kod yazmaya çalışıyorsan veri tiplerine çok dikkat etmelisin, hobi olarak uğraşıyorsan bilgisayarın derleyeceği kadar öğrensen yeter, kodun hata vermiyorsa çalıştır gitsin yani.
Veri tipleri bilgisayarın farklı veri tipleri ile farklı işlemler yapabilmesini sağlıyor. Yani sen bilgisayara bu verinin tipi şudur dersen bilgisayar da o veri tipi için kullanacağı şeyleri hazırlıyor diye düşünebilirsin.
Bu işlemler için kullanılacak şeylere kütüphane diyelim, bilgisayar senin yazdığın kodu anlamak ve çalıştırabilmek için farklı kütüphanelere gereksinim duyuyor. Basit bir program yazdın, bilgisayar bu programı çalıştırabilmek için sadece String yani metin tipi verileri çalıştıracak kütüphaneleri hazırlıyor gibi düşün. Mesela daha karmaşık bir kod yazdın, bilgisayarın bu kodu çalıştırabilmesi için metin, sayı, diziler, map tipindeki veriler, listeler, input/output, tarih vb. veri tiplerini ya da mekanizmaları kullanması gerekebilir. Eğer çok basit, birkaç satırlık bir kod için bütün bu kütüphaneleri ekleseydin bilgisayar gereksiz yere bu kütüphaneleri load etmeye çalışacaktı, programı yükleme, çalıştırma süresi uzayacaktı, RAM kullanımı gereksiz yere artacaktı, yani işin mühendisliğine son derece ters bir durum bu. Yoksa ne var ne yok bütün kütüphaneleri ekleyelim kodun tepesine, ne yazarsan yaz çalışsın
Güncel IDE'ler zaten uyarı verir, der ki senin kodunda hiç Liste yok, liste veri tipi kullanmamışsın ama kodunun tepesine "import bla. Bla. List" diye liste verisi kullanmışsın gibi kütüphane eklemeye çalışmışsın. Ben bunu çalıştırırım ama bu kod bana göre saçma diye uyarır seni.
Ayrıca veri tipleri işin daha da hassas mühendisliğinde çok daha önemlidir,
Ne demek bu; çok büyük bir program yazdığını düşün, mesela bir oyun. Bu oyunda sayısız obje olduğunu düşün, mesela bir sürü ama bir sürü sayı objesi oluşturman ve bunu hafızada tutman gerekiyor. "Amaaan veri tipi dediğin ya sayıdır ya metindir zaten, sayı dediğin de Integerdır" diyerek her sayıyı Integer diye tanımlarsan o program çok yavaş çalışır ya da hiç çalışmayabilir, bilgisayarının belleği yetmez. Çünkü bilgisayar bu verileri hafızasında tutarken her veri tipi farklı miktarda yer kaplar.
Diyelim ki sana bir obje lazım, sen bu objede sadece 0 ya da 1 değerini tutacaksın. Sana Boolean dediğimiz veri tipi yeter. Hafızada 1 bitlik yer kaplar.
Ha diyelim ki bir insanın yaş değerini bir objede tutacaksın. Bunun için kodlamada byte denilen veri tipi sana yeter, -128 ila 127 arasındaki sayıları tutar bu veri tipi, 8 bitlik hafıza kullanır.
Sırf kodlama da değil tabii mesela SQL tipinde bir veri tabanı yönetiyorsan ve bir kolon yaratacaksan insanın yaş değerini bu veri tipinde seçebilirsin, hatta sayının negatif olma ihtimali yok ise (insanın yaşı negatif olmaz mesela) veri tipini UNSIGNED seçersin, böylece artı mı eksi mi diye kullandığın bir biti de sayının içinde kullanabilirsin, 0 ila 255 arasında bir sayı seçebilirsin böylece (-128, 127 aralığı yerine).
Diyelim ki kullanacağın sayı 256'dan falan daha büyük bir değer alabilir, short int, integer, long int diye bu veri tipleri büyüyor. Sana çok basit gelen virgüllü sayılar için bilgisayar bambaşka işlemler yapma ihtiyacı duyabiliyor, basit virgüllü sayılar (mesela 9.9999) için float, eğer virgüllü sayının çok fazla basamağına ihtiyaç varsa (9.99999999999 gibi yani) double diye farklı veri tipleri kullanıyor. Sayıların böyle karmaşıklığı ya da büyüklüğü arttıkça bunu hafızada tutmak için gereken bit miktarı artıyor.
Küçük bir program yazarsan bu bir sorun yaratmaz. Deminki oyun gibi bir program kodluyorsan bu sorun yaratır, kabaca şu mantıkla gözünde canlandırabilirsin.
Sen 4 tane byte tipinde veri ile halledebileceğin 4 tane sayıyı, önemsemeyerek 4 tane integer tipinde veri ile tanımlarsan, hafızada
00000000
00000000
00000000
00000000
Diye tutabileceğin bu 4 sayıyı
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
Bu kadar bit kullanarak tutabilirsin. Bir programda da böyle verilerden binlerce milyonlarca olduğuna göre kodunu güzel yazmazsan o oyun bilgisayarında çalışmaz, çalışsa da arada kendi kendine kapanır, yavaş çalışır, kasar, geç açılır, makinen ısınır, işlemcini yakar vb. Kodlamayı öğrenenler küçük kod parçaları üzerinden öğrenmeye başladıkları için her sayıya integer deyip geçerler genelde, halbuki veri tipleri ve farklarını bilmek çok ama çok önemlidir. Ama gerçekten de hobi olarak ilgilenen biri isen o kadar kasmaya gerek yok tabii.
not: bahsettiğim veri tipleri popüler dillerde birebiri ya da muadili olan veri tipleridir, c sharptaki adı farklı olabilir ama anladın sen.