Ken Thompson‘un oluşturduğu Unix felsefesi, minimalist, modüler yazılım geliştirme için bir dizi kültürel norm ve felsefi yaklaşımdır. Unix işletim sisteminin önde gelen geliştiricilerinin deneyimlerine dayanmaktadır. Zamanla, Unix’in (ve onun üzerinde çalışan programların) önde gelen geliştiricileri, yazılım geliştirmek için Unix’in teknolojisi kadar önemli ve etkili olan normlar oluşturdular; Bu “Unix felsefesi” olarak adlandırılmıştır.
Unix felsefesi, yaratıcıları dışındaki geliştiriciler tarafından kolayca korunabilen ve yeniden tasarlanabilen basit, kısa, açık, modüler ve genişletilebilir kodlar oluşturmayı vurgular.
Aşağıdaki felsefi yaklaşımlar Linux işletim sistemleri için de geçerlidir.
Unix Felsefesi
1994 yılında, Mike Gancarz (X Pencere Sistemini tasarlayan ekibin bir üyesi), Unix ile kendi deneyimini ve aynı zamanda UNIX Felsefesini üretmek için Unix’e bağlı diğer programcılarla tartışmalar gerçekleştirdi. Bu tartışmalar sonucunda çıkan ortaya çıkanlar;
- Yalnız bir şey yap ve onu iyi yap – Tek bir şey yapan programlar yaz ve onu iyi yap. Birlikte çalışabileceğiniz için programlar yazın. Metin akışlarını işlemek için programlar yazabilirisiniz, çünkü bu evrensel bir arabirimdir.
- Herşey bir dosyadır – Donanım bir dosya olarak ele alınarak kullanım kolaylığı ve güvenlik sağlanmaktadır.
- Küçük güzeldir.
- Verileri ve yapılandırmayı düz metin dosyalarında depola – Metin dosyaları evrensel bir arayüzdür. Oluşturulması, yedeklenmesi ve başka bir sisteme taşınması kolaydır.
- Taşınabilirliği arttırmak için shell scriptleri kullanın – Çeşitli UNIX/Linux dağıtımlarında ortak görevleri otomatikleştirmek için shell script kullanın.
- Karmaşık görevi tamamlamak için zincir programlara ağırlık verin – Bir görevi zamanında yerine getiren küçük yardımcı programları zincirlemek için shell pipe ve filtreleri kullanın.
- Verimlilik için taşınabilirliği seçin.
- Yaptıklarınız basit olsun (Keep it Simple, Stupid (KISS)) – Detaylarda boğulmayın, olabildiğince basit tutun.
Sonraki Ders (Bölüm-1 Ders-3)
Önceki Ders (Bölüm-1 Ders-1)