A New Kind of Fail?
-
Who names their language Noop[^]? No-op, No Operation, i.e. nothing's gonna happen here. Why oh why would you name a computing language this, and then expect people to rush over to it? Are web "developers" truly so clueless that they are unaware of what "noop" means? I go to the project's web site and of their two "blogs" that they list, the first link just collapses in an error! In their list of "features" they list that they are all for "Immutability" - why? You can only change something once? What the hell is up with that? And no implementation subclassing? Have I missed something here? Is there something I'm being blind to?
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
I had similar feelings a few days ago when I tried out MSP from those nice people over at JetBrains[^]. It's not them, as such, I like Resharper, which is why I decided to give MSP a go. I followed their tutorial and I'm afraid that I just don't 'get it'. To me it seems to complicate things by a factor of about 10. As I say, it could just be me, but I would be interested to know if anyone else has tried it and thought it useful.
Henry Minute Do not read medical books! You could die of a misprint. - Mark Twain Girl: (staring) "Why do you need an icy cucumber?" “I want to report a fraud. The government is lying to us all.”
-
I had similar feelings a few days ago when I tried out MSP from those nice people over at JetBrains[^]. It's not them, as such, I like Resharper, which is why I decided to give MSP a go. I followed their tutorial and I'm afraid that I just don't 'get it'. To me it seems to complicate things by a factor of about 10. As I say, it could just be me, but I would be interested to know if anyone else has tried it and thought it useful.
Henry Minute Do not read medical books! You could die of a misprint. - Mark Twain Girl: (staring) "Why do you need an icy cucumber?" “I want to report a fraud. The government is lying to us all.”
Holy cow, that's insane - I'm looking at: http://www.jetbrains.com/mps/docs/tutorial.html[^] Gag. That's a serious, serious case of Second System Syndrome!
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
-
AIUI, I've never used one myself, when you need to change an object you end up creating a new one from scratch. This <magic happens here> allows the compiler to produce massively parallelizable code.
The latest nation. Procrastination.
So I have foo. Then I write
foo.count = 10;
And under the hood instead of just modifying the count value (or whatever the hell it is) directly, a complete new instance is created with it's count set to 10, and then, presumably, the old foo instance is tossed? That seems like an insane amount of extra work just to allow for thread safety, which is what you're alluding to, right? //edit Actually it's worse than that - if they copy the new instance, they have to copy ALL of the state of the old instance, how does it handle complex objects, references to other objects, collections, and all that crap? Seriously nasty.
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
-
Holy cow, that's insane - I'm looking at: http://www.jetbrains.com/mps/docs/tutorial.html[^] Gag. That's a serious, serious case of Second System Syndrome!
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
Yup! I had to go and lie down in a darkened room, after finishing it. :)
Henry Minute Do not read medical books! You could die of a misprint. - Mark Twain Girl: (staring) "Why do you need an icy cucumber?" “I want to report a fraud. The government is lying to us all.”
-
So I have foo. Then I write
foo.count = 10;
And under the hood instead of just modifying the count value (or whatever the hell it is) directly, a complete new instance is created with it's count set to 10, and then, presumably, the old foo instance is tossed? That seems like an insane amount of extra work just to allow for thread safety, which is what you're alluding to, right? //edit Actually it's worse than that - if they copy the new instance, they have to copy ALL of the state of the old instance, how does it handle complex objects, references to other objects, collections, and all that crap? Seriously nasty.
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
It's a completely different programming paradigm. You simply don't do
foo.count = 10;
there. And no, you don't have to copy ALL state (references to other objects). Because objects never change once created, it's perfectly safe to reuse the existing objects. The reason whystring
in C# is so easy to use is because it does precisely this. Immutable types are generally easier to work with. And there are efficient implementations for most data structures. There's no need to create a full copy of a collection just to remove some element in it; instead the collection is interally arrange as some sort of tree and will share subtrees that didn't change. Of course, for some purposes you need mutation. How those cases are handled differs from language to language. In "pure" functional languages, you might use something like the Haskell "State" monad to solve this. In other languages (like F#), it's perfectly possible to modify existing objects just as in C# (but of course you lose all benefits of immutability as soon as you do so). -
So in functional languages (I have only a very basic understanding of Lisp) if you have objects, you are not allowed to modify them at all? That seems silly to make as a unilateral rule. But what the hell do I know, I just program for a living.
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
You shouldn't really have objects. That implies state. :laugh:
I have been trying for weeks to get this little site indexed. If you wonder what it is, or would like some informal accommodation for the 2010 World Cup, please click on this link for Rhino Cottages.
-
In other news, my new language "SHíT" (pronounced "just purrfect") hits the shelves tomorrow. What do you mean "dependency injection support right in the language"? Does that mean it has (*GASP*!) interfaces and (*SWOON!*) constructors receiving parameters or even (*ICANTBELIEVETHEYDIDTHAT!*) public properties? [edit] On second thought, maybe .NET has put enough pressure on JVM performance that it's time to build a nice language on top of it.
Personally, I love the idea that Raymond spends his nights posting bad regexs to mailing lists under the pseudonym of Jane Smith. He'd be like a super hero, only more nerdy and less useful. [Trevel]
| FoldWithUs! | sighistI had a flash of Hannah Montana fans as I read that. :~
I have been trying for weeks to get this little site indexed. If you wonder what it is, or would like some informal accommodation for the 2010 World Cup, please click on this link for Rhino Cottages.
-
It's a completely different programming paradigm. You simply don't do
foo.count = 10;
there. And no, you don't have to copy ALL state (references to other objects). Because objects never change once created, it's perfectly safe to reuse the existing objects. The reason whystring
in C# is so easy to use is because it does precisely this. Immutable types are generally easier to work with. And there are efficient implementations for most data structures. There's no need to create a full copy of a collection just to remove some element in it; instead the collection is interally arrange as some sort of tree and will share subtrees that didn't change. Of course, for some purposes you need mutation. How those cases are handled differs from language to language. In "pure" functional languages, you might use something like the Haskell "State" monad to solve this. In other languages (like F#), it's perfectly possible to modify existing objects just as in C# (but of course you lose all benefits of immutability as soon as you do so).Thanks, that makes more sense. Though I'm still holding on to making fun of Noop. :)
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
-
You shouldn't really have objects. That implies state. :laugh:
I have been trying for weeks to get this little site indexed. If you wonder what it is, or would like some informal accommodation for the 2010 World Cup, please click on this link for Rhino Cottages.
You're assuming that usage of objects implies they will have a state. That may not be always true in practice. :laugh:
It is a crappy thing, but it's life -^ Carlo Pallini
-
Who names their language Noop[^]? No-op, No Operation, i.e. nothing's gonna happen here. Why oh why would you name a computing language this, and then expect people to rush over to it? Are web "developers" truly so clueless that they are unaware of what "noop" means? I go to the project's web site and of their two "blogs" that they list, the first link just collapses in an error! In their list of "features" they list that they are all for "Immutability" - why? You can only change something once? What the hell is up with that? And no implementation subclassing? Have I missed something here? Is there something I'm being blind to?
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
As far as I'm aware this isn't new, what's new is people expect others to actually care. I've seen a few projects like this which started out as a 'Well someone else in the world has to think this is a good idea too, I'll put it on the Internet'. Generally that idea has proven wrong. Could just be the college crowd is more prone to it, haven't run into half as many instances of this since graduating.
-
You're assuming that usage of objects implies they will have a state. That may not be always true in practice. :laugh:
It is a crappy thing, but it's life -^ Carlo Pallini
No, they may even be functions themselves. :)
I have been trying for weeks to get this little site indexed. If you wonder what it is, or would like some informal accommodation for the 2010 World Cup, please click on this link for Rhino Cottages.
-
Holy cow, that's insane - I'm looking at: http://www.jetbrains.com/mps/docs/tutorial.html[^] Gag. That's a serious, serious case of Second System Syndrome!
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
-
So in functional languages (I have only a very basic understanding of Lisp) if you have objects, you are not allowed to modify them at all? That seems silly to make as a unilateral rule. But what the hell do I know, I just program for a living.
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
Only in pure functional languages do you have complete immutability. No state, just what you pass around as parameters. Tail call optimisation means that a recursive call is really a loop, so a recursive call with modified parameters is equivalent to looping with modified state. Big gains w.r.t concurrency - no state means no shared state! The compiler can do more precise reasoning about your code. I tend to program a lot in a functional style in C++ - replacing an object can often be a lot more reliable than updating state.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
-
Holy cow, that's insane - I'm looking at: http://www.jetbrains.com/mps/docs/tutorial.html[^] Gag. That's a serious, serious case of Second System Syndrome!
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
Holy Shit! I think I would rather be water boarded than be forced to use anything like that.
- S 50 cups of coffee and you know it's on! Code, follow, or get out of the way.
-
Who names their language Noop[^]? No-op, No Operation, i.e. nothing's gonna happen here. Why oh why would you name a computing language this, and then expect people to rush over to it? Are web "developers" truly so clueless that they are unaware of what "noop" means? I go to the project's web site and of their two "blogs" that they list, the first link just collapses in an error! In their list of "features" they list that they are all for "Immutability" - why? You can only change something once? What the hell is up with that? And no implementation subclassing? Have I missed something here? Is there something I'm being blind to?
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
What's in a name?
-
What's in a name?
-
I had a flash of Hannah Montana fans as I read that. :~
I have been trying for weeks to get this little site indexed. If you wonder what it is, or would like some informal accommodation for the 2010 World Cup, please click on this link for Rhino Cottages.
-
It's a completely different programming paradigm. You simply don't do
foo.count = 10;
there. And no, you don't have to copy ALL state (references to other objects). Because objects never change once created, it's perfectly safe to reuse the existing objects. The reason whystring
in C# is so easy to use is because it does precisely this. Immutable types are generally easier to work with. And there are efficient implementations for most data structures. There's no need to create a full copy of a collection just to remove some element in it; instead the collection is interally arrange as some sort of tree and will share subtrees that didn't change. Of course, for some purposes you need mutation. How those cases are handled differs from language to language. In "pure" functional languages, you might use something like the Haskell "State" monad to solve this. In other languages (like F#), it's perfectly possible to modify existing objects just as in C# (but of course you lose all benefits of immutability as soon as you do so).Daniel Grunwald wrote:
instead the collection is interally arrange as some sort of tree and will share subtrees that didn't change
Actually, my StringBuilderPlus makes use of this technique. It's very effective for "changing" a portion of a very large immutable structure.
Visual Studio is an excellent GUIIDE.
-
You shouldn't really have objects. That implies state. :laugh:
I have been trying for weeks to get this little site indexed. If you wonder what it is, or would like some informal accommodation for the 2010 World Cup, please click on this link for Rhino Cottages.
Immutability does not mean "no state at all". It does mean that if you do have state, once it's created, it will never change. If the state does not change it can be shared between threads safely. --- Adar Wesley
-
Who names their language Noop[^]? No-op, No Operation, i.e. nothing's gonna happen here. Why oh why would you name a computing language this, and then expect people to rush over to it? Are web "developers" truly so clueless that they are unaware of what "noop" means? I go to the project's web site and of their two "blogs" that they list, the first link just collapses in an error! In their list of "features" they list that they are all for "Immutability" - why? You can only change something once? What the hell is up with that? And no implementation subclassing? Have I missed something here? Is there something I'm being blind to?
¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow
I agree on the name. I'm also interested in seeing whether they come up with something better than the C-style syntax which we should have dumped years ago.
Kevin