I don't play poker but I've often thought that the ability to play with perfect conviction like you have a hand that you do not have must be a tremendous asset. I think your point that the actual cards don't matter until they are revealed at the end is a great point. If you can play such that except in rare circumstances you always convince your opponents that your hand is better than theirs, then you'll win more often, or at least, you'll be able to use those skills to eke out incremental advantage over time.
Of course, having the luck where you actually *have* the better hand more often must be an important component too... but over the long run, since everyone will on average have the best cards roughly an equal number of times, it's gotta come down to the skill of manhandling other players into doing what you want through perfectly executed charades.
I don't really have any interest in poker at all, it bores me to tears, but it must be very satisfying to have that skill and to exercise it in games.
Weird that these teams would be backed by an airplane company, given that hyperloops, if they were ever built, would just take customers away from flying.
I find that VR headsets don't quite have a feeling of "reality" to them, and I'm not sure exactly how much low FOV, low resolution, screen door, and accomodation/vergence issues contribute to this. After all, you're always focusing at a fixed distance no matter how distant the object you're looking at is "supposed" to appear, and maybe this difference is perceptible as "not real".
But would instantly refocusable lenses help here? A sensor could detect how the user's eyes were focused and then use the refocusable lens to implement a corresponding change to the focal plane of the LCD panel. If that makes any sense. Like, if a sensor could tell that my eyes are focused at an object X meters away (by examining where both my eyes are pointing), then the headset lenses could change shape so that they make the screens appear to be projected at that same distance.
My guess would be that the Dutch and German teams outspent the American teams. Sometimes universities find a claim to fame and they dedicate quite a bit of resources to maintaining that.
Of course, I have no actual idea who spent what so this is purely conjecture, to be clear.
If you had expressed yourself in a different way, I might have felt some sympathy for you. As it is, I have none. My best advice for you would be, stop reading English websites like Slashdot and go read the equivalent in whatever language you prefer.
I have had three notebook computers in the past 20 years:
- A Kapok brand cheap-o generic PC thing that I bought in 1998, and which lasted 7 years with no problems - A Panasonic toughbook Y2 that I bought in 2005 which lasted 7 years with no problems - A Retina Macbook Pro 15 inch that I bought in 2012 and which I am using to this day, four and a half years later
I now expect all of my laptops to last 7 years with no problems. Lasting 4 years isn't really anything to write home about in my book. We'll see if this mac makes it all the way to 7, it's starting to show some troubling signs of premature aging at the moment...
Additionally, given that there is no such thing as a "gene that makes kidneys" or a "gene that makes neurons", only "genes that make proteins", I expect you'd have to very subtly change a whole lot of genes in order to actually selectively stop just one kind of organ generation, and even then you'd probably get an imperfect version of that organ.
I thought they were just trying to make the pig "human enough" that its kidneys would work, as piggy as they still might be, in a human.
But you know, I really ought to actually do some research because clearly you know more about this than I do...
But it sounds like they're not doing the experiments in the right order. They're starting with human cells which end up leaving more questions unanswered because they can't carry the experiments out the way they would be able to with pure animal cells. If they started with pure animal cells they could answer the more fundamental questions quickly and this could lead them to more quickly answering the remaining questions using human cells.
I guess they could do all this in parallel though, which I hope they are doing.
Many of the issues they appear to be studying do not require the use of human cells. For example, they talk about not knowing what would happen if the animal were to complete gestation since pigs only gestate for 112 days, but human embryos gestate for 9 months.
Well, then use two different animals that have vastly different gestation periods, and see what happens. You don't need to use human cells to find that out.
They also talk about not knowing whether or not the cells would migrate to the brain.
Again, use something else. Like, a mouse and an elephant. Or whatever.
It seems premature to be using human cells in these experiments if they haven't already answered these questions with other animal chimeras.
Which makes me wonder, why are they using human cells at all? Are they just going for headlines or what?
And other people will happily live where they want to. Why do you feel the need to look down your nose at them? I think you're not as confident about your life situation as you are trying to pretend to be.
The weather comment was meant as a joke. I should have put a smiley in to make that clearer.
What I wear has no bearing on this discussion.
The simple fact is that when a place has expensive housing costs, it's because there is a lot of competition for that housing. And the reason for a lot of competition for housing is that a lot of people want to live there. And believe me, people have reasons that they want to live in a place, it's not "peer pressure" or whatever reason you're making up because you can't think of one.
I'm genuinely happy that you like where you live and that it's an inexpensive place to live. Many young people, especially those who are "upwardly mobile" because they work in a high paying industry, really want to live in an urban place with alot of "action". When they get to be old guys many of them lose interest in that and the equations change, and they move elsewhere. I'm quite certain that you've seen this pattern already even if you don't recognize it.
You sound a lot like my dad, who I feel is very lucky to have the mindset he does: he really loves living in one of the cheapest places in the U.S. (northeastern Ohio). His cost of living is absurdly low and he was able to retire to a comfortable life of doing whatever he wants, alot of which involves outdoor activities like boating, fishing, and hunting that are plentiful and cheap in that area. It's the lucky person who naturally wants to live in the place that many other people are fleeing, because their cost of living will be so low.
Well he bought a house in Florida recently because he couldn't stand Ohio winters any more, but half a year in Ohio and the other half in Florida really is the best of both worlds for him, and it's all doable because of the low cost of living of the areas he lives in.
Now I could spout off about how I cannot comprehend how someone would want to live in a place where the housing is cheap because it mostly sucks there, but I won't. I recognize that different people like different things and I'm not going to assume that other people are unjustified in their choices. That feels alot like a superiority complex trying to get out.
The bay area is a lot bigger than the SF city limits. Not sure why you conclude that, because, in your opinion, SF city is child-unfriendly, that the entire bay area is not a place for kids at all.
I have a 10 year old and 8 year old in Cupertino and we're doing pretty well.
You're a liar. You've never actually been to San Francisco.
Also, why do you think it's worth your time to pontificate on why you don't understand why someone else likes something that you don't? I mean if you're really "just another old guy" surely you've gathered enough wisdom in your time on earth to realize that a lot of different people like a lot of different things, and if you can't understand why someone likes something, the reason is probably NOT because they are deluded, but it's actually because you're just not familiar enough with the thing to know it's good qualities, or maybe it's just fundamentally not your cup of tea.
I mean, seriously. I think your entire post was just to make yourself fell better about your house payment. That's how it reads anyway.
Yeah but at least with Add I know that a function is being called, whereas overloaded operators are exactly and specifically designed to make operations that have "normal" functionality pre-defined as part of the language, actually do something else, without any indication at the point of usage that this is occurring.
Sure if you are intimately familiar with the types involved you will not be caught off-guard very often. But "it doesn't usually bite you if you know what you're doing" is not a great argument for a language feature if you ask me.
I have written code with matrix math and I actually found it clearer to spell out what's going on more explicitly than to use overloaded operators. But that's a personal choice for sure.
The index() form makes it very clear that a function is being called.
Overloaded [] does not.
Pretty simple really.
The worse of all is overloaded ->, which is an operator which can normally be applied to a dereferenceable type, so you would really have no idea to even look for an overloaded operator to see if something unexpected is happening, versus [] which if you know the type is not a C style array, must be an overloaded operator.
In my experience, if there are bad paradigms available in the language, people will use them, even celebrating their ability to do something "clever" and obtuse, and eventually they will make their way into the code base. Very often it may not even be in your code base, that you have control of, but in some open source software that you have to read and understand.
Absolutely, the intelligent and rational use of language features is the responsibility of the programmer; but it's pragmatic to recognize that in a world of imperfect programmers, it's better to not have language features that generally lead to hard to understand code.
a + b for complex types isn't really the trouble, since we know that the compiler can only accept that syntax if the + operator has been overloaded.
What's worse is overloading [] or -> and competely fooling the programmer who has no way of knowing, without exhaustively scanning all source files, whether or not those operators are doing something unusual.
"so why does Nim need a feature only useful in video game inner loops"
yeah that is a bit of a straw man, I admit. We never established that operator overloading is a feature only useful in video game inner loops.
But I will say that I think it's generally only useful in a narrow and small subset of programming problems: those for which mathematical constructs already exist and for which math operators are meaningful. Most people don't write code using quaternions and matrices. General control logic and data flow algorithms are far far more common.
The worst kind of overloading in C++ is overloading for things like brackets and parenthesis and dereference. You're taking an operator which implicitly only has meaning within the language, since these are not mathematical operators, and allowing the meaning to be changed. I can buy that in narrow circumstances there is value in overloading the math operators, but the rest of them, forget it. Way more rope than necessary to hang yourself and anyone else who is unfortunate enough to read your code.
That's only because of some weird syntactical rules of the functional language you are using in your example.
So in:
'let a = 5 if a = 2 else a'
the variable 'a' from that point on in the scope will I guess refer to this *new* 'a' introduced by the let expression, instead of the 'a' that was passed in? That's freaking confusing.
And the 'a' in the right hand side of the let expression is the function parameter 'a', not the 'a' being introduced in the left hand side of the let expression?
The ways that + can behave in C can be enumerated without knowing anything else about the program. But overloaded operators in C++ cannot be enumerated without knowing the types involved and doing an inspection on those types to see if the operator is overloaded.
It's a trade-off. Sure operator overloading allows some concise representations. But it's information hiding. That's not a trade-off that I think is wise to make. Other people obviously differ in their opinion.
Well I guess we've had different experiences then.
matrix.multiply(other) doesn't seem that much worse to me than matrix * other, and in my opinion is more self-documenting since I know that a function is being invoked. And have you tried to actually write coherent operator overloading for any class? My god it's ridiculous in C++; the syntax for doing so is awful and the number of niggly details you have to get right or leave yourself open to weird bugs that will only show up much later when someone else tries to do something that you didn't even think of...
Also "smart pointers" is not a particularly good reason in C++ since it's just a memory management technique to get around C++'s lack of good memory management support.
Yeah. I'll take the "matrix.multiply" form. It's a little extra typing but in my opinion operator overloading is a fragile crutch that is ready to break at any moment and leave you flailing about on the floor.
Another point would be that the vast, vast majority of code being written is not video game inner loops. So languages that are optimized for video game inner loops are not really the most practically useful languages to the largest number of people.
Finally - if you want all of the "raw power" of C++ -- well we already have C++. Other languages do not need to duplicate those "features" that are really only useful in such a narrow domain. I mean you're not going to be writing your video game inner loops in Nim anyway, so why does Nim need a feature only useful in video game inner loops?
Someone modded my comment as "Troll". I cannot even fathom what would lead someone to do that. My comment was a critique on the language. WTF is trolling about discussing the characteristics of a programming language in a discussion forum about that programming language?
How so? There's only one name associated within the parameter internal to the function. So there's no ambiguity about which value is being assigned to.
I've *never* been confused about what it means to assign a value to an input parameter. Something like this is a common pattern and pretty useful:
function doSomething(a : String) {
if (a == "") {
a = "some default";
}// Now operate knowing that a is not empty }
That kind of code has never confused me.
But thinking that an assignment is to the 'x' of some outer scope, when in fact I didn't realize that 'x' was re-declared within this scope and the assignment has no effect outside of this scope... that's bitten me I don't know how many times. Especially for commonly used variable names like i, n, x...
I do like that kind of polymorphism because it allows the "same" operation to be applied to different types; however, readability becomes a bit more difficult because I have to know, in my head, all of the types of all arguments to a function call in order to know which form of the function is being called, if I am reading the code and trying to follow the flow to understand what the code is doing.
So it's a trade-off. To be honest, the number of times that I've really, really wanted that kind of polymorphism versus the number of times that it's just confused me, lead me to conclude that I'd prefer to live without it. doubleToString(), intToString() really isn't *that* much more to type...
I don't play poker but I've often thought that the ability to play with perfect conviction like you have a hand that you do not have must be a tremendous asset. I think your point that the actual cards don't matter until they are revealed at the end is a great point. If you can play such that except in rare circumstances you always convince your opponents that your hand is better than theirs, then you'll win more often, or at least, you'll be able to use those skills to eke out incremental advantage over time.
Of course, having the luck where you actually *have* the better hand more often must be an important component too ... but over the long run, since everyone will on average have the best cards roughly an equal number of times, it's gotta come down to the skill of manhandling other players into doing what you want through perfectly executed charades.
I don't really have any interest in poker at all, it bores me to tears, but it must be very satisfying to have that skill and to exercise it in games.
Claiming that color images will incite the public to demand more funding for NASA is a stretch about as far as from here to Saturn's rings.
Weird that these teams would be backed by an airplane company, given that hyperloops, if they were ever built, would just take customers away from flying.
I find that VR headsets don't quite have a feeling of "reality" to them, and I'm not sure exactly how much low FOV, low resolution, screen door, and accomodation/vergence issues contribute to this. After all, you're always focusing at a fixed distance no matter how distant the object you're looking at is "supposed" to appear, and maybe this difference is perceptible as "not real".
But would instantly refocusable lenses help here? A sensor could detect how the user's eyes were focused and then use the refocusable lens to implement a corresponding change to the focal plane of the LCD panel. If that makes any sense. Like, if a sensor could tell that my eyes are focused at an object X meters away (by examining where both my eyes are pointing), then the headset lenses could change shape so that they make the screens appear to be projected at that same distance.
My guess would be that the Dutch and German teams outspent the American teams. Sometimes universities find a claim to fame and they dedicate quite a bit of resources to maintaining that.
Of course, I have no actual idea who spent what so this is purely conjecture, to be clear.
If you had expressed yourself in a different way, I might have felt some sympathy for you. As it is, I have none. My best advice for you would be, stop reading English websites like Slashdot and go read the equivalent in whatever language you prefer.
Any opportunity to express an anti-American sentiment, I guess. Whatever floats your boat, hater.
I have had three notebook computers in the past 20 years:
- A Kapok brand cheap-o generic PC thing that I bought in 1998, and which lasted 7 years with no problems
- A Panasonic toughbook Y2 that I bought in 2005 which lasted 7 years with no problems
- A Retina Macbook Pro 15 inch that I bought in 2012 and which I am using to this day, four and a half years later
I now expect all of my laptops to last 7 years with no problems. Lasting 4 years isn't really anything to write home about in my book. We'll see if this mac makes it all the way to 7, it's starting to show some troubling signs of premature aging at the moment ...
Additionally, given that there is no such thing as a "gene that makes kidneys" or a "gene that makes neurons", only "genes that make proteins", I expect you'd have to very subtly change a whole lot of genes in order to actually selectively stop just one kind of organ generation, and even then you'd probably get an imperfect version of that organ.
I thought they were just trying to make the pig "human enough" that its kidneys would work, as piggy as they still might be, in a human.
But you know, I really ought to actually do some research because clearly you know more about this than I do ...
But it sounds like they're not doing the experiments in the right order. They're starting with human cells which end up leaving more questions unanswered because they can't carry the experiments out the way they would be able to with pure animal cells. If they started with pure animal cells they could answer the more fundamental questions quickly and this could lead them to more quickly answering the remaining questions using human cells.
I guess they could do all this in parallel though, which I hope they are doing.
Many of the issues they appear to be studying do not require the use of human cells. For example, they talk about not knowing what would happen if the animal were to complete gestation since pigs only gestate for 112 days, but human embryos gestate for 9 months.
Well, then use two different animals that have vastly different gestation periods, and see what happens. You don't need to use human cells to find that out.
They also talk about not knowing whether or not the cells would migrate to the brain.
Again, use something else. Like, a mouse and an elephant. Or whatever.
It seems premature to be using human cells in these experiments if they haven't already answered these questions with other animal chimeras.
Which makes me wonder, why are they using human cells at all? Are they just going for headlines or what?
And other people will happily live where they want to. Why do you feel the need to look down your nose at them? I think you're not as confident about your life situation as you are trying to pretend to be.
The weather comment was meant as a joke. I should have put a smiley in to make that clearer.
What I wear has no bearing on this discussion.
The simple fact is that when a place has expensive housing costs, it's because there is a lot of competition for that housing. And the reason for a lot of competition for housing is that a lot of people want to live there. And believe me, people have reasons that they want to live in a place, it's not "peer pressure" or whatever reason you're making up because you can't think of one.
I'm genuinely happy that you like where you live and that it's an inexpensive place to live. Many young people, especially those who are "upwardly mobile" because they work in a high paying industry, really want to live in an urban place with alot of "action". When they get to be old guys many of them lose interest in that and the equations change, and they move elsewhere. I'm quite certain that you've seen this pattern already even if you don't recognize it.
You sound a lot like my dad, who I feel is very lucky to have the mindset he does: he really loves living in one of the cheapest places in the U.S. (northeastern Ohio). His cost of living is absurdly low and he was able to retire to a comfortable life of doing whatever he wants, alot of which involves outdoor activities like boating, fishing, and hunting that are plentiful and cheap in that area. It's the lucky person who naturally wants to live in the place that many other people are fleeing, because their cost of living will be so low.
Well he bought a house in Florida recently because he couldn't stand Ohio winters any more, but half a year in Ohio and the other half in Florida really is the best of both worlds for him, and it's all doable because of the low cost of living of the areas he lives in.
Now I could spout off about how I cannot comprehend how someone would want to live in a place where the housing is cheap because it mostly sucks there, but I won't. I recognize that different people like different things and I'm not going to assume that other people are unjustified in their choices. That feels alot like a superiority complex trying to get out.
The bay area is a lot bigger than the SF city limits. Not sure why you conclude that, because, in your opinion, SF city is child-unfriendly, that the entire bay area is not a place for kids at all.
I have a 10 year old and 8 year old in Cupertino and we're doing pretty well.
"Yes, the weather is generally nice"
You're a liar. You've never actually been to San Francisco.
Also, why do you think it's worth your time to pontificate on why you don't understand why someone else likes something that you don't? I mean if you're really "just another old guy" surely you've gathered enough wisdom in your time on earth to realize that a lot of different people like a lot of different things, and if you can't understand why someone likes something, the reason is probably NOT because they are deluded, but it's actually because you're just not familiar enough with the thing to know it's good qualities, or maybe it's just fundamentally not your cup of tea.
I mean, seriously. I think your entire post was just to make yourself fell better about your house payment. That's how it reads anyway.
Yeah but at least with Add I know that a function is being called, whereas overloaded operators are exactly and specifically designed to make operations that have "normal" functionality pre-defined as part of the language, actually do something else, without any indication at the point of usage that this is occurring.
Sure if you are intimately familiar with the types involved you will not be caught off-guard very often. But "it doesn't usually bite you if you know what you're doing" is not a great argument for a language feature if you ask me.
I have written code with matrix math and I actually found it clearer to spell out what's going on more explicitly than to use overloaded operators. But that's a personal choice for sure.
The index() form makes it very clear that a function is being called.
Overloaded [] does not.
Pretty simple really.
The worse of all is overloaded ->, which is an operator which can normally be applied to a dereferenceable type, so you would really have no idea to even look for an overloaded operator to see if something unexpected is happening, versus [] which if you know the type is not a C style array, must be an overloaded operator.
In my experience, if there are bad paradigms available in the language, people will use them, even celebrating their ability to do something "clever" and obtuse, and eventually they will make their way into the code base. Very often it may not even be in your code base, that you have control of, but in some open source software that you have to read and understand.
Absolutely, the intelligent and rational use of language features is the responsibility of the programmer; but it's pragmatic to recognize that in a world of imperfect programmers, it's better to not have language features that generally lead to hard to understand code.
a + b for complex types isn't really the trouble, since we know that the compiler can only accept that syntax if the + operator has been overloaded.
What's worse is overloading [] or -> and competely fooling the programmer who has no way of knowing, without exhaustively scanning all source files, whether or not those operators are doing something unusual.
Information hiding. It's bad.
"so why does Nim need a feature only useful in video game inner loops"
yeah that is a bit of a straw man, I admit. We never established that operator overloading is a feature only useful in video game inner loops.
But I will say that I think it's generally only useful in a narrow and small subset of programming problems: those for which mathematical constructs already exist and for which math operators are meaningful. Most people don't write code using quaternions and matrices. General control logic and data flow algorithms are far far more common.
The worst kind of overloading in C++ is overloading for things like brackets and parenthesis and dereference. You're taking an operator which implicitly only has meaning within the language, since these are not mathematical operators, and allowing the meaning to be changed. I can buy that in narrow circumstances there is value in overloading the math operators, but the rest of them, forget it. Way more rope than necessary to hang yourself and anyone else who is unfortunate enough to read your code.
That's only because of some weird syntactical rules of the functional language you are using in your example.
So in:
'let a = 5 if a = 2 else a'
the variable 'a' from that point on in the scope will I guess refer to this *new* 'a' introduced by the let expression, instead of the 'a' that was passed in? That's freaking confusing.
And the 'a' in the right hand side of the let expression is the function parameter 'a', not the 'a' being introduced in the left hand side of the let expression?
Sorry that's just obtuse.
The ways that + can behave in C can be enumerated without knowing anything else about the program. But overloaded operators in C++ cannot be enumerated without knowing the types involved and doing an inspection on those types to see if the operator is overloaded.
It's a trade-off. Sure operator overloading allows some concise representations. But it's information hiding. That's not a trade-off that I think is wise to make. Other people obviously differ in their opinion.
Well I guess we've had different experiences then.
matrix.multiply(other) doesn't seem that much worse to me than matrix * other, and in my opinion is more self-documenting since I know that a function is being invoked. And have you tried to actually write coherent operator overloading for any class? My god it's ridiculous in C++; the syntax for doing so is awful and the number of niggly details you have to get right or leave yourself open to weird bugs that will only show up much later when someone else tries to do something that you didn't even think of ...
Also "smart pointers" is not a particularly good reason in C++ since it's just a memory management technique to get around C++'s lack of good memory management support.
Yeah. I'll take the "matrix.multiply" form. It's a little extra typing but in my opinion operator overloading is a fragile crutch that is ready to break at any moment and leave you flailing about on the floor.
Another point would be that the vast, vast majority of code being written is not video game inner loops. So languages that are optimized for video game inner loops are not really the most practically useful languages to the largest number of people.
Finally - if you want all of the "raw power" of C++ -- well we already have C++. Other languages do not need to duplicate those "features" that are really only useful in such a narrow domain. I mean you're not going to be writing your video game inner loops in Nim anyway, so why does Nim need a feature only useful in video game inner loops?
Someone modded my comment as "Troll". I cannot even fathom what would lead someone to do that. My comment was a critique on the language. WTF is trolling about discussing the characteristics of a programming language in a discussion forum about that programming language?
How so? There's only one name associated within the parameter internal to the function. So there's no ambiguity about which value is being assigned to.
I've *never* been confused about what it means to assign a value to an input parameter. Something like this is a common pattern and pretty useful:
function doSomething(a : String) // Now operate knowing that a is not empty
{
if (a == "") {
a = "some default";
}
}
That kind of code has never confused me.
But thinking that an assignment is to the 'x' of some outer scope, when in fact I didn't realize that 'x' was re-declared within this scope and the assignment has no effect outside of this scope ... that's bitten me I don't know how many times. Especially for commonly used variable names like i, n, x ...
I do like that kind of polymorphism because it allows the "same" operation to be applied to different types; however, readability becomes a bit more difficult because I have to know, in my head, all of the types of all arguments to a function call in order to know which form of the function is being called, if I am reading the code and trying to follow the flow to understand what the code is doing.
So it's a trade-off. To be honest, the number of times that I've really, really wanted that kind of polymorphism versus the number of times that it's just confused me, lead me to conclude that I'd prefer to live without it. doubleToString(), intToString() really isn't *that* much more to type ...