Kısaca özet
- Algoritma nedir sorusunun kısa cevabı: bir işi sonuca ulaştıran, sırası belli ve mutlaka biten adımlar dizisidir.
- Her algoritmanın üç parçası vardır: girdi, işlem adımları ve çıktı. Üçü de net tanımlanmadan kod yazmaya başlanmaz.
- Aynı sonucu veren iki yöntem farklı hızda çalışır. 1.000 kayıtta fark edilmeyen bir yöntem, 1 milyon kayıtta sunucuyu kilitleyebilir.
- Web tarafında etki en çok veritabanı sorgularında ve döngülerde görülür; döngü içine konmuş tek bir sorgu sayfa açılışını saniyelere taşır.
- Arama motoru sıralaması tek bir formül değil, birlikte çalışan çok sayıda sistemin ortak sonucudur. Sosyal medya akışları da aynı mantıkla kurulur.
- Yapay zekâ modelleri de algoritmalarla eğitilir; fark, kuralların elle yazılması yerine veriden çıkarılmasıdır.
Yemek tarifi, çamaşır makinesinin yıkama programı, bankamatikten para çekme sırası. Üçü de aynı mantığı paylaşır: belli bir sırayla uygulanan ve bir yerde biten adımlar. Yazılımda bu adımların toplu adı algoritma. Kelime kulağa akademik geliyor ama karşılığı çok somut; siteniz yavaşladığında, arama sonuçlarındaki yerinizi kaybettiğinizde ya da bir paylaşımınız kimseye görünmediğinde arkada hep bir algoritma çalışıyor. Aşağıda algoritma nedir sorusunu örneklerle açıyor, kavramın web tarafındaki karşılığını gösteriyoruz.
Algoritma nedir ve nerede karşımıza çıkar?
Algoritma nedir sorusunun en yalın cevabı şu: bir problemi çözmek için izlenen, sırası belli adımlar dizisi. Üç şartı vardır. Adımlar kesin olmalı, yani yoruma açık bırakılmamalı. Dizi sonlu olmalı, yani bir noktada bitmeli. Ve ortaya bir çıktı çıkmalı.
Bankamatikten para çekmeyi düşünün. Kart okutulur, PIN doğrulanır, tutar girilir, bakiye kontrol edilir, para verilir, fiş basılır. Adımlardan biri atlanırsa sistem çalışmaz, sıra değişirse sonuç bozulur. Bir yazılımcının kod yazarken yaptığı da tam olarak budur; sadece adımların muhatabı insan değil, işlemcidir.
Bilgi
Terimin resmî tanımını ve ilgili kavramları MDN terim sözlüğünün algoritma maddesinde bulabilirsiniz. MDN, web teknolojileri için birincil başvuru kaynağıdır.
Girdi, işlem ve çıktı üçlüsü
Bir algoritmayı kâğıda dökerken ilk iş bu üç kutuyu doldurmaktır. Girdi, elinizde ne olduğudur. İşlem, o veriye ne yapacağınızdır. Çıktı ise beklediğiniz sonuçtur.
Kargo ücreti hesaplayan bir kod düşünelim. Girdi: paketin ağırlığı, gönderi şehri ve sepet tutarı. İşlem: ağırlığa göre taban ücret bulunur, şehir uzaksa ek ücret eklenir, sepet belirlenen eşiği aşıyorsa ücret sıfırlanır. Çıktı: tek bir rakam. Bu üç kutu net değilse yazılan kod da net olmaz; hata ayıklarken çoğu zaman sorunun kodda değil, baştan eksik tanımlanmış girdide olduğu görülür.

