Mantığın Köleleri

Programcılık Sanat mı, Zanaat mı? başlıklı yazıma gelen yorumlar, programcılığın sanat olduğu yönünde. Bunun aksini düşünenler de var. Programcılığın bir sanat olarak algılanması subjektif ve bir yanılgıdır. Programcılığın bir sanat olmadığının altını bu yazımla tekrar çizmek istedim.

Sanat ve sanat eserleri görecelidir. İnsanlik var olduğundan beri sanat vardır, ama hala bu konudaki tartışmalar son bulmamıştır. „Renkler ve zenkler tartışılmaz“ sözünü sıkça işitmişizdir. Bu her bireyin sanat algılayış tarzının değişikliğine işaret etmektedir. Benim beğendiğim bir resmi, başka bir insan beğenmeyebilir. Bu yüzden sanatı tanımlamak ve bu işin içinden çıkmak çok karmaşık bir şeydir. Programcılığın da bir sanat olarak algılanıp, savunulması bu açıdan baktığımızda anlaşılabilir bir durumdur.

Bir sanat ya da sanat eseri ruha, göze ve gönüle hitap eder. Sanatın doğasında soyutluk vardır ve insanın kendisine özgün yorumuna ihtiyaç duyar. Bu yüzden herkesin sanatı algılayış tarzı değişiktir. Herkes sanatı kendi tarzında yorumlar. Eğer yazılan bir program parçası bir sanat eseri olmuş olsaydı, o zaman bu programa bakan herkes başka bir şey algılayacaktı ya da ondan kendi yorumladığı bir davranış biçimi bekleyecekti. Böyle bir şeyin yazılımda ne anlama geldiğini düşünebiliyor musunuz? Programcılık deterministik sonuçlar üretmek, mantık çerçevesinde kalıp, çözüm sunmak zorundadır. Ruha, gönüle değil, mantığa hitap eder. Sadece bu özelliğinden dolayı bile bir sanat olma şansı yoktur. Kim bir programa bakarsa baksın, aynı davranış biçimini görür, görmek zorundadır. Bir program her zaman aynı sonucu üretmek zorundadır, kod nasıl yazılmış olursa olsun. İnsanların yorumuna ihtiyacı yoktur, çünkü herkes aynı şeyi görür, daha dogrusu görmek zorundadır.

Programlar ihtiyaçtan doğarlar. Aynı şeyi sanat eserleri için söylemek mümkün değildir. Sanatkar bir şeylerden esinlenerek sanatını icra eder, zorda kalmadan, birilerine sanatını nasıl icra etmesi gerektiğini danışmadan. Programlar müşterileri tarafından kendi gereksinimlerini tatmin etmek için sipariş edilir. Müşterinin gereksinimleri programı yoğururken ön plandadır. Programı oluşturulurken müşteri ile iletişim esastır. Onun istediği olur.

Bunu yanısıra programcının kod yazarken soyutluğu ifade etmek için çok fazla seçenegi yoktur. Java dilinde interface ya da abstract sınıfları kullanarak soyut bir şeyler ifade edebilebilir. Bu ressamın paletinde sadece bir, iki renk olduğu anlamına gelir. Sadece iki rengi kullanarak sanat eseri oluşturmak mümkün müdür? Belki! Bir ressamın paletinde onlarca renk vardır, bunları karıştırarak sonsuz sayıda yeni renk elde edebilir. Bu renklerin hepsini kullanma potansiyeline sahiptir ve bu sanatına yansır. Günümüzün programlama dillerinde böyle bir zenginlik söz konusu değildir. Kaldı ki en tabana indiğimizde bir programcı sıfır ve birlerden oluşan verilerden başka bir şeyle ugraşmaz. Sadece iki renkli olan bir dünyada yaşar ve bir takım verileri A’dan B’ye taşıyacak programlar yazar. İşin hepi, topu budur.

Günümüzde nesneye yönetlik programlama paradigması popülerdir. Ne olduğuna baktığımızda programcı olarak işimizi yapabilmemiz için çok kısıtlı sayıda araç ihtiva ettiğini görmekteyiz. Gerçek dünyayı modellemek için sınıfları, bu modellere hareket kabiliyeti verebilmek icin metotları kullanırız. Koca dünyayı modellemek için sadece bu iki aracı kullanabiliyoruz. Kod yazarken yapmak istediklerimizi ifade etmek için if ya da while gibi basit komutları kullanıyoruz. Kullanabileceğimiz başka ne var ki? Bu araçlardan faydalanıp nasıl bir sanat eseri ortaya koyabiliriz? Bu bir sanat eseri olsa bile fonksiyonel işlevi haricinde nesi kimi ilgilendirir?

Görüldügü gibi programcı sahip olduğu araçlar itibari ile çok kısıtlı bir dünyada yaşamaktadır. Oysaki bir sanatçının dünyası rengarenk ve pırıl pırıldır. Sayısız derecede kombinasyon imkanları vardır. Bunlardan faydalanarak sanatını icra eder ve sanat eserleri oluşturur. Biz programcılar sıkışıp kaldığımız mantıksal dünyada bu araç gerece ve lükse sahip degiliz.

Kanımca programcılıkta kreatif olma, sanat icrası ile karıştırılmaktadır. Programcılar kreatiftir. Devamlı karşılaştıkları sorunları aşmak için çözümler üretirler. Bunun için bir zanaatkar usta gibi bir takım alet, edevata ihtiyaç duyarlar. Usta programcılar örneğin tüm tasarım prensiplerine hakımdirler. Nerede hangi tasarım şablonunu kullanmaları gerektiğini bilirler. Az ve öz kod yazmayı yeğlerler. Yazdıkları kod roman gibi okunur, kod okundukça bir hikaye gibi kendisini anlatır. Burada bir tutam estetiklik yok değildir. Ama yinede bu aktivitelerin hiçbirisi bir sanat eseri ortaya koymaz.

