24 ms·
You don't need to read or understand (most of) your source code because it is 90% libraries. Mathematics is built based on understanding all the concepts behind
by wfo 10y ago
You don't need to read or understand (most of) your source code because it is 90% libraries. Mathematics is built based on understanding all the concepts behind a subject, and it's written to express to another human clear rigorous thought.
You cannot just black box everything away and choose to ignore it the way programmers do with source code and libraries.
The metric for success with a program is "does the machine run it properly". The metric for success with a piece of mathematics is "do people who've done some reading in my field understand my new result". You can cheat in one but not in the other.
- gravypod 10y ago> You don't need to read or understand (most of) your source code because it is 90% libraries That's just plain incorrect. I expect all code to be written to standards of which would allow anyone to read. > Mathematics is built based on understanding all the concepts behind a subject, and it's written to express to another human clear rigorous thought. Isn't abstraction designed to avoid this? To remove a solution from a problem domain? To work on it without integral knowledge of all; applications? If not then all of Computer Science has been doing it wrong. > You cannot just black box everything away and choose to ignore it the way programmers do with source code and libraries. We don't do that. We black box things that aren't related to the problem at hand by referring to them in a terse and understandable way. For instance if I want to use a fork join scheduler for parallel thread scheduler I don't need to write out all the code for a fork join scheduler. I just need to say "You probably know what this is, if not it's called a fork join scheduler and I'll interact with it via sending messages of run, runAll, etc" and be done with it. I wont use an obscure Greek letter to notate a Fork-Join as that's archaic and insane. > The metric for success with a program is "does the machine run it properly". The metric for success with a piece of mathematics is "do people who've done some reading in my field understand my new result". You can cheat in one but not in the other. The KPIs for software are as follows: functionality, maintainability, simplicity. In that order. There is no single goal of software but instead a multifaceted set of goals constantly working against each other yet CS people make room for an even balance. I don't see how this relates to you engaging in proving further information from other information. I don't see why math needs 40 non-terminal characters to type out a proof. I don't see why it can't be written in a way that is more approachable while not detrimental to the performance of current professionals. I also find it unfathomable that someone would think that the current way of doing things is the, all together, best way of doing things because that points a blind eye at the other two things I mentioned: "maintainability, simplicity". I wouldn't call any of the advanced math world "simple" or "maintainable".
- wfo 10y ago>That's just plain incorrect. I expect all code to be written to standards of which would allow anyone to read. So you only work on open source hardware, with open source operating systems and open source drivers and open source software? And you've read the code for the libraries you use of course? Please. Unless you're Stallman you're not really assessing how much black boxing you are actually doing. >We don't do that. We black box things that aren't related to the problem at hand by referring to them in a terse and understandable way. For instance if I want to use a fork join scheduler for parallel thread scheduler I don't need to write out all the code for a fork join scheduler. I just need to say "You probably know what this is, if not it's called a fork join scheduler and I'll interact with it via sending messages of run, runAll, etc" and be done with it. I wont use an obscure Greek letter to notate a Fork-Join as that's archaic and insane. You do do that. And have you ever really read any mathematics at all? It is literally exactly what you describe. "I am going to use a fiber bundle here, I'll call it (A,B,pi,F), you probably know what this is..." I guess you just hate Greek? The notation is terse and completely obvious to anyone who has the faintiest idea about the mathematics they are reading. Letters are not used to describe abstract ideas (these have English names) they are used to express specific variables. Just like you do in CS. It's hard to type 'alpha' on an English keyboard or programmers would call things alpha as well. The letter notation is essential to express your ideas clearly. The subject material in doing advanced mathematics is much more difficult, abstract and complex than writing code usually, so the notation looks more difficult. That's all. It isn't simple. Because what it's describing isn't simple. It is maintainable because it's easy to read once you understand it. Understanding is the hard part. Programmers always think they can "fix math" by swapping notation around. They don't realize that it's as good as it can be until they actually start doing some real mathematics. Notation is really not a problem. It's a tiny minimal bump along the road that massively simplifies the entire endeavor and tries to get out of the way of actually understanding the mathematics, which is the difficult part. The only objection you're raising that has merit is that a lot of the symbols aren't on a keyboard. Which is why we have TeX. Which is the digital language of mathematics. \pi is really not hard to type.
- gravypod 10y ago> So you only work on open source hardware, with open source operating systems and open source drivers and open source software? And you've read the code for the libraries you use of course? Please. Unless you're Stallman you're not really assessing how much black boxing you are actually doing. And operating system is an operating system. A database is a database. A text editor is a texteditor. I don't need to know exactly how someone's solution is implemented to understand the concepts and I've written at least one piece of toy software that does everything I do on a day to day. I've done CPU graphics rendering, GPU graphics rendering, web parsing, low level kernel/OS stuff, a lot of things. I'm not an expert. I'm still a student and as such I am and always will be learning. That doesn't mean I'm not a Computer Scientist and that doesn't mean I can't open up documentation on any part of my entire system and get a working facsimile from the ground up. Not to say it will be as performant of course (now that I'm in a computer organization course I can just now realize how horrible my scribbles of a CPU I wanted to build is. No pipelining and everything was going to be hooked up to a huge bus). Basically, yes anything computer related is something I can sit down and make work. Hardware or software I can design something that will probably work to a degree. Will it work well? No. Will it be the exact same implementation as someone else? Of course not. Will my implementation function the same as whatever I'm replacing? Absolutely. The black boxing is made in such a way that with basic documentation you can construct in your mind how said box may function. > I guess you just hate Greek? No I just like standard keyboard keys. > The notation is terse and completely obvious to anyone who has the faintiest idea about the mathematics they are reading The key here is "who has the faintiest idea about the mathematics they are reading". It's not meant for outsiders. It's meant for an in-group. Not for anyone who want's to learn math. > Just like you do in CS. It's hard to type 'alpha' on an English keyboard or programmers would call things alpha as well Not anyone who would ever work for, or with, me. I'd replace that code in a hot minute. Anything past a toy you're never going to ever use again NEEDS more then "alpha" or "a". Naming is the most important thing in CS, the runner up is abstraction. No one worth their salt would ever seriously use single letter variable names outside of maybe the following list: i, j: Loop variables. Holdovers from FORTRAN. x, y: Talking about a position in a matrix or in space. Those are the only 4 I'd ever allow in a professional code base I was getting paid for. > The subject material in doing advanced mathematics is much more difficult, abstract and complex than writing code usually, so the notation looks more difficult. That's all. Oh so it's just that mathematics is hard and computer science is easy. That makes sense. This elitism is part of the issue. I think mathematics is hard but I've worked on many complicated projects and they all don't really seem complicated. We work as a field to tame complexity through understanding a problem domain and abstracting the unimportant implementation details. It all just turns into operations on data that are (sometimes) sequential. No matter if it is data processing and rendering for an oscilloscope like system, optimizing networking protocols and writing your own stack over UDP to control ordering of packets that are non-essential, or even writing huge orchestration systems that operate on generated statistical models to predict future actions that need to be taken. The simplistic comes from an understanding of how to create interfaces for the complex that are simpler then what they are representing. > It isn't simple. Because what it's describing isn't simple. It is maintainable because it's easy to read once you understand it. Understanding is the hard part. It seems like most of the time, when a colleagues explains something to me, I can completely understand the concept but I have no time for the fodder of inefficient notations that are adored by mathematicians. > Programmers always think they can "fix math" by swapping notation around. I hardly think I can "fix math". I want someone to fix math so I can learn it and then join in on the party. I want to learn it. It's just overly complicated. > They don't realize that it's as good as it can be until they actually start doing some real mathematics You're crazy if you think the current way of doing things cant be improved. Improvements are always happening in my field and I learn and adapt as they they are brought to me. Mathematicians have been stuck with an attitude of "it's different and I don't like it". > It's a tiny minimal bump along the road that massively simplifies the entire endeavor and tries to get out of the way of actually understanding the mathematics, which is the difficult part For you it's a tiny bump. For someone who is attempting to learn out of the classroom for their own interests it's the only difficult part. I can go to khan academy and learn about pretty much any college level topic. When I go to take a class at my college (I need to take 3 math courses) I can't learn anything. So much archaic nonsense and a lack of good explanations for new comers. > The only objection you're raising that has merit is that a lot of the symbols aren't on a keyboard. Which is why we have TeX. Which is the digital language of mathematics. \pi is really not hard to type. Pi tells you it's a variable, Pi does not tell you why it's a variable. I have no idea how to convey that meaning as I am not in the "cool kids club" that you and your colleagues have built for yourself