← Back to context

Comment by WarmWash

2 months ago

>https://en.wikipedia.org/wiki/Transmission_Control_Protocol

compare to

>https://en.wikipedia.org/wiki/Rees_algebra

Most people, especially non-tech technical people, could crash through the TCP article and come out the other side with at least a high level understanding of it.

Most people, even technical ones, could not even get through the first line of the rees article, heck the first statement of the article. And then if they try, they need to know about algebraic rings. And digging into rings becomes totally intractable. None of the words or symbols in any of the articles track to anything even many technical people can grab onto. And this pattern is all over the place in mathematics.

It's not about mastering the difficulty of a topic or it's relative depth, it's about how abstract and removed from anything tangible it is. Anything with math it is always seemingly impossible to get a foothold on the idea anywhere within 10 degrees of explanation. Hell you cannot even clearly understand the problem that is being solved, or anything within 10 degrees of that.

As mathematician, I actually agree. We could do a lot more to communicate ideas in a way non-experts can understand.

For instance, most people are familiar with polynomials. Take a polynomial in x (with integer coefficients) and substitute x for 5t everywhere. So for instance, 2x^3 - 8x + 3 becomes 250t^3 - 40t + 3.

The Rees algebra Z[5t] (here Z is the integers) is then just the set of all polynomials you can get this way.

If Wikipedia introduced it like this, I don't think most people would have a problem understanding.

The concept is not (at least not always) actually that complicated, like others are implying. It's our communication that is lacking.

  • As a hobby mathematician, I agree. I know quite a bit about rings and ideals, but I don't understand much from the article on Rees algebras. Wikipedia has a lot of articles on mathematics that are explained badly, I prefer to find information elsewhere, typically I ask an AI for a good introduction on a subject (and usually that links to PDFs with over 100 pages that keep me going for hours).

  • And Wikipedia is particularly bad for this. It is a good reference for things I already learned, but for learning, if I am not able to get to a professor, I find math/stack overflow to have many more examples and explanations, and sometimes for an overview YouTube lectures. And really for concrete things like polynomial rings over R, I often found starting up Mathematica and just playing around with some computation is sometimes useful. (Forget about p-adic things tho).

    I sometimes think it would be good to rename some of the things that have historical names to mnemonics more descriptive than a proper name. But that would be difficult.

  • A mathematics book that was once on the front page here said the same. Mathematica by David Bessis.

  • I'm sure you're right that there's poor terminology, and Wikipedia math is certainly daunting. But in general the many mathematical exposition PDFs scattered across the Internet are beautifully written by careful, intelligent people. I'm a software engineer who's spent many hours reading them and also trying to do graduate classes as an adult. It's unfortunately common on Hacker News to encounter people who think that "I'd be good at math if only they used code to explain it" or "I'd be good at math if it used better terminology/notation".

    The truth is that math is hard: few other subjects have anything close to its crazy conceptual breadth and depth, with hardish concepts being built upon hardish concepts in many layers.

    • I've had quite some success during my CS BSc math classes with inventing/using verbose but clearer notation and rewriting things more explicitly, programming things up, playing with Mathematica etc.

      For example, Fourier is more clear to me as: F{t -> sin(t)} = omega -> (...) instead of F(sin(t)) = (...). Or D{x -> x^2}(x) = 2x instead of (x^2)' = 2x

      Abuse of notation is very common, like using f(x) both as the function and as the return value at some input x etc. For example, the chain rule is often notated in a way that hides a lot. Math uses so many single letter variables, uses huge formulas instead of factoring out parts and using multiple lines, math people don't seem to appreciate namespaces and dislike nested variable scoping etc.

      It's not magic that makes everything super easy, but it helps.

    • I agree with this - real analysis and functional analysis with have the cognitive complexity of three months worth of the cognitive of software puzzles in each weekly problem set.

Definitely agreed. I have a bachelor's in math and took an abstract algebra course as part of it. I also took a couple computer science courses in college and work as a data engineer. My only real exposure to networking is from an AWS cert I did years ago.

I can tease apart the Rees Algebra article one bit of half remembered terminology at a time and come out of it feeling like I just barely understand what the topic even is.

