We're talking about the UI here, not the size of the app store.
I'm not sure how to best explain it; it's like everything else is needlessly broken. I finally understand why so many WebOS users cling to their old pre 3's! I used to think the UI was impressive, a cut above the rest, but "not enough" to justify a switch. How wrong I was.
WebOS users must have thought the whole world had gone mad. They were zipping around in jet packs while everyone around them was buzzing with excitement over the latest ox cart.
BB10 (sensibly) steals a lot of the good ideas found in WebOS, and adds a few of their own. We can debate which one is better, sure, but it's clear they're both *still* well ahead of the pack as far as the UI is concerned. Everything else just feels... crippled... like I've traveled back in time.
It's a completely meaningless term. When you see someone arguing about whether or not a given language is a "scripting language", just assume that they're morons.
For example, 1.1 just got MMS capabilities. Based on just this alone, 1.0 would have just been laughed out of the market.
Funny, the first iPhone didn't support MMS and it manged to survive.
I expect you'll see them ramp up their marketing efforts as the software becomes more feature-complete. Until then, it's just not ready for end users.
They made how many for the first go round again? Something like 1000 that they only sold through eBay? I'm going to guess that they don't think it's ready for end users either.
Objects can be handy when used appropriately. I don't know that anyone disputes that. OOP, however, isn't even a coherent concept. That's my objection.
Putting that in context here, quicksort is an important algorithm. It's well understood and can be taught. OOP is nebulous and incoherent. It cannot be taught as no one can even agree on so much as its basic constituents! You'll even find people who don't agree that objects are essential to OOP. In short: whatever you teach, you'll find a large number of people who will not agree that what you're teaching is OOP.
If it has shown success, why are the numbers of programmers not rising?
Are they static or in decline? I've not seen any data to suggest that.
Anyhow, while it's a proven technique, it hasn't seen wide-spread use since the 80's when the research I'm referring to was conducted. I can only speculate as to why.
Just what I said - a sandbox that lets you use any approach to organizing structure/behavior... and also the ability to use any language you liked
Isn't that exactly what we have now?
Then we would see what approach a kid took to figuring out how to perform a task
Where would they begin? They'd almost need to be experts before they could make any sort of meaningful choice. As beginners tend to have little to no preexisting knowledge (that's what makes them beginners, after all) they'd essentially be making their selections at random. I don't see how that would benefit beginners in any way. It would like learning to swim by getting dropped from a helicopter in to shark-filled ocean waters.
Really, OOP is having the data combined with the functions that operate on the data.
Hey, it's your definition. Enjoy. Just don't expect many people to agree with you. (That's my point!)
Hell, even I'll disagree with it on the grounds that it's insufficient. On it's face, it's so broad that it encompasses just about everything, which is clearly not what you intend. Mix in a bit of context and you just get a simple definition of "object".
Everything else involved in OOP derives that.
You'll need to tweak your definition a bit before you can derive anything. What are these principles that naturally derive from your definition (or hopefully soon-to-be modified definition)?
digging deeply into OOP, which Dijkstra despised, leads directly to programming by proof
Don't be silly. Meyer doesn't offer anything of the sort in OOSC, nor does anyone anywhere else. (If they could, you'd necessarily have a solid mathematical foundation and no further ambiguity as to what constitutes OOP!) What you do find in his overweight book are a lot of bold claims which are NOT supported by the literature. (For example: Right up front he claims that people who "master" OO techniques can produce software faster and cheaper.) He also makes an irritating habit of misrepresenting functional and structured approaches to bolster his never-ending salesmanship of Eiffel. The unnecessary build-up to the big "reveal" comes off more like a side-show performance rather than a scholarly work (which, by the way, it is clearly not!).
Moving back for a second...
Everything else involved in OOP derives that.
Do you believe that the "principles" Meyer offers in his advertisement -- oops, I mean book -- can be derived from your definition?
Apparently not. I misinterpreted "the unique thing". My bad.
The unique thing is the idea of functions moving around with the data it operates on.
Still, it's clear that you're confused. OOP did not introduce objects.
The Liskov substitution principle is almost a necessity for truly flexible code.
Ignoring for the moment that that has absolutely nothing to do with my comment: that statement is completely incoherent.
The Alan Kay style of OOP is much nicer in my opinion
And not at all like OOP as it is generally understood by Java, C#, and C++ programmers. Again, no one can even agree on what constitutes OOP. It's an incoherent concept at best. Dig up a few definitions. You'll find most are vague, many are inconsistent, and a few so broad that they're meaningless.
Organizing code into modular sections just makes sense
Indeed it does. Modularity is good and many beginners seem to naturally understand the need. OOP in the *ahem* classical sense, however, is anti-modular and is thus ill-suited.
since you are kind of forced to think in terms of classes anyway.
Classes aren't essential to objects, you know. I'd even go as far as to say that they're a harmful concept. Skim through whatever books you have lying around and you'll soon discover that a good bit about what is written about "OOP" is ultimately about dealing with the problems caused by the flawed concept of classes and class-based inheritance in many popular so-called object oriented languages. An easy example would be design patterns. You'll find that a good number of the "patterns" found in GoF are intended for problems that you simply don't encounter, or which have solutions so trivial that they don't warrant special attention, in other languages, including other so-called OO languages.
It could be that you believe classes to be essential to OOP, but I've not seen many people make that claim.
It wasn't arbitrary. It's a proven approach that has been shown to be successful; even with very young children. I honestly never considered the possibility that it couldn't be near universal.
So what you like are objects, not necessarily OOP (by whatever definition). Objects, used appropriately, can be useful. They're no panacea, of course, and their should be little doubt that they're misused more often than not.
makes it easy to learn about modularity.
I can't possibly disagree more here. OOP (in the Liskov sense) is anti-modular by its very nature. Languages like Java and C# make it much more difficult for beginners to learn about modularity as a result.
Please, enlighten me then! Show me the error of my ways.
If you can, stay away from platitudes, they won't actually help you make your case. I completely understand if that's all you can offer; that's my point after all.
I get the attraction to Lisp. It's the same attraction I have to forth. They're both fun and interesting to implement. Well, at least when you first encounter therm.
So, yeah, I guess "Because it makes writing an interpreter really easy" is a good call.
I've heard lots of good things about it. I just haven't heard anything about it that's unique to OOP. Hell, no one can even agree about what constitutes OOP!
I'd ask you to defend it, but you'll just mumble something ridiculous about "modularity" and I'll be forced to laugh at you.
I thought this was supposed to be uncontroversial?
Classes? You can't be serious! Logic? If slashdot is any indication, most programmers couldn't pass an undergrad course in logic. Sure, you'll need an incredibly tiny subset of logic, but it's not a topic that needs special consideration. Most beginners work out the basics themselves without assistance. They certainly don't need a through understanding of the subject like a philosopher. I could go on...
A better (much shorter) list of fundamentals:
- Data - variables, types, and structures (Just the basics, of course.) - Flow control (iteration, branching)
That's it, really. (I may have even gone too far!) I can't really add anything else without stepping in to controversial territory.
Useful is a different matter, naturally, and we could add quite a bit more to the list. Though I doubt that it would be nearly as long as yours without becoming controversial.
How about we point beginners to a simple imperative language with an interactive mode? Pack it with simple but interesting games they can understand and modify.
You know, the same stuff we had when we were kids. It sure beats the shit we're giving them now.
You tell 'em. That worked out great for Windows 8, after all...
People who want attention buy them, not people who like to ride.
Wait, those are two different groups?
We're talking about the UI here, not the size of the app store.
I'm not sure how to best explain it; it's like everything else is needlessly broken. I finally understand why so many WebOS users cling to their old pre 3's! I used to think the UI was impressive, a cut above the rest, but "not enough" to justify a switch. How wrong I was.
WebOS users must have thought the whole world had gone mad. They were zipping around in jet packs while everyone around them was buzzing with excitement over the latest ox cart.
BB10 (sensibly) steals a lot of the good ideas found in WebOS, and adds a few of their own. We can debate which one is better, sure, but it's clear they're both *still* well ahead of the pack as far as the UI is concerned. Everything else just feels ... crippled ... like I've traveled back in time.
I'll second this. After using BB10, using Android or iOS is like stepping back in time.
It's a completely meaningless term. When you see someone arguing about whether or not a given language is a "scripting language", just assume that they're morons.
Nonsense, of course it was.
For example, 1.1 just got MMS capabilities. Based on just this alone, 1.0 would have just been laughed out of the market.
Funny, the first iPhone didn't support MMS and it manged to survive.
I expect you'll see them ramp up their marketing efforts as the software becomes more feature-complete. Until then, it's just not ready for end users.
They made how many for the first go round again? Something like 1000 that they only sold through eBay? I'm going to guess that they don't think it's ready for end users either.
Objects can be handy when used appropriately. I don't know that anyone disputes that. OOP, however, isn't even a coherent concept. That's my objection.
Putting that in context here, quicksort is an important algorithm. It's well understood and can be taught. OOP is nebulous and incoherent. It cannot be taught as no one can even agree on so much as its basic constituents! You'll even find people who don't agree that objects are essential to OOP. In short: whatever you teach, you'll find a large number of people who will not agree that what you're teaching is OOP.
If it has shown success, why are the numbers of programmers not rising?
Are they static or in decline? I've not seen any data to suggest that.
Anyhow, while it's a proven technique, it hasn't seen wide-spread use since the 80's when the research I'm referring to was conducted. I can only speculate as to why.
Just what I said - a sandbox that lets you use any approach to organizing structure/behavior ... and also the ability to use any language you liked
Isn't that exactly what we have now?
Then we would see what approach a kid took to figuring out how to perform a task
Where would they begin? They'd almost need to be experts before they could make any sort of meaningful choice. As beginners tend to have little to no preexisting knowledge (that's what makes them beginners, after all) they'd essentially be making their selections at random. I don't see how that would benefit beginners in any way. It would like learning to swim by getting dropped from a helicopter in to shark-filled ocean waters.
Really, OOP is having the data combined with the functions that operate on the data.
Hey, it's your definition. Enjoy. Just don't expect many people to agree with you. (That's my point!)
Hell, even I'll disagree with it on the grounds that it's insufficient. On it's face, it's so broad that it encompasses just about everything, which is clearly not what you intend. Mix in a bit of context and you just get a simple definition of "object".
Everything else involved in OOP derives that.
You'll need to tweak your definition a bit before you can derive anything. What are these principles that naturally derive from your definition (or hopefully soon-to-be modified definition)?
digging deeply into OOP, which Dijkstra despised, leads directly to programming by proof
Don't be silly. Meyer doesn't offer anything of the sort in OOSC, nor does anyone anywhere else. (If they could, you'd necessarily have a solid mathematical foundation and no further ambiguity as to what constitutes OOP!) What you do find in his overweight book are a lot of bold claims which are NOT supported by the literature. (For example: Right up front he claims that people who "master" OO techniques can produce software faster and cheaper.) He also makes an irritating habit of misrepresenting functional and structured approaches to bolster his never-ending salesmanship of Eiffel. The unnecessary build-up to the big "reveal" comes off more like a side-show performance rather than a scholarly work (which, by the way, it is clearly not!).
Moving back for a second...
Everything else involved in OOP derives that.
Do you believe that the "principles" Meyer offers in his advertisement -- oops, I mean book -- can be derived from your definition?
Is that what I said?
Apparently not. I misinterpreted "the unique thing". My bad.
The unique thing is the idea of functions moving around with the data it operates on.
Still, it's clear that you're confused. OOP did not introduce objects.
The Liskov substitution principle is almost a necessity for truly flexible code.
Ignoring for the moment that that has absolutely nothing to do with my comment: that statement is completely incoherent.
The Alan Kay style of OOP is much nicer in my opinion
And not at all like OOP as it is generally understood by Java, C#, and C++ programmers. Again, no one can even agree on what constitutes OOP. It's an incoherent concept at best. Dig up a few definitions. You'll find most are vague, many are inconsistent, and a few so broad that they're meaningless.
Organizing code into modular sections just makes sense
Indeed it does. Modularity is good and many beginners seem to naturally understand the need. OOP in the *ahem* classical sense, however, is anti-modular and is thus ill-suited.
since you are kind of forced to think in terms of classes anyway.
Classes aren't essential to objects, you know. I'd even go as far as to say that they're a harmful concept. Skim through whatever books you have lying around and you'll soon discover that a good bit about what is written about "OOP" is ultimately about dealing with the problems caused by the flawed concept of classes and class-based inheritance in many popular so-called object oriented languages. An easy example would be design patterns. You'll find that a good number of the "patterns" found in GoF are intended for problems that you simply don't encounter, or which have solutions so trivial that they don't warrant special attention, in other languages, including other so-called OO languages.
It could be that you believe classes to be essential to OOP, but I've not seen many people make that claim.
It wasn't arbitrary. It's a proven approach that has been shown to be successful; even with very young children. I honestly never considered the possibility that it couldn't be near universal.
What do you have in mind as alternatives?
you are assuming they even feel pain.
You're assuming that they don't. Which has the more potential for harm? Remember: Until recently, it was thought that babies don't feel pain.
If I'm to err, I'd rather my mistake not result in torture.
So what you like are objects, not necessarily OOP (by whatever definition). Objects, used appropriately, can be useful. They're no panacea, of course, and their should be little doubt that they're misused more often than not.
makes it easy to learn about modularity.
I can't possibly disagree more here. OOP (in the Liskov sense) is anti-modular by its very nature. Languages like Java and C# make it much more difficult for beginners to learn about modularity as a result.
Please, enlighten me then! Show me the error of my ways.
If you can, stay away from platitudes, they won't actually help you make your case. I completely understand if that's all you can offer; that's my point after all.
People say that, but they never list the alleged benefits.
Give it a try. You'll fail, of course, but you'll ultimately find the exercise enlightening.
I get the attraction to Lisp. It's the same attraction I have to forth. They're both fun and interesting to implement. Well, at least when you first encounter therm.
So, yeah, I guess "Because it makes writing an interpreter really easy" is a good call.
I've heard lots of good things about it. I just haven't heard anything about it that's unique to OOP. Hell, no one can even agree about what constitutes OOP!
I'd ask you to defend it, but you'll just mumble something ridiculous about "modularity" and I'll be forced to laugh at you.
I thought this was supposed to be uncontroversial?
Classes? You can't be serious! Logic? If slashdot is any indication, most programmers couldn't pass an undergrad course in logic. Sure, you'll need an incredibly tiny subset of logic, but it's not a topic that needs special consideration. Most beginners work out the basics themselves without assistance. They certainly don't need a through understanding of the subject like a philosopher. I could go on ...
A better (much shorter) list of fundamentals:
- Data - variables, types, and structures (Just the basics, of course.)
- Flow control (iteration, branching)
That's it, really. (I may have even gone too far!) I can't really add anything else without stepping in to controversial territory.
Useful is a different matter, naturally, and we could add quite a bit more to the list. Though I doubt that it would be nearly as long as yours without becoming controversial.
Design patterns?
Jesus, it's like you're a best troll ever.
Spot on.
Sarcasm aside, it's a useful algorithm that beginners can easily understand. With the right prompts, they can even "invent" it themselves.
I was with you until the last paragraph.
How about we point beginners to a simple imperative language with an interactive mode? Pack it with simple but interesting games they can understand and modify.
You know, the same stuff we had when we were kids. It sure beats the shit we're giving them now.
tl;dr - The most important thing to learn is the trendiest thing. Closures are all the rage right now, so I'm going to go with that.
Yeah, it is.
Quicksort is an important algorythm. OOP is primarily marketing nonsense.
the concepts you learn with OOP are a whole lot useful than the concepts behind quicksort
Total bullshit.