Programcılık mantık işidir. Biz programcılar mantığın kölesiyiz. Programcılıkta bütün gidişati mantık yönetir. Mantığın bittiği yerde programcılık biter. Bir sanatçı hiçbir şeyin kölesi değildir. Aradaki fark budur. Mantıkla sanatı kavramaya çalışmak beyhude bir iştir.


EOF (End Of Fun)
Özcan Acar

Share Button
0.00 avg. rating (0% score) - 0 votes

3 Comments

  • Pingback: Programcılık Sanat mı, Zanaat mı? - Kurumsal Java Yazılımı - Özcan Acar

  • Pingback: Özcan Acar

  • Hanifi ÇETİNKAYA

    17 Mayıs 2012

    >>Sanatın doğasında soyutluk vardır ve insanın kendisine özgün yorumuna ihtiyaç duyar. Bu yüzden herkesin sanatı algılayış tarzı değişiktir. Herkes sanatı kendi tarzında yorumlar. Eğer yazılan bir program parçası bir sanat eseri olmuş olsaydı, o zaman bu programa bakan herkes başka bir şey algılayacaktı ya da ondan kendi yorumladığı bir davranış biçimi bekleyecekti.

    Sanatın doğasında soyutluk vardır, doğru. Çünkü içimizden geldiği gibi oluşturuyoruz eserimizi.. Fakat sanat hiç kimsenin yorumuna ihtiyaç duymaz. Kendisini beğendirmeye çalışmaz. Ama herkes sanatı kendi tarzında yorumlar, buda doğru. Ben program çıktısından ziyade yazdığımız kodlar üzerinden konuşuyorum. Yazdığım koda bakan herkes farklı bir yorum yapacaktır. Fakat benim kodlarım onların yorumlarına göre hareket etmez. Yorum yapan kişilerinde benim sanatımdan kendi yorumladığı şekilde davranış biçimi beklemeleri çok saçma bir beklenti olurdu. Bunu aklınıza gelen herhangi bir sanat için düşünün.. Hangi sanat sizin onu yorumladığınız şekilde size tepki veriyor veya yorumunuza göre davranış sergiliyor?

    >>Programlar ihtiyaçtan doğarlar. Aynı şeyi sanat eserleri için söylemek mümkün değildir.

    Yapılan işin ihtiyaçtan dolayı veya talepten dolayı olması sanat eseri olmasını bağlamaz. Ünlü bir besteciden parasını verip beste yapmasını istediğiniz zaman o sanat eseri olmayacak mı? Veya size ne tür bir beste istiyorsunuz diye danıştığı zaman bu sanat eseri olmasından birşey mi kaybettirecek? Hareketli birşey istiyorum veya romantik birşey diyebilirim.

    >>Bunu yanısıra programcının kod yazarken soyutluğu ifade etmek için çok fazla seçenegi yoktur.

    Sanat icra edilirken, kullanılan materyallerin çeşitliliği veya çokluğuda sanat için bağlayıcı bir nitelik değildir. 2 renkle sanat eseri resimler yapılabileceği gibi, sadece iğne ve iplik ilede çok güzel nakışlar işlenebilir. 0 ve 1’e kadar temele inmeye gerek yok, sonuçta neyi kullanarak sanat yapıyorsanız, malzemeniz odur. Ona bakarsak herşeyin temelinde de toprak var.. Boyanın, tuvalin, ipliğin, iğnenin…

    >>Kod yazarken yapmak istediklerimizi ifade etmek için if ya da while gibi basit komutları kullanıyoruz. Kullanabileceğimiz başka ne var ki? Bu araçlardan faydalanıp nasıl bir sanat eseri ortaya koyabiliriz? Bu bir sanat eseri olsa bile fonksiyonel işlevi haricinde nesi kimi ilgilendirir?

    Benimde asıl anlatmak istediğim yer burası. Alt alta bir sürü if-else yapısı kullanan birinin koduyla, aynı işi switc-case ile yapan birinin kodunun arasında fark vardır. Buna açıklama satırları ekleyerek kodunu süsleyen biri, girintilere dikkat eden, değişken isimlerini doğru düzgün veren, bol keseden değişken kullanmayan, 10’a kadar saydıracağı bir döngü için int tanımlamayan bir programcı işini iyi yapıyor, ortaya bir sanat çıkarıyor demektir. Kullanabileceğimiz başka ne var diye bakmamalıyız, yukarıda da dediğim gibi kullanılan materyalin çeşitliliği veya çokluğu sanat için bağlayıcı bir nitelik değildir. Yazdığım kodların nesinin kimi ilgilendirdiğide önemli değil. Birileri beğensin, etkilensin, yorum yapsın diye yazmıyoruz..

    >>Kanımca programcılıkta kreatif olma, sanat icrası ile karıştırılmaktadır. Programcılar kreatiftir.

    Sanatçılar kreatif değil midir?

    >>Programcılık mantık işidir. Biz programcılar mantığın kölesiyiz.

    Yukarıda verdiğim aynı işi yapan if-else ve switc-case örneğinde mantıklı olan hangisi? Hangisini seçerseniz seçin, seçmediğiniz ile de o işi yapabiliyoruz. Demek ki o kadar da köle değiliz =)

Bir cevap yazın