Plea for Language Designers

by moodyharsh

It is time for programming to be obervation on what makes programmers productive.

  1. Debuggers over fancy type systems.

  2. Simple names from crafts over maths.

  3. Objects’t can’t model jackshit. Syntax for ER modelling and State machines.

  4. Inheritance doesn’t provide reuse as evidenced by the multitude of pointless frameworks. Copy paste and merging maps is a better solutions than reuse by inheritance and its probably what cells do. Concatenative / Functional / Classless inheritance over classes - like jquery plugins. Why is it so to ask for a simple merge operater thay combines multiple structs in C++ ? Although in theory a subclass can be used where a parent class is, it is extremely difficult to check this acrosss the entire code base manually. Liskov substition should be checked by the compiler by testing all the code and that could be an impossible problem.

  5. DLL support for enhancing software.

  6. Syntax for observers, messages. templates baked into the language not objects.

  7. Merge tests, contracts, assertions, exceptions outside the core coding into a universal construct called specification perhaps.

  8. Include version control and support some sort of A/B testing for code modules.

  9. Support code injection like macros with special syntax for code injection points.

  10. Support delegation from Lua Tables.

  11. Closures are a good idea, please use them.

  12. CSS did not promote re-use but massive confusion and can we undo forced inheritance and action at a distance in CSS ?

  13. Macros > Scafolds > Generics > Generic Functions > Closures > Functions > Objects in terms of reuse power. CPAN like libaries over inheritance based frameworks. Reuse happens because the constancy and stability of an interface allows code used at one place to used at an other. By defintion closure and modules provide stable interfaces and classes don’t.

  14. Syntax for dispatch tables, condition tables would be nice.

  15. Please look up constraint programming. Inheritance would just be a contraint that declares dependancies between A and B modules. I think the compiler must warn how many copies which inehrit your base class are affected everytime you make changes to a base class.

  16. How many assembly cycles / memory cycles is the function compiled to.

  17. Modules and records don’t bundle code with every struct and so they should be preferred over objects in most cases. This could as well be the most important optimisation language implementors like Ruby/Python/Perl can make by not bundling code together with data for every string and number.

  18. Sum types, product types and co-routines are better. Better syntax for casting operations.

  19. Better syntax for more unicode operators.