OK kids, back to programming.
I am stating some of my opinions on what should be in my dream programming language here. This will be an evolving set of ideas, I will be updating them as I learn more.
Functional Requirements
- Lexical scoping
- Static typing
- Pointers
- Object Orientation
- Java Interfaces ( Contracts )
- One class per file
- Java style namespaces ( packages )
- Checked Exceptions
- No mandatory garbage collection ( facilitate RAII )
- Single inheritance, multiple implementation
- Data types : String ( buffer + size ), int, float, char, boolean, hashes, arrays, structures
- Reflection
- Annotations
- C style syntax where possible ( no white space based scoping )
- Automatic destructor invocation ( avoid @Predestroy from Java )
- Specification and test suite, but also a reference implementation
- Generics
Non-functional requirements
- Integrated Development Environment ( IDE ) friendly
- Blue collar language
- Fast start up
- Fast execution
- Easy to hot load code
- Compiled
- Leave portability to LLVM
- After decades of “Sufficiently smart profiling JIT compiler should run code faster than sufficiently smart optimizing AOT compiler” it still has not materialized
This language should be developed under a Benevolent Dictator For Life ( BDFL ) model -as opposed to design by committee- and should also consist of a maven style declarative build system with sensible defaults.
What features would be present in your dream programming language ?
#2 is mandatory for me as well, I hate pulling my hair off dynamic code