Co oznacza „czytelny dla człowieka”? Czy to mylące?

12

Przychodzą mi na myśl dwa przykłady:

  • Jednym z powodów, dla których programiści .Net są zachęcani do używania plików .config zamiast rejestru Windows, jest to, że pliki .config są w formacie XML i dlatego są czytelne dla człowieka.

  • Podobnie, JSON jest czasem uważany za czytelny dla człowieka w porównaniu z zastrzeżonym formatem.

Czy formaty czytelne dla człowieka są rzeczywiście czytelne dla ludzi? W przykładzie danych konfiguracyjnych:

  1. Format nie zmienia podstawowego znaczenia informacji - w obu przypadkach dane reprezentują to samo.
  2. Zarówno rejestr, jak i plik .config są przechowywane wewnętrznie jako seria 0 i 1. W tym zakresie podstawowa reprezentacja jest równie nieczytelna dla ludzi.
  3. Zarówno rejestr, jak i plik .config wymagają narzędzia do odczytu, formatowania i wyświetlania tych zer i jedynek oraz konwertowania ich na format, który ludzie mogą odczytać. W przypadku konfiguracji przechowywanej w rejestrze systemu Windows jest to Edytor rejestru. W przypadku XML może to być edytor tekstu lub czytnik XML. Tak czy inaczej, narzędzie sprawia, że ​​dane są czytelne, a nie format danych.

Jaka jest zatem różnica między formatami danych czytelnymi dla człowieka a formatami nieczytelnymi dla człowieka?

Kramii
źródło
3
Zależy, czy definicja „człowieka” jest ograniczona do programistów / etc, lub dotyczy wszystkich ludzi (jeśli to drugie, to prawie wszystkie formaty prawdopodobnie nie są w różnym stopniu).
Peter Boughton,
7
Jedynym czytelnym dla człowieka formatem serializacji jest YAML . XML sprawia, że ​​chcę oderwać oczy.
NullUserException

Odpowiedzi:

35

Czytelny dla człowieka oznacza w zasadzie, że jeśli treść jest wyświetlana przez program, który nie ma bezpośredniej, specyficznej świadomości formatu tego pliku, istnieje co najmniej uzasadniona szansa, że ​​dana osoba może przeczytać i zrozumieć przynajmniej część z nich.

Twój podstawowy punkt dotyczący braku wyraźnej linii rozgraniczenia jest jednak absolutnie poprawny - pewnego razu znałem faceta, który może zdiagnozować problemy z programami (głównie napisane w Fortranie) często w ciągu pięciu minut lub mniej - wychodząc tylko z ósemki zrzut pamięci, bez patrzenia na kod źródłowy. Dla większości ludzi ten format raczej nie kwalifikuje się jako „czytelny dla człowieka”, ale oczywiście był wyjątkiem…

Jerry Coffin
źródło
14
+1: Wszystko jest „czytelne dla człowieka” przy wystarczającym wysiłku. De facto oznacza „czytelny dla człowieka” w komputerach: zwykły tekst, nieustrukturyzowany lub jakaś struktura złożona wyłącznie ze znaków tekstowych.
Allon Guralnek
35

Czytelny dla ludzi oznacza, że ​​mogę otworzyć to w Notatniku, jeśli chcę, i zmienić „hasło = foo” na „hasło = pasek”, jeśli chcę. Nie muszę używać zastrzeżonego narzędzia do przeglądania ani edytowania treści.

W przeciwieństwie do pliku PDF, którego nie można edytować za pomocą prostego edytora tekstu - potrzebujesz określonego narzędzia znającego format. Lub plik binarny .dat dostarczony z aplikacją sprzed 25 lat, której nie można czytać, edytować ani rozumieć.

Kate Gregory
źródło
Czy uważasz RTF za czytelny dla człowieka?
Peter Boughton,
7
RTF jest czytelny dla programistów :-). Zredagowałem go ręcznie, ale nie było to przyjemne. XML jest z pewnością mniej czytelny dla ludzi niż JSON. Wiele zależy od tego, do czego przywykli twoi ludzie - wielu moich woli .csv niż XML, ale na pewno nie!
Kate Gregory,
3
Edycja pliku czytelnego dla człowieka może być niemożliwa. Widziałem wielu, w których treść jest czytelna dla człowieka, ale mogą mieć pole wyboru z, na przykład, wartością parametru szesnastkowego, która nie jest łatwa do obliczenia i oparta na zawartości pliku. Ta wartość jest używana przez aplikację do sprawdzania poprawności plików.
u
6
Dobra uwaga @Ian - ponieważ omawiamy terminologię, powinniśmy rozróżniać czytelne i edytowalne przez ludzi. Moim zdaniem oba są dobre.
Kate Gregory,
Popieram twoje twierdzenie, że JSon jest znacznie bardziej edytowalny (i czytelny) dla ludzi niż xml, choćby dlatego, że jednostki xml są takim bólem.
Matthieu M.,
10

