Live data from Hacker News

Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

mail-archive.com

161–170 of 177 posts

Re: Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

#161

Earlier quoted context omitted.

Take the simplest problem of searching over a continuous range between zero and one exhaustively. Let the value you search for be 0.1. By a diagnolization argument we can realize that even a search carried on for an infinite amount of time and granted an infinite amount of space would not terminate. After all, to find 0.1 you need to make it past 0.01. But to reach that you have to reach 0.001. And so on. Let abstrac…

You are talking about game theory without any precise definition of "abstraction", which it seems like one can define it to be whatever one wants it to be. One abstraction that is very useful is linear algebra which is an abstraction without errors. Same goes for category theory. Grothendiecks work wasn't about tolerating errors in abstractions either. Simple abstractions like generic containers are also not about ig…

If error in abstraction is never right to teach as the OP claims, then you're saying that computation using numbers shouldn't be taught. It literally doesn't matter what computer programming language you use. Every single one of them has this fundamental problem, because Turing machines have this problem. They aren't defined for the reals. They are defined for the computable numbers. So you have an abstraction with error in it. You were taught it. Occasionally you are going to go on for years with this not biting you, but then it will and you'll have to adjust - maybe switching to arbitrary precision in a case where precision matters. Maybe switching to floating point when you realize that you have too much data to fit in storage.

You're claiming that if someone points out that abstractions with error - which are literally impossible to avoid - are useful despite the error, then they're just pretending to know things. But anyone complaining about abstractions having error as a basis for abstraction being wrong is fundamentally missing the point of abstraction.

We need abstraction. It isn't illogical to tolerate the error. It is suicide to not tolerate the error, because you won't terminate - which means you can't react. Haven't you ever wondered why people aren't purely rational? Why we think fast, not just slow, but also fast? These questions have answers. You can look at the foundations of learning in terms of graphs and see why it has to be so. I'm sorry it goes over your head, but it is fascinating regardless of whether or not others understand it. And I think it is worth sharing, because it is fundamental truth.

This is formally provable, but to put that another way - I don't care if you want to be wrong; good for you, saving yourself some time. Enjoy your day.

Re: Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

#162

Earlier quoted context omitted.

