Skip to content

Beginner de

Enoch-199811 edited this page Aug 9, 2026 · 1 revision

English | 中文 | Русский | Español | Português | 繁體中文 | Deutsch

Einsteiger — erste Schritte mit BioLang

Diese Seite vermittelt die Kernkonzepte und den Kontrollfluss. Du brauchst nichts weiter als ein gebautes bio-Binary und einen Texteditor.

Was ist BioLang?

BioLang ist eine streamorientierte Sprache. Statt „alles ist ein Objekt" gilt hier: alles ist ein Stream — ein Fluss von Anfragen und Antworten. Jede Operation, die du ausführst, ist eine Anfrage, die abgelehnt werden kann. Dadurch ist die Fehlerbehandlung ein erstklassiger Bestandteil der Sprache und kein nachträglicher Einfall.

Dein erstes Programm ausführen

Baue den Interpreter:

make
# → bin/bio

Erstelle hello.bio:

program main;

Main {
    void exec() {
        CIO::println("Hello, BioLang!");
    }
}

Führe es aus:

bin/bio hello.bio
# Hello, BioLang!

Jedes Programm hat dasselbe Grundgerüst:

  • program main; — deklariert, dass diese Datei ein Hauptprogramm ist (es hat einen Einstiegspunkt).
  • Main { ... } — der Hauptprogramm-Stream.
  • void exec() { ... } — die Methode, die beim Programmstart ausgeführt wird.

Basistypen und Variablen

Fünf Basistypen:

Typ Bedeutung Beispiel
int Ganzzahl 42, -7
float Zahl mit einfacher Genauigkeit 3.14
double Zahl mit doppelter Genauigkeit 3.14159265358979
string Text "hello"
char einzelnes Zeichen 'x'

Variablen deklarieren:

int age = 30;
string name = "BioLang";
double pi = 3.14159;
char grade = 'A';

Eine const ist eine schreibgeschützte Konstante auf Programmebene:

const int SPEED = 9;

Das Anfragemodell: res, ref, get, cause

Jeder Aufruf liefert ein Anfrageergebnis zurück, das entweder ein Erfolg (res) oder eine Ablehnung (ref) ist. Das ist das Herzstück von BioLang.

ALL result = add(3, 4);     // a request result

Mit get entpackst du einen Erfolg, mit cause erhältst du den Ablehnungsgrund:

CIO::println(get add(3, 4));        // 7
CIO::println(cause div(1, 0));      // refused: division by zero
  • get x — der Wert einer erfolgreichen Anfrage.
  • cause x — der Grund, warum eine Anfrage abgelehnt wurde.
  • ALL x = ... — erfasst beides; .res und .cause funktionieren ebenfalls.

Operatoren

Arithmetik: + - * / %

int a = 7 + 3;      // 10
int b = a * 2;      // 20
int c = b / 7;      // 2  (integer division)
int d = b % 7;      // 6  (remainder)

Inkrement und Dekrement: i++, i--, plus zusammengesetzte Formen.

Kontrollfluss

if / else if / else

if (score >= 90) {
    CIO::println("A");
} else if (score >= 60) {
    CIO::println("B");
} else {
    CIO::println("C");
}

while

int i = 0;
while (i < 5) {
    CIO::println("i =", i);
    i = i + 1;
}

for

for (int i = 0; i < 5; i = i + 1;) {
    CIO::println("square", i, "=", i * i);
}

Beachte das ; nach dem Update-Ausdruck — die drei Klauseln werden durch Semikolons getrennt, und der gesamte Kopf endet mit ;.

break und continue

for (int i = 0; i < 10; i = i + 1;) {
    if (i == 3) continue;    // skip 3
    if (i == 7) break;       // stop at 7
    CIO::println(i);
}

Konsolen-Ein- und -Ausgabe

CIO::print("Enter your name: ");     // no newline
string name = CIO::getln();          // read a line of text
CIO::println("Hello,", name);        // prints: Hello, <name>

CIO ist der Konsolen-Stream: print, println, get, getln, readInt, readNumber.

Alles zusammensetzen

Ein kleines Ratespiel (nutzt alles oben Genannte):

program main;

Main {
    void exec() {
        const int SECRET = 7;
        CIO::println("Guess the number (1-10)!");

        for (int tries = 0; tries < 3; tries = tries + 1;) {
            int guess = CIO::readInt();
            if (guess == SECRET) {
                CIO::println("Correct! You win.");
                res;                  // success, end the program
            } else if (guess < SECRET) {
                CIO::println("Too low.");
            } else {
                CIO::println("Too high.");
            }
        }
        CIO::println("Out of tries. The answer was", SECRET);
    }
}

Wie es weitergeht

  • Fortgeschrittene — Streams, Klassen, Dateien, Projekte, Threads.
  • Experte — intelligente Referenzen, Binärbibliotheken, Paketierung, plattformübergreifende Builds.
  • Beispiele im Repository — 15 ausführbare, ausführlich kommentierte Programme.

Clone this wiki locally