W odpowiedzi na pytanie „Czy formaty czytelne dla człowieka są rzeczywiście czytelne dla ludzi”, z definicji tak, są, właśnie to oznacza czytelność dla ludzi.

Nie ma technicznej definicji czytelnej dla człowieka, jest ona subiektywna i mogą pojawić się pytania o to, jaki poziom wiedzy człowiek może potrzebować, aby się zakwalifikować (na przykład czy muszą zrozumieć bardzo podstawowe zasady XML, takie jak tagi i hierarchie , jeśli rozumieją domenę biznesową, w której istnieją dane - osobiście powiedziałbym tak obu), ale twój podstawowy test powinien być, gdybym pokazał to komuś z podstawowymi umiejętnościami technicznymi, który rozumiał podstawy tego, co dane miały reprezentować czy mogą to przeczytać?

Na poziomie praktycznym będzie to ogólnie oznaczać:

1) Dane są przechowywane jako tekst ASCII lub inny podobnie popularny i łatwo rozpoznawalny format

2) Czy istnieje rozsądna struktura, która jest oczywista po podstawowym badaniu. Na przykład nie musisz wiedzieć, że pierwsze X znaków związanych z Y, a następnie następne X odnoszą się do Z

3) Że zarówno dane, jak i metadane generalnie są w języku angielskim (lub jakimkolwiek języku lokalnym) i wymagają jedynie ograniczonej wiedzy na temat domeny problemowej, aby zrozumieć - więc numer faktury powinien znajdować się w tagu „fakturaNumer”, a nie „ uDef_Inbr ”

4) W przypadku danych nietekstowych zastosowano rozsądne, przewidywalne konwencje (na przykład PRAWDA, FAŁSZ, Y, N, 1, 0 zamiast czegoś bardziej otwartego na interpretację)

Jon Hopkins
źródło
5

Pliki .config są znacznie łatwiejsze do edycji (dla większości osób) niż rejestr. Łatwiej jest otworzyć dedykowany plik konfiguracyjny, znaleźć odpowiednie dane i wprowadzić zmiany bez otwierania możliwości edycji czegoś, co wpłynie na inne programy.

Bruce Alderman
źródło
5

Chodzi o łatwość zrozumienia (i prawdopodobnie zmiany). Więc „Czy X jest czytelny dla człowieka?” nie należy na nie odpowiadać „tak” lub „nie”. Odpowiedź powinna raczej odpowiadać ruchomej skali.

Potencjalne przykłady:

  • 90% programistów może odczytać i zmienić plik w dowolnym popularnym edytorze tekstu.
  • 60% osób posługujących się językiem angielskim może odczytać ten plik za pomocą dowolnego popularnego edytora tekstu.
  • 80% programistów XYZ mogło odczytać i zmienić plik, ale tylko przy użyciu narzędzia ZYX.
  • 10% programistów YZX mogło odczytać i zmienić ten plik za pomocą wspólnego edytora tekstu.

Poza kontekstem, który wyjaśnia, co tak naprawdę oznacza „czytelny dla człowieka”, to zdanie wcale nie pomaga. (Pewien człowiek gdzieś może prawdopodobnie odczytać dowolny z formatów, jeśli nie liczyć próbowania spojrzenia na polaryzację magnetyczną samych bitów sprzętowych ...)

John Fisher
źródło
4

Jedną z dużych różnic między formatami czytelnymi dla człowieka a formatami nieczytelnymi dla ludzi jest wytrzymałość. W systemie Linux wszelkiego rodzaju informacje będą rozproszone w różnych plikach tekstowych. Musisz dowiedzieć się, gdzie się znajdują, ale zawsze możesz znaleźć informacje, przeczytać je i zmienić w edytorze tekstu. Jeśli plik zniknie, zazwyczaj możesz go zastąpić. Jeśli plik zostanie uszkodzony, często możesz dowiedzieć się, co powinien być i naprawić.

