Quip

Eine Programmiersprache

Quip
Quip hat das Ziel die erste Universelle Programmiersprache zu sein.
Dieses Ziel wird erreicht indem Quip keine Annahmen macht und Libraries soviel kontrolle wie möglich gibt, z.B. ist der Syntax erweiterbar und Compile-Time-Execution ist eines der Wichtigsten features
Die Sprache ist noch nicht nutzbar und in Planung + Entwicklung
Hier ist eine Übersicht von Features welche schon geplant sind
  • Automatic Compile Time Memory Management
    Es gibt 3 Hauptverfahren wie existierende Sprachen Memory Managen:
    • Garbage Collector - Langsamer, aber Sicher, Einfach und Automatisch (z.B. Python, Java, Javascript, Go)
    • Manual Memory Management
    • - Schnell, aber unsicher und schwer (z.B. C, C++, Zig)
    • Ownership & Borrowing
    • - Schnell und Sicher, aber limitierend und schwer zu lernen (Rust, C++ unique pointers)
    Alle diese verfahren haben Probleme, Quip nutzt ein anderes Verfahren wo der Compiler via Static Analysis herausfindet wie Werte genutzt werden und aus vielen Verschiedenen Strategien die beste auswählt
  • Async/Sync Identity
    In Quip kann jede Async function auch Sync genutzt werden, z.B.:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 async fn test() -> _ { return 1 } fn main1() { let a = test() // async wird sync genutzt } async fn main2() { let a_future = test.async() let a = a_future.await // oder 1 Zeile let a = test.async().await }
  • Auto-Locking
    In Quip gibt es wie in Rust die möglichkeit manuell Locking via Mutex, RwLock und mehr zu machen, aber sonst macht Quip das automatisch, z.B.:
    1 2 3 4 5 6 7 let a = 1 os.thread.spawn(|| { a += 2 }) println(a)
    In Rust würde das ein Error sein, in C++ würde das zu undefiniertem Verhalten führen (data-race), in Quip wird automatisch ein Atomic genutzt
moeglich.dev - Jeremy Möglich - 2024
Source: GitHub