Wieso heißt copy bei VIM und EMACS yank?
yank Erklärung 1
von Gilles ‘SO – stop being evil’ `15. Juni 2015
Der Text wird (yanked) in das Register gezogen, um später verwendet zu werden.
Die Emacs-Version 1, die etwa zur gleichen Zeit wie vi entstand, verwendete bereits kill/yank, was sie von TECO übernommen hatte.
TECO (ausgesprochen tee-koh) war ein äußerst einflussreicher Texteditor, der in den frühen 1960er Jahren am Massachusetts Institute of Technology (MIT) entwickelt wurde. Sein Name stand ursprünglich für “Tape Editor and COrrector” (Band-Editor und -Korrektor), was sich auf die Verwendung mit Lochstreifen bezog, und später für “Text Editor and COrrector”
TECO geht auf das Jahr 1962 zurück, aber ich weiß nicht, ob die erste Version bereits diese Befehle enthielt. Ich habe PDP-8-Handbücher gefunden, die den yank-Befehl erwähnen, aber es könnte sein, dass es sich nicht um die ursprünglichen PDP-8-Handbücher handelt. Dennoch scheint es, dass „yank“ im Sinne von „einfügen“ (das Wort, das bei Xerox in der Mitte der 1970er Jahre gewählt wurde und zum Standard wurde, als normale Menschen grafische Benutzeroberflächen bekamen) bereits ein Begriff war, als Joy vi schrieb.
yank Erklärung 2
Als ich vi zum ersten Mal lernte, dachte ich, dass „yank“ nach dem gleichnamigen Befehl in TECO benannt wurde. TECOs „yank“ las die nächste Seite der Eingabedatei in den Textpuffer – nicht genau dasselbe wie das, was y in vi macht, aber ähnlich. Ich weiß allerdings nicht wirklich, ob es Bill Joy beeinflusst hat oder nicht.
yank Erklärung 3
von Kaz 19. Dezember 2013
Das Wort yank bedeutet einfach „ziehen“. Daten werden aus dem Puffer in ein Register gezogen: entweder in das Standardregister oder in ein benanntes.
In der Informatik werden Metaphern für physische Bewegungen oder sogar Lautmalerei verwendet, um Datenübertragungen zu bezeichnen. Wir schieben (push) auf einen Stapel (Stack) und ziehen (pull) oder holen (pop) davon. Wir laden (load) Daten oder speichern (store) sie. Wir bewegen (move) sie von einem Ort zum anderen.
All diese Datenbewegungen sind tatsächlich Kopiervorgänge. Yank bedeutet nicht mehr „kopieren“ als push, pull, pop, load, store, extract, retrieve, fetch, return, check out und andere. Wir wissen, dass sie Kopieren bezeichnen, wegen des Kontexts der Datenübertragung. Wir wissen, dass wir, wenn wir etwas aus einem Repository „auschecken“ (check out), am Ende eine Arbeitskopie haben, während das Repository intakt bleibt; dennoch bedeutet „check out“ (ein Bibliotheksbuch oder aus einem Hotel) nicht „kopieren“.
Vermutlich hat der Designer von vi einen unbenutzten Buchstaben für den Vorgang vergeben und dann in möglichen Wörtern nach einem Gedächtnisstütze (Mnemonic) für diesen Buchstaben gesucht: ein Wort, das Datenextraktion oder -übertragung bezeichnet.
Man kann erwarten, dass man „yank“ als Synonym für „pull“ in jedem anständigen Thesaurus findet. Der Eintrag „extract (Verb)“ auf thesaurus.com führt „yank“ auf. Wenn man also nach einem Wort sucht, das Datenextraktion bezeichnet und mit Y beginnt, muss man nicht lange suchen.
Warum blättert die Leertaste weiter
Quelle: Why does the space bar do page down in browsers
Leertaste Erklärung 1
Der historische Grund dafür ist, dass die Leertaste genau das in more macht, dem einfachsten (und wahrscheinlich ältesten) Textbetrachter (Pager). Bei more ergibt es Sinn, die größte Taste auf der Tastatur der häufigsten Aktion zuzuordnen: die nächste Seite anzeigen.
In den glorreichen Tagen von more konnte man sich nicht auf Maus-Scrollräder, Bild-ab-Tasten oder manchmal nicht einmal auf Pfeiltasten verlassen. more hat nicht einmal eine „Bild-auf“-Funktion (man kann nicht zurückblättern).
Obwohl in der textbasierten Welt more größtenteils durch leistungsfähigere Betrachter wie less (der kann rückwärts blättern) ersetzt wurde, ist diese Leertasten-Konvention geblieben und hat sogar den Weg in die Welt der grafischen Benutzeroberflächen gefunden.
Leertaste Erklärung 2
„Drücke die Leertaste, um fortzufahren“ war in der Zeit vor grafischen Benutzeroberflächen in den 1980er-Jahren eine sehr verbreitete Methode, um durch eine Anwendung zu navigieren, wahrscheinlich weil es die größte Taste war. Manche Anwendungen implementierten „Drücke eine beliebige Taste, um fortzufahren“. Das war etwas riskant, da es nicht wirklich „beliebig“ bedeutete – das Drücken von Escape oder Break würde das Programm wahrscheinlich beenden, und es wird behauptet, dass manche Leute die „Beliebige-Taste“ nicht finden konnten.
Zusammenhang
Geschichte VIM
Hier im Blog Vim Zeitgeschichte - Time Table
TECO
TECO (ausgesprochen tee-koh) war ein äußerst einflussreicher Texteditor, der in den frühen 1960er Jahren am Massachusetts Institute of Technology (MIT) entwickelt wurde. Sein Name stand ursprünglich für “Tape Editor and COrrector” (Band-Editor und -Korrektor), was sich auf die Verwendung mit Lochstreifen bezog, und später für “Text Editor and COrrector”.
Die wichtigsten Eigenschaften
- Eine Programmiersprache für Text: TECO war nicht nur ein einfacher Editor, sondern eine vollwertige, interpretierte Programmiersprache, die speziell für die Textmanipulation entwickelt wurde. Das bedeutete, dass man komplexe Makros schreiben konnte, um Texte automatisch zu bearbeiten.
- Berüchtigt schwierige Syntax: Die Syntax von TECO galt als extrem kryptisch. Jedes Zeichen war ein Befehl, und es gab praktisch keine Einschränkungen, wie diese Befehle kombiniert werden konnten. Ein bekannter Scherz unter Hackern war es, den eigenen Namen als TECO-Befehl einzugeben und zu raten, was passieren würde – es war fast garantiert, dass etwas passierte, wenn auch nicht unbedingt etwas Nützliches.
Geschichte und Einfluss
- Der Vorfahr von Emacs: TECOs größter Einfluss auf die Computergeschichte ist seine Rolle als Grundlage für den Editor Emacs. Die erste Version von Emacs wurde 1976 von Richard Stallman als eine Sammlung von Makros für TECO geschrieben. Der Name “Emacs” stand ursprünglich für “Editing MACroS” und verwies direkt auf diese Herkunft.
- Einfluss auf vi?: Es wird oft spekuliert, dass TECO auch den Befehl “yank” im vi-Editor beeinflusst hat, da der Begriff und ähnliche Operationen bereits in TECO existierten, lange bevor Bill Joy vi entwickelte. Einige Zeitgenossen halten es für sehr wahrscheinlich, dass die Entwickler von vi TECO kannten oder davon beeinflusst waren.
Obwohl TECO heute größtenteils von Emacs und anderen modernen Editoren abgelöst wurde, bleibt es ein wichtiges Kapitel in der Geschichte der Softwareentwicklung, das den Grundstein für einige der bis heute genutzten Editierkonzepte legte.
Quellen
- DBpedia (Japanisch) – Text Editor and Corrector
- RWTH Aachen – Jargon File Eintrag zu TECO
- The Unix Heritage Society – Mailingliste zu TECO und Emacs
- Archive-It – Wikipedia-Archiv zu TECO
- Computer History Museum – Emacs Historical Archive
- Archive-It (QA) – Wikipedia-Archiv zu TECO
- ENLS Digital Resources – TECO-Artikel
- Wikipedia (Englisch) – Text Editor and Corrector
- Internet Society – Mailingliste zur Geschichte von cut and paste
- heise online – Forum zu TECO
- IEEE Xplore – The Beginnings of TECO (von Dan Murphy)
- The Unix Heritage Society – Mailingliste zu alten Bildschirmeditoren