İçeriğe geç

Antik Akıl, Modern Kod: Filozoflar Neden İlk Yazılımcılardı?

Yazılım geliştirme, özünde sadece bir programlama dili öğrenmek veya söz diziminden ibaret bir süreç değildir; karmaşık problemleri çözmek için kurulan bir düşünce mimarisidir. Bugünün yazılımcılarının siyah terminal ekranlarında çözmeye çalıştığı mantıksal düğümler, yüzyıllar önce loş mum ışığında filozofların zihinlerinde şekillenmiştir.

Kod yazarken aslında insan düşünce tarihinin en parlak dönemlerine entelektüel bir köprü kurarız. İşte antik düşünce ile modern yazılım mühendisliği arasındaki o görünmez ama sarsılmaz köprüler:

Mantıksal Temeller ve Algoritmik Düşünce: Aristoteles ve Boolean Mantığı

Modern yazılımın en temel yapı taşı olan if-else kontrol blokları, doğrudan Aristoteles’in formel mantık kurallarına dayanır. Aristoteles, bir önermenin ya doğru ya da yanlış olması gerektiğini savunan “Üçüncü Halin İmkansızlığı” ilkesini ortaya koyduğunda, aslında bugünkü dijital dünyanın (0 ve 1) felsefi temelini atmıştır.

Bir yazılımcının algoritma kurma süreci, Aristoteles’in tasımlarındaki (syllogism) tümdengelim yöntemiyle birebir örtüşür:

Aristoteles mantığı: “Tüm insanlar ölümlüdür. Sokrates bir insandır. O halde Sokrates ölümlüdür.”

Yazılım karşılığı:

if (user.isHuman) {
    user.isMortal = true; // Sokrates için true dönecektir.
}

Bugün George Boole’un matematikselleştirdiği ve derleyicilerimizin (compiler) işlemci seviyesinde işlediği tüm mantıksal kapılar, antik Atina’da yürütülen tartışmaların birer çıktısıdır.

Dekonstrüksiyon ve Modülerlik: Descartes ve “Böl-Yönet” Disiplini

René Descartes, Metot Üzerine Konuşma adlı eserinde, karmaşık bir problemi çözmek için onu “mümkün olduğu kadar küçük ve yönetilebilir parçalara ayırmayı” önerir. Bu yaklaşım, modern yazılım dünyasında sistem mimarisini ayakta tutan Separation of Concerns (Sorumlulukların Ayrılması) ve modüler programlama disiplininin ta kendisidir.

Bir monoliti mikro hizmetlere (microservices) bölmek, spagetti kodu fonksiyonlara veya sınıflara indirgemek, aslında 17. yüzyıldan kalma Kartezyen bir yöntemdir.

Kartezyen Felsefe (Descartes)Modern Yazılım KarşılığıAçıklama
Karmaşık ProblemMonolitik Bütünlük (Monolith)Çözülmesi zor, devasa sistem bütünü.
Parçalara AyırmaFonksiyonlar / MetotlarKodun yeniden kullanılabilir küçük birimlere bölünmesi.
Böl ve YönetMikro Hizmetler & Modüler YapıBağımsız çalışan, bakımı kolay mimari bileşenler.

Belirlenimcilik (Determinizm) ve Hata Ayıklama: Spinoza’nın Evreninden Debugging Sürecine

Baruch Spinoza’ya göre evren, rastlantılara yer olmayan, belirli neden-sonuç ilişkileriyle işleyen devasa ve kusursuz bir sistemdir. Yazılımdaki determinizm ilkesi bu yaklaşımla tamamen paraleldir: Aynı girdiyi alan bir fonksiyon, her zaman aynı çıktıyı üretmelidir (Pure Functions).

Bir yazılımcı saatlerce ekran başında debug yaparken, aslında Spinoza’nın evreni anlama çabasını taklit eder. Yazılımda “gizemli” ya da “büyülü” hatalar yoktur.

“Hata bir tesadüf değildir; sistemin mantıksal akışında, bizim henüz göremediğimiz bir yerlerde yanlış giden deterministic (belirlenimci) bir neden vardır.”

Yazılımcı, logları incelerken tıpkı bir filozof gibi evrenin (kod tabanının) neden-sonuç zincirindeki kırılma noktasını arar.

İdeal Formlar ve Sınıf Yapıları: Platon’un İdealar Kuramı ve OOP

Platon’un “İdealar Kuramı”, Nesne Yönelimli Programlama (Object-Oriented Programming) kavramıyla şaşırtıcı, hatta büyüleyici bir benzerlik gösterir. Platon’u dinleyen bir yazılım mimarı, onun binlerce yıl öncesinden bir Abstract Class veya Interface tanımladığını hemen fark edecektir.

Platon’a göre fiziksel dünyada gördüğümüz tüm nesneler, soyut ve kusursuz birer “ideanın” yeryüzündeki eksikli yansımalarıdır. Örneğin yeryüzündeki tüm kediler değişir, yaşlanır ve ölür; ama soyut bir “kedi ideası” sabittir ve değişmez.

İdealar Dünyası (Platon)Nesne Tabanlı Programlama (OOP)Teknik Karşılığı
İdeaSınıf (Class)Bellekte yer kaplamayan, soyut şablon/taslak.
Fenomen (Tezahür)Nesne (Object / Instance)new anahtar kelimesiyle RAM’de hayat bulan somut örnek.
# Platon'un "İdea" dediği soyut şablon
class Kedi:
    def __init__(self, isim):
        self.isim = isim

# Platon'un "Fenomen" dediği, dünyadaki somut yansımalar
kedi_1 = Kedi("Sokrates")
kedi_2 = Kedi("Platon")

Sonuç: Klavyenin Başındaki Filozof olmak

Bugün bir yazılımcı olarak temiz kod (clean code) yazmaya çalışırken, refactoring yaparken ya da bir sistem mimarisi tasarlarken aslında insanlığın en eski zanaatlarından birini icra ediyoruz: Sistematik Düşünce.

Kodlama, felsefenin somutlaşmış, çalışan ve yaşayan halidir. Bu yüzden iyi bir yazılımcı olmak sadece framework’leri veya dillerin güncel sürümlerini bilmekle değil; problemi küçük parçalara ayırabilen, neden-sonuç ilişkilerini deterministik bir süzgeçten geçiren ve soyut şablonlar kurabilen bir “antik akla” sahip olmakla ilgilidir.

Bir sonraki Bug ile karşılaştığınızda kendinizi bir mühendis gibi değil, gerçeğin peşindeki bir filozof gibi hissedin. Çünkü yazdığınız her satır kod, insan düşünce tarihinin dijital bir anıtıdır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site istenmeyenleri azaltmak için Akismet kullanır. Yorum verilerinizin nasıl işlendiğini öğrenin.