I can read the TCP article and feel like I have a thorough overview of the topic and could explain it at a high level to someone else.

Yeah, as a scientist I can read most Science or Nature articles in most fields, and get a rough idea. Not every piece of jargon, but I can understand roughly what they did, read the graphs and figure out the result. A friend sent me his maths PhD and I did not understand a single sentence.

  • That's not because the nomenclature is bad, it's because the concepts in advanced mathematics are further from our familiarity zone. In other words because it's hard.

This is perhaps more a comment on Wikipedia's coverage of mathematics. They have some general guidelines in their manual of style, but it's really hard to write math articles in a way such that something like the Rees algebra without defining 1000 thinks beforehand.

To understand the definition of the Rees algebra, you would need to define, mostly in order: sets, groups, abelian groups, rings, ideals of rings, algebras over rings, direct sums of rings, adjoining things to rings, etc.

This is just to understand the definition; to understand its significance in algebraic geometry (which I have no idea of), there are a thousand more definitions.

The issue with trying to understand a concept in math is there is a massive directed acyclic graph of prerequisites leading to these concepts, and one needs to traverse this graph in the right order. Unfortunately, knowing the right order is almost tantamount to understanding the concept itself.

> Most people, especially non-tech technical people, could crash through the TCP article and come out the other side with at least a high level understanding of it.

Careful, I think you might be committing an https://xkcd.com/2501/ error.

What even is a protocol? What is a host? What is a ‘stream of octets’? Wiki helpfully tells you octets are also known as ‘bytes’.

  • I agree with you here, but what's special about tech is that many of us learned all these terms fully casually while using computers as children and teenagers, which would be much less common for a chemist. That makes programmers see a lot of things as computer literacy that most people have rather than specialized knowledge.

  • My argument is that all the vocabulary for computer science are things. Even if they are virtual, they are tangible. You can draw a picture and label a box "bytes".

    Nothing in the ChatGPT conversation is tangible. It's all in the realm of concepts.

    • A ‘Byte’ is not a concrete thing and the fact you think it is speaks to the degree to which you have immersed yourself in a mental model which thinks of ‘information’ as if it is a real concrete thing, to the extent that you don’t even realize the levels of conceptual abstraction you needed to build in order to internalize what a ‘byte’ is.

      6 replies →

We often designed various protocols and other stuff in IT as per 'lets come up with some simple chat to validate things and go ahead', or principle of least complexity (apart from classics like IBM and Microsoft but they were done specifically to make vendor lock in as big as acceptable). Its also ie in telco protocols - designed around trivial Hello handshakes, I can explain protocols like that to a child and it would grok it. Not great for advanced security but thats another topic. Or SSL handshake which is way more modern.

Math just represents this reality on most abstract level, it doesn't care if complexity for some human brains is trivial or almost fractal-like.

I agree with you, math is the most abstract study and therefore the most impenetrable. Anyway, for the sake of argument here's a counterexample: https://en.wikipedia.org/wiki/Courcelle%27s_theorem

Something like TCP is an engineering concept rather than a CS concept. It's not entirely surprising that it's easier to grok. There's also certainly no shortage of hard to understand stuff in eg. Physics

"The Rees algebra is an algebra over Z[t^−1]"

Such a small sentence and yet it means very little to me. I understand some constituent pieces, but I don't understand what Z is here other than a 'ring' and I don't really grasp how t^-1 converts this into a generalized family of algebra. It would take me a lot of effort to understand this and use it practically. I find that fascinating because it really is such a small statement that seems perfectly cromulent, but there's a lot packed in there that someone like me is totally missing.

