"Bir kerede bir şey yap" mı?
Bu yorum genel tasarım ilkesiyle ilgili bir soruya benziyor. Genelde, bunlarla ilgili sorular çok özneldir ve uygun bir cevap yazamıyoruz. Bu durumda soruları kapatabileceğimiz konusunda uyarılırsınız.
Bazen, özgün tasarım seçimiyle ilgili bir açıklama yapabiliriz, çünkü geliştirici (ler) onlar hakkında yazmıştır. Fakat bu soruya çok hoş bir cevabım yok.
Neden cp
bu şekilde tasarlandı?
Sorun Unix'in 40 yaşın üzerinde olması.
Şimdi yeni bir sistem yaratıyorsanız, farklı tasarım seçimleri yapabilirsiniz. Ancak Unix'in değiştirilmesi, diğer cevaplarda da belirtildiği gibi varolan komut dosyalarını bozacaktır.
Neden sessizce varolan dosyaların üzerine yazmak için cp
tasarlandı?
Kısa cevap "bilmiyorum" :-).
Bunun cp
sadece bir sorun olduğunu anlayın . Orijinal komut programlarının hiçbirinin dosyaların üzerine yazılmasına veya silinmesine karşı korunmadığını düşünüyorum. Çıkış yönlendirilirken kabuğun da benzer bir sorunu var:
$ cat first.html > second.html
Bu komut aynı zamanda sessizce üzerine yazar second.html
.
Tüm bu programların nasıl yeniden tasarlanabileceğini düşünmekle ilgileniyorum. Biraz ekstra karmaşıklık gerektirebilir.
Bunun açıklamanın bir parçası olduğunu düşünüyorum: Erken Unix basit uygulamaları vurguladı . Bunun daha ayrıntılı bir açıklaması için, bu cevabın sonundaki "daha da kötüsü iyidir" konusuna bakın.
> second.html
Varsa, bir hata ile durması için değiştirebilirsiniz second.html
. Belirttiğimiz Ancak, bazen kullanıcı yok varolan bir dosyayı değiştirmek istiyor. Örneğin, istediğini yapana kadar birkaç kez deneyerek karmaşık bir emir oluşturuyor olabilir.
rm second.html
Gerekirse kullanıcı önce çalıştırabilir . Bu iyi bir uzlaşma olabilir! Kendisinin bazı dezavantajları vardır.
- Kullanıcının dosya adını iki kez yazması gerekir.
- İnsanlar da kullanmakta zorlanıyorlar
rm
. Bu yüzden ben de rm
daha güvenli hale getirmek istiyorum . Ama nasıl? rm
Her dosya adını gösterip kullanıcıdan onaylamasını istersek , şimdi bir satır yerine üç satır komut yazması gerekir . Ayrıca, bunu çok sık yapmak zorunda kalırsa, bir alışkanlık edinecek ve düşünmeden onaylamak için "y" yazacaktır. Bu yüzden çok sinir bozucu olabilir ve hala tehlikeli olabilir.
Modern bir sistemde, komutu yüklemenizi vetrash
rm
mümkün olduğunca yerine kullanmanızı öneririm . Çöp deposunun tanıtılması, örneğin , tek kullanıcılı bir grafik PC için harika bir fikirdi .
Orijinal Unix donanım sınırlı sınırlı RAM ve disk alanı, yavaş yazıcılarda görüntülenen çıktı , sistem ve geliştirme yazılımının sınırlarının anlaşılmasının da önemli olduğunu düşünüyorum .
Orijinal Unix'in bir komutun dosya adını hızlıca doldurmak için sekme tamamlamadığına dikkat edin rm
. (Ayrıca, orijinal Bourne kabuğunun komut geçmişi yoktur, örneğin Yukarı ok tuşunu kullandığınızda olduğu gibi bash
).
Yazıcı çıktısı ile satır tabanlı editör ed
,. Görsel bir metin editöründen daha öğrenmek zor. Mevcut bazı satırları yazdırmanız, nasıl değiştirmek istediğinize karar vermeniz ve bir düzenleme komutu yazmanız gerekir.
Kullanmak > second.html
, bir satır düzenleyicide bir komut kullanmak gibidir. Etkisi mevcut duruma göre değişir. ( second.html
Zaten varsa, içeriği atılır). Kullanıcı mevcut durumdan emin değilse, önce ls
veya kaçması beklenir ls second.html
.
Tasarım prensibi olarak "basit uygulama"
Unix tasarımının popüler bir yorumu var.
Tasarım hem uygulamada hem de arayüzde basit olmalıdır. Uygulamanın arayüzden daha basit olması daha önemlidir. Sadelik bir tasarımdaki en önemli husustur.
...
Gabriel, "Daha kötüsü iyidir" nin MIT yaklaşımından daha başarılı bir yazılım ürettiğini savundu: Başlangıç programı temelde iyi olduğu sürece, başlangıçta uygulanması çok daha az zaman ve çaba harcayacak ve yeni durumlara adapte olmak daha kolay olacaktır. Örneğin, yazılımı yeni makinelere aktarmak, bu şekilde çok daha kolay hale gelir. Bu nedenle kullanımı, [daha iyi] bir programın geliştirilmesi ve konuşlandırılması için bir şans vermeden çok önce yayılacak (ilk hamle avantajı).
https://en.wikipedia.org/wiki/Worse_is_better