Reklam

Reklamlar

13 Haziran 2010 Pazar

Programlamanın Güzelliği

Program yazmanın beni böylesine büyülemesini tam olarak nasıl açıklıyacağımı bilemiyorum ama bunu deneyeceğim . Bu onunla uğraşan biri işin dünyanın en ilginç işidir .  Daha çok satrança benzeyen ancak kendi kurallarınızı koyabildiğiniz ve sonuçta ortaya çıkana anlam yükleyebildiğiniz herhangi bir şey olduğu bir oyundur .
Yine de dışarıdan bakanlara dünyanınm en sıkıcı şeyi gibi görünür .
Programlamanın içsel heyecanının bir bölümünü açıklamak kolaydır : Bu basit haliyle , bir bilgisayara bir şeyi yapmasını söylediğinizde bunu yapması gerçeğiyle ilgilidir . Hiç yanılmadan . Sonsuza dek . Sızlanmadan .
Ve bu da kendi içinde ilginçtir .
Ama başlangıçta büyüleyici olan körü körüne itaatin , hoşa gidecek bir yoldaş oluşturmadığı açıktır . Aslında işin bu yönü çabucak sıkıcı bir hal alır . Programlamayı öylesine çekici kılan şey , bilgisayara istediğinizi yapmanızı sağlarken onun bunu nasıl yapacağını düşünmek zorunda olmanızdır .
Benim kişisel inancım bilgisayar biliminin fizik ile çok fazla ortak yönü olduğu yönündedir . İkiside dünyanın daha temel düzeyde nasıl çalıştığıyla ilgilidir . Elbetteki fark , fizikte dünyanın nasıl düzenlendiğini anlamanız beklenirken , bilgisayar biliminde dünyayı sizin yaratmanızdır . Bilgisayarın sınırları dahilinde yaratıcı sizsinizdir . Olan biten her şeyin üst düzey denetimi sizin elinizdedir . Yeterince iyiyseniz Tanrı olabilirsiniz . Ufak ölçekte yani .
Ve sanırım bunu söylerek kaba tahminle dünya nüfusunun yarısını kızdırdım .
Ama doğrusu bu . Kendi dünyanızı yaratabilirsiniz ve yapabileceklerinizi sınırlayabilecek tek şey makinenizin ve gitgide artan oranda sizin yeteneklerinizdir .

Bir ağaç ev düşünün . İşlevsel , tabanından açılan bir kapısı olan , sağlam bir ağaç - ev yapabilirsiniz . Ama sadece sağlam yapılmış bir ağaç - evle , daha güzel olan , ağacın yaratıcılığından kaynaklanan avantajı kullanan arasında ki farkı herkes bilir . Bu , sanatı mühendislikle birleştirme meselesidir . Programcılığın böylesine büyüleyici ve ödüllendirici olmasının nedenlerinden biri işte budur . İşlevsellik çoğu kez , ilginç olmanın , güzel olmanın ya da hayret verici olmanın ardından gelen ikinci özelliktir .

Yaratıcılıkta bir terimdir bu .
Başlangıçta beni programlamaya çeken şey bilgisayarın nasıl çalıştığıydı . Keyiflerin en büyüklerinden birisi bilgisayarın matematik gibi olduğunu öğrenmekti : Kendi dünyanızı onun kendi kurallarıyla oluşturmanız gerekiyordu . Fizikte varolan kurallarla sınırlısınız . Ama matematikte tıpkı programcılıkta olduğu gibi , kendi içinde tutarlılığa sahip olan her şey geçerlidir . Matematiğin başka bir harici mantıkla sınırlanması gerekmez ; ama kendi içinde mantıklı olmalı ve kendi mantığına uymalıdır . Her matematikçinin bildiği gibi , üç artı üçün sonuçta iki ettiği bir dizi matematiksel ifade yazılabilir . Gerçekte istediğiniz herşeyi yapabilirsiniz ; ama işi karmaşıklaştırdıkça yarattığımız dünya ile tutarsız kalacak bir şey yaratmamak konusunda dikkatli olmalısınız . O dünyanın güzel olabilmesi için kusur içermemesi gerekir . İşte programlama bu şekilde çalışır .

İnsanların bilgisayarlara bu kadar düşkün olmasının nedenlerinden birisi , yarattığımız kendi yeni dünyamızı deneyimleme olanağına sahip olmanız ve yeni olanağımızı görmenizdir . Matematikte , olabileceklere dair düşünce jimnastiği yapabilirsiniz . Örneğin çoğu insan geometriyi düşünüğünde aklına öklid geometrisi gelir . Ama bilgisayar insanlara başka geometrileride görme olasılığı getirdi ; bunların çoğu Öklid'le bile ilgili değil . Bilgisayarlarla bu önceden yapılmış dünyaları alır ve gerçekten neye benzediklerini görebilirsiniz . Mandelbrot dizisini , benoit mandelbrot'un denklemlerine dayanan fraktal  görüntülerini anımsıyor musunuz ? Bunlar bilgisayarlardan önce asla görünmemiş olan saf bir matematiksel dünyanın görsel sunumlarıdır . Mandelbrot varolmaya o dünyaya dair ihtiyari kuralları öylesine oluşturmuştur ve bunların gerçekle ilgiside yoktur .  Ama bunlar büyüleyici dokular meydana getirmiştir . Bilgisayarla ve programlamayla yeni dünyalar inşa edebilirsiniz ve bazen ortaya çıkan desenler gerçekten güzeldir .

Çoğu zaman yaptığınız bu değildir . Belli başlı bir görevi yerine getirecek bir program yazarsınız sadece . Bu durumda yeni bir dünya yaratmıyor , bir sorunu bilgisayar içindeki dünyada çözüyorsunuzdur . Problem üstünde düşünülerek çözülür . Ve sadece belli bir tür insan öylece oturup bir ekrana bakabilir ve yalnızca düşünerek bir şeylerden sonuç çıkartılabilir .  Sadece benim gibi toplumsal yaşamın geri kalanına fazla ilgi duymayan , kendisini iş edindiği şeye aşırı veren , bilgisayar delisi insanlar .

İşletim sistemi makinenin içinde olup bitecek diğer herşeyin temelidir . Ve bir işletim sistemi oluşturmak , en üst düzey uğraşlardan biridir . Bir işletim sistemi yaratırken bilgisayarı yaşama geçirecek tüm programların içinde olduğu yeni bir dünya yaratıyorsunuzdur ; temel olarak neyin kabul edilebilir veya edilemez , neyin yapılabilir ve yapılamaz olduğunu belirleyecek kuralları oluşturuyorsunuzdur . Her program bunu yapar ; ama işletim sistemi en temel olanıdır . Yarattığınız ülkenin anayasısını oluşturmak gibidir bu ve bilgisayarda çalışacak diğer tüm programlar sadece sıradan yasalardır .

Kimi zaman yasalar anlam ifade etmez . Ama anlamı kendisi , uğruna mücadele verdiğiniz şeydir . Çözüme bakabilmek ve doğru yolla doğru yanıta ulaştığınızı görmek istersiniz .
Okulunuzda her zaman doğru yanıtı bilen kişiyi anımsıyor musunuz ? Bu kişi o şeyi herkesten önce yapardı , çünkü bunun için çabalaması gerekmezdi . O kişi problemin nasıl çözülmesi gerektiğini öğrenmek zorunda değildi ; sadece problemi doğru yoldan düşünürdü . Ve yanıtı duyduğunuzda bu size kuşkusuz gelirdi .

Aynı şey bilgisayarlar içinde geçerlidir . Bir şeyi kaba hüç yoluyla , aptalca , problemi artık problem olmayana dek parçalayarak çözebilirsiniz ; ya da doğru yaklaşımı bulur ve problemin ansızın yok olduğunu fark edersiniz . Meseleye bir başka yönden bakar ve şöyle bir sonucun belirdiğini görürsünüz : Bu sadece sen ona yanlış yönden baktığın için problemdi .
Olasılık buna en iyi örnek bilgisayarcılıktan değil , matematikten verebilir . Öyküye göre , büyük Alman matematikçi Carl Friedrich Gauss öğrenciyken , bir gün canı sıkkın olan öğrencilerinden 1 ile 100 arasındaki tüm sayıları toplamalarını istedi . Çocukların tüm günü bununla uğraşarak geçireceğini ummaktaydı . Ancak gelişme çağındaki matematikçi beş dakika sonra yanıtla çıkıp geldi : 5.050 . Çözüm aslında tüm sayıların toplanmasından geçmiyordu , çünkü bu yıpratıcı ve aptalca bir iş olurdu . Gauss 1 ile 100 'ü topladığında 101 'i bulduğunu görmüştü . Sonra 2 ile 99 'u toplayınca da sonuç 101 idi . 3 ile 98 'in toplamıda öyle . 50 ile 51 'in de . Bir kaç saniye içinde anladi ki 50 çift 101 vardı . Öyleyse sonuç 5.050 idi .

Bu öykü sonradan yakıştırılmış olabilir ama verdiği mesaj açıktır . İyi matematikçi uzun ve sıkıcı bir problem çözmez , çünkü sorunun gerisinde ki gerçek dokunun ne olduğunu görür ve bu dokuyu , yanıtı çok daha iyi bir yoldan bulmak için kullanılır . Aynı şey bilgisayar bilimi içinde kesinlikle geçerlidir .
Elbetteki toplamı hesaplayacak bir program yazabilirsiniz . Günümüz bilgisayarlardında bu parmak şıplatmak kadar kolaydır . Ama iyi bir programcı yanıtın ne olduğunu sadece zekice davranarak bilebilir . Problemin üstüne yeni , sonunda doğru olduğu kanıtlanacak bir yoldan gidecek güzel bir program yazacaktır .
Yine de , bir şeyi daha iyi, daha güzel yoldan nasıl çözeceğinizi bilmediğiniz için üç gün boyunca başınızı duvarlara vurmanın nasıl bir çekici yanı olduğunu açıklamak güçtür . Ama o yolu bir kez bulursanız bu dünyanın en harika duygusudur .

                                                                Linus Torvalds (Yalnızca Eğlenmek için)
                                                                Linux'un yaratıcısı
Dipnot
Bu yazı 13 Haziran 2010 Pazar günü yazılmıştır. Bulunduğu kategori : ,,,,,,. Yazdığım yazıları RSS 2.0 sistemini kullanarak takip edebilir, dilerseniz yorum yapabilirsiniz. Unutmadan, Bu yazı sizler tarafından tam tamına defa okunmuştur.

Hiç yorum yok:

Yorum Gönder

Sitemizi ziyaret ettiğiniz için teşekkür ederiz


Php Dersleri

ebook library