I suppose there may be similar concepts in computer science, but nothing comes to mind that ever stumped me. To be frank, the field has been relatively accessible to me because it hasn't been too challenging. Not sure if that's a personal aptitude thing or it is genuinely simpler.

  • Z is the ring of integers, t is a formal variable allowing us to discuss polynomials whose coefficients are in some ring. That’s what R[t] means: the ring of polynomials of the formal variable t with coefficients in R. Adding in t^-1 lets us include inverted terms like 2t^-3.

    An algebra over a ring (call it S so we don’t confuse it with R from the previous paragraph) is a like a vector space over S, with the added structure that you can multiply elements of the algebra together (vector spaces only let you add their elements together). So for example the collection of even integers 2Z is an algebra over the ring of all integers Z. The collection of all polynomials with integer coefficients, Z[t], is another algebra over Z.

    This is a great example of how dense language gets in math. There are tons of concepts hiding in the unstated background. Many are quite simple to explain individually, but there are so many of them that an outsider won’t know where to start to tease them apart. There’s a good reason to do it this way though; it would take a very long time to say anything in math without ever increasing levels of information density.

  • It's a class with an array of integers in it with .length() == t - 1 and the same methods as Matrix.

    In lean4, even without mathlib4, TCP/IP is way more code than a Rees algebra.

    Math uses dense notation that is gigaoverloaded, and the disambiguating context was historically the leisure and proximity to have someone explain what the lexemes even mean.

    lean4 is proving to be very revealing as an uncorruptible referee on a lot of things, including the relative difficulty of computer science and complex analysis.

      -- A Rees algebra over ℤ[t⁻¹] is this.
      -- That's it. That's the whole thing.
      structure ReesAlgebra where
        coeffs : Array Int   -- integers, indexed by grade
        -- grade k means the coefficient sits at t^k
        -- negative indices are the t⁻¹ part
    
      -- The "algebra" part: you can add them
      def ReesAlgebra.add (a b : ReesAlgebra) : ReesAlgebra :=
        ⟨a.coeffs.zipWith b.coeffs (· + ·)⟩
    
      -- And multiply them (convolution, same as polynomial multiplication)
      def ReesAlgebra.mul (a b : ReesAlgebra) : ReesAlgebra :=
        sorry -- it's Array.foldl over index pairs (i,j) summing into slot (i+j)
        -- exactly how you'd multiply polynomials in a job interview
    
      -- That's the entire mathematical content of
      -- "The Rees algebra is an algebra over Z[t^{-1}]"
      --
      -- Compare: a minimal TCP SYN handshake in Lean4 would be
      -- ~200 lines before you even get to retransmission.
      --
      -- The notation is the gate, not the math.

    • That's false. Z[n] in rings does not mean "an array of integers of length n", it means the subring generated by Z union with {n}, where n is an element of some other set. For example:

      Z[i], the Gaussian integers, is the subring (of C) generated by Z union {i} where i is the imaginary unit in C, the complex numbers. The Gaussian integers correspond to the integer grid-points of the complex plane, if you want to visualize them.

      2 replies →

You are comparing TCP a relatively basic topic in the grand scheme of computing with Rees_algebra which is fairly specialized, we could take a simpler topic more foundational and clearer to understand and compare them.

I can understand that this feels like one is so much more complicated part of it is also how the articles were written, wikipedia is not known for quality maths explanations.

But beyond that this comparison to me feels unfair.

Let's take Euclidean algorithm or just modular arthimetic for example what a lot of computing even is based on I feel like that's a fairer comparison. No?

Perhaps that's too easy but I just find this specific comparison very unfair to both Math's intuitive-ness and Computing's complexity. Perhaps I am the one being delusional.

  • I think you are snagging on thinking this is an observation about difficulty, time-to-mastery, or mental firepower requirements. It's not.

    It's a plain observation that math exists on mostly it's own path with little to zero overlap with our lived experiences. If mathematics was a vector, it would have similar magnitude to other vectors, but it's direction would be much more removed from the typical knowledge pack, forcing you to get really close to the origin before you can "hop" over to that math vector. Other "knowledge" vectors, by virtue of being more bunched up, are closer together much further up, if that poor analogy at all makes sense.

    • Mathematics has a lot of knowledge points that do connect to the "real world" very deeply, but perhaps the nature of their linkage to other mathematical pieces of knowledge is best left to the mathematicians. But we can still use the pearls of wisdom that come out of the process.

    • Very true, I feel like the sense that Computing is easy comes from the inherent closeness of our lives experiences to it. Everyone uses a Phone they see ram understand memory, can understand process and processing.