Ask HN: What is the most complex concept you understand?
Having an IT background, I thought I understand fairly complex topics (FFT, sorting algorithms, calculus), but in a moment of reflection I realised that I either don't (eg. I tried to explain them and failed) or they are fairly simple (eg. I tried to explain them and was done in 5 minutes). I asked a friend this question and he replied "women" (I call BS on that one :-). Which is the most complex concept you understand?
139 comments
[ 3.1 ms ] story [ 162 ms ] threadhttps://en.wikipedia.org/wiki/Coastline_paradox
Most maps fairly accurately measure the coastline of a place. Their granularity of topographical measurement is good enough.
In other words, it's not if you understand a concept but how deeply. Also, it's hard to sit down and list all the complexities of concepts. You could be understanding a lot more complexity than you realize.
Beauty is as relative as light and dark. Thus, there exists no beautiful woman, none at all, because you are never certain that a still far more beautiful woman will not appear and completely shame the supposed beauty of the first. - Paul Klee, diary, 1910
(And yet, there is light, dark, and beautiful women..)
> if one were to measure a coastline with infinite or near-infinite resolution, the length of the infinitely short kinks in the coastline would add up to infinity.
No they wouldn't. The sum would converge. What a bad article.
https://en.wikipedia.org/wiki/Koch_snowflake
I'm not an expert, but I think it's because as the length scale gets smaller, coastal erosion dominates the coastline, as opposed to an older force producing larger features, like glacial erosion or even plate tectonics. No reason to drag quantum mechanics into this discussion, but the circumference of an atom can be defined, so that's not a problem.
An actual Koch snowflake you can buy will always have a measurable circumference.
E: Some of this misunderstanding is actually due to Mandelbrot himself, he wrote in the introduction to [How long is the Coast of Britain?, 1967]:
> Geographical curves are so involved in their detail that their lengths are often infinite or, rather, undefinable.
No, they're not any more infinite than a toothbrush.
I only studied topology for one year, so i might be very wrong on that one.
For instance, you might say that the Fourier Transform is just a decomposition of a function of time into complex exponentials representing frequencies. But how does a complex exponential represent frequencies? Can you explain Euler's formula?
I usually pick someone I know well and consider what it would take to make them understand, given what I expect them to know already. I find this really helpful in testing my own understanding, but it's a good way of testing how complex an idea really is, relative to the average person's knowledge. (Incidentally I'd rank Fourier stuffs as pretty complicated, all things considered).
I second this. Evolutionary biology is a complex topic. But all it took for me to understand the basics of it was the Carl Sagan video about the japanese crabs.
It has taken me a long time and a lot of work to understand it to the level I have, and I still have a lot more to learn. But it is a fascinating subject and a very elegant way to represent some very complex optimization problems.
There are other cool things like representing a probability distribution over a 3D rotation with an multivariate gaussian vector interpreted as a so3 or se3 vector. Using this you can for implement a very elegant extended kalman filter estimating a 3D rotation. Which usually can be a tricky thing to do.
In robotics we pretty much only use the SO3, SE3 and SIM3 groups so my knowledge is limited to those groups.
A 3 valued so3 lie algebra vector is however always a valid 3D rotation, no matter what the values are. That makes it an ideal parameterization of the optimization problem.
The mapping from so3 lie algebra to SO3 lie group (which could be represented as a rotation matrix or quaternion) is a smooth differentiable function, which allows us to compute the jacobian we need for the gradient in the optimization.
Yes, every topic goes infinitely deep, but I personally have much deeper knowledge about the HTTP client implementations than I do about elephant reproduction.
tl;dr - literally all of you are doing it wrong.
I agree, though, that mutability is detrimental, and that traditional OOP can easily lead us to believe that state is not a concern.
I do not believe that this is a problem inherent to OOP, rather it's a problem of paradigmatic implementation.
"Red" may bring to mind the color. It may bring to mind anger. It may bring to mind a bull and a matador.
All of those things happen in your subconscious, and they affect your understanding in uniquely-local ways.
So the transfer of information through speech from my mind to yours may sound very direct, but your interpretation of what I am saying is different than my interpretation of what I'm saying in very subtle ways.
Because of this, there's a very good chance that I am either completely wrong because I have misinterpreted things, that I am wrong because you have different context than I do, or that I have done a poor job of explaining things because context exists locally (in my head) that you don't have.
About this topic in particular, it was hyperbole to say "you are all doing it wrong". What is more accurate to say is that "my understanding of OOP is different in implementation than what I'm used to seeing, and I believe that my understanding is more correct/beneficial than those implementations"
(Insert FP fanboy platitude about how objects are a poor man's closures, or something along those lines)
One of the biggest issues with OOP I think is the lack of a unified understanding. I think there's value in trying to define a "right" way, if only so that when we are talking about OOP, we are talking about the same thing.
I think that definition would require a volume of text, so I'm not prepared to fully elaborate, but ultimately I think that the core issues lie in our approach. We tend to think like computers when programming, which leads to OOP being a morass of procedural code masquerading as objects. Effectively, we tend toward functional decomposition. Code is boxed up into related data and behavior, and we call these "objects". What we really should be doing is approaching object design as a function of behavioral affordances.
Object design then becomes a necessary, often overlooked, step.
Object design is the first hurdle. The second is in the actual implementation, wherein we traditionally treat our objects as "data" and "behavior upon that data". I can't tell you how many times I've cringed at seeing "Thing" and "ThingManager" in code.
OOP might not be a good thing. It definitely isn't a good thing when it is done poorly. Exposing an object's data, for instance, makes the entire paradigm worthless. The widespread acceptance of `public` data members completely ruins the usefulness of OOP.
That brings up implementation languages. Programming languages really want you to use them, and they make it easy to eschew good OOP principles in favor of ease of use. Accessibility features and syntactic sugar lead not only lead us away from the paradigm, but also confuse about what it actually is.
OOP's biggest strength, and one that most of the literature doesn't go into, is it's ability to lighten cognitive load. When an object works independently of its environment, it is easy to both learn and understand that object. But we sacrifice a huge chunk of this strength in the name of "getting the work done".
I believe that good OOP resembles FP in implementation. Not completely, but much more closely than the procedural landmines we're used to would have us believe. OOP just provides a lower barrier to entry in that it lends itself well to the usage of basic programming constructs and it more closely resembles how humans think, though that could also be argued.
It is a nightmare if you ever use the word "factory"
This also applies to really anything with the "-er" suffix, which lead us to treat objects as "data" and "things that act upon that data".
This often shows up in code as "Thing" and "ThingManager", or something similar.
But in terms of stuff I struggle to get my mind around, that is the most complicated thing by far I have ever tried to understand. That and the grammar of numbers in Slavic languages.
I felt like that when I learned about magamps last year... they were hiding in plain sight for my entire life
https://en.wikipedia.org/wiki/Magnetic_amplifier
The most interesting was a magnetic amplifier module, it had 4 windings as inputs, each thus DC isolated from all of the others, AND it worked all the way down to DC... which I didn't expect. The drive frequency was about 10 Khz.
---
In the 1950s, transistors weren't yet reliable enough for computing, so they invented a solid state computer in the 1950s that ran at 1Mhz, had few transistors, and a few big tubes driving the clocking, it used magnetic amplifiers for logic gates.
https://en.wikipedia.org/wiki/UNIVAC_Solid_State
But everybody has some understanding of some systems that involves humans. Most even have the capacity of predicting a lot of group behaviors. It's just that the understanding is not complete.
I was still in pre-school, watching a documentary about uranium. I asked my mother what uranium was, she replied "a silver metal used for electricity generation". That answer felt deeply unsatisfying, but that's the best answer a todler could get from a village housewife in the year the internet was invented. But I learned that "understanding" doesn't have an objective benchmark; we understand a concept when we subjectively feel confident about our knowledge regarding that concept, no matter how ill deserved the confidence.
Is that all? Let us know when you figure it out. I'm joking, but I really like your take on digital privacy and related matters.
> On mathematical perception: “either you have no inkling of an idea or, once you have understood it, this very idea appears so embarrassingly obvious that you feel reluctant to say it aloud; moreover, once your mind switches from the state of darkness to the light, all memory of the dark state is erased and it becomes impossible to conceive the existence of another mind for which the idea appears nonobvious.”
Weierstrass' “When I wrote this, only God and I understood what I was doing. Now, God only knows.”
I don't know if this is perfect, but I've caught myself many times adding more context.
http://www.ams.org/notices/200003/fea-berger.pdf
Let me explain, because this is a bit of sarcasm. I realized after years of being a specialist, that deep knowledge can be hired for at a price much less than the cost of achieving it in most cases. Thus, in most cases, specialized knowledge isn't needed - but in the case it is, find and talk to the person who can get you most of the way there.
However, in the spirit of the question, some CS related algo's or quantum mechanics (due to PBS Spacetime). I've learned to be a flexible generalist.
https://www.youtube.com/watch?v=URZHbauY1yw
When my main was "too big", i created another function to trim it. I did not get recursive backtracking until i really had to, and then everything lit up for me. I then became a big fan of functionnal programming after that revelation.
Random old school thought. BASIC has an unappreciated feature in that every line of code stands mostly on its own. It's either valid or it's not. In the case of C/C++ that isn't true. A line of codes validity depends on the lines before it.
So the meaning of life depends on why God takes actions, and we will never understand that.
I don't think it is very complex concept.
- I believe in a designer obviously. I totally understand if you didn't.
Causality is a concept that exists within a universe, because it's bound to time, which also a concept that exists within a universe. The physical law of causality (which can be expressed as both "events of the present are fully defined by system states at previous times" and the time-reversed equivalent, that the past states are fully defined by the future) are only coherent concepts within the framework of specific physical laws that govern this universe. Not every set of possible physical laws gives rise to causality, or even time.
In Conway's Game of Life, the future state of the board is also fully determined by the past, although there is no time reversal symmetry.
Judea Pearl's causality is similarly bound to applying within the context of a timeline and universal law.
Again in Conway's Game of Life, you can implement Turing machines and run simulations of any scenario. Hypothetically you could have artificial life in such a simulation, which might conduct experiments to learn the physical laws of the cellular automaton that governs their world.
But those laws, their perception of cause and effect, only exist within the context of that simulation, and within their simulated timeline. Their "time" is a state variable of the simulation.
No experiment conducted by creatures within the Game of Life could determine why their simulation is running in the first place, or why its initial conditions were chosen the way they were. The computer running their simulation is outside the laws of their universe. To ask "what was the value of Conway.simTimeIndex before the Game was started?" doesn't make sense. The laws that govern the commencement of Games cannot be perceived from inside the Game.
On our own level, the notion of cause and effect is a concept that is coherent within our universe and its concept of time. To ask whether our universe had a cause, or was preceded by something, doesn't make sense. It might or it might not have; that depends on the laws that govern the commencement of Universes, which we cannot measure from observations inside of our universe. If there is any law of meta-causality or time, on the level of reality at which universes are created, we will not identify it via measurements conducted within this universe.
It's a philosophy I've assembled myself from many sources, so there's no one book about it, but definitely a lot of sources of inspiration.
My understanding of the nature of time comes mainly from Julian Barbour's book "the End of Time", which itself is not an easy read and took me a long time to digest. Although, the philosophy is compatible with more conventional theories of time, as long as it postulates time as a structure that is somehow internal to a universe.
There's endless literature about Conway's Game of Life and cellular automata, although since it's used just as a metaphor here, it's enough to just play with the game itself for a while. Greg Egan's "Permutation City", while fiction, is an interesting exploration of the concept of the boundary between a simulated universe and the reality that contains it.
For more about how causality in our universe arises as a consequence of specific properties of nature, I'm not sure exactly what to recommend but maybe Feynman's lectures on physics are a good place to start.
For other perspectives on causality, Judea Pearl's "Causality" is a classic. But heavy.
But I am curious about something, do you believe that this life is deterministic?
I'll try to make it simpler...
We believe things must have causes because, inside our universe, all things are caused by other things at earlier times. That's because our laws of nature are causal, and our universe has a timeline.
But the laws of nature inside our universe might not be the same laws of nature that govern the creation of universes.
Just like the laws of physics inside a video game aren't the same as our laws, and won't say anything about why the video game started in the first place.
I do believe that this life is deterministic, but also that the future is not knowable.
So all that we're left with is philosophy, religion, and Ockham's razor to figure out what we'll believe. My advice would be to maintain an open mind and a sense of uncertainty.
You can't have, for example, a mic capable of recording both a whisper and a rocket launch. You need to optimize for some function.
Number of nested connections? That would probably be life its self. So, understanding it from its various mathematical basis through physics and chemistry on up to genetics, game theory, and evolution.
Connections to seemingly unrelated topics? Like human politics? That involves brain chemistry, psychology, history, philosophy, (again) game theory, and ethics.
Complexity resulting in application of said concept? That's just fractals. Nothing more complex.
Then again, depending on your bent you might consider cosmology the ultimate complexity as it literally involves everything.
IMHO it's possible that your friend truly does understand women. It's a testable claim. Make him put his money where his mouth is.
Writing good fiction is seemingly orthogonal to your intention, but I'd put it up there on the list of complex concepts one could know.
Additionally making a movie, the most complex human artistic work, is pretty complex.
Personally I couldn't say I understand any of these as an expert would. But I dabble.
I think measurements are useful when comparing things in an absolute space (eg. rate all cars by engine power). But complexity is relative; something complex to me is simple to you. A topic might be simple to me because I axiomatically accept a premise which you consider a topic of analysis.
No?
IMHO complexity boils down to the number of connections in an objects internal parts. But, like most complex things there's lots of discussion.
Those two different models you proposed to understand music are two different objects hence two different conceptualizations of the same phenomenon, two different perspectives.
So, the old "If all you have is a hammer, every problem looks like a nail." and "There's more than one way to skin a cat." kinda things.
In a practical sense managing an organisation with a sizable amount of people in it due to the sheer amount of diverse issues you have to deal with, and the way in which you can't really reduce it to any kind of formula and where you find new problems every day. Everything that involves organising people is very complex. I was originally thinking about writing "organising WoW classic raids" as a joke but it might actually be true as well.
To try though : recursion, induction & generalization, entailment, parse trees.
One thing I don't understand is relativity, but someone once told me that you could summarize it by saying "force acts at a distance over time".
And I am sure I only have scratched the surface of this niche already.
Numerical algorithms can be both amazingly intricate and omnipresent at the same time. Optimization is a beautiful field because of it.