Currently, programming languages seem to be largely isolating[0] and invariant rather than inflected[1].
Could operands such as variable names be usefully inflected (probably agglutinatively[2] for simplicity's sake) to indicate type or other contextual constraints?
How about more extensive stacking[3] of operators (an existing example would be += that combines addition and assignment) the way some languages do verbs?
Could we use tenses[4] somehow to make parallel and concurrent programming easier?
Could articles[5] be used to do things like pass variables or instantiate objects?
Anyway, there seem to be opportunities to make programming languages more expressive by borrowing human language features rather than using ever more complex typographical conventions. What do you think?
[0] https://en.wikipedia.org/wiki/Isolating_language
[1] https://en.wikipedia.org/wiki/Inflection
[2] https://en.wikipedia.org/wiki/Agglutinative_language
[3] https://en.wikipedia.org/wiki/Serial_verb_construction
[4] https://en.wikipedia.org/wiki/Grammatical_tense
[5] https://en.wikipedia.org/wiki/Article_(grammar)
1. Python-style iterators. No matter what I want to iterate over, I just write:
or if I want to collect the results: 2. A universal binding construct, which I call binding-block or BB for short. It aggressively eliminates parens so that my code ends up looking like: 3. Generic functions, and in particular a set of standard generic functions that perform the most common operations on any data type. For example REF dereferences anything. It replaces ELT, NTH, SLOT-VALUE and AREF and even certain database queries.4. Classes, with very light use of inheritance.
For an example of code written in this style, take a look at:
https://github.com/rongarret/tweetnacl/blob/master/ratchet.l...
You can transfer some of this to other languages, e.g.:
https://github.com/rongarret/ratchet-js/