De meest opmerkelijke Unix-programma's

De auteur van het artikel is Douglas McIlroy - een Amerikaanse wiskundige, ingenieur en programmeur. Hij is vooral bekend om de ontwikkeling van de pijplijn in het Unix-besturingssysteem, de principes van component-georiƫnteerd programmeren en verschillende originele hulpmiddelen: spell, diff, sort, join, speak, tr.

Soms kom je echt geweldige programma's tegen. Na wat graven in mijn geheugen heb ik een lijst samengesteld van echte pareltjes van Unix door de jaren heen. Dit zijn meestal vrij zeldzame en niet zo noodzakelijke programma's. Wat hen echter onderscheidt, is hun originaliteit. Ik kan me niet voorstellen dat ik zelf op het idee van een van deze programma's zou zijn gekomen.

Deel alsjeblieft welke programma's jou ook zo hebben verbijsterd?

PDP-7 Unix

Om te beginnen, het systeem PDP-7 Unix zelf. De eenvoud en kracht maakten dat ik overstapte van een krachtige mainframe naar een klein apparaat. Hierin zit de essentie van een hiƫrarchisch bestandssysteem, een aparte shell en procesbeheer op gebruikersniveau, iets wat Multics op mainframes niet kon realiseren na honderden man-jaren ontwikkeling. De tekortkomingen van Unix (zoals de recordstructuur in het bestandssysteem) waren even leerzaam en bevrijdend als de innovaties (zoals invoer-uitvoer omleiding in de shell).

dc

De wiskundige bibliotheek voor de desktopcalculator met variabele precisie van Robert Morris gebruikte teruganalyse van fouten om de vereiste precisie op elke stap vast te stellen om de door de gebruiker gewenste precisie van het resultaat te bereiken. Tijdens de NATO-conferentie over software-engineering in 1968 heb ik in mijn lezing over softwarecomponenten standaardprocedures voorgesteld die elk gewenste precisie konden geven, maar ik wist niet hoe ik ze in de praktijk moest implementeren. dc blijft tot op heden het enige programma dat ik ken dat in staat is tot zoiets.

typo

Typo ordent de woorden in de tekst op basis van hun gelijkenis met de rest van de tekst. Typfouten zoals ā€˜hte’ hebben de neiging om onderaan de lijst te verschijnen. Robert Morris zei trots dat het programma even goed zou werken voor elke taal. Hoewel typo niet helpt bij het vinden van fonetische fouten, is het een echte vondst geworden voor iedereen die tekst typt en was zeer nuttig voordat er veel minder interessante, maar nauwkeurigere spellingscontrole op basis van woordenboeken beschikbaar kwam.

Typo is just as unexpectedly structured inside as it is outside. The similarity measurement algorithm is based on the frequency of trigrams that are counted in an array of 26Ɨ26Ɨ26. In tiny memory, there was barely enough space for single-byte counters, so a scheme for compressing large numbers into small counters was implemented. To avoid overflow, counters were updated on a probabilistic basis, maintaining an estimate of the logarithm of the counter value.

eqn

With the advent of phototypesetting, it became possible, though terribly tedious, to output classical mathematical notation. Lorinda Cherry decided to develop a higher-level description language, and soon Brian Kernighan joined her. Their brilliant move was to express the oral tradition in written form, making eqn surprisingly easy to learn. The first of its kind, the eqn preprocessor for mathematical expression description has seen little improvement since then.

struct

Brenda Baker initiated the development of her Fortran-to-Ratfor converter against the advice of her boss—me. I thought it might lead to a special reordering of the source text. It would be free from statement numbers but otherwise no more readable than well-structured Fortran code. Brenda proved me wrong. She discovered that every Fortran program has a canonically structured form. Programmers preferred the canonical form over what they originally wrote.

pascal

Syntax diagnostics in the compiler developed by Sue Graham's group at Berkeley were the most helpful of any I have ever seen—and it was done automatically. When a syntax error occurs, the compiler suggests inserting a lexeme to continue the parsing. No attempts to explain what went wrong. With this compiler, I learned Pascal in one evening without any manual at hand.

parts

The module hidden inside the WWB (Writer’s Workbench) package parts Lorinda Cherry definieert de woordsoorten voor woorden in Engelse teksten op basis van slechts een kleine woordenlijst, spellingregels en grammatica. Met deze annotatie genereert het WWB-programma stilometrische indicatoren van de tekst, zoals de prevalentie van bijvoeglijke naamwoorden, bijzinconstructies en complexe zinnen. Toen Lorinda een interview gaf in het tv-programma Today op NBC en sprak over de innovatieve grammaticacontrole in teksten met WWB, was dat de eerste vermelding van Unix op televisie.

egrep

Al Aho rekende erop dat zijn deterministische reguliere expressie-ontlener de klassieke niet-deterministische ontlener van Ken zou inhalen. Helaas was de laatste al bezig met zijn doorlooptijd voor complexe reguliere expressies terwijl egrep hij zijn deterministische automaat aan het bouwen was. Om deze race toch te winnen, omzeilde Al Aho de vervloeking van de exponentiƫle groei van de toestanden tabel van de automaat door een manier te vinden om on-the-fly alleen die records van de tabel te construeren die daadwerkelijk worden bezocht tijdens de herkenning.

krabben

Het betoverende meta-programma van Luca Cardelli voor het Blit venstersysteem genereerde virtuele krabben die rondliepen in de lege ruimte van het scherm, steeds meer bijten in de randen van actieve vensters.

Enkele algemene gedachten

Hoewel het niet van buitenaf zichtbaar is, hebben theorie en algoritmes een cruciale rol gespeeld in de creatie van de meeste van deze programma's: typo, dc, struct, pascal, egrep. Wat eigenlijk het meest verrast, is het ongewone gebruik van de theorie.

Bijna de helft van de originele auteurs van de lijst — pascal, struct, parts, eqn — waren vrouwen, wat aanzienlijk hoger is dan het demografische aandeel van vrouwen in de informatica.

Douglas McIlroy
Maart 2020


Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster