SORU
20 ŞUBAT 2009, Cuma


Neden insan okunabilir bir dosya biçimini kullanmalıyım?

Neden bir ikili bir tercih okunabilir bir dosya biçimini kullanmalıyım? Şimdiye kadar bu durum böyle değil ne zaman bir durum var mı?

EDİT: Başlangıçta soru sorarken bir açıklama olarak bu vardı, ama çok ilgili değil:

this question yanıtlarken insan okunabilir dosya biçimi kullanarak iyi bir fikir olduğunu neden bir standart için soru soran ÇOK cevap başvurmak istedim. Sonra bir aradım ve bulamadım. Burada soru bu

CEVAP
20 ŞUBAT 2009, Cuma


Duruma göre değişir

Doğru cevap değişir. Örneğin ses/video veri yazıyorsanız, eğer insan okunabilir bir biçime sen levye, çok okunabilir olmayacak! Ve word belgeleri insan okunabilir yerinde olmak zorunda klasik bir örneğidir, daha esnek ve XML taşıyarak MS bu yoldan gidiyoruz.

İkili veya metin çok daha önemli bir standart ya da standart. Eğer standart bir format kullanırsanız, o şansı vardır ve bir sonraki adam bir ayrıştırıcı yazmak zorunda kalmaz, ve herkes için bir kazanç.

Bu aşağıdaki ise kendi biçimini (ve çözümleyici) yazmak için varsa diğer üzerinden bir seçim yapmak isteyebilirsiniz neden bazı inatçı nedenleri vardır.

Neden insan okunabilir kullanmak?

  1. Gelecek adam. Bakımı geliştirici kodu 30 yıl ya da altı ay bakmalısınız. Evet, kaynak kodu olmalı. Evet belgeler ve açıklamaları gerekirdi. Ama büyük ihtimalle olmayacak. Ve o adam olması ve kurtarma ya, son derece değerli eski veri, teşekkür ederim geldiğin için dönüştürmek için bir şey sadece bakıp anlayabilirim.
  2. Okumama izin ver VE kendi araçları ile YAZMA. Eğer emacs bir kullanıcı olursam kullanabilirim. Veya Vim, ya da eğer büyük araçlar ve kütüphaneler oluşturduk Bile not defteri ya ... benim platform üzerinde çalıştırmak, ya da herhangi bir daha fazla olabilir. Ayrıca, benim araçları ile yeni veri oluşturabilirsiniz.
  3. Vergi o kadar da büyük değil - Depolama ücretsizdir. Hemen hemen her zaman disk alanı boşaltın. Ve eğer değil eğer bilmiyorum. Kaç köşeli parantez veya virgül merak etme, normalde o kadar fark etmeyecek. Prematüre optimizasyonu tüm kötülüklerin köküdür. Ve eğer gerçekten endişeli iseniz, sadece standart bir sıkıştırma aracı kullanmak, ve sonra küçük bir insan okunabilir format - herkes ayıklayın çalıştırabilirsiniz.
  4. Vergi o kadar da büyük değil - bilgisayar hızlı. Daha hızlı ayrıştırmak için bir ikili olabilir. Fazladan bir sütun veya veri türü ekleyin, ya da eski ve yeni dosyalar hem de destek için hazır olana kadar. bu Protocol Buffers ile hafifletilmiş olsa da)
  5. İyi biçimleri vardır. Eğer XML sevmiyorsun bile. CSV deneyin. Ya da JSON. Ya .özellikleri. Hatta XML. Çok sayıda araç zaten dil çok bu ayrıştırma için var. Ve sadece eğer gizemli bir şekilde kaynak kodu da kaybolursa onları yeniden yazmak için 5 dakika sürer.
  6. Farklar daha da kolay olacaktır. Sürüm kontrolü için kontrol etmek çok daha kolay nelerin değiştiğini görmek için. Ve Web üzerinde görüntülemek. Ya da iPhone. İkili, bir şeyler değişti biliyorsun, ama bu yorumlar ne size güveniyor.
  7. Birleştirmesi kolay olur. Hala web üzerinde soru başka bir PDF ekleme yapmayı soruyor. Bu Metin ile olmaz.
  8. Daha kolay bozuk değilse tamir için. Ve bozuk bir zıp arşivi vs bozuk bir metin belgesi deneyin onarın. Yeterli dedi.
  9. Her dil (platform) okumak ya da yazmak. Tabii ki, ikili her dil ikili çok destekleyecek şekilde, bilgisayarlar için ana dilidir,. Ama klasik küçük araç dillerine çok çok daha iyi metin veri ile çalışmak. İyi metin (çevirici belki) ile ikili değil, çalışan bir dil ama tersi mümkün değil düşünemiyorum. Ve programlara bile düşünce değil, ya da senin 30 yıl önce yazılan diğer programlar ile etkileşim anlamına gelir. Unıx başarılı oldu nedeni vardır.

