Yes, but not knowing calculus, how would he know that? Or any of those things that you have pointed out? They are certainly not taught at school (where we are unhelpfully taught an entirely different "mathematics" to that which you get at university, and will often require for advanced software work) and none of this stuff is ever pointed out in maths books.
Instead, the reader of a maths textbook is unsettled by the constant unspoken assumptions and unexplained concepts that he is already assumed to know. There is in university level maths books what looks like an almost wilful disregard for how people are actually taught mathematics at high school. How do students going from school to university cope? is there some secret occult ritual where all this knowledge is transmitted?
That's how it looks for those of us who are trying to teach ourselves, and it is in marked contrast to the experience of learning almost anything else, particularly programming.
As for physics, although I have never studied it to any depth, I did enjoy reading the Light and Matter series of textbooks a few years ago.(http://www.lightandmatter.com/)
The way the lower level courses are taught IS similar to high school math. Low level calculus in my undergrad institution is almost the same as AP calculus in my high school. If not, then the course picked the wrong textbook.
Anything above calculus, it is fair for textbook writers to assume mathematical maturity.
"How do students going from school to university cope? is there some secret occult ritual where all this knowledge is transmitted?"
To be able to self-teach mathematics, one would have to learn w/e mathematicians do by oneself. This is however, not impossible but difficult. Here are some disadvantages: 1. It's hard to assert one's own mathematical ability. 2. No one can give you feedback(unless, you have someone with enough mathematical maturity and also have enough time to read and correct your proofs). Programming is so much easier because you can get partial feedback from compiler/interpreter and output. In fact, anything where you can see something happens is much easier. Mathematicians need to prove what we see happen is really true and it's not a wrong intuition. 3. Math books does not try to hold hands. They leave out many details to be filled in by the reader(the notorious "The proof is left as an exercise to the reader"). Sometimes, readers without enough background could gain a wrong intuition, which will screw up everything further down. It is not easy, and it be really nice to have some professor to talk to.
Now, about this "secret occult ritual". It is basically the undergraduate mathematics scene beginning at the first introductory proof class. (depend on departments, this might be as late as the beginning of the 3rd year of study)
In UIUC, there is MATH 347. In Stony Brook there is MAT 200. Around 2/3 of the students have to retake it. Imaging this. This is a set of math majors learning these things full time, with study groups, WITH FEEDBACK and 2/3 of the students didn't get C. It's not a inherently easy thing to learn. The entire class to teach people to fight one's own intuition and mental short cuts we humans make everyday.
Once this is done, the students can further take a higher level topic(a intro to analysis or abstract algebra) to get a feel of how to apply these techniques in the intro proof class. It's a long process and there is no easy way. See this book, Counterexamples in analysis. http://www.amazon.com/Counterexamples-Analysis-Dover-Books-M... Half of the things I would believe to be true from intuitive argument turns out to be completely wrong.
Finally, one might question why one have to become a half mathematician in order to use some of the tools in mathematics. Because most math books are written for people with enough mathematical maturity that can only be gained from grinding over mathematics, and without enough maturity it doesn't make sense to learn certain things anyway.
I'm writing as a self-taught programmer who has spent years trying to get a handle on the maths of game development and computer graphics; for the most part that means calculus, linear algebra and geometry.
I went to high school in the UK where I was not taught calculus, or for that matter even told that I could go to university. My experiences did lead, I must admit, to some hostility towards the educational establishment and a strong desire to succeed without their help!
I first learned of calculus when I was about 18 and I bought a book on computer graphics programming. I was all geared up to start doing some cool 3d stuff, when all of a sudden I saw this strange elongated "S" symbol, which of course was not explained in the text. This confused me, when the book had a mathematical appendix describing the simplest vector operations (which I did learn in high school) in some detail. And that was the beginning of my frustration!
There just seems to be such an enormous gulf between high school, "everyday" mathematics and anything coming after. I would like to think that in a world where programming is now so popular, that the border between everyday mathematics and the higher reaches of academia would shift a little and a kind of intermediate area would open up.
Why would you need to prove central limit theorem in order to use calculus? What kind of course teach it that way? It would sound like something to prove for a honors calculus class that prepares students to become mathematicians.
Anyways, about math education. Math below college are taught by math educators. They are no mathematicians and they do things differently.
Things in college are rigorous. Should college students learn calculus in a way that make engineers happy and mathematicians cringe? "Learning things not from first principles but 'intuition' of the real world? what is this? physics 101? ".
Different professor/department views it differently, depend on the view, you will get different education.
There are places offering business calculus. I personally believe to be much better way to teach calculus to people who don't really need to know how things work, but still need to know how to use it(at least for simple functions appearing in the real world).
> programming as a discipline has learned to avoid; encouraging varied and/or terse notations, opaque variable naming schemes, and arbitrary use of jargon where simpler terms would suffice.
Why should all mathematicians suddenly write things with the exact same convention just so people can learn it easier? Likely, most people who benefits from these won't advance mathematics in anyway.
Here is what I see when you wrote these things, but might sounds more interesting in a programming perspective.
"The barrier of not able to program comes from the number of programming languages, it be nice if we can all agree on the same programming language so I never have to learn another programming language again."
Maybe learning calculus itself is more akin to learning one programming language, but rarely calculus is taught in a way to end all learning(again, depend on professor/department). When mathematicians teach calculus, they would want to teach the principles in order for one to advance even further.
and now to each point(as someone who had pure math education)
1. "encouraging varied notations" This is not true. People might have different preference because which school/field they come from, I have yet to see anyone enjoying people come up with new notations when there are some established notation(s). In general, language use in the same field are mostly consistent (for a few decades, at least). No competent mathematician would have inconsistent notation in one single article.
2. "Terse notations" A few symbols captures a whole lot of ideas. It's not software engineering, the number of different variables/symbols in a paper is not the same order of magnitude as our programs. There are books with table of symbols of around 2 pages, but usually such a book would take years to master.
3. "opaque variable naming schemes", it's a convention can be learned by doing, and you don't even need to follow someone else's scheme. In fact, not knowing the convention doesn't mean anything. Most variables are used a few times and never used again. Just a few days ago I pick up a paper by the Hungarian combinatorial optimization authors, their notation is completely different from what I usually read. Once I read the introduction, I already internalized the "table of variables/notations" so I don't even need to refer back often. To programmers, this is like complaining different open source programs use different naming scheme for their API.
4. "Arbitrary use of jargon where simpler terms would suffice". I do not believe this happens often in mathematics. Mathematicians likes things to be elegance, simple and precise. There must be reasons for us to use a word, otherwise we won't use it.
5. "at least programmers are willing to occasionally refresh our idioms and notations to better reflect our mutual understanding." Mathematicians do this all the time, not just "occasionally". It doesn't happen in mature and well established topics where all the problems are dry. There are nonstandard analysis, complementary to the standard analysis. There are homotopy type theory to have another foundation for mathematics. Many things we seem to see it and think it's set into stone it's because there really isn't anything to be done.