9 ms·
> I think a real problem in this area is the belief that there is "one true notation" and that everything is unambiguous and clearly defined. One main cause fo
by cabalamat 5y ago
> I think a real problem in this area is the belief that there is "one true notation" and that everything is unambiguous and clearly defined.
One main cause for this belief is that in a programming there is one true noation (or rather, a separate one for each language) that is unambiguous and clearly defined.
I dislike maths notation as I find it lacks rigour.
- Jensson 5y ago> there is one true noation (or rather, a separate one for each language) that is unambiguous and clearly defined. This is such a disingenuous take. How many of the source code files you write are 100% self contained and well defined? I'd bet not a single one of them are. You reference libraries, you depend on specific compiler/runtime/OS versions, you reference other files etc. If you take a look at any of these scientific papers you call "badly defined", did you really go through all of the referenced papers and look if they defined the things you didn't get? If not then you can't be sure that the paper uses undefined notation. If you argue that it is too much work to go through that many references, well that is what you would have to do to understand one of your program files.
- throwaway31338 5y agoOne can look at the source code to a program, the libraries it uses, the compiler for the language, and the ISA spec for the machine language the compiler generates. You can know that there are no hidden unspecified quantities because programs can't work without being specified. When you get down to the microcode of the CPU that implements the ISA you might have an issue if it's ill-specified. You might be talking about an ISA like RISC-V, though, specified at a level sufficient to go down to the gates. You might be talking about an ISA like 6502 where the gate-level implementations have been reverse-engineered. You can take programming all the way down boolean logic if you need to and the tools are readily available. They don't rely on you "just knowing" something.
- Jensson 5y ago> One can look at the source code to a program, the libraries it uses, the compiler for the language, and the ISA spec for the machine language the compiler generates. You can know that there are no hidden unspecified quantities because programs can't work without being specified. I doubt you actually can do that and understand it all. A computer can do it, but I doubt you the human can do that and get a perfect picture of any non trivial program without making errors. Human math is a human language first and foremost, its grammar is human language which is used to define things and symbols. This lets us write things that humans can actually read and understand the entirety of, unlike a million lines of code or cpu instructions. Show me a program written by 10 programmers over 10 years and I doubt anyone really understands all of it. But we have mathematical fields that hundreds of mathematicians have written over centuries, and people still are able to understand it all perfectly. It is true that a computer can easily read a computer program, but since we are arguing about teaching humans you would need to show evidence that humans can actually read and understand complex code well.
- pjc50 5y ago> because programs can't work without being specified. Someone hasn't read the C spec, with all its specified as undefined behavior. Programs working on real systems is very different from those systems being formally specified. I suspect that if you only had access to the pile of documentation and no real computer system - if you were an alien trying to reconstruct it, for example - you'd hit serious problems.
- throwaway31338 5y agoUndefined behavior isn't a feature. A spec isn't an implementation, either. All behavior in an implementation can be teased-out if given sufficient time. > if you were an alien trying to reconstruct it, for example - you'd hit serious problems. I can't speak to alien minds. Considering the feats of reverse-engineering I've seen in the IT world (software security, semiconductor reverse-engineering) or cryptography (the breaking the Japanese Purple cipher in WWII, for example) I think it's safe to say humans are really, really good at reverse-engineering other human-created systems from close-to-nothing. Starting with documentation would be a step-up.
- throwaway31338 5y agoCame here to say the same thing harshly and laced with profanity. I guess I can back off a bit from that now. I was filled with crushing disappointment when I learned mathematical notation is "shorthand" and there isn't a formal grammar. Same goes for learning writers take "shortcuts" with the expectation the reader will "fill in the gaps". Ostensibly this is so the writer can do "less writing" and the reader can do "less reading". There's so much "pure" and "universal" about math, but the humans who write about it are too lazy to write about it in a rigorous manner. I can't write software w/ the expectation the computer "just knows" or that it will "fill in the gaps". Sure-- I can call libraries, write in a higher-level language to let the compiler make machine language for me, etc. I can inspect and understand the underlying implementations if I want to, though. Nothing relies on the machine "just knowing". It's feels like the same goddamn laziness that plagues every other human endeavor outside of programming. People can't be bothered to be exact about things because being exact is hard and people avoid hard work. "We'll have a face-to-face to discuss this there's too much here to put in an email."
- CogitoCogito 5y ago> There's so much "pure" and "universal" about math, but the humans who write about it are too lazy to write about it in a rigorous manner. Are you sure it's laziness? Maybe it's a result of there not actually being any universal notation (not even within subfields) or the exactness you refer to really isn't necessary. This doesn't mean that unclear exposition is a good thing. Mathematical writing (as with all writing) should strive towards clarity. But clarity doesn't require some sort of minutely perfectly consistently notation which would be required by a computer because humans are better than computers at handling exactly those kinds of situations. > People can't be bothered to be exact about things because being exact is hard and people avoid hard work. I think you have it wrong. People can't be bothered to be as exact because they don't need to. People can understand things even if they are inexact. So can mathematicians. Honestly this is a feature. If computers would just intuitively understand what I tell them to do like a human assistant would, that would be a step up not a step down in human computer interfaces.
- Tronno 5y ago
- randomdata 5y ago> One main cause for this belief is that in a programming there is one true noation And then there is SQL.
- ColinWright 5y ago> I dislike maths notation as I find it lacks rigour. I see this a lot from programmers, but in essence, you seem to be complaining that maths notation isn't what you want it to be, but is instead something else that mathematicians (and physicists and engineers) find useful.
- Hermitian909 5y agoAs someone who's studied math and CS extensively, it's not that mathematicians don't need that rigor it's only certain sub-fields have a culture of this kind of notational rigor. You absolutely see little bubbles of research, 2-4 professors, get sealed off from the rest of the research community because their notational practices are so sloppy that no one wants to bother whereas others make it easy to understand their work. CS as a field just seems to have a higher base standard for explaining their notation and ideas. It helps in cross-collaboration by making it significantly easier to self study. Related to this, I'd say math books have a significantly worse pedagogical culture in regards to both notation and defining pre-requisites. It's very common for a math book to say "we expect readers to have taken a discrete math course" and not defining notation despite knowing the topics covered in discrete math vary greatly from school to school and may not overlap. Math professors frequently have to paper over these problems at Uni as they realize the class does not understand some notation. CS are just better about this, and I can only explain it as a part of the culture and tradition.
- mistrial9 5y agoI read some graph theory papers from mid-20th Century and yes, this is true
- Jensson 5y ago> CS are just better about this, and I can only explain it as a part of the culture and tradition. CS professors writes just as incomprehensible math as everyone else, as you can see many here brings up examples of CS professors writing incomprehensible math in their papers.
- 5y ago
- f38zf5vdt 5y agoI'm glad I'm not the only person like this. I've never liked tradition math notation and found it about as useful as traditional musical notation, that is, hard to read for the layman and for no other reason than "this is how people have been doing it for a long time". Maybe I'm the minority, but when I read a CS paper I mostly ignore the maths and then go to the source code or pseudocode to see how the algorithm was implemented.
- ColinWright 5y ago> ...for no other reason than "this is how people have been doing it for a long time". I disagree. Math notation has evolved to be as it is because it is useful for the purpose of doing math. If there were some way of doing it better, people would be evolving to be doing so. In some ways they are ... people are using computer algebra packages more for a lot of the grunt work, and are using proof assistants to verify some things, but there's a lot of math that's still done by sketching why something is true and letting the reader work through it. Math notation isn't about executing algorithms, it's about communicating what the result is, and why it works. "Doing Math" is not "Writing Programs", so math notation is different.
- KptMarchewa 5y ago> If there were some way of doing it better, people would be evolving to be doing so. I don't see why wouldn't it be some kind of local maximum. Maybe there are better ways, but they are sufficiently far away from current notation, that they aren't even thought about.
- marcosdumay 5y agoHum... Apart from math, music notation maps linearly from the symbols to the instrument positions and time. It's absolutely not used only because "this is how people have been doing it for a long time". It's a very efficient notation to decode.
- randomNumber7 5y agoFormulas would also be easier to read if they would not name all their variables and functions with one character. If programmers would write code like that (even fortran programmers use 3 characters), noone would be able to understand the code...
- KptMarchewa 5y agoPeople sometimes do that when their code is reasonably abstract. For example, usual convention for generic type in Java is something like T. https://docs.oracle.com/javase/tutorial/java/generics/types.html https://docs.oracle.com/javase/tutorial/java/generics/types....
- Jtsummers 5y agoAs far as programmers, forget about the names. Does every C source file that uses pointer arithmetic include an explanation of how it works? Nope. They just use it and assume the reader understands it or is clever enough to ask for help or read up on the language. Mathematical writing is similar. At some point you have to assume an audience, which may be more or less mathematically literate. If you're writing for graduate students or experts in a domain, you don't include a tutorial and description of literally every term, you can assume they're familiar with the domain jargon (just like C programmers can assume that others who read their program understand pointers and other program elements). Whenever something is being used that is unique to the context, a definition is typically provided, at least if the writer is halfway decent. If the audience is assumed to be less mathematically literate (like a Calculus course textbook audience), then more terms will be defined (chapter 1 of most Calculus books include a definition of "function"). But a paper on some Calculus topic shouldn't have to define the integral, it should be able to use it because the audience will be expected to understand Calculus.
- drdec 5y agoAs someone trained in mathematics, I can tell you that using single character variables allows one to focus better on the concepts abstractly which is one of the goals of mathematics. That is to say, it is a practice well-suited to mathematics. It doesn't carry over to programming where explicit variables are better suited. In mathematics one is dealing with relatively few concepts compared to a typical program so assigning a single letter (applied consistently) to each is not a problem. This is not so in programming, except for a few cases like using i and j for loop variables (back when programs had explicit loops).
- bigbillheck 5y ago> in a programming there is one true noation (or rather, a separate one for each language) that is unambiguous and clearly defined Yes this is why we all use Hungarian notation and GNU indentation.
- xtiansimon 5y agoWhere is the legend/key? I recall my disappointment when as an artist I started studying different maths for use in animation. I would open a book from a university library and expected to find a page with summary of notation used in the book. Maps have this, I would grumble, why not math books?