1. Starts out fast, compact and lightweight. 2. Bugs and corner-cases get fixed. 3. Features demanded by users get added. 4. No longer fast, compact or lightweight.
1. Starts out fast, compact and lightweight. 2. Bugs and corner-cases get fixed. 3. Features demanded by users get added. 4. No longer fast, compact or lightweight.
Underemployment for the last 3 years has given me a great opportunity to dive deeper into a lot of CS topics for things we use daily and read (or at least try to read) specs and code bases etc.
I’ve come to firmly believe that languages or other open source projects that get popular, usually do so for the things that are in its early versions.
For example, the HTTP 0.9 spec is like 1 page. UDP is like 3 pages.
I’d seen an article on HN recently (cant remember the name) that described this well. A language or what not starts simply and many jump on the bandwagon. Then starts adding incremental features, none of which are difficult to incrementally learn for existing users but the footprint of the product keeps expanding. C++, Javascript, Web APIs, graphics languages like OpenGL all are examples in my eye.
The fact that our system (broadly speaking) incentivizes inventing something ‘new’ rather than fixing or simplifying an existing something certainly exacerbates this.
That's what we see in software development: a runaway process of elaboration and ever-increasing complexity and levels of abstraction.
Sort of like if the Peter Principle and Parkinson's Law had a child.
https://en.m.wikipedia.org/wiki/Peter_principle
https://en.m.wikipedia.org/wiki/Parkinson%27s_law
Or just Zawinskis Law:
https://en.m.wikipedia.org/wiki/Jamie_Zawinski#Zawinski's_La...
2. Ok that didn't work too well we've added static type hints.
Does anyone know of any good embedded statically typed languages? It seems to be a very unexplored design space. The only real ones I know of are AngelScript (which catastrophically fails rule 0 of programming languages) and Gluon which is just a bit too weird and aggressively functional for me.
Try and find an AngelScript example. It's stupidly hard. Compare it to these web sites:
https://koka-lang.github.io/koka/doc/index.html
Sadly Rust fails this too but at least the Playground is only one click away. And Rust is mainstream anyway so it doesn't matter as much. I completely failed to find a single AngelScript example accessible from my phone's browser. Even its Wikipedia page doesn't have any.
github.com/civboot/fngi
It was super fun. I'm going to be going in a different direction (Lua implemented in Lua, with Lua-library assemblers and assembly type system), but it's certainly very possible
FYI the real power of / for comments is /token to comment out one token. So useful to add a bit of doc sugar when calling something
call(x\sugar)
call(x/*sugar*/)
Also Thing \(inline comments) other--