> One abstraction that is very useful is linear algebra which is an abstraction without errors. Bullshit. Your claim that there is no abstraction error in linear algebra (when run on computers - we're in subdiscussion related to programming) is false. Computers can't represent all numbers [1]. They can only represent the computable numbers in theory and even then only a subset of computable numbers can actually be co…

> Bullshit. Your claim that there is no abstraction error in linear algebra (when run on computers - we're in subdiscussion related to programming) is false. The fact that you had to change my statement to add computers to it already makes it clear that you know my statement is correct. Don't put words into my mouth to prove statements that I have never made false. You also failed to realize that the tweaked statemen…

> You fail to realise that we can prove theorems about linear algebra

Obviously I realize we can prove theorems. If I didn't realize it was possible to prove things I wouldn't claim things were provable. This is false by contradiction with my previous statements. Your worldview of me isn't consistent.

> You also failed to address the gazillions of abstractions that don't have errors, some of which I have listed along with linear algebra.

Why should I have to prove that abstractions without error don't exist? They do. I never claimed they didn't. My point was that abstractions with error reduce computational complexity. This gives them room to outcompete perfect abstraction for sufficiently complex problems. It honestly seems insane to me to not believe what I'm saying is true, because it is true. I can't fathom how the concept would be impossible to grasp. Showing that we regularly use error filled abstractions is more important than demonstrating something I don't intend to show.

> The OP was not discussing learning at all.

I literally quoted him saying there was never a reason to teach bad abstractions. Teaching is related to learning. Abstractions are related to abstractions. So abstraction and learning were a topic of discussion. Even the original post we're under is about teaching programming technique. Which is about learning, because of the relationship between teaching and learning. It is also about abstraction, because problem modeling is very related to abstraction.

> "all abstractions have errors"

Ctrl + F shows no instance of this except for you saying it. What do you think I'm claiming? I'm really confused? You seem to think I'm saying something I'm definitely not saying.

Notice how when I said it I put parantheses and explained my reasoning as to why I felt your claim was your claim? You meanwhile misquote me. Strict quotes imply actual attribution, but I never said what you claimed I said.

I don't want to talk to you anymore. I very much don't appreciate your comparison to someone who just makes stuff up. I found that very rude and insulting. A kind person would help correct me if my reasoning was wrong and I would appreciate it, but you haven't done that. When you quoted me, it wasn't even something I said or tried to argue. If you were trying to make someone have a worse day, congratulations, you did.

Re: Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

#163

Earlier quoted context omitted.

> Bullshit. Your claim that there is no abstraction error in linear algebra (when run on computers - we're in subdiscussion related to programming) is false. The fact that you had to change my statement to add computers to it already makes it clear that you know my statement is correct. Don't put words into my mouth to prove statements that I have never made false. You also failed to realize that the tweaked statemen…

> You fail to realise that we can prove theorems about linear algebra Obviously I realize we can prove theorems. If I didn't realize it was possible to prove things I wouldn't claim things were provable. This is false by contradiction with my previous statements. Your worldview of me isn't consistent. > You also failed to address the gazillions of abstractions that don't have errors, some of which I have listed along…

>>>> One abstraction that is very useful is linear algebra which is an abstraction without errors.

>>> Bullshit. Your claim that there is no abstraction error in linear algebra (when run on computers - we're in subdiscussion related to programming) is false

>> You fail to realise that we can prove theorems about linear algebra USING COMPUTERS

> Obviously I realize we can prove theorems. If I didn't realize it was possible to prove things

You have been arguing in bad faith by either putting words in my mouth (when run on computers) or deleting key phrases from my reply (USING COMPUTERS - reinserted by me)

These 2 statements by you contradict each other

"Bullshit, Your claim that there is no abstraction error in linear algebra (when run on computers - we're in subdiscussion related to programming) is false "

" Obviously I realize we can prove theorems" -----> USING COMPUTERS

It is clear that you thought of computers as IEEE floating point number crunching machines, with implicit floating point errors. All of your arguments rested on this irrelevant point. You even condescended to teach me about floating points using citations not needed by anyone who has attended CS101.

You failed to realize that finite sized representations of computable real numbers exist, by definition[1]. One such representation could be a finite sum on surd basis, instead of using a binary basis eg sqrt(2) instead of 1.414.... and the most general form is a theorem prover like Lean.

All of these misunderstandings in your head because you failed to realize the gist of the Church Turing thesis ' - Everything that you do with your brain and paper can be duplicated on a computer.

In any case, I am glad you learned something today. Computers don't relate to math via IEEE floating pointing numbers, the connection is a lot deeper[1]. You won't acknowledge this, but frankly speaking, I can't really stand out- jargoning pretending to be an honest discussion. I did give an opportunity to you to correct yourself with my first comment. But you only doubled down - more jargon, bad paraphrasing of diagonalization, putting words in my mouth, followed by removing key phrases from my replies amongst other bad faith arguments.

[1]

https://en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis

To establish that a function is computable by Turing machine, it is usually considered sufficient to give an informal English description of how the function can be effectively computed, and then conclude "by the Church–Turing thesis" that the function is Turing computable

Re: Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

#164

Earlier quoted context omitted.

> You fail to realise that we can prove theorems about linear algebra Obviously I realize we can prove theorems. If I didn't realize it was possible to prove things I wouldn't claim things were provable. This is false by contradiction with my previous statements. Your worldview of me isn't consistent. > You also failed to address the gazillions of abstractions that don't have errors, some of which I have listed along…

>>>> One abstraction that is very useful is linear algebra which is an abstraction without errors. >>> Bullshit. Your claim that there is no abstraction error in linear algebra (when run on computers - we're in subdiscussion related to programming) is false >> You fail to realise that we can prove theorems about linear algebra USING COMPUTERS > Obviously I realize we can prove theorems. If I didn't realize it was pos…

I made the claim that problem simplification through an abstraction that has error can reduce computational complexity leading to improved solution quality. You responded by talking about people who are talking about Lagrange points. I found that extremely insulting. I still find you to be extremely insulting. I don't think my claims are so hard to understand. I find your intentional misinterpretation of my points annoying.

I despise that you lied about whether we were talking about learning and abstraction. I don't like talking with people who blatantly lie. I consider lying bad.

I also dislike that you misquoted me. You put quotes around words I didn't say. I didn't do that to you. You say that I did. You lie when you say that. I gave you my interpretation of what I felt you were claiming. I even explained why I felt you claimed that. This wasn't under the quote symbol. Yours was inside quotes. Yours was a lie. Mine had your original quote, unaltered, with my interpretation below it. I was in error. I admit that. I was trying to get at the heart of my point - that erroneous abstractions aren't inherently bad. Outcome error is much more important than input error.

I don't agree that you've taught me anything - you just try to call me incoherent because what I'm saying is true but you employ motivated reasoning to avoid having to refute it. If you actually understood what I'm saying - which obviously you don't, which is a big part of the problem here, you would agree with me. Or at least, I think you would.

That simple problems are easier to solve and sometimes an actual solution is better than no solution really isn't that complicated a thing. Or controversial. I'm sure plenty of people understand it.

There are so many times in life where my point holds. The use of floating point is one. Perhaps you didn't notice that ML engineers frequently choose to move from float64 to float32 to float16 to float8? Perhaps you didn't notice that services all throughout the computing industry choose to meet an SLA, minimizing latency sometimes at the cost of optimal solutions whose computation isn't realistic given their computing budget. I don't know. But you're definitely not actually teaching me anything. Your just not understanding me. So this conversation is pointless.

I'm still just as convinced of the truth of the idea that it can be very wise to accept a bad abstraction, one that has error, rather than a perfect abstraction. I can't even fathom how to go about the opposite. How would a child go from knowing nothing to knowing everything perfectly without moving through areas of bad abstraction along the way?

I feel you are mean. I'd rather we stop talking about this together if we're not going to actually engage with each other on the topic under discussion.

Re: Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

#165

Earlier quoted context omitted.

> You fail to realise that we can prove theorems about linear algebra Obviously I realize we can prove theorems. If I didn't realize it was possible to prove things I wouldn't claim things were provable. This is false by contradiction with my previous statements. Your worldview of me isn't consistent. > You also failed to address the gazillions of abstractions that don't have errors, some of which I have listed along…

>>>> One abstraction that is very useful is linear algebra which is an abstraction without errors. >>> Bullshit. Your claim that there is no abstraction error in linear algebra (when run on computers - we're in subdiscussion related to programming) is false >> You fail to realise that we can prove theorems about linear algebra USING COMPUTERS > Obviously I realize we can prove theorems. If I didn't realize it was pos…

Serious question. Putting aside all the stuff that basically make me feel like you are just calling me a moron and wasting my time: what do you disagree about? You keep treating the things I say like they are irrelevant jargon and not bothering to engage. Can you please try for a moment to explain why you think my argument that error in abstraction is useful is wrong by addressing the actual premises that are within that argument. Literally, address one of these claims:

1. Do you disagree with my claim that the runtime of learning algorithms depends depends on the graph size in both game theory and reinforcement learning problem formulations?

2. Do you disagree with my claim that abstraction reduces the number of states in the graph?

3. Do you disagree with my claim that since abstraction reduces the number of states in the graph the learning algorithms which run against them can complete more quickly because there are less states?

4. Do you disagree with my claim that algorithms which can compute a solution can have a better solution than algorithms which don't compute the solution?

5. Or if you don't disagree, can you admit that we agree on these things? Because when you just act like I'm not making any points it makes me feel like you are trolling me and being a jerk, not actually trying to talk to me.

I'm still just as convinced of the truth of the idea that it can be very wise to accept a bad abstraction, one that has error, rather than a perfect abstraction. I can't even fathom how to go about the opposite. How would a child go from knowing nothing to knowing everything perfectly without moving through areas of bad abstraction along the way?

Which numbered point do you feel is incoherent?

Re: Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

#166

Earlier quoted context omitted.

>>>> One abstraction that is very useful is linear algebra which is an abstraction without errors. >>> Bullshit. Your claim that there is no abstraction error in linear algebra (when run on computers - we're in subdiscussion related to programming) is false >> You fail to realise that we can prove theorems about linear algebra USING COMPUTERS > Obviously I realize we can prove theorems. If I didn't realize it was pos…

Serious question. Putting aside all the stuff that basically make me feel like you are just calling me a moron and wasting my time: what do you disagree about? You keep treating the things I say like they are irrelevant jargon and not bothering to engage. Can you please try for a moment to explain why you think my argument that error in abstraction is useful is wrong by addressing the actual premises that are within…

Waiting for your rebuttal. Worth nothing the problem isn't theoretical. We actually run into this 'we can't compute it fast enough' problem in practice.

- When we tried to solve chess we couldn't, the branching factor was too much.

- Go, it was horrendous there too.

- Poker, terrible there too.

But you want to dismiss me on the basis of jargon right? So here you go. Bellman coined the term curse of dimensionality. Combinatorial explosions happen because of branching factors in game graphs. Computational complexity for algorithms are defined with respect to this graph in both time and space for many learning algorithms. Because the games get so big the curse of dimensionality forces problem relaxation. I used ~words~. I must be an idiot. Feel free to dismiss me, I guess. I heard you heard someone else use words once and they were ~wrong~.

Hey wait a second. You're using words too. Does that mean everything you say is wrong?

Re: Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

#167
post #50

Earlier quoted context omitted.

I mean something like "this value contains this kind of value and implements the same interface as it by forwarding methods to the corresponding methods on that". E.g. https://kotlinlang.org/docs/delegation.html . (i.e. imagine doing something similar to inheritance but having the "parent" object be explicitly a field of your child object rather than just mushed together with it).

Ah I see. What you say is not quite true though, ad-hoc polymorphism (traits) provides the same functionality for non-OOP languages. > Until recently non-OO languages had very little support for delegation

> ad-hoc polymorphism (traits) provides the same functionality for non-OOP languages.

No they don't. Show me how you'd do that in e.g. Haskell. And note that Rust has `delegate` as a macro even though it has a trait system.

Re: Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

#168
post #167

Earlier quoted context omitted.

Ah I see. What you say is not quite true though, ad-hoc polymorphism (traits) provides the same functionality for non-OOP languages. > Until recently non-OO languages had very little support for delegation

> ad-hoc polymorphism (traits) provides the same functionality for non-OOP languages. No they don't. Show me how you'd do that in e.g. Haskell. And note that Rust has `delegate` as a macro even though it has a trait system.

This is what Haskell uses type classes for. See how Monoid typeclass delegates to semigroup with default implementation of mappend

Re: Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

#169
post #167

Earlier quoted context omitted.

> ad-hoc polymorphism (traits) provides the same functionality for non-OOP languages. No they don't. Show me how you'd do that in e.g. Haskell. And note that Rust has `delegate` as a macro even though it has a trait system.

This is what Haskell uses type classes for. See how Monoid typeclass delegates to semigroup with default implementation of mappend

Typeclass instances themselves can do delegation because they have inheritance (or something very similar to it). The relationship between Monoid and Semigroup is very much like OO subclassing. I'm talking about doing delegation for regular values, not typeclass instances.

Re: Goodbye, shitty Car extends Vehicle object-orientation tutorial (2011)

#170
post #169

Earlier quoted context omitted.

This is what Haskell uses type classes for. See how Monoid typeclass delegates to semigroup with default implementation of mappend

Typeclass instances themselves can do delegation because they have inheritance (or something very similar to it). The relationship between Monoid and Semigroup is very much like OO subclassing. I'm talking about doing delegation for regular values, not typeclass instances.

Oh, well then you are talking perhaps using a newtype to wrap another type and perhaps use deriving to get behaviors from underlying type automatically.

Or with a record you just explicitly implement typeclass methods in reference to the contained data.

If you mean doing it without doing a typeclass, well the functions need to have different names. If that’s exactly what you want. In order to have the same function name you need a typeclass.

Post reply on HN