Neden olmasın, kullanmak ve ikili yerine?

  1. Çok fazla veri olabilir- belki terabayt. Ve sonra 2 faktörü çok önemli olabilir. Ama hala erken optimizasyon tüm kötülüklerin köküdür. Nasıl bir insan bir anda, ve daha sonra dönüştürmek? Çok vaktinizi almaz.
  2. Depolama ücretsiz olabilir ama bant genişliği değil(Jon) yorum Skeet. Eğer ağ dosyaları sonra atıyor eğer boyutu gerçekten bir fark yaratabilir. Hatta ve diske gelen bant genişliği sınırlayıcı bir faktör olabilir.
  3. Gerçekten performans yoğun kod. İkili ciddi şekilde optimize edilmiş olabilir. Veritabanları normalde kendi düz metin biçiminde olmamasının bir sebebi var.
  4. İkili bir biçim standart olabilir. Kullanmak, MP3 PNG veya MPEG. Yanındaki adamlar işi daha kolay (en azından önümüzdeki 10 yıl için) yapar.
  5. İyi bir ikili biçimleri var. Bazı veri türü için küresel standartları. Veya donanım aygıtları için bir standart olabilir. Bazı standart seri çerçeveler vardır. Harika bir örnek Google Protocol Buffers. Başka bir örnek: Bencode
  6. Kolay ikili gömmek için. Bazı veriler zaten ikili ve gömmeniz gerekir. Bu da doğal olarak ikili dosya biçimleri çalışıyor, ama çirkin görünüyor ve insan okunabilir olanlar çok verimsiz ve genellikle insanlar tarafından okunabilir olması onları durdurur.
  7. Kasıtlı bilinmezlik. Bazen verileriniz ne yaptığı belli istemiyorsun. Şifreleme karanlık kaza güvenlik iyidir, ama eğer şifreleme olarak ikili olun ve bu iş biter.

Tartışılabilir

  1. Daha kolay ayrıştırmak için. İnsanlar her iki metin ve ikili ayrıştırmak için daha kolay olduğunu iddia etmiştir. Şimdi net bir şekilde ayrıştırmak için en kolay dil veya kütüphane ayrıştırma destekler, ve bu ikili ve bazı insan okunabilir biçimleri bazı için de geçerlidir, bu yüzden çok da desteklemiyor. İkili biçimleri net bir şekilde ayrıştırmak için kolay bir şekilde seçilebilir, ama bu nokta tartışmalı olduğunu düşünüyorum bu yüzden insan okunabilir (CSV veya sabit genişlikli sanırım). Bazı ikili biçimleri sadece bu ayrıştırmak için en kolay olduğu için, sayılar (sadece dizeleri söz konusu değil. özellikle de söylenebilir yani, bellek içine atıp kullanılabilir Ancak, hata ayıklayıcısını içinde neler olduğunu görmek için daha kolay (hafif) olduğu gibi insanların çoğu insan okunabilir ayrıştırma hata ayıklama daha kolay olduğunu iddia ediyorum.
  2. Daha kolay kontrol etmek için. Evet, birileri düzenleyicide metin veri bozmayı, ya da bir Unicode biçimini çalışırken inilti daha muhtemeldir ve başka yok. İkili veri ile daha az olasıdır. Ancak, insanlar ve donanım hala ikili veri mangle. Ve (ve) bir metin okunabilir veri kodlamasını belirtin, ya da esnek veya sabit olabilir.

Günün sonunda, ya da gerçekten bir avantaj burada iddia edemez sanmıyorum.

Başka bir şey

Tabii gerçekten bir dosya ister misin? Bir veritabanı düşündünüz mü? :-)

Kredi

Bu cevap bir çok diğer insanlar diğer cevaplar içinde (onları orada görebilirsiniz) yazdıkları birleşmeye. Ve Jon özellikle büyük teşekkür geliştirilebilir yollar önermek için yaptığı yorum (hem burada hem de çevrimdışı) Skeet.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bennythecoder

    Bennythecode

    25 Mart 2008
  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • MyCyberAcademy

    MyCyberAcade

    2 EKİM 2011