Unix Felsefesi

Unix felsefesi Ken Thompson tarafından ortaya konmuş, minimalist ve kolayca parçalara ayrılabilen (modüler) yazılımlar geliştirme yaklaşımlarıyla oluşturulmuş kültür normları ve felsefeleridir. Unix işletim sistemi geliştiricilerinin tecrübelerinden yola çıkılarak tekrar kullanılabilir ve parçalara ayrılabilir mühendislik uygulamaları hareketidir. Zamanla Unix'in önde gelen geliştiricileri bir takım kültürel normlar oluşturmuş ve bu normlar Unix'in kendisi kadar etkileyici ve önemli hale gelmiş ve "Unix felsefesi" olarak bilinmeye başlanmıştır.

Unix felsefesi, kolayca bakımı yapılabilen ve gerektiğinde yazılımı ilk oluşturan kişilerin amaçları dışında da farklı amaçlar için kullanılmaya müsait, basit, kolay taşınabilir, temiz, kolay parçalara ayrılabilir ve genişletilebilir yazılımlar oluşturabilmeyi vurgular. Unix felsefesi tek parçadan oluşup her şeyi yapan programlar yerine bir araya getirilebilir olan parçalardan oluşmayı tercih eder.

 Ortaya çıkışı  
Unix'in felsefesi Doug McIlroy tarafından 1978'de yayınlamış Bell System Technical Journal'da şu şekilde açıklanmıştır:

 Her bir programı yalnızca tek bir şeyi iyi yapacak şekilde yap. Yeni bir iş yapmak için eski programlara yeni "özellikler" ekleyerek karmaşık hale getirmek yerine, yeni bir tanesini inşa et.
 Her programın çıkış (output) değerini, bir başka programın girişi olabileceğini göz önünde bulundur, henüz o girişi alacak program ortada olmasa bile. Program çıkışını gereksiz bilgilerle doldurma. Kesinkes sütunlar şeklinde veya binary giriş formatlarından kaçın.
 Daha önceden denenmiş olarak yazılımları, hatta işletim sistemlerini tasarla ve geliştir, bunu ideal olarak haftalar içerisinde yap. Çalışmayan parçaları atmakta ve yeniden oluşturmakta tereddüt etme.
 Bir programlama işini hafifletmek için, araçları kullanmayı vasıfsız birinin yardımına tercih edin, o araçları inşa etmek için gereksiz yollara sapmanız gerektirse ve bir daha o araçları hiç kullanmayacak olsanız bile.

 Kaynakça 

Felsefe
Kategori:Yazılım geliştirme felsefeleri