Skip to content

Instantly share code, notes, and snippets.

@bokmann
Last active August 29, 2015 14:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bokmann/f4dfd142d3a422672986 to your computer and use it in GitHub Desktop.
Save bokmann/f4dfd142d3a422672986 to your computer and use it in GitHub Desktop.
worst_language_ever

This is an open letter to Mark Rendle, the presenter in this talk:

https://skillsmatter.com/skillscasts/6088-the-worst-programming-language-ever

Mark,

I really enjoyed your presentation on the Worst Language Ever. I have a couple of suggestins for improvement.

I think Pascal's assignment and comparison operators should be adopted here. That is, you should do assignments as in:

€name := "Robert"

and comparisons should just use the equals sign

unless €name = "Robert"

further, improving on Javascript's concepts of "equals" and "really really equals", you could continue to use your shopping trolley operator, but you could add the true math symbol

to have the other meaning. The fact that I can't remember which is which even while I suggest the fesature is a good sign for the goals of your language. It also provides a touch of APL inspiration.

I started thinking about how your language might handle threads, and then you mentioned that you require Microsoft Word 2003 as the editor. I think this provides an ideal environment to handle threading as multiple columns on a page. With the convention that the right-most column is the 'dominant' thread... all other threads will 'join' to that column when they end, and the convention that the 'other' columns may spawn 'n' threads as determined by a JIT runtime. Any variables defined in the dominant thread on the same physical page (well, physical if you print it out) are considered 'page local' variables and are sharable between the threads. Finally, synchronization between the threads can be guaranteed line-by-line - statements that line up between the columns are guaranteed to be executed as an atomic operation.

Finally, given the type system, I think you should have some kind of dynamic developer-defined implicit typecasting. It would follow a convention of methods named "to_". That is, I could have a "Gender" class that represented male and female, and declare a method "to_integer". Whenever needed, the language would promote an instance of the class to an integer by calling that method. This would be useful for things like building select boxes in html that need both a value and a display string. Plus, this opens the door to do some really cool things... you could have an Inventory object automatically promote itself to a Shipment when someone placed an Order. The possibilities are endless!

Thanks for your talk. As you can tell, it was definitely an inspiration to me.

David Bock

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment