My views on software, programming, Linux, the Internet, government, taxation, working, and life.

Monday, January 08, 2007

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 ($)

Creating Linux Apps in XUL

This is the image that I have for the article: