Planning The Polar Programming Language
Over the years I like bits and pieces of certain programming languages and developed a preference. I wanted to build a programming language called Polar to collect it all in. I don't have the brainpower to build an interpreter for the language in C, so at best all I can do is dump out my feature list in great detail, copyright it in a book, and try to get someone else to agree they like it and build it. Here's my list of features:
- is a language built on top of Larry Wall's Parrot runtime
- dynamic typing instead of static
- namespaces with shortcut addressing and "using x {}" control structure
- curly braces instead of begin/end-type clauses
- semicolons instead of line wraps
- OOP features about to the level of PHP5
- methods and properties accessed with period character instead of "::", ":::", or "->"
- must have foreach object/array iteration
- C-like for, switch/case, if/else/elseif, while, do, break/continue, etc. control structures
- is a scripting language instead of needing to be compiled
- starts off as a rich command line language and evolves into the web
- rich set of namespace components
- default set of namespace components can do most common programming tasks, while others may be added for more obscure things
- easy to build your own namespace component in C
- indenting style has no chance of becoming a Python-like syntax error and indenting is encouraged, not required
- uniform parameter order and namespace naming for namespace components
- runs about as fast as Perl
- tries to keep things simple and doesn't have Perl's shortcuts that can make for hard-to-read code
- is about as far removed from SmallTalk, Lisp, Scheme, and Ruby as can be
- supports piped-to-shell processes much like PHP
- has a goal of being the world's general purpose cross-platform language and can be taught in schools even to CS 101 students
- doesn't follow the principle of "everything is an object" which slows the interpreter down
- encourages but does not require use of classes to get code done, permitting very short scripts to be possible
- class reflection
- easy to use thread-safe multithreading
- linked lists, stacks, and queues are super-easy to implement
- built-in API security
- ability for some sysadmins to block certain API features or function calls
- public, private, protected class access control
- built-in garbage collection
- no nested functions/methods
- PHP-style arrays with ability to go 8 dimensions
- the language should try to work about the same on Mac, Linux, and Windows rather than having to write exception logic for the platform
- named parameters possible
- PHP-like function/method/property declaration
- PHP-like byref addressing
- supports try/catch/throw
- supports deep global variable scope such that functions called by functions also support the global variable scope
- built-in Unicode support by default without having to use special namespace component methods for that
- Perl-like quotes
- string concatenation with asterisk instead of plus, period, or ampersand
- PHP-like logical comparisons with ==, ===, !=, etc.
- all variables begin with dollar sign ($)