Programlamada minimalizm nedir?
Yazılım mühendisliği ve programlama alanında bir düşünce okulu vardır. Minimalizm kavramı, 1960'ların başında New York'ta minimalist bir sanat hareketinin ortaya çıkmasıyla ortaya çıktı. Sanatçılar, sanatın eskimiş ve akademik olduğuna inanmışlar ve maksimum etkiyi yaratmak için nesnelerinin özünü mümkün olduğunca az unsurla ortaya çıkarmaya çalışmışlardır. Özünde, minimalist felsefeyi olabildiğince az kaynak kullanarak bir grafik kullanıcı arayüzü tasarımına çevirir. Minimalist programcılara göre bu, daha basit ürünlerin tasarlanması, yalnızca gerektiğinde karmaşıklık ve dış bağımlılıkların getirilmesi ve böylece potansiyel arıza noktalarının en aza indirilmesi anlamına gelir.
Minimalist yazılım mühendislerinin izlediği ilkelerden biri, %20'lik bir çabanın nihai sonuçların % 80'ini sağlayabileceği, açık bir tasarımı koruyabileceği ve gereksiz dikkat dağıtıcı unsurları ortadan kaldırabileceği Pareto yasasını uygulama çabasıdır. Minimalizm kullanıcı deneyimi söz konusu olduğunda, bir uygulama sizin için her şeyi yapmaya çalışan uygulamalara kıyasla bir veya iki şey çok iyi yapabilir, bu da genellikle yaklaşımında parlak olmadığı anlamına gelir.
Minimalizm ilkesi diğer birçok altkültürle yankı buldu ve o zamandan beri estetik, politika, mimari, yaşam tarzı tasarımı ve iş yönetiminde uygulandı. Fikir yazılımda da kabul edildi. Kod minimalizmi, minimalist bir estetik durumu koruyarak kodu basitleştirmekle ilgilidir.
Bilgisayar teknolojisi alanında yeni gelişmeler getiren 21. yüzyılın başında minimalizm ön plana çıktı. PC sonrası çağda artık yaygın bilgi işlemlerini gerçekleştirmek için daha üst sınıf bir kişisel bilgisayar satın almak gerekmiyor. Akıllı telefonlar, tabletler, netbook'lar ve eklentiler gibi mobil bilgi işlem aygıtlarının, yerini alması beklenen kişisel bir bilgisayara kıyasla genellikle daha az bellek kapasitesi, daha az yetenekli grafik alt sistemleri ve daha yavaş işlemciler vardır. Ayrıca, alfa harmanlama gibi grafik efektlerinin yoğun kullanımı pili "düz kullanıcı arayüzünden" daha hızlı tüketir. Bu cihazların artan popülaritesi minimalizmi önemli bir tasarım sorunu haline getirmiştir.
Google Chrome ve Chrome OS genellikle minimalist tasarıma örnek olarak gösterilmektedir. Windows 8'de Microsoft, daha az sistem kaynağı gerektiren "basit, kare" bir metro görünümü lehine grafik olarak zorlu Aero kullanıcı arayüzünden uzaklaşmaya karar verdi. Bu değişiklik kısmen daha küçük pille çalışan cihazların büyümesi ve enerji tasarrufu ihtiyacı nedeniyle yapıldı. Apple'ın iOS sürüm 7, kullanıcı deneyimi nedeniyle benzer değişiklikler yaptı.
Minimize edilmiş kod nasıl yazılır?
Minimalizm bazen güzel sanatlar anlamında, özellikle bir donanım cihazının veya yazılım temasının endüstriyel tasarımında kullanılır. Bazı geliştiriciler, belirli bir platformda en az sayıda kod satırında veya en küçük derlenmiş yürütülebilir boyutta belirli bir işlevi gerçekleştirmek için programlar oluşturmaya çalışmışlardır. Alpine Linux, Arch Linux, Puppy Linux, Bodhi Linux, CrunchBang Linux, dynebolic ve Tiny Core Linux gibi bazı Linux dağıtımları minimalizm hedefliyor.
Programlama dili tasarımcıları, sözdizimsel şeker ve kapsamlı kütüphane işlevlerinden kaçınarak minimum programlama dilleri oluşturabilir. Bilgisayar biliminde sözdizimsel şeker, alternatif ifade yolları olan bazı ifadelerin kullanımını ve okunmasını kolaylaştıran sözdizimsel öğelere verilen addır. Bu şekilde dilin insanlar tarafından kullanımı kolaylaşır: ifadeler daha net bir şekilde anlatılabilir, bu nedenle bazı insanlar bu alternatif biçimi tercih edebilirler. Turing brandaları bu tür diller olabilir, çünkü yaygın programlama görevleri için standart destek sunmazlar. En az bir Lisp tercümanı oluşturmak bilgisayar bilimi öğrencileri için ortak bir derstir. Alonzo Church tarafından geliştirilen Lambda hesabı, yalnızca işlev tanımlarını ve işlevsel uygulamaları kullanan minimal bir programlama dilidir. Forth ve Go diyagramları pratik, minimal programlama dillerine örnek olarak verilmiştir. Code Golf'ün programlama hobisi minimalist yazılımla sonuçlanır, ancak genellikle uygulama veya kod şiiridir, kullanılabilir uygulama yazılımı değildir.
Kullanıcı arayüzü araştırmacıları, minimalizmin, parsimony ve şeffaflık tasarım ilkeleri ile kanıtlandığı gibi, verimliliği ve öğrenme yeteneğini arttırdığını gösteren deneyler yapmıştır. Minimalizm Unix'in "hepsi bir metin akışıdır" ve "bir şeyi yapın ve iyi yapın" felsefelerinde örtüktür, ancak modern Unix / Linux dağıtımları bu felsefeye bağlı değildir.
Çoğu yazılım geliştiricisi, KURU (Kendinizi Tekrarlama) kuralı gibi bazı minimum kodlama kurallarına aşina olacaktır. Kodda ne kadar az karakter kullanılır ve komut deyimleri ne kadar basit olursa, kodu okumak ve anlamak o kadar kolay olur. Ancak, basitleştirilmiş, açık kod oluşturma ile anlayışı sürdürme arasında bir denge bulmak önemlidir. Çok şifreli veya anlaşılması zorsa veya dili tam olarak kullanmıyorsa, temiz, minimum kod yazmanın bir anlamı yoktur. Amaç, kodun maksimum etkisini elde ederken kodu zarif bir şekilde yoğunlaştırmaktır.
Akıllıca oluşturulmuş ve basitleştirilmiş kodun estetiğini takdir etmenin yanı sıra, basitlik için çabalamak yararlıdır, çünkü bu durumda daha az sıklıkta olabilir. Kod minimizasyonu, daha düzgün iş akışlarına ve proje geçişlerine ve bağımsız çalışma yeteneğine izin verebilen belirli bir programlayıcıya sınırlı bağımlılık olduğu anlamına gelir.
Örneğin, bir programcı bir şirket veya proje için kod yazar ve taşınırsa, başkasının gelip kodunu okuması gerekir. Kodun anlaşılması kolay değilse, başka bir programlayıcıya geçmek daha uzun ve muhtemelen sinir bozucu olacaktır. Başka birinin kodunu anlamaya çalışmak, hata ayıklamayı otomatikleştirmek söz konusu olduğunda bir kabus olabilir. Kod ne kadar okunabilir olursa hataları saptamak ve çözmek o kadar kolay olur. Basitleştirilmiş kod, saf kompozisyon ve düzenlemeden daha fazlasını ifade eder. Bu, yapılandırılmış bir kurallar kümesi, köklü bir temel oluşturmak ve araçlarınıza tam bir güven oluşturmakla ilgilidir. Sadelik ve özgürlük bir araya geldiğinde elde ettiğiniz duygudur.
Bunları okuyabilmeleri ve anlayabilmeleri için diğer makineleri (makineleri değil) okumalı ve kodlamalıyız, böylece basit dil etkili iletişimin anahtarıdır. Sınırlı kısıtlamalar, tek sorumluluk sınıfları ile tekniğinizi mümkün olduğunca küçük tutmaya çalışın ve gereksiz yorumlardan kaçının.
Kısacası, kod minimalizmi basitlik için çabalamak, minimum çabanın faydalarını en üst düzeye çıkarmak ve daha fazla özerklik yaratmaya olan güveni azaltmakla ilgilidir. Eklenecek bir şey olmadığında değil, alınacak hiçbir şey kalmadığında iş geliştirilecek ve tamamlanacaktır.