aawalton
Measuring the volume of changes in any form is problematic, since it’s possible that the programmers who add the most code are actually making the code worse by accumulating technical debt faster than business value (instead of refactoring so that important changes can be made simply).
1. M bundles a reasonably efficient database with the language itself. Every variable supports jagged hierarchical arrays (which we usually call objects in other languages). These were implemented as balanced binary search trees, which means it’s difficult to write slow operations (at the cost of slightly sub-optimal performance for everything).
2. M was designed for massive server/client operations, handling concurrent use and access by tens of thousands of users out of the box.
3. M was incredibly terse. We laugh about the horror stories now, but when it was developed, every byte mattered, so single letter keywords and white-space-award syntax were features, not bugs.
As a result of these strengths, M solved real problems for large organization, managing data and concurrency at scale, with a simple storage paradigm that prioritizes good enough performance all of the time.