W systemie MS Windows większość z nich będzie znajdować się w Rejestrze, który z punktu widzenia użytkowników jest jednym wielkim nieprzejrzystym systemem, dostępnym częściowo za pomocą różnych narzędzi (podobnie jak niektóre pliki konfiguracyjne w systemach Linux) i ogólnie z edytorem rejestru. Tak długo, jak wszystko idzie dobrze, jest w porządku. Jeśli się zepsuje, nic nie da się zrobić bez specjalistycznej wiedzy.

David Thornley
źródło
1
Linux: „Musisz się dowiedzieć, gdzie się znajdują” w stosunku do systemu Windows: „nic nie można zrobić bez specjalistycznej wiedzy”. Twierdzę (jako użytkownik wielu różnych systemów operacyjnych), że wszystkie one wymagają specjalistycznej wiedzy. Wiedza, gdzie dostosować rejestr w celu rozwiązania problemu, nie jest bardziej (lub mniej) złożona niż wiedza, który plik można edytować za pomocą vi w systemie Linux lub Solaris.
Bevan
3

Najłatwiejsze kontrole, które mogę określić jako „czytelne dla człowieka”, to:

  • w lokalizacji / pliku, do którego edytorzy zewnętrzni mają łatwy dostęp (spowodowałoby to, że rejestr nie byłby „czytelny dla człowieka”)
  • nie używa znaków, których nie można wyświetlić w strukturze danych. Jeśli utworzę dokument programu Office 2000 Word z tekstem „test” w środku, być może uda mi się go otworzyć w notatniku i znaleźć gdzieś w środku 4 znaki „test”, ale będzie wokół niego mnóstwo innych rzeczy.
  • Chociaż nie jest to wymagane, formaty zawierające metadane opisowe są zaletą. Plik, który zawiera JohnSmith|34|T|Fjest mniej przyjazny niż <User><Name>JohnSmith</Name><id>34</id><isActive>T</isActive><isAdmin>F</isAdmin></User>, jak wiadomo, co to są pola (przynajmniej ogólnie) w 2. miejscu.
Jason Viers
źródło
2

Myślę, że możesz zapytać, czy „czytelny dla człowieka” jako termin jest czasami nieprawidłowo stosowany i bez wątpienia tak jest. W przykładzie wpisów rejestru w porównaniu do plików .config, myślę, że to pomaga w rozmieszczeniu XML na różne sposoby w zależności od danych, komentarzy między wierszami i tak dalej.

Kolekcje w plikach .config są ogólnie traktowane jako wiele elementów, podczas gdy w rejestrze jest to trudniejsze, często jako MULTI_SZ.

Możesz również zobaczyć więcej danych konfiguracyjnych dla aplikacji jednocześnie - dzięki regedit, aby zobaczyć coś, co jest w innym kluczu, musisz przejść do tego klucza, co oznacza, że ​​nie możesz już zobaczyć pozycji, które wcześniej oglądałeś. W przypadku plików .config możesz zobaczyć cały plik na raz, nawet jeśli plik ten może zawierać dane hierarchiczne.

JohnL
źródło
Rejestr jest oba. Są to fragmenty, które są bardzo czytelne, inne są kompletnym bełkotem dla każdego bez dość specjalistycznej wiedzy.
Jon Hopkins,
To prawda, i można powiedzieć, że niektóre pliki .config wyglądają jak bełkot. Zauważ, że nawet nie myślałem o informacjach rejestru COM, miałem na myśli ustawienia aplikacji, które trafiłyby do rejestru - podgląd ustawień, które otrzymujesz w plikach .config. Nie sądzę, żeby ktokolwiek chciał, aby informacje o COM były czytane przez ludzi.
JohnL,
2

Porównaj „bycie czytelnym” z binarnym. Na przykład ogólnie nie można otworzyć pliku wykonywalnego lub indeksu bazy danych w edytorze tekstów waniliowych i zrozumieć, co to jest zawartość. Bajty poniżej dziesiętnego 32 nie mają nawet globalnie standardowych reprezentacji jako widocznych znaków.

Charles E. Grant
źródło
1

Krótka odpowiedź: oznacza, że ​​informacje są wprowadzane jako tekst, a nie w postaci binarnej lub szesnastkowej itp. Coś, co zrówna się z czytelnym „językiem”, a nie „językiem maszynowym” komputera. Poza tym definicja staje się mętna.

Skatterbrainz
źródło
1

Dotyczy to również kodu - programujesz swój program w logiczny i przemyślany sposób, dzięki czemu praca każdego, kto patrzy na niego po raz pierwszy, jest nieco łatwiejsza.

dodgy_coder
źródło