Adım adım kurgu ve sözde kod
Deneyimli yazılımcılar çoğu problemi önce sözde kodla yazar. Sözde kod, hiçbir programlama dilinin kurallarına uymayan, düz Türkçeyle yazılmış adım listesidir. Amacı mantığı doğrulamaktır; noktalı virgül derdi olmadan düşünmeyi sağlar.
Yukarıdaki kargo örneğinin sözde kodu şöyle olur:
- Ağırlığı oku, taban ücreti ağırlık tablosundan bul.
- Şehir uzak bölgedeyse taban ücrete ek tutarı ekle.
- Sepet tutarı ücretsiz kargo eşiğinden büyükse ücreti sıfırla.
- Kalan tutarı döndür.
Dört satır. Kod yazılmadan önce yanlış bir şart ya da eksik bir durum burada yakalanır. Aynı düşünme biçimi çocuklara robotik kodlama derslerinde de bu yolla öğretiliyor: önce adımlar, sonra sözdizimi.
Aynı işi yapan iki yöntem neden farklı hızda çalışır?
Burada karmaşıklık kavramı devreye girer. Karmaşıklık, veri büyüdükçe adım sayısının nasıl arttığını anlatır. Formül ezberlemeye gerek yok; tek soruyla kavranır: kayıt sayısı on katına çıkarsa iş kaç katına çıkıyor?
Sıralı bir listede bir ismi ararken baştan sona tek tek bakarsanız, 1 milyon kayıtta en kötü durumda 1 milyon adım atarsınız. Liste sıralıysa her adımda ortadan ikiye bölerek ilerlemek yaklaşık 20 adımda sonuca götürür. İki yöntem de doğru cevabı verir. Küçük listede fark görünmez; büyük listede biri anlık, diğeri dakikalar sürer.
| Yaklaşım | Nasıl çalışır | Tipik kullanım |
|---|---|---|
| Doğrusal arama | Listeyi baştan sona tek tek tarar | Küçük ve sırasız listeler |
| İkili arama | Sıralı listeyi her adımda ikiye böler | Sıralı tutulan büyük kayıt kümeleri |
| Kabarcık sıralama | Komşu iki öğeyi karşılaştırıp yer değiştirir | Öğretim amaçlı, çok küçük diziler |
| Birleştirmeli sıralama | Diziyi parçalara ayırır, sıralı hâlde birleştirir | Büyük veri kümelerinin sıralanması |
| Karma tablo araması | Anahtarı doğrudan bir adrese çevirir | Anahtar-değer erişimi, önbellek |
Tablodaki yöntemlerin çoğu hazır kütüphanelerde zaten var. JavaScript tarafında dizileri sıralayan yerleşik işlevin davranışı ve sınırları MDN sort dokümanında anlatılıyor. Pratikte iş, sıfırdan sıralama yazmak değil, elinizdeki veriye uygun olanı seçmektir.
Kötü kurulmuş bir algoritma sunucuyu nasıl yorar?
Algoritma nedir sorusunun hosting tarafındaki karşılığı burada belirginleşir. Sunucu yavaşladığında ilk suçlanan genellikle donanım olur, oysa yükün büyük kısmını çoğu zaman kötü kurulmuş bir döngü ya da gereksiz tekrarlanan bir sorgu üretir.
En sık görülen kalıp şu: bir liste çekilir, sonra listedeki her satır için ayrı bir veritabanı sorgusu atılır. 50 ürünlük sayfada 51 sorgu, 500 ürünlük sayfada 501 sorgu demektir. Aynı veri tek sorguda birleştirilerek çekilebilecekken sunucu yüzlerce kez aynı işi yapar. İndeksi olmayan bir tabloda arama yapmak da benzer sonucu doğurur; veritabanı her seferinde tüm satırları tarar. MySQL tarafındaki indeks ve sorgu davranışını ayrı bir yazıda ele aldık.
Örnek senaryo
Bir e-ticaret sitesi kategori sayfalarının yavaşlığından şikâyetçiydi. İnceleme sırasında her ürün kartı için stok bilgisinin ayrı sorguyla çekildiği görüldü. 60 ürünlük listede sayfa başına 60’tan fazla sorgu oluşuyordu. Stok verisi tek sorguda toplu çekilip bellekte eşleştirilince sorgu sayısı ikiye düştü ve sayfa açılışı belirgin biçimde kısaldı. Sunucu paketi hiç değişmedi; yalnızca adımların sırası değişti.
Dikkat
Döngü içinde veritabanı sorgusu, dosya okuma ya da dış servis çağrısı yapmaktan kaçının. Bu işlemler tek başına milisaniyelerle ölçülür, döngüye girdiğinde çarpılır. Sayfa yavaşlığında önce sorgu sayısına bakın; paket yükseltmek, kaynağı boşa harcayan bir kodu yalnızca daha pahalı biçimde çalıştırır.
Kod tarafı temizlendikten sonra sıra sunucu tarafına gelir. Yanıt süresi hem kullanıcı deneyimini hem arama görünürlüğünü etkiler; bu ilişkiyi hosting seçiminin SEO durumuna etkisini anlattığımız yazıda ayrıntılandırdık. Kod tarafında yapılacak bir şey kalmadıysa, yükü karşılayan bir paket seçmek işin geri kalan yarısıdır.
Arama motoru ve sosyal medya algoritmaları tek bir formül mü?
Hayır. Yaygın kanının aksine ortada çözülmeyi bekleyen tek bir denklem yok. Algoritma nedir sorusunu arama motoru bağlamında sorduğunuzda cevap çoğullaşır: birlikte çalışan, farklı işlere bakan çok sayıda sistem vardır. İçeriğin konuyla ilgisine bakan sistem başka, sayfa deneyimini ölçen sistem başka, tazeliği değerlendiren sistem başkadır.
Google bu yapıyı resmî olarak “sıralama sistemleri” başlığı altında yayımlıyor ve hangi sistemin neye baktığını Search Central sıralama sistemleri rehberinde listeliyor. Pratik karşılığı şu: tek bir sinyali zorlayarak sonuç almak yerine, sistemlerin ortak olarak ödüllendirdiği şeye yatırım yapmak gerekir. Yani konusunu gerçekten karşılayan içerik ve hızlı açılan sayfa.
Sosyal medya akışları da benzer kurulur. Beğeni, izlenme süresi, paylaşım ve hesapla geçmiş etkileşim gibi sinyaller birlikte değerlendirilir, ağırlıkları da sürekli değişir. “Algoritma bizi göstermiyor” cümlesinin altında genelde tek bir kural değil, bu ağırlıkların kaymış olması yatar.
Yapay zekâ modelleri algoritma mıdır?
Algoritma nedir sorusu yapay zekâ tarafında biraz incelir. Klasik bir algoritmada kuralları insan yazar: şu şart sağlanıyorsa şunu yap. Makine öğrenmesinde ise kuralları insan yazmaz; bir eğitim algoritması, örnek veriye bakarak parametreleri kendisi ayarlar.
Yani ortada yine algoritma vardır, ama iki katman hâlinde. Birinci katman modeli eğiten yöntemdir. İkinci katman, eğitim sonunda ortaya çıkan ve tahmin üreten modeldir. Bu ayrım pratikte şuna denk gelir: aynı eğitim yöntemiyle farklı veriye bakan iki model tamamen farklı davranır. Hazır bir modeli kendi uygulamanıza bağlarken çoğunlukla bir servis arayüzü kullanırsınız; bu bağlantının nasıl kurulduğunu API yazımızda anlattık.
Kendi projeniz için kontrol listesi
- Yazmaya başlamadan önce girdiyi, işlemi ve çıktıyı tek cümleyle tanımlayın.
- Mantığı önce sözde kodla yazın, sonra koda çevirin.
- Döngü içinde veritabanı sorgusu, dosya okuma ya da dış servis çağrısı olup olmadığını kontrol edin.
- Sayfa başına düşen sorgu sayısını ölçün; iki haneye çıkmışsa sebebini araştırın.
- Sık aranan sütunlarda indeks bulunduğundan emin olun.
- Kodu gerçek veri hacmiyle test edin; 20 kayıtlık test verisi yanıltır.
- Hazır kütüphanede karşılığı olan bir yöntemi sıfırdan yazmayın.
- Değişiklik öncesi ve sonrası yanıt süresini ölçüp kaydedin.
Sonuç
Algoritma nedir sorusunun cevabı teoride adımlar dizisi, pratikte ise sunucunuzun ne kadar çalıştığıdır. Girdiyi ve çıktıyı net tanımlayın, mantığı önce kâğıtta doğrulayın, veri büyüdüğünde ne olacağını hesaba katın. Bu üç alışkanlık, yavaşlık sorunlarının çoğunu daha ortaya çıkmadan çözer.
Sıkça sorulan sorular
Algoritma nedir, programlama bilmeden anlaşılır mı?
Evet. Kavram bir dile ya da teknolojiye bağlı değil; sırası belli, sonu olan adımlar bütününü anlatır. Yemek tarifi de bu tanıma uyar. Programlama bilgisi, adımları makinenin anlayacağı biçime çevirmek için gerekir, mantığı kurmak için değil.
Algoritma ile kod aynı şey mi?
Değil. Algoritma çözümün planıdır, kod o planın belirli bir dildeki yazılı hâlidir. Aynı plan PHP, Python ya da JavaScript ile yazılabilir; adımlar aynı kalır, yalnızca sözdizimi değişir. Bu yüzden mantık hatası kodu değiştirerek değil, planı düzelterek çözülür.
Karmaşıklık hesabını bilmeden iyi kod yazılabilir mi?
Günlük işlerin çoğunda formüle gerek yok. Tek soruyu sormak yeterli: veri on katına çıkarsa bu kod ne kadar yavaşlar? İç içe geçmiş iki döngü ya da döngü içindeki sorgu bu soruya kötü cevap veriyorsa yöntemi değiştirmek gerekir.
Sitem yavaş, sorun kodda mı hostingde mi?
Ayrımı ölçüyle yapın. Sayfa başına düşen sorgu sayısı ve veritabanında geçen süre yüksekse sorun koddadır. Sorgular makul olduğu hâlde sunucu yanıtı yine de gecikiyorsa kaynak yetersizliği ya da yapılandırma öndedir. İkisini karıştırmak gereksiz paket yükseltmesine yol açar.
Arama motorunun sıralama algoritmasını çözmek mümkün mü?
Tek bir formül olmadığı için klasik anlamda çözülemez. Sıralama, farklı işlere bakan çok sayıda sistemin ortak sonucudur ve bu sistemler sürekli güncellenir. Yapılabilecek şey, sistemlerin ortak olarak ödüllendirdiği alanlara yatırım yapmaktır: konusunu karşılayan içerik, temiz teknik yapı ve hızlı açılan sayfa.
Narhost’ta
Doğru yazılmış kodun altında istikrarlı bir sunucu olması gerekir. Web hosting paketleri NVMe SSD disk, Türkçe cPanel, ücretsiz SSL ve ücretsiz taşıma ile sunuluyor.