Documentation of the Mamba Language

View the Project on GitHub JSAbrahams/mamba_doc

🏠 Home

1 💭 Philsophy of the Language

1.1 Inspirations of the Language

The following is a list of programming languages that inspired this one in one way or another. This can either be certain constructs or keywords in the language, or the philosophy of the language as a whole. It should be noted that this is based on my personal experience with these languages. It may be that a certain feature of a certain language did inspire a certain feature of Mamba, but that does not mean that another language does not contain said feature, only that I encountered it there first.

Language Inspired
Python Flexibility. Co-existence of functional and OOP paradigms. Large portions of the syntax.
Java OOP concepts. Static typing rules.
C# OOP concepts. Static typing rules and type inference.
Scala That everything is an object, including primitives of the language. Pattern Matching.
Kotlin Ranges baked into the language. Type aliases. Covariance and Contravariance using in and out.
Ada Custom data types (or type aliases) with ranges, which also partially inspired the type refinement system. Use of natural language over symbols, such as using and as opposed to &&.
C++ OOP concepts and operator overloading.
C General programming concepts. Not so much a direct inspiration but more a general influence.
Eiffel The design by contract philosophy and the retry keyword. Design by contract also inspired the type refinement system.
Haskell Pattern Matching. Immutability. Closeness of mapping with mathematical notation, for instance set constructor notation.
Rust Error handling mechanisms and strict rules regarding mutability.
Ruby Portions of the syntax of the language.
Swift Elegant error handling mechanisms.
Go Error handling mechanisms, which encourage error handling on site.
MATLAB Small portions of the syntax.
SmallTalk OOP concepts, with a large emphasis on program state.
JavaScript Interchangeability of variables and functions, and a reliance on higher-order functions.
Perl The forward keyword.

My experience with each language varies greatly, from having used it on a near daily basis, to only having read about it online and only have a conceptual understanding of its workings. Below I outline a bit what each language aims to do, and how well I believe that it achieves these goals. The groupings might seem somewhat arbitrary to the reader, and to some extent it is. I grouped them mostly by what I perceived to be their intended design goals. Though their grouping depends heavily on the narrative, I’m sure that someone

The Pure OOP’s: Java, SmallTalk, C#, C++, Eiffel

The Pure Functionals: Haskell

The Somewhere in Betweens: Python, Kotlin, Scala, Swift

The Scripting Languages: Perl, JavaScript

The Structurals: Ada, C, Rust, Go