May be some of you (moderators and custodians) would discard this question as opinion-based and requiring discussion, but I didn't want the effort to go to waste so felt compelled to ask. Please feel free to shut down/migrate/ignore this question.
My question is "At what point does the complexity of a system cross a threshold where users start adopting alternatives, not because the system doesn't offer benefits, but because the steepness of the learning curve/training costs start to get out of hand"?
I am plotting:
n=StringLength /@ Names["System`*"];
pn = ListLinePlot[Sort[Tally[n]]]
for several versions of Mathematica. You can see the total count next to each curve. 1984 is the actual figure for Mma5.2. No pun intended.
Another graph shows the count of System Names on a simpler plot.
This comes to around 0.91 Names being added to Mma every day for at least the past 15 years. I don't have data for prior versions. I am using StringLength of System Names as a reasonable measure of complexity as I have seen such graphs for various language dictionaries that are now available to users.
I cite the example of the adoption of Python over the last 15 years. One of the main reasons it has permeated schools at all levels is the ease with which it can be used to teach CS while maintaining a reasonable number of primitives it is built upon (nothing compared to C of course). Compared to this, it would be instructive to see the adoption stats for Mma. I think many questions on MSE reflect the fact that Mma is getting harder to learn (for students) and to use (for workers) without some expert help available but that is my opinion.
Experiment: (without going to Google or using MSE)
For all newbies/students/casual users, learners, do a simple exercise: Plot four curves on one plot; anything would do. Goto Help for ListLinePlot or Plot and copy an example. Now add a legend yourself (at least try first and goto Help again), and put it on the plot as you see above using only the help system. If you have done this exercise before, others can be cooked up just as easily.
This would be a fair newbie questions but I want you to think about ease of learning on your own, and backward compatibility if you are a returning user as you do this trivial exercise. Share your experience, if you have a couple of minutes.
For a system of this ever-increasing size, are there any plans to initiate backward compatibility? Most computer languages take great pride in this sort of continuity and for good commercial reasons.
I know that the number of core functions and techniques in Mma are still manageable for the power these bring, but a casual user visiting this site (for instance) looking at some of the expert solutions wouldn't be able to say so. It is also true that nobody uses but a fraction of all the available functions but often times you will see users implementing available functionality that they are are simply unaware of.
I have been using Mma for a long time and recently I have been gravitating towards programming languages for the remote job opportunities they bring. Specifically, I am learning functional programming extensions in various languages to update my skills. Simply put, if Mma were ever taken from me, I would require therapy. It is a force with unbelievable reach. I wish everyone at Wolfram and MSE well. This surely is my tribe. Live long and prosper.
Thanks for reading.
NDSolve
being as user friendly as it is actually pretty amazing. A lot of problems arise from new users just trying to use something pretty high-level without understanding the basics of MMA because most learning is very informal, and people often come to MMA because they want to solve a complicated math problem that would be tough in something like Python. (And sometimes they don't really understand the math they're trying to do, but that's another issue.) $\endgroup$