- Functional
- Imperative
- Object-oriented
- Procedural
- Stack-based
- "Multi-paradigm"
- Lazy
- Eager
- Statically-typed
- Dynamically-typed
- Pure
- Impure
- Non-hygienic
- Visual
- Beginner-friendly
- Non-programmer-friendly
- Completely incomprehensible
...programming language.
You appear to believe that:
- Syntax is what makes programming difficult
- Garbage collection is free
- Computers have infinite memory
- Nobody really needs:
- Concurrency
- A REPL
- Debugger support
- IDE support
- I/O
- To interact with code not written in your language
- The entire world speaks 7-bit ASCII
- Scaling up to large software projects will be easy
- Convincing programmers to adopt a new language will be easy
- Convincing programmers to adopt a language-specific IDE will be easy
- Programmers love writing lots of boilerplate
- Specifying behaviors as "undefined" means that programmers won't rely on them
- "Spooky action at a distance" makes programming more fun
You don't appear to understand:
- Basic optimization techniques
- Basic systems programming
- Pointers
- Functions
Your language [(H)as/(L)acks/(O)ther/(U)nknown]:
- Comprehensible syntax
- Semicolons
- Significant whitespace
- Macros
- Implicit type conversion
- Explicit casting
- Type inference
- Goto
- Exceptions
- Closures
- Tail recursion
- Coroutines
- Reflection
- Subtyping
- Multiple inheritance
- Operator overloading
- Algebraic datatypes
- Recursive types
- Polymorphic types
- Covariant array typing
- Monads
- Dependent types
- Infix operators
- Nested comments
- Multi-line strings
- Regexes
- Call-by:
- Value
- Name
- Reference
- CC
The following philosophical objections apply:
- Programmers should not need to understand category theory to write "Hello, World!"
- Programmers should not develop RSI from writing "Hello, World!"
- The most significant program written in your language is its own compiler
- The most significant program written in your language isn't even its own compiler
- No language spec
- The implementation is:
- The spec
- Closed-source
- Covered by patents
- Not owned by you
- Your type system is unsound
- Your language cannot be unambiguously parsed
- A proof of same is attached
- Invoking this proof crashes the compiler
- The name of your language makes it impossible to find on Google
- Interpreted languages will never be as fast as C
- Compiled languages will never be "extensible"
- Writing a compiler that understands English is AI-complete
- Your language relies on an optimization which has never been shown possible
- There are less than 100 programmers on Earth smart enough to use your language
- ____________________________ takes exponential time
- ____________________________ is known to be undecidable
Your implementation has the following flaws:
- ____ do(es) not work that way:
- CPUs
- RAM
- VMs
- Compilers
- Shift-reduce conflicts in parsing seem to be resolved using rand()
- You require the compiler to be present at runtime
- You require the language runtime to be present at compile-time
- Your compiler errors are completely inscrutable
- Dangerous behavior is only a warning
- The compiler crashes if you look at it funny
- The VM crashes if you look at it funny
Your marketing has the following problems:
- Unsupported claims of:
- Increased productivity
- Greater "ease of use"
- Obviously rigged benchmarks:
- Graphics, simulation, or crypto benchmarks where your code just calls handwritten assembly through your FFI
- String-processing benchmarks where you just call PCRE
- Matrix-math benchmarks where you just call BLAS
- Nobody really believes that your language is faster than:
- assembly
- C
- FORTRAN
- Java
- Ruby
- Prolog
- Rejection of:
- Orthodox programming-language theory without justification
- Orthodox systems programming without justification
- Orthodox algorithmic theory without justification
- Basic computer science without justification
Taking the wider ecosystem into account, I would like to note that:
- Your complex sample code would be far more compact in:
- HASKELL
- Python
- Another language that out-shines yours
- We already have a(n):
- Unsafe imperative language
- Safe imperative OO language
- Safe statically-typed eager functional language
- You have reinvented a worse version of:
- Lisp
- Javascript
- Java
- C++
- PHP
- Brainfuck, but non-ironically
In conclusion, this is what I think of you:
You have some interesting ideas, but this won't fly. This is a bad language, and you should feel bad for inventing it. Programming in this language is an adequate punishment for inventing it.