But real world development is much more like seatbelt manufacturing than number crunching. Systems must be developed, not algorithms. In fact, algorithms, for the most part, are already done. It's the combination of these disparate parts into a cohesive whole that is the cornerstone of CS in today's industry.
That sounds more like software engineering than CS to me.
I think the goal had nothing to do with selling manuals, or greater usability, or anything practical.
The goal was to make the new version of Office seem "different" so that people would justify spending lots of cash on it.
Small, incremental, behind-the-scenes upgrades to a product, while truly valuable, just don't get the same "I got something for my money" reaction that a UI change does.
In short, the ribbon was a marketing ploy.
I was kind of inclined to think so too. But this talk by one of the guys working on the ribbon convinced me there was more to it than that.
Part of the problem of the Turing test is that the results depend to a large degree upon the cleverness of the examiner. But Turing does not give us any guidelines for what makes a good examiner.
At best I think the Turing test gives a confidence interval for sentience/intelligence. The probability goes up with the number of questions and responses and the number of examiners. But you can never reach 100%. The same goes for other actual people in the world. We can't be 100% certain that other people besides ourselves are really sentient. They could just be elaborate simulations. But the probability of that is extremely low given all the evidence we each have about the world around us.
Because I'd like to see where I'm going when I plan my tourist trip.
And you need a complete step-by-step photo walkthru down every residential side street?
Maybe not for touring, but Street View was very useful to me recently when I was looking to buy a house in an area far from where I live. With Street view I could get a better feel for the neighborhoods where these houses were located without actually having to be in the city. The overhead satellite view really does not give you the same feel. Using Street View significantly influenced my decisions on which houses to investigate further.
Also, a temporary advantage, but Street View was in many cases the most recent imagery available. The satellite photos available were all from several years ago, so they didn't show any houses built within the last year or two.
This list is just silly. I mean Japan?! Come on. Japan is the size of the entire east coast of the US. How much sense would it make to put "The entire east coast" as one of the top 10 "places" where Tech is pooling. None. This list is nonsense.
It's beginning to look a lot like Christmas was our sign to get in the car and go shopping.
Oops, I meant 'its'. Yeh, there's only one way to parse it, but you don't find out which is the right way till the end of the sentence. (And don't ask me what 'it' is referring to there).
I think I agree with your general sentiment though. Special cases aren't special enough to justify completely breaking the regular rules. Both meanings should be written "it's". And like so many other things in English it would be the writer's responsibility to write sentences that parse unambiguously.
Who modded me redundant? Come on, show me another post in this thread where someone linked to Barney Google! That's 100% original content there, mods! Wake up! Or maybe the mod just isn't a Barney Google fan?
It would basically be a railroad, yes. But a railroad without rails and one in which the "trains" are composed of autonomous units which can join and detach at any time without the entire "train" having to stop. And that means a "train" that is capable of taking you door-to-door instead of picking you up 30 miles from your point of embarkation and dropping you off 20 miles from your final destination. Maybe these roads of the future could even allow cars to tap into overhead electric lines, so as to take advantage of the economies of bulk power generation.
This could be the first this is happened in a long while. The little video on the download site touts "a cool new way to drag tabs out to get a side-by-side view". Look like they ripped that off directly from Windows 7.
I've got no complaints. It's a good idea that the Win7 folks had there, I think. Then again I wouldn't be surprised if TVVWM had it back in 1990. Actually what I'd really like to see borrowed from ancient X win window managers is the "maximize vertically" command. That was really useful.
Get over it. Your copyright should have expired anyway by any sort of good definition of limited term.
Copyright doesn't cover story or character ideas anyway. It only protects the actual text of a story, or drawings of a character, etc. If you happen to hear that some studio is working on a story about, say, the life of some bugs, and another studio catches wind of the idea, there is really nothing you can legally do to stop the other studio from releasing their own movie about the troubles faced by a bunch of cute 6-legged insects. At least that's my understanding of it.
LOL. You're rigth! It's the lack of a "C". Walter should have called it c| instead.... (little c + a vertical bar -- if the font is right that should kinda sorta look like a "d":-)
You seem pretty happy with C++, so that's great. Just keep at it. I spent 14 years working primarily in C++, and was also skeptical about D, too. But about 2 years ago I just got fed up with C++ and thought I'd try something else. I gave D a shot and I haven't regretted it. We could argue about minutiae till the cows come home, but the fact is that programming in D has made my last 2 years of programming work much more enjoyable than the 2 years that preceded it. I think anyone who tries it with an open mind will probably find the same. They may come to the conclusion that it's not for them, but it won't be because of any of the things you're bringing up here. More likely it will be because they find themselves too deeply entrenched in the C++ ecosystem for anything to get them out. D's not backwards-compatible with C++. That's the biggest weakness of D, but it's also the thing that allows it to move forward.
But the syntax is all wrong. It's easy to forget that an object is allocated as 'scope', because the syntax is the same as in heap allocation.
Wow. Such a non-issue. That's even a feature, I'd say. In D you can change from heap allocation to stack allocation by inserting one word, and everything else you've written will pretty much be good to go as-is.
And the template system is D is exactly the same as in C++. The differences are superficial, only in syntax. D's templates is a Turing complete system, just like in C++.
Oh come on. When was the last time you programmed using a Turing machine? Turing completeness is only a very very VERY basic prerequisite for a programming language. For that matter, you could also say the additions of C++ over C are basically superficial syntax changes too. And those of C over ASM. Syntax does matter. Pretending it doesn't is... superficial.
D has an opIndexAssign operator, which is "[]=". Fortunately, there is progress; an opIndexLvalue operator has been accepted into D2. However, opIndex would be sufficient if it were possible to define the return value itself as an lvalue.
But the redeeming value of the "[]=" operator is that it gives you a simple way to have array-like index assignment without breaking encapsulation. If you return a reference to element 5 then you have no way to control what the caller does with that reference after that. The caller can go on to change the value of it willy nilly as he pleases. This is very annoying if you want to perform some action as a reaction to the value of an element changing. It's exactly the same argument as for why it's generally better to getters and setters to provide member variable access, rather than just making the member public.
Ugh, yeh, this article referenced is just Walter's brain-dump writeup of what it took to get the mac port working for anyone who is interested. I don't think it was really meant to be a profound and insightful piece on software development. I think there he's referring to a bunch of code he wrote back in the 80's when he was primarily a Fortran & ASM programmer.
Also don't get your hopes up. The mac port is just barely working -- this is like the pre-pre-alpha release of it. Walter releases new snapshots about every month, and what's available now is just the first snapshot to ever have Mac support. So expect things to be broken.
I don't think D will ever have the high performance of C++, because D objects are all allocated on the heap.
As you already say, if you are very concerned about performance in a situation with lots of small objects you can use structs. Simply ignoring structs because you are too lazy to use them does not make D slow. With a bit of experience and a few rules of thumb it's not hard to choose.
The D 'auto' keyword is just a compiler hint (last time I checked) to help in escape analysis.
I think maybe you're talking about what is called "scope" now. It allocates the memory for the class on the stack. Yeh, it doesn't cover every possible use case of by-value classes, but it can be a nice optimization.
D has structs, but one has to design upfront if a class has value or reference semantics, and that creates a major design headache.
Yes you use structs when you want an efficient aggregate value type. Classes and structs have different semantics in D. It's pretty easy to choose once you get the hang of it. If you are likely to want to put virtual functions on the thing, make it a class. If you want to pass lots of them around by value, make it a struct. If you can count on your fingers how many instances you will have, make it a class -- the hit from allocation won't matter. There is some gray area in-between, granted, but in practice it's usually pretty clear, and the benefit is that you do completely eliminate the slicing problem by going this route. If you really can't decide you can also write the guts as a mixin and them mix them into both a class and a struct wrapper. Or just write it primarily as a struct, and aggregate that struct inside a class. The use cases that are left after all that are pretty insignificant.
Avoiding the headache by making everything have reference semantics negates the advantages of struct.
Yeh, well don't try to avoid it, then. It's not as much of a headache as you make it out to be.
D is a mix of C and Java, with the C++ template system bolted on top. It is no way C++. D is not what a veteran C++ programmer excepts as the next generation C++.
D's template system has gone far beyond C++'s. It's even far beyond what C++0x is going to be. Alias template parameters, template mixins, static if, a host of compile-time introspection facilities, the ability to run regular functions at compile-time, type tuples, variadic template parameters. Of these, I believe C++0x is only getting the last one. D metaprogramming is to C++ metaprogramming as C++ OOP is to OOP in C. It takes a technique that the previous language begrudgingly permitted and turns it into one that is actually supported by the language.
I'm curious as to whether annoying the crap out of everyone around you is a constitutionally protected right. I'm thinking no. Which is why I'm surprised there's not more of a police crack-down on such behavior. You'd think they'd be all for any way to increase their revenues.
They should promote someone else from Pixar to follow Steve. Someone with personality. Like John Lasseter. Yeh John Lasseter should take over for Steve. That wouldn't be boring.
I think it more likely that shrinking component sizes and costs made such small and light notebooks inevitable. There's always a market for well-made smaller/faster/lighter gizmos. The most impressive thing about the original OLPC announcements was the price point they promised, and they weren't able to deliver on that. But come on. Smaller lighter laptops was bound to happen at some point. And I'll go further to make this bold prediction: even smaller and even lighter and even cheaper computers will be available in the future! Just you wait!
It may be true that the internet is a tool which expresses strong emotion at times, but I don't see how that's relevant... oh wait a minute you must be one of those people who read that XCKD and thought it would make you look smart if you used the word 'affective' in inappropriate contexts. Nevermind. I think this one is the antedote to that: http://xkcd.com/169/
But real world development is much more like seatbelt manufacturing than number crunching. Systems must be developed, not algorithms. In fact, algorithms, for the most part, are already done. It's the combination of these disparate parts into a cohesive whole that is the cornerstone of CS in today's industry.
That sounds more like software engineering than CS to me.
I think the goal had nothing to do with selling manuals, or greater usability, or anything practical.
The goal was to make the new version of Office seem "different" so that people would justify spending lots of cash on it.
Small, incremental, behind-the-scenes upgrades to a product, while truly valuable, just don't get the same "I got something for my money" reaction that a UI change does.
In short, the ribbon was a marketing ploy.
I was kind of inclined to think so too. But this talk by one of the guys working on the ribbon convinced me there was more to it than that.
http://blogs.msdn.com/jensenh/archive/2008/03/12/the-story-of-the-ribbon.aspx
They really were trying to solve the problem of ever-growing menus and ever-growing numbers of toolbars filling up the user's screen.
Part of the problem of the Turing test is that the results depend to a large degree upon the cleverness of the examiner. But Turing does not give us any guidelines for what makes a good examiner.
At best I think the Turing test gives a confidence interval for sentience/intelligence. The probability goes up with the number of questions and responses and the number of examiners. But you can never reach 100%. The same goes for other actual people in the world. We can't be 100% certain that other people besides ourselves are really sentient. They could just be elaborate simulations. But the probability of that is extremely low given all the evidence we each have about the world around us.
Alt, H, K, Down, Down, Down, Enter
That's the Bible, Genesis 1:1.
Because I'd like to see where I'm going when I plan my tourist trip.
And you need a complete step-by-step photo walkthru down every residential side street?
Maybe not for touring, but Street View was very useful to me recently when I was looking to buy a house in an area far from where I live. With Street view I could get a better feel for the neighborhoods where these houses were located without actually having to be in the city. The overhead satellite view really does not give you the same feel. Using Street View significantly influenced my decisions on which houses to investigate further.
Also, a temporary advantage, but Street View was in many cases the most recent imagery available. The satellite photos available were all from several years ago, so they didn't show any houses built within the last year or two.
This list is just silly. I mean Japan?! Come on. Japan is the size of the entire east coast of the US. How much sense would it make to put "The entire east coast" as one of the top 10 "places" where Tech is pooling. None. This list is nonsense.
Sweet! I've been waiting for that feature to come to Windows since 1995! (which was when a co-worker first showed me the feature in tvtwm.)
How about:
It's beginning to look a lot like Christmas was our sign to get in the car and go shopping.
Oops, I meant 'its'. Yeh, there's only one way to parse it, but you don't find out which is the right way till the end of the sentence. (And don't ask me what 'it' is referring to there).
I think I agree with your general sentiment though. Special cases aren't special enough to justify completely breaking the regular rules. Both meanings should be written "it's". And like so many other things in English it would be the writer's responsibility to write sentences that parse unambiguously.
Who modded me redundant? Come on, show me another post in this thread where someone linked to Barney Google! That's 100% original content there, mods! Wake up! Or maybe the mod just isn't a Barney Google fan?
It would basically be a railroad, yes. But a railroad without rails and one in which the "trains" are composed of autonomous units which can join and detach at any time without the entire "train" having to stop. And that means a "train" that is capable of taking you door-to-door instead of picking you up 30 miles from your point of embarkation and dropping you off 20 miles from your final destination. Maybe these roads of the future could even allow cars to tap into overhead electric lines, so as to take advantage of the economies of bulk power generation.
This could be the first this is happened in a long while.
The little video on the download site touts "a cool new way to drag tabs out to get a side-by-side view". Look like they ripped that off directly from Windows 7.
I've got no complaints. It's a good idea that the Win7 folks had there, I think. Then again I wouldn't be surprised if TVVWM had it back in 1990. Actually what I'd really like to see borrowed from ancient X win window managers is the "maximize vertically" command. That was really useful.
Get over it. Your copyright should have expired anyway by any sort of good definition of limited term.
Copyright doesn't cover story or character ideas anyway. It only protects the actual text of a story, or drawings of a character, etc. If you happen to hear that some studio is working on a story about, say, the life of some bugs, and another studio catches wind of the idea, there is really nothing you can legally do to stop the other studio from releasing their own movie about the troubles faced by a bunch of cute 6-legged insects. At least that's my understanding of it.
When I was ten, a google was a fixed (i.e., not random) value.
Actually a googol was and still is that. "Google" used to be just the name of a cartoon character.
LOL. You're rigth! It's the lack of a "C". Walter should have called it c| instead. ... (little c + a vertical bar -- if the font is right that should kinda sorta look like a "d" :-)
c| -- C-Pipe a.k.a. d
You seem pretty happy with C++, so that's great. Just keep at it. I spent 14 years working primarily in C++, and was also skeptical about D, too. But about 2 years ago I just got fed up with C++ and thought I'd try something else. I gave D a shot and I haven't regretted it. We could argue about minutiae till the cows come home, but the fact is that programming in D has made my last 2 years of programming work much more enjoyable than the 2 years that preceded it. I think anyone who tries it with an open mind will probably find the same. They may come to the conclusion that it's not for them, but it won't be because of any of the things you're bringing up here. More likely it will be because they find themselves too deeply entrenched in the C++ ecosystem for anything to get them out. D's not backwards-compatible with C++. That's the biggest weakness of D, but it's also the thing that allows it to move forward.
But the syntax is all wrong. It's easy to forget that an object is allocated as 'scope', because the syntax is the same as in heap allocation.
Wow. Such a non-issue. That's even a feature, I'd say. In D you can change from heap allocation to stack allocation by inserting one word, and everything else you've written will pretty much be good to go as-is.
And the template system is D is exactly the same as in C++. The differences are superficial, only in syntax. D's templates is a Turing complete system, just like in C++.
Oh come on. When was the last time you programmed using a Turing machine? Turing completeness is only a very very VERY basic prerequisite for a programming language. For that matter, you could also say the additions of C++ over C are basically superficial syntax changes too. And those of C over ASM. Syntax does matter. Pretending it doesn't is ... superficial.
D has an opIndexAssign operator, which is "[]=". Fortunately, there is progress; an opIndexLvalue operator has been accepted into D2. However, opIndex would be sufficient if it were possible to define the return value itself as an lvalue.
It is also possible to return by reference in D2.
But the redeeming value of the "[]=" operator is that it gives you a simple way to have array-like index assignment without breaking encapsulation. If you return a reference to element 5 then you have no way to control what the caller does with that reference after that. The caller can go on to change the value of it willy nilly as he pleases. This is very annoying if you want to perform some action as a reaction to the value of an element changing. It's exactly the same argument as for why it's generally better to getters and setters to provide member variable access, rather than just making the member public.
Ugh, yeh, this article referenced is just Walter's brain-dump writeup of what it took to get the mac port working for anyone who is interested. I don't think it was really meant to be a profound and insightful piece on software development. I think there he's referring to a bunch of code he wrote back in the 80's when he was primarily a Fortran & ASM programmer.
Also don't get your hopes up. The mac port is just barely working -- this is like the pre-pre-alpha release of it. Walter releases new snapshots about every month, and what's available now is just the first snapshot to ever have Mac support. So expect things to be broken.
Maybe your [sic] right, I can't say.
I can. The gp is wrong on just about every count.
As you already say, if you are very concerned about performance in a situation with lots of small objects you can use structs. Simply ignoring structs because you are too lazy to use them does not make D slow. With a bit of experience and a few rules of thumb it's not hard to choose.
I think maybe you're talking about what is called "scope" now. It allocates the memory for the class on the stack. Yeh, it doesn't cover every possible use case of by-value classes, but it can be a nice optimization.
Yes you use structs when you want an efficient aggregate value type. Classes and structs have different semantics in D. It's pretty easy to choose once you get the hang of it. If you are likely to want to put virtual functions on the thing, make it a class. If you want to pass lots of them around by value, make it a struct. If you can count on your fingers how many instances you will have, make it a class -- the hit from allocation won't matter. There is some gray area in-between, granted, but in practice it's usually pretty clear, and the benefit is that you do completely eliminate the slicing problem by going this route. If you really can't decide you can also write the guts as a mixin and them mix them into both a class and a struct wrapper. Or just write it primarily as a struct, and aggregate that struct inside a class. The use cases that are left after all that are pretty insignificant.
Yeh, well don't try to avoid it, then. It's not as much of a headache as you make it out to be.
D's template system has gone far beyond C++'s. It's even far beyond what C++0x is going to be. Alias template parameters, template mixins, static if, a host of compile-time introspection facilities, the ability to run regular functions at compile-time, type tuples, variadic template parameters. Of these, I believe C++0x is only getting the last one. D metaprogramming is to C++ metaprogramming as C++ OOP is to OOP in C. It takes a technique that the previous language begrudgingly permitted and turns it into one that is actually supported by the language.
I'm curious as to whether annoying the crap out of everyone around you is a constitutionally protected right. I'm thinking no. Which is why I'm surprised there's not more of a police crack-down on such behavior. You'd think they'd be all for any way to increase their revenues.
They should promote someone else from Pixar to follow Steve. Someone with personality. Like John Lasseter. Yeh John Lasseter should take over for Steve. That wouldn't be boring.
I think it more likely that shrinking component sizes and costs made such small and light notebooks inevitable.
There's always a market for well-made smaller/faster/lighter gizmos. The most impressive thing about the original OLPC announcements was the price point they promised, and they weren't able to deliver on that. But come on. Smaller lighter laptops was bound to happen at some point. And I'll go further to make this bold prediction: even smaller and even lighter and even cheaper computers will be available in the future! Just you wait!
It may be true that the internet is a tool which expresses strong emotion at times, but I don't see how that's relevant... oh wait a minute you must be one of those people who read that XCKD and thought it would make you look smart if you used the word 'affective' in inappropriate contexts. Nevermind. I think this one is the antedote to that: http://xkcd.com/169/
...or do they bring a completely different input device to the table?
I suggest they bring a completely different input device that is a table! Now that's innovation.