Zum Inhalt springen
hanse-computing.de
  • Moin
  • Über uns
  • Leistungen
  • Projekte
  • Neuigkeiten
  • Wissen
    • Netzwerktechniken
    • Systemadministration
    • Hardware-Spezifikationen
    • KI & Automatisierung
    • Glossar
      • Fachbegriffe
      • Programmiersprachen-Befehle
    • Datenbanken
    • IT-Grundlagen
    • Python: Grundlagen
    • Python: Datenstrukturen
    • Python: Dateien & IO
    • Python: Web & Frameworks
    • Python: Fehler & Debugging
    • Webentwicklung
    • Linux & Betriebssysteme
    • IT-Sicherheit
    • Cloud & Container
    • Tools & Software
    • Netzwerk: TCP/IP
    • Netzwerk: DNS & Dienste
    • Netzwerk: Sicherheit
    • Netzwerk: Tools
    • KI: Grundlagen
    • KI: Praxis
    • KI: LLM & Agenten
    • Hardware: Server
    • Hardware: Netzwerkgeräte
    • Hardware: Peripherie
    • Wiki-Startseite
    • Letzte Änderungen
    • Kategorie-Browser
    • Zufallsartikel
  • Infrastruktur
  • AI Easy Start
  • Test-Drive
  • Kontakt
  • Impressum
  • Datenschutz

Sprache auswählen

  • Deutsch (Deutschland)
  • English (United Kingdom)
  1. Aktuelle Seite:  
  2. Startseite
  3. Wissen
  4. Glossar
  5. Programmiersprachen-Befehle

Ivy-Befehle: Schnellreferenz für den APL-ähnlichen Taschenrechner

Ivy ist ein Interpreter für eine APL-ähnliche Sprache von Rob Pike (Mitentwickler von Go und Plan 9). Pike bezeichnet Ivy selbst als „plaything and work in progress": einen spielerischen, aber vollwertigen Taschenrechner und Array-Interpreter, der seit 2014 entsteht und in Go geschrieben ist. Ivy nutzt statt der APL-Sonderzeichen eine ASCII-Eingabe und ist damit deutlich zugänglicher als klassisches APL.

Installation und Start

go install robpike.io/ivy@latest
ivy

Wichtige Befehle und Konzepte

  • Exakte Arithmetik: rationale Zahlen beliebiger Genauigkeit, z. B. 1/3; komplexe Zahlen als ein Token 1j2
  • Recht-assoziative Auswertung: 3*4+5 ergibt 27 (gruppiert als 3*(4+5))
  • Vektoren: 1 2 3 ist ein einzelner Operand
  • iota: iota 3 ergibt 1 2 3 (Index-Generator)
  • Indexierung: x[1], x[1;2], x[] (alles) und x[;3] (Spalte)
  • Zuweisung: x = 5 (Zuweisung ist ein Ausdruck); _ hält das letzte Ergebnis

Operatoren

iota 3        # 1 2 3
rho 2 3 4     # 3 (Form/Shape)
count 1 2 3   # 3 (Anzahl Elemente)
flatten 1 2 3 # 1 2 3 (Ravel)
not 1         # 0
abs -5        # 5
ceil 3.2      # 4
floor 3.8     # 3
! 5           # 120 (Fakultät)
sqrt 16       # 4
up 3 1 2      # 2 3 1 (Indizes für aufsteigende Sortierung)

Dazu kommen + - * / für Addition, Subtraktion, Multiplikation und Division (als / für Reciprocal), Vergleichsoperatoren, where, unique, box, first, last, split, mix, inv (Matrix-Inverse), rot/flip (Reversal), trigonometrische Funktionen (sin, cos, tan, atan ...) sowie real/imag für komplexe Zahlen. Spezialbefehle starten mit ), z. B. )demo und )help.

Verwandte Grundlagen: APL-Befehle, Q-Befehle, Nial-Befehle, BQN-Befehle.

BQN-Befehle: Schnellreferenz für modernes Array-Programmieren

