You are comparing big teams and products to a single guy writing a paper intended for a niche audience and to be read maybe a few hundred times if he is lucky. People makes mistakes and sometimes forget to document everything, they try to document everything though as can be seen in their papers where most things are documented well, but sometimes they miss things and unlike code you don't have compiler warnings telling you about it. And given how few people read those papers it isn't worth investing in a team to go through and update all of those papers to properly add definitions for everything they missed.
The equivalent to those programs in math would be high school textbooks, and they are extremely well documented and easy to read in most cases.
Thank you. There's nothing else left to discuss.
If you still think that is a problem then start some open source organization to fix that. Nobody has done that yet though since so few people care about math papers, but since you feel so strongly about this you could do it, someone has to be the one to start it.
(And, sorry for being a jerk in this thread. I said too much in a few places, exactly because I didn't think of innocent mathematicians who might read it. I'm still convinced that there is a lot that math can borrow from CS and SE, but I'm definitely going to argue this differently.)
For example, when learning programming you have to learn about arithmetics, pointers, functions and structs. And that is it, now you can program everything as long as you have an API to program against since everything else builds on top of those. That is equivalent to learning algebra in math. You can do a lot of things using algebra, but every new course introduces a lot of new concepts that can't be expressed in elementary algebra. Programming however becomes the art of expressing everything using these very simple instructions, while math is the art of creating instructions that can express things simply.
You just said they don't because it's not worth it. So which is it in the end?
> In programming you learn an instruction set, and then you use those instructions to compose programs, therefore learning that instruction set is relatively easy.
Yeah, sure. Elementary arithmetic, like 22 and so on, is also not that hard to learn. What you're saying is barely scratching the surface of what programming is, then misrepresent it as the whole truth.
It's not that programming is easy. It's just that you can still earn a very good salary without ever touching the harder and more complex parts. People who knew how to do 22 were also well-paid at some point in the past, yet Euclid still managed to write his Elements. You're like an actuary (working under a Pharaoh to count the cattle, let's say) who says that writing Elements is as easy as his current job (you could do it yourself, but you're too busy right now, so maybe later).
> For example, when learning programming you have to learn about arithmetics, pointers, functions and structs.
And then you try to write a JIT for a dynamic (and concurrent, let's say, as Erlang succeeded in this in the last release) language and, with just "arithmetics, pointers, functions and structs", it becomes obvious it's not nearly enough. Then you start reading books and papers and soon you realize that 5 years have just passed. And JITs are not really that complex!
> Programming however becomes the art of expressing everything using these very simple instructions.
Programming is an art of creating new instructions, both out of thin air and out of already existing instructions. The fact that you seem to think "the instruction set" (meaning concepts that have to be understood, I think?) is constant suggests to me that you you're not very interested in history of the field.
I actually wrote a JIT for one of Googles internal machine learning frameworks, so yes. It was used in production for Google search, Google ads etc. Only a very small part of that traffic, of course, I didn't do something huge, but at least I know what it takes to make such systems production ready and performant enough, as these systems are extreme resource hogs. So I know very well what it takes to create a language, parse it, execute it, optimize it and ensure that there are no errors in production and help the researchers who are supposed to use it to debug when errors happen.
I learned programming by just implementing a lot of complex algorithms and systems. I wrote several high throughput http servers using sockets and threads for example. I also got good enough at competitive programming to occasionally place in single digits in some world programming competitions, but mostly double digits. All of that is very easy to understand compared to math, math just forces you to bend your mind in strange ways, programming is super concrete.
I have no doubts that programming will one day get as deep and mindbending as math, physics definitely is for example, but today it isn't even close.
Well, I don't. It was you moving the goalpost. I talked about "a few pages", and you made "a book" out of it. I simply don't agree with you here and so I have very little to add at this point, sorry.
> This is called a bibliography, every book that isn't so old that it is the definition and paper includes one.
No. Bibliography is like a list of libraries you depend on. It has literally nothing to do with explaining the syntax close to where it's used.
> appendices which cover (some of) the foundational material.
Ha, ha, ha. No. If it's not front and center, then it doesn't count. I'm sorry, but I'm really tired of this subject. I would be willing to compromise more if that wasn't the case, believe me.
> show the symbols and their names, if not their definitions.
Ok. Putting that on the cover is a bit strange, but ok. That's a nice, but very small, step in the right direction. Please iterate and improve upon it!
EDIT: again, because I missed it at first:
> Programs don't do this, why do you expect every math paper to do it?
Programs do come with man pages! And tutorials, interactive tours, contextual help, and more. Emacs comes with 3 books, and a tutorial. (GNU) libc has a book to it. Firefox has a whole portal (MDN) as its documentation. Visual Studio comes with MSDN and a huge amount of explanatory material. And when it comes down to code, you have auto-completion, go to definition, search for callers; you can hover over a symbol and you get a popup with documentation and types; you can also trace execution, stop the execution, rewind the execution (if you have good debugger), experiment with various expressions evaluated at different points.
The most important difference between math and programming (or CS)is that programmers can (and do) build automated tools that help the next generation of newbies get into programming, while mathematicians can't. It's just that they don't want to admit this is a weakness, and only fortify more in their ivory towers.
TLDR: I just can't see how you can even put math papers and programs on the same scale in terms of accessibility!