Una settimana fa, Douglas McIlroy, sviluppatore della pipeline UNIX e autore del concetto di "programmazione orientata ai componenti", ha discusso di programmi UNIX interessanti e insoliti che non hanno preso piede. La pubblicazione ha avviato un'attiva discussione su Hacker News. Abbiamo raccolto le cose più interessanti e saremo felici se ti unissi alla discussione.
Foto — — Unsplash
Lavorare con il testo
Nei sistemi operativi simili a UNIX c'è un set standard di strumenti per la formattazione del testo. L'utilità typo consentiva di controllare un documento per errori di battitura e — parole che compaiono nel materiale solo una volta. È interessante notare che per trovare errori di battitura il programma dizionari. Si basa esclusivamente sulle informazioni nel file e utilizza un'analisi della frequenza sulle trigrammi (una sequenza di tre caratteri). Tutti i contatori necessari in un array 26x26x26. Secondo Douglas McIlroy, tale quantità di memoria era appena sufficiente per alcuni contatori a byte singolo. Pertanto, per risparmiare spazio, venivano scritti in forma logaritmica.
Oggi typo è stato sostituito da programmi di controllo ortografico più moderni e precisi basati su dizionari. Tuttavia, lo strumento è ancora ricordato: alcuni anni fa, un appassionato ha implementato typo in Go. Il repository è ancora aggiornato.
Un altro strumento per lavorare con documenti degli anni '80 è il pacchetto Writer’s Workbench di Lorinda Cherry e Nina McDonald di Bell Labs. Includeva studenti dell'Università statale del Colorado negli Stati Uniti. Ma all'inizio degli anni '90, Writer’s Workbench è stato dimenticato, poiché non era incluso nella Version 7 di Unix. Tuttavia, questo strumento ha continuato la sua strada tramite emuli, come ad esempio Grammatik In UNIX ci sono anche strumenti standard che semplificano il lavoro con le formule. Esiste un preprocessore per la formattazione delle espressioni matematiche
. È notevole perché per visualizzare una formula il programmista deve semplicemente descriverla usando parole e simboli semplici. Le parole chiave consentono di spostare i segni matematici in verticale e orizzontale, cambiare le loro dimensioni e altri parametri. Se si invia all'utilità la stringa: eqnsum from { k = 1 } to N { k sup 2 }
Il risultato generato sarà la seguente formula:Negli anni '80 e '90 eqn

ha aiutato è anche presente su Habr. Ma eqn è il primo strumento di questa classe a rimanere parte dei sistemi operativi simili a UNIX. Nel thread tematico, i residenti di Hacker News hanno segnalato alcune utilità raramente usate per lavorare con i file. Una di queste
Lavorare con i file
era per il confronto. Questo è un'analisi semplificata di , progettata per funzionare in script. È stato scritto dallo stesso Richard Stallman insieme a David MacKenzie. L'output del programma consiste in tre colonne. La prima colonna contiene valori unici per il primo file, la seconda — unici per il secondo file. La terza colonna include valori comuni. Per funzionare correttamente, i documenti confrontati devono essere ordinati lessicalmente. Pertanto, uno dei residenti del sito
ha suggerito di usare l'utilità nel seguente modo: comm <(sort fileA.txt) <(sort fileB.txt)
Comm è comodo da usare per controllare l'ortografia delle parole. Basta confrontarle con un documento di riferimento dizionario. Considerando le complessità legate alla necessità di ordinare i file, è chiaro, che Stallman e MacKenzie hanno scritto la loro utilità esclusivamente per questo caso d'uso. Marnix Hogendoorn

Foto — — Unsplash
le possibilità dell'operatore paste , che per lui non erano evidenti. Permette di alternare flussi di dati o di suddividere un flusso in due colonne durante l'output:$ paste <( echo -e 'foonbar' ) <( echo -e 'baznqux' ) foo baz bar qux $ echo -e 'foonbarnbaznqux' | paste - - foo bar baz qux
, che spesso per eseguire queste semplici operazioni si utilizzano soluzioni non ottimali: a partire da
Uno degli utenti fmt , mlr con e .
Come si è sviluppato il sistema dei nomi a dominio: l'era ARPANET
Di cosa parliamo nel nostro blog aziendale:
![]()
![]()
![]()
![]()
Fonte: habr.com
