4 ms·
Read this paper. Then read his book, The Relational Model for Database Management: https://codeblab.com/wp-content/uploads/2009/12/rmdb-codd.pdf https://codebla
by amw-zero 6y ago
Read this paper. Then read his book, The Relational Model for Database Management: https://codeblab.com/wp-content/uploads/2009/12/rmdb-codd.pdf https://codeblab.com/wp-content/uploads/2009/12/rmdb-codd.pd....
It’s mind boggling how much he anticipated about data management, and was absolutely accurate about. As someone who unfortunately learned databases via ORMs, I started to dive into his writing directly and learn more about the relational model itself.
It’s amazing how much power is in the model that I was completely unaware of, like domains: https://www.postgresql.org/docs/9.5/sql-createdomain.html https://www.postgresql.org/docs/9.5/sql-createdomain.html.
It also inspired me to learn more about math, specifically set theory. Set theory is the most practically useful math you can learn as a programmer. It’s a shame that it’s not common to communicate in terms of set theory more at work, considering how much we intuitively use it. You can’t work in a complicated data model without talking about unions, and the relational model itself is just an extension of set theory, very clearly defined via set theory.
It’s funny. Almost every popular tool or technique we use has a clear and direct lineage from math, yet we have a huge anti-math sentiment in our industry at large. I mean. It’s not funny. It’s tragically ignorant.
- neolog 6y ago> Almost every popular tool or technique we use has a clear and direct lineage from math I don't think that's true. It's very often the other way around.
- amw-zero 6y agoMy example was the relational model of data, which is literally a mathematical model of data storage. Other ones I can think of off the top of my head: - the DOM (an applied tree which is a graph) - everything to do with programming language construction (compilers and interpreters use graph theory extensively) - testing (permutations and combinations) - static analysis (including eslint) - abstracting logic with functions Can you think of anything that isn’t directly derived from some math concept?
- SkyMarshal 6y agoYou might enjoy this letter by Edward Dijkstra on why Americans sometimes don't realize the mathematical basis of programming: https://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD611.html https://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/E... Excerpt: "The first series of machines —that of the singletons— was mainly developed in the USA shortly after the World War II, while a ruined continental Europe had neither the technology, nor the money, to start building computers: the only thing we could do was thinking about them. Therefore it is not surprising that many US Departments of Computer Science are offsprings of Departments of Electrical Engineering, whereas those in Europe started (later) from Departments of Mathematics (of which they are often still a part). This different heritage still colours the departments, and could provide an acceptable explanation that in the USA Computing Science is viewed more operationally than in Europe."
- pyuser583 6y agoI’m pretty sure it precedes WWII. Compare the work of scientists like Alan Turing with the pre-war work of Claude Shannon/Vannevar Bush. Turing was a mathematician focused on theoretical problems. Shannon and Bush spent several years building analog computers at MIT. I think the difference was the way electronics and telecommunications established themselves as academic disciplines in America. America was training tons of electrical engineers, but surprisingly few mathematicians, as early as the mid 19th century. Look at schools like MIT - what the UK equivalent? Oxbridge is known for Classics, PPE, and Maths. There’s no “institutes of technology.”
- danielheath 6y ago> Turing was a mathematician focused on theoretical problems. The famous theoretical problems of fire-control systems for anti-aircraft weapons and wartime code-breaking.
- amw-zero 6y agoThat’s such an interesting perspective. I’d expect nothing less of Djikstra!
- hyperpallium2 6y agoApart from relational algebra, two big ones are regular expressions and diff (longest common subsequence). However, you're saying vice versa: Almost all math we use has a clear and direct lineage from a popular tool or technique. There's something to this - many of the well-known theorems and algorithms for regular expressions started with Ken Thompson, though of course he used Kleene algebra. And for relational algebra in this submission, there's almost no mathematics, just a set of tuples... and make an algebra around it. That's why Codd's paper has hardly any references, he pretty much made it all up, to solve a practical problems he saw (unnecessary rewriting of code). Though he was a mathematician, so... The limits of knowledge, of what can be proven, is to do with "computability" - sure sounds like a prpgrammer thing! So maybe you have something there...