Re: [Linux-programlama] Yapisal Programlama / Nesne Temelli Programlama

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Bora Güngören (bora@boragungoren.com)
Date: Fri 27 May 2005 - 15:49:41 EEST


Serdar Hocam,

Şu yazıyı biraz detaylandırsanız da en yakın tarihteki Java yada C++
kitabı baskıma ek önsöz olarak koysak :-)

Bora.

Serdar KÖYLÜ wrote:

>Selamlar..
>
>Aslında, tüm hepsi için "profesyonellik" ve "amatörlük" mevzusu demek en
>doğru olanı sanıyorum.. Yanlış anlaşılan husus, amatör ile profesyonelin
>aslında "zanaat" ve "sanat" gibi bir kavram olduğu, bilgi/beceri
>seviyesi ile alakalı olmadığıdır. Profesyonel, para kazanmak için iş
>yapar. en kısa yoldan, en sorunsuz çözümü çıkarabilmelidir. Amatör ise,
>zevkini tatmin etmek için uğraşır. Garip bir şekilde, amatörlerin
>acemiler gibi algılandığı çok olur. Ama örneğin Radyo amatörleri, Araba
>amatörleri vs. acayip şeyler yapmıştır. Mesela, karada en hızlı giden
>araçların amatörler tarafından yapılması gibi..
>
>Peki neden uzatıyoruz bu kadar? Profesyonel işleyişte işi yapacak olan
>insanlardır. Yani onların kafalarındaki şeydir iş. Ve Nesne olarak
>yapılacak tarifler (=Nesneye yönelim metodolojileri) bu kafalarda daha
>sorunsuz olacaktır. Ama bu tür çalışmayı, belgeleme, test, review, ...
>checklists vs. olarak bir bütün halinde düşünürsek bu olay ortaya çıkar.
>Kodlamayı nesneye yönelik olarak yapmanızdan bağımsız olarak, nesneye
>yönelik düşünerek sistem gereklerini daha isabetli çıkarabilir bunları
>ilerki safhalarda kolayca partisyonlara (=layer) ayırabilirsiniz.
>Böylece "mythical man/month" da bahsedilen sorunların önüne
>geçebilirsiniz. Yani, mesela her nesneyi başka adama verip, "Bir yazılım
>projesine yeni eleman almak, sadece projenin daha da uzamasına neden
>olur" olarak ifade edilebilecek durumu bir hayli tolere edebilmenizi
>sağlar.
>
>OOP yaklaşımında, genel toplamda, oluşan iş yükü vs. yapısal
>programlamadan fazladır. Fakat işi yapanların sayısı birden fazlaysa
>atıyorum %20 fazla iş yapılıyor olsa bile bunu 50/50 bölüp daha kısa
>sürede sonuca ulaşırsınız (Bu cümleden OOP işi daha uzun sürer gibi bir
>anlam çıkarmayın, "yapısal programlamada yeterince analiz gücünüz yoksa
>çok daha fazla uğraşırsınız" = Size daha sağlam adamlar gerekir ki biraz
>zor bulunurlar = Daha çok para vs..).
>
>Bunun püf noktası, "nesne" dediğimiz atomik bileşenlerin diğer
>nesnelerden ayrık olarak çok iyi tarif edilebilmesi, matematik soyutlama
>yeteneği gerekmeden bunların daha net modellenebilmesidir. Nesnelerin
>özelliklerini, hayat döngülerini vs. tarif edebilirsiniz, böylece
>oluşturacağınız state machine için iyi bir model oluşturabilirsiniz.
>Dahası bu süreci daha kolay otomatize/prosedürel hale getirebilirsiniz.
>
>Ama söylediğim gibi nesneye yönelim bir felsefedir. Inheritance vs.
>hepsini kapsar. Ama temeli veriyi kapsüllemedir. C vs. kullanmanız
>nesneye yönelik tekniklerden mahrum kalmanızı gerektirmez. Fakat, aklın
>yolu, nesneye yönelimi dil desteğiyle sunan uygulamaları kullanmaktan
>geçer elbette. Ama amatör yaklaşıp, C ile taklalar atmak (arada düşüp
>kafa göz yarsakta) ayrı bir zevk meselesidir. Fakat, siz olayı
>profesyonel düşünüp belirlenen zamanda belirlenen noktada olmayı
>garantilemek istiyorsanız, OOP yaklaşımlarını -ki bu sadece kodu ifade
>etmez, dizayn, test yöntemleri vs. vs.- benimsemeniz, sizi bu felsefenin
>içinde tutacak OOP dillerini tercih etmeniz yerinde olacaktır.
>
>Genede, sistematiği nesnel programlamaya uymayan işlerde olacaktır.
>Fakat çoğunlukla bunlar uygulamanın bütünü değil, bir bileşeni ile
>sınırlanabilir.
>
>Özellikle profesyonel çalışmada OOP kullanmak gereklidir. Bu, denenmiş,
>bilinen bir şeydir. Ötesi, ancak flame sebebi olacaktır. Interneti biraz
>eşeleyin, "OOP is bad" diyen ve sağlam gerekçelere sahip tonla döküman
>bulursunuz. Fakat, C++ veya Java kullanmış olmakla OOP yaptığınızı
>düşünmek abesle iştigal olur. Dediğim gibi işin özü nesne paradigmasını
>iyi anlayabilmekten geçer. İşte kavrama bu noktadan değilde "Nesne
>kullanan bir dil ile programlama yapmak" noktasından yaklaşırsanız
>Nesneler sadece size angarya ve kafa ağrısı vereceklerdir.
>
>Kısaca:
>
>C++ kullanıyor olmanız sizi OOP'a taşımaz.
>C kullanıyor olmanız sizi OOP'tan uzaklaştırmaz.
>
>Nesneye yönelik çalışmada dizaynı buna yönelik bir dil kullanmak mutlak
>daha iyidir.
>
>Tercih, "OOP olsun mu olmasın mı?" değil, "OOP olacak. Bunu engelleyen
>bir şey var mı?" sorgulaması ile yapılmalıdır.
>
>O nesneler sadece sizin kafanızda. OOP kullanıyor olmanız her adımı iyi
>hesaplamanız gerektiği, iki tık öğrenmekle programcı olunmayacağı
>gerçeğini değiştirmez.
>
>
>Saygı ve sevgiler..
>
>
>
>>Merhaba,
>>
>>Serdar Hocam ile kavram tartışması yapmak çok zevkli olacak. :-)
>>
>>Sevgiler.
>>
>>Bora.
>>
>>
>
>
>_______________________________________________
>Linux-programlama mailing list
>Linux-programlama@liste.linux.org.tr
>http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>
>
>

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.