Complete the checklist! :o)

H. S. Teoh via Digitalmars-d digitalmars-d at puremagic.com
Tue Aug 5 14:34:51 PDT 2014


On Tue, Aug 05, 2014 at 10:14:21AM -0700, Andrei Alexandrescu via Digitalmars-d wrote:
> http://colinm.org/language_checklist.html

Alright, I'll have a go at it:

-------------------------------------------------------------------------------
   Programming Language Checklist
   by [1]Colin McMillen, [2]Jason Reed, and [3]Elly Jones.

 You appear to be advocating a new:
 [ ] functional  [X] imperative  [X] object-oriented  [X] procedural [X] stack-based
 [X] "multi-paradigm"  [X] lazy  [X] eager  [X] statically-typed  [ ] dynamically-typed
 [ ] pure  [ ] impure  [ ] non-hygienic  [ ] visual  [ ] beginner-friendly
 [ ] non-programmer-friendly  [ ] completely incomprehensible
 programming language.  Your language will not work.  Here is why it will not work.

 You appear to believe that:
 [ ] Syntax is what makes programming difficult
 [X] Garbage collection is free                [ ] Computers have infinite memory
 [X] Nobody really needs:
     [ ] concurrency  [X] a REPL  [X] debugger support  [X] IDE support  [ ] I/O
     [ ] to interact with code not written in your language
 [ ] The entire world speaks 7-bit ASCII
 [X] Scaling up to large software projects will be easy
 [X] 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
 [X] Specifying behaviors as "undefined" means that programmers won't rely on them
 [ ] "Spooky action at a distance" makes programming more fun

 Unfortunately, your language (has/lacks):
 [X] comprehensible syntax  [ ] semicolons  [ ] significant whitespace  [X] macros
 [ ] implicit type conversion  [X] explicit casting  [X] type inference
 [X] goto  [X] exceptions  [X] closures  [ ] tail recursion  [ ] coroutines
 [X] reflection  [ ] subtyping  [ ] multiple inheritance  [X] operator overloading
 [X] algebraic datatypes  [ ] recursive types  [ ] polymorphic types
 [ ] covariant array typing  [X] monads  [X] dependent types
 [ ] infix operators  [X] nested comments  [X] multi-line strings  [X] regexes
 [ ] call-by-value  [ ] call-by-name  [ ] call-by-reference  [ ] call-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
 [X] The most significant program written in your language isn't even its own compiler
 [X] No language spec
 [X] "The implementation is the spec"
    [ ] The implementation is 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
 [X] 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
 [X] _The color of the bikeshed__ is known to be undecidable

 Your implementation has the following flaws:
 [ ] CPUs do not work that way
 [ ] RAM does not work that way
 [ ] VMs do not work that way
 [ ] Compilers do not work that way
 [ ] Compilers cannot work that way
 [ ] Shift-reduce conflicts in parsing seem to be resolved using rand()
 [ ] You require the compiler to be present at runtime
 [X] You require the language runtime to be present at compile-time
 [X] Your compiler errors are completely inscrutable
 [ ] Dangerous behavior is only a warning
 [X] The compiler crashes if you look at it funny
 [ ] The VM crashes if you look at it funny
 [ ] You don't seem to understand basic optimization techniques
 [ ] You don't seem to understand basic systems programming
 [ ] You don't seem to understand pointers
 [ ] You don't seem to understand functions

 Additionally, your marketing has the following problems:
 [X] Unsupported claims of increased productivity
 [X] Unsupported claims of 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
 [X] Noone really believes that your language is faster than:
     [X] assembly  [X] C  [X] FORTRAN  [X] Java  [ ] Ruby  [ ] Prolog
 [ ] Rejection of orthodox programming-language theory without justification
 [ ] Rejection of orthodox systems programming without justification
 [ ] Rejection of orthodox algorithmic theory without justification
 [ ] Rejection of basic computer science without justification

 Taking the wider ecosystem into account, I would like to note that:
 [X] Your complex sample code would be one line in: _APL :-)_______________
 [X] We already have an unsafe imperative language
 [X] We already have a safe imperative OO language
 [X] We already have a safe statically-typed eager functional language
 [ ] You have reinvented Lisp but worse
 [ ] You have reinvented Javascript but worse
 [ ] You have reinvented Java but worse
 [ ] You have reinvented C++ but worse
 [ ] You have reinvented PHP but worse
 [ ] You have reinvented PHP better, but that's still no justification
 [ ] You have reinvented Brainfuck but non-ironically

 In conclusion, this is what I think of you:
 [X] You have some interesting ideas, but this won't fly.
 [ ] This is a bad language, and you should feel bad for inventing it.
 [X] Programming in this language is an adequate punishment for inventing it.

References

   Visible links
   1. http://colinm.org/
   2. http://jcreed.org/
   3. http://www.leptoquark.net/~elly/
-------------------------------------------------------------------------------

:-P


T

-- 
Which is worse: ignorance or apathy? Who knows? Who cares? -- Erich Schubert


More information about the Digitalmars-d mailing list