1980'lerde bir bilgisayara bir iş yaptırmak için C:\> veya ~$ gibi bir komut satırıyla karşılaştığınızda ne yazmanız gerektiğini bilmek zorundaydınız. Yardım, kalın spiral ciltli kılavuzlardan gelirdi. Hata mesajları anlaşılmazdı. Stack Overflow yoktu. Ancak internet erişiminiz varsa, Usenet gibi erken dönem topluluklarından yardım alabilirdiniz. Bugün ise komut satırı, birçok cihazda tamamen kaldırılmış durumda. Bu durum, kullanıcıların düşük seviyeli kontrole erişimini kısıtlıyor ve çoğu kişi komut satırının ne olduğunu bile bilmiyor.
Alan Kay'ın 2017'de söylediği gibi, 'İnsanlar bilgisayarın neyle ilgili olduğunu anlamadıkları için iPhone'da her şeye sahip olduklarını sanıyorlar ve bu yanılsama, Guitar Hero'nun gerçek bir gitarla aynı olduğu yanılsaması kadar kötü.' Kay'ın 'gerçek gitar'ı tam olarak CLI değil, ancak CLI'nin gücünü sunan ve yazılımı metin dosyalarında yazmanın ötesine geçen programlama yollarından bahsediyordu. Onlarca yıldır içinde yaşadığımız metin tabanlı yerel maksimumdan çıkmamız gerektiğine inanılıyor.
Yine de, eski ve tuhaf kısıtlamalarına rağmen komut satırı, bilgisayarın en çok yönlü köşesi olmaya devam ediyor. Perdeyi aralamanıza, gerçekte neler olduğunu görmenize ve makineyle GUI'lerin sağlayamayacağı bir derinlikte etkileşime girmenize olanak tanır. Hemen hemen her dizüstü bilgisayarda mevcuttur, etkileşimli olarak kullanılabilir veya otomatikleştirilebilir. Sistemin diğer bölümleri kadar hızlı değişmez; bu istikrar yaratıcılık için değerlidir.
Geçmişte komut satırı makine odaklıydı: bir betik platformunun üzerinde bir REPL'den ibaretti. Ancak genel amaçlı yorumlanan diller yaygınlaştıkça, kabuk betiklerinin rolü küçüldü. Günümüz komut satırı insan odaklıdır: tüm araçlara, sistemlere ve platformlara erişim sağlayan metin tabanlı bir kullanıcı arayüzüdür. Geçmişte düzenleyici terminalin içindeyken, bugün terminal genellikle düzenleyicinin bir özelliğidir. Git benzeri çoklu araç komutları, komut içinde komutlar ve atomik işlevler yerine tüm iş akışlarını gerçekleştiren üst düzey komutlar çoğaldı.
Bu rehber, geleneksel UNIX felsefesinden ilham alarak, daha keyifli ve erişilebilir bir CLI ortamı oluşturma isteğiyle ve programcı olarak deneyimlerimizle şekillendi. Komut satırı programları oluşturmak için en iyi uygulamaları ve tasarım ilkelerini yeniden gözden geçirmeye karar verdik. Amacımız, CLI'nin kullanışlılığını ve erişilebilirliğini en üst düzeye çıkarmak ve 'Yaşasın komut satırı!' demek.
Rehber, yüksek seviyeli tasarım felsefesini ve somut yönergeleri kapsar. Yönergelere daha ağırlık verir çünkü uygulayıcı olarak felsefemiz çok fazla felsefe yapmamaktır. Örneklerle öğrenmeye inanırız, bu yüzden bolca örnek sunarız. Bu rehber, emacs ve vim gibi tam ekran terminal programlarını kapsamaz; bunlar niş projelerdir ve çok azımız birini tasarlama pozisyonunda olacaktır. Ayrıca programlama dilleri ve araçlar konusunda agnostiktir.
Eğer bir CLI programı oluşturuyor ve kullanıcı arayüzü tasarımı için ilkeler ve somut en iyi uygulamalar arıyorsanız, bu rehber size göre. 40 yıllık CLI tasarım geleneklerine aykırı düşen bariz hatalardan kaçınmak istiyorsanız, bu rehber size göre. Programınızın iyi tasarımı ve yardımsever yardımıyla insanları memnun etmek istiyorsanız, bu rehber kesinlikle size göre. Eğer bir GUI programı oluşturuyorsanız, bu rehber size göre değil; ancak yine de okursanız bazı GUI anti-kalıplarını öğrenebilirsiniz. Minecraft'ın sürükleyici, tam ekran CLI sürümünü tasarlıyorsanız, bu rehber size göre değil. (Ama görmek için sabırsızlanıyoruz!)
Kaynak: clig.dev