BQN ist eine moderne Array-Programmiersprache, die Marshall Lochbaum ab 2020 entworfen hat („An APL for your flying saucer"). BQN führt Ken Iversons Array-Paradigma fort, ersetzt aber die schwer lesbaren APL-Symbole durch eine konsistente, Unicode-basierte Notation mit klarer Trennung von Funktionen, Modifiern und Train-Ausdrücken. Lochbaum war zuvor J-Entwickler; BQN ist seine Antwort auf Lesbarkeit und moderne Tooling-Lücken der älteren Array-Sprachen.

Einstieg

bqn            # REPL starten (CBQN)
bqn prog.bqn   # Datei ausführen

Wichtige Primitive

  • Arithmetik: +, -, × (Multiplikation), ÷ (Division), √, ⋆ (Potenz) — vektorisieren automatisch
  • Logik/Vergleich: ∧, ∨, ¬, ≤, <, >, ≥, =
  • Arrays: ↕ (Range), ∾/≍/⋈ (Verknüpfen), ⊑/⊏ (Indizieren), ↑/↓ (Präfix/Suffix), ⥊ (Reshape)
  • 1-Modifier: ˜ (dupliziert/tauscht), ¨ (Map), ´ (Fold), ` (Scan)
  • 2-Modifier: ∘/○ (Komposition), ⊸/⟜ (Hooks)

Beispiele

1 + 2 ‿ 3 ‿ 4        # 3‿4‿5 (Vektorisierung)
↕ 5                  # 0‿1‿2‿3‿4 (Range, 0-basiert)
(+´÷≠) 1 ‿ 2 ‿ 3     # 2 (Durchschnitt als Train)
1 ÷ 2 + 3            # 0.2 (rechts-nach-links-Auswertung)
a ← 1 ‿ 2 ‿ 3        # Zuweisung mit ←

Negative Zahlen schreibt BQN mit Hochminus (¯1), damit das Minus nicht mit dem Subtraktionsoperator kollidiert; π und ∞ sind eingebaute Konstanten. Blöcke { ... } sind lexikalisch gescopt, Argumente heißen 𝕨/𝕩, Rekursion 𝕊. Die Referenzimplementierung ist selbst-hostend (Compiler erzeugt Bytecode); CBQN ist die schnelle C-Implementierung, daneben existieren Implementierungen in JS, Java, Rust und weiteren Sprachen.

Verwandte Grundlagen: APL-Befehle, J-Befehle, K-Befehle, Nial-Befehle, Ivy-Befehle.

SNOBOL-Befehle: Pionier der String-Verarbeitung im Überblick

SNOBOL (StriNg Oriented symBOlic Language) ist eine der ersten Programmiersprachen, die vollständig auf die Verarbeitung von Texten ausgelegt war. Entwickelt wurde sie zwischen 1962 und 1967 an den Bell Laboratories von David J. Farber, Ralph E. Griswold und Ivan P. Polonsky – mit SNOBOL4 (1967) als bekanntester und portabler Version.

Idee und Pattern Matching

Anders als bei numerisch orientierten Sprachen steht in SNOBOL das Pattern Matching im Mittelpunkt: Ein Muster beschreibt, wie ein Textausschnitt aussehen muss, und wird gegen eine Zeichenkette abgeglichen. Diese Muster können beliebig komplex zusammengesetzt werden.

* Kommentare beginnen mit * in Spalte 1
          LINE = "abc123"
          LINE SPAN(&LCASE) . LETTERS
          OUTPUT = LETTERS

Die wichtigsten Musterfunktionen sind SPAN (alle Zeichen einer Menge fressen), BREAK (bis zu einem Zeichen der Menge), ANY (genau ein Zeichen aus der Menge) und BAL (balancierte Klammerausdrücke). Mit ARBNO lassen sich Wiederholungen ausdrücken.

Statement-Aufbau und Goto

Jede SNOBOL4-Anweisung folgt dem Schema LABEL SUBJECT PATTERN = REPLACEMENT :GOTO. Das Besondere ist der Goto-Teil: :S(erfolg) springt bei Erfolg, :F(fehler) bei Misserfolg einer Operation – eine frühe Form der bedingten Ablaufsteuerung.

          OUTPUT = "Bitte Namen eingeben:"
          INPUT = NAME
          NAME "Maier" :S(GEFUNDEN)
          OUTPUT = "Nicht gefunden" :(ENDE)
GEFUNDEN  OUTPUT = "Hallo " NAME
ENDE

Mit DEFINE() definiert man eigene Funktionen, mit TABLE() assoziative Arrays. Der Operator $ erlaubt die indirekte Referenz auf Variablen.

Bedeutung und Nachfolger

SNOBOL4 wurde ab den 1970er-Jahren von Ralph Griswold an der University of Arizona weitergepflegt; freie Implementierungen wie Spitbol und CSNOBOL4 halten die Sprache bis heute am Leben. Als moderner, strukturierter Nachfolger entstand aus derselben Entwicklungslinie Icon – und daraus später Unicon.

Icon-Befehle: Generatoren und String-Scanning in der Praxis

Icon ist eine höhere, strukturierte Programmiersprache, die Ralph E. Griswold ab 1977 an der University of Arizona als modernen Nachfolger von SNOBOL4 entwarf; die erste Version erschien 1979. Icon verbindet die Textstärke von SNOBOL mit einer an Pascal und C erinnernden Syntax.

Goal-directed Evaluation

Das Herzstück von Icon ist die zielgerichtete Auswertung (goal-directed evaluation): Ein Ausdruck liefert entweder einen Wert und Erfolg oder schlägt fehl. Fehlgeschlagene Teilausdrücke lösen automatisch Backtracking aus – vergleichbar mit Prolog, aber eingebettet in eine imperative Sprache.

procedure main()
   every i := 1 to 10 do
      write(i)
end

Das Schlüsselwort every erzwingt alle Ergebnisse eines Generators. Auch suspend (Wert liefern und später fortsetzen) und fail (Fehlschlag melden) steuern Generatoren.

String-Scanning

Für Textarbeit bietet Icon das String-Scanning: Mit s ? expr wird eine Zeichenkette zum aktuellen Scan-Kontext, in dem Positionen untersucht und verändert werden.

procedure main()
   s := "alpha,beta,gamma"
   s ? {
      while tab(upto(',')) do
         write(tab(many(',')) | "")
   }
end

Die wichtigsten Scan-Funktionen sind tab() (bis Position vorgehen und Teil zurückgeben), move() (n Zeichen), upto() (Position eines Zeichens aus einer Menge), many() (alle Zeichen einer Menge), any(), find() (Teilstring suchen) und bal() (balancierte Klammern).

Praktische Hinweise

  • Strukturen: list(), table() (assoziative Arrays), set()
  • Konvertierungen: integer(), string(), cset()
  • Compiler icont, Interpreter iconx

Icon blieb über zwei Jahrzehnte aktiv und mündete schließlich in die objektorientierte Erweiterung Unicon.

Unicon-Befehle: Objektorientiertes Icon für moderne Systeme

Unicon ist eine objektorientierte Erweiterung von Icon, die seit den 1990er-Jahren an der University of Arizona entstand (maßgeblich Clinton Jeffery, später auch Ralph Griswold). Sie erweitert die zielgerichtete Auswertung und das String-Scanning von Icon um Klassen, moderne System-Schnittstellen und Netzwerkfunktionen – ohne die Icon-Programme zu brechen.

Klassen und Methoden

Unicon ergänzt Icon um class-Blöcke mit method-Definitionen und einem initially-Konstruktor. Vererbung und Polymorphismus funktionieren wie in anderen objektorientierten Sprachen.

class Point(x, y)
   method print()
      write("(", x, ", ", y, ")")
   end
   initially(x, y)
      self.x := x
      self.y := y
end

procedure main()
   p := Point(1, 2)
   p.print()
end

Erweiterte Schnittstellen

  • Systemzugriff: POSIX-Prozesse, Pipes und Dateisystem-Operationen
  • Netzwerk: Sockets und Protokolle für Client-/Server-Anwendungen
  • Grafik: GUI-Programme mit Fenstern und Events
  • Datenbanken: SQL-Schnittstellen für gängige Datenbanken
  • C-Integration: Einbindung von C-Bibliotheken (Dynamic Loading)

Werkzeuge

Das Kommandozeilenwerkzeug unicon ist ein Wrapper um den Icon-Compiler icont; die Programme laufen in der Icon-Runtime iconx. Damit ist Unicon ein praktischer Einstieg, wenn man die eleganten Icon-Konzepte (Generatoren, String-Scanning) mit moderner objektorientierter Programmierung kombinieren möchte.

Die Wurzeln der Familie reichen bis SNOBOL zurück, der ersten großen String-Sprache aus den Bell Laboratories.

  1. QuickBASIC-Befehle: Schnellreferenz für Compiler und IDE
  2. bc-Befehle: Schnellreferenz für den Rechner mit beliebiger Genauigkeit
  3. QBasic-Befehle: Schnellreferenz für den MS-DOS-BASIC-Interpreter
  4. Sonic Pi-Befehle: Schnellreferenz für Live Coding und Musik-Programmierung

Seite 26 von 46

  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
hanse-computing.de

hanse-computing.de – KI-gestützte Dienstleistungen aus Lübeck.

hanse-computing.de
IT-Dienstleistungen aus der Hansestadt
Über uns · Projekte · Neuigkeiten · Affiliate
Impressum · Datenschutz
© 2026 hanse-computing.de
© 2026 hanse-computing Impressum Datenschutz