It is really quite remarkable that all programming languages to date really, really suck.
I mean deeply, deeply suck. All of them.
One way or another. If you care about Good vs. Just Sort of Good Enough Once You Become Inured to the Shit. Cf. any "the Good Parts" type analyses of programming languages. I am a programming language polyglot nerd wannabe, so I've used or tried or read about: Java, Python, Scala, C/++, C#, F#, Haskell, ML, Common Lisp, {Bigloo,Gambit,Chicken} Scheme, Racket, Typed Racket, Lua, Typed Lua, Clojure, Typed Clojure, Ocaml, JavaScript, Typescript, Flow, Perl, Objective-C, Swift, Groovy, Go, Bash, BASIC, Forth, Logo, Scratch, Haxe, Erlang, and many others (Shen, ATS, Purescript, Parenscript, Kona, Opa, Elm, ...). And. They. All. (at least kinda) Suck. One way or another, they either have too much or too little or just not the right stuff. How many people have sunk how many hours into how many programming languages, only to see that they all suck? Is it really that hard a problem? Well, yes, yes it is, I guess, since it has been empirically proven ever over.
(Of course, we are talking about things that are made by humans, so given that we apparently as a species cannot even get the concept and implementation of something as fundamental as the "back button" to be not entirely hateful across our UIs and our UXs, be it Web or Desktop or Android or iOS or anything, well, then I guess I can't be too surprised when anything more complicated is a cockup as well.)
Still, since I like to tilt at windmills and shake my input device at the sky (see, I prefer trackballs generally over mice or touchpads) and think that I could probably do a better job than gosh all the people who have done all this before, so ha ha I wish I were filthy rich so I could hire smart people to listen to my ideas and UX critiques, in an effort to build a language that truly Sucked a Lot Less. (I am not smart enough to make something that Really Doesn't Suck, I am just a Type 2 person*; the Doesn't Suck has to be left up to the Type 3 people.)
Some key word bullet points about the requirements I'd have, anyway: Cycle time. Static type checking. Type inference. JavaScript backend/interop. Livecoding. Coding from null in the debugger. REPL. Hot reload. Timetravel debugger. Tierless. Ocaps. FP. Exhaustive multimethods. Shape-typed concatenative. CoreTalk. Subtext. (I should probably just give up and go become a discipe of Light Table and/or Eve, at least for now, I guess?)
* 1st type: don't even know shit is shit, even if you rub their nose in it (apparently, most people on earth, frankly - cf. anybody who disagrees with this post).
2nd type: know what shit is when they come across it (they probably read The Design of Everyday Things at least twice), and wanna fix it, and have some useful ideas - but mostly can't invent the mega advanced futuristic dope smokin' hyper best gordian knot super genius better abstraction type fix, even if they think they can (cf. Zed Shaw, myself, et. al.).
3rd type: have become one with the matrix and can do that sick shit (cf. Brett Victor, Mr. Barbour, Paul Phillips, Oleg du Haskell, Alan Kay, Chris Granger, et. al.)
No comments:
Post a Comment