Modern, properly designed C++ code is absolutely safer than C code. However, because C++ is a superset of C, you can obviously write code that's just as unsafe as C, simply by ignoring the best practices and writing "C with classes" (which many do). A lot of what you can do in C++ exists solely to provide backward compatibility, both with earlier versions of itself as well as with C.
C++ gives you the ability to create new types using objects, which you can operate on both through member functions as well as logical operator overloading (where it makes sense to do so). For instance, you could create a class for handling file paths (as opposed to using raw character pointers or arrays, or even C++ strings), and when that class is properly developed and debugged, you can then be confident that you no longer have to worry about accidentally creating a security vulnerability or introducing a crashing bug. Moreover, it can handle path-specific things, such as ensuring proper form when paths are concatenated. Even better, when compiled down, it's really no different than code written in C, since C++ still adheres to the "zero-overhead" principle for most features.
When people talk about C++'s "dangerous casts", they're almost universally taking about "C-style casts", which are discouraged in modern C++. Instead, you should use the more explicit casts, which either use static compile-time checking or even run-time checking as appropriate. Whenever you have to resort to a C-style cast in C++, you had better have a *very* good reasons (in many cases it's just a design failure). Nowadays, that also includes managing raw memory or raw pointers thanks to the addition of standardized smart pointers.
This is why C++ is almost universally used in the videogame industry (I work as a videogame programmer), because is strikes a reasonable balance between safety, advanced language features, and performance. It's also nicely compatible with C libraries, with which we often have to interface at the OS level, or when using 3rd party libraries. And finally, while "better" alternatives arguably do exist, C++ is also well supported and extremely ubiquitous across the industry. As the saying goes, "quantity can have a quality all it's own". This is important when trying to hire experienced developers, or looking on the web for solutions to a problem.
You just have to keep beating him down with facts. It may take a while. After a mere two centuries, even the Catholic Church had to admit the world is NOT in the center of the universe. A century and a half later, it even apologized for it's treatment of the late Galileo!
Yep, it's the exact opposite, so I'm not sure how he figures that either. It's a reduction in sharpness in order to save computation power for other GPU operations. I was just expounding on how that worked in a bit more detail, based on my experiences as a videogame programmer.
I just hope Kyocera has the balls to fight this shit and win.
It probably won't, and even if it did, it wouldn't change anything. We need to get rid of software patents altogether. The fact that Microsoft has a war chest of profitable patents for cell phone software pretty much should disabuse anyone of the notion that software patents are necessary in order to compete and innovate in the market. They're nothing more than leverage for extracting licensing fees from others for solving software problems in the same obvious way that your patent happened to solve a problem. Copyright is more than enough to protect a company's intellectual property.
With such a volume of software patents, the problem for developers in navigating patent minefields is growing beyond all reason, as it's all but impossible to avoid accidentally infringing. It's holding back rather than helping innovation. The entire *point* of patents is not to establish or assert some natural rights of inventors, but to protect innovation by artificially granting an time-limited monopoly. The fact that everyone is forced to cross-license patents from each other, or the invention of software "patent pools" shows how far we've come from that ideal. It's beyond absurd, and it needs to stop. When both the EFF and Forbes are both in agreement that software patents need to go, can we just get rid of the damned things?
No, you're right, the scaling produces slightly blurrier images. Quality upscaling algorithms can only reduce the additional artifacts that would otherwise occur. It's just a way to conserve rendering power that has been used elsewhere, probably on additional scene complexity, like higher polygon counts, or improved pixel shaders that improve scene lighting, or realistic shadows. Or, it allows the use of more advanced full-screen post-processing effects. A 720p render target has *less than half* of the number of pixels a 1080p render target has, so you can see how this would be a significant savings.
There are two possibilities I can see. Either the devs: a) Made a deliberate choice to trade off reduced resolution for higher scene complexity because they felt it actually looked better, or b) The artists blew past their hardware budgets, and they since reworking all the game assets wasn't feasible, they either had to accept lower frame rates or lower resolution.
Given my past experience when working with game artists, my guess is that 'b' is more likely.
I agree. The focus on resolution seems ridiculously overblown. It doesn't help that the press breathlessly reports on it every time it happens. Faux outrage makes for lots of page views, I guess. It's pretty damn clear the current generation of consoles are far too underpowered to render a complex scene in high resolution, so we shouldn't be surprised at this anymore. The developers probably looked at how much rendering detail would be lost to try to boost it to full resolution, and decided it wasn't worth the tradeoff.
From TFA:
some of the worst fears of the community are becoming reality.
720p is really what they fear most? Not bugs, crappy frame rate, day-one DLC, broken matchmaking, overloaded servers, or cookie-cutter gameplay? Really?
I've found that kids will be much more interested in programming if they can create games, because almost every kid on earth enjoys playing them. That's pretty much what I did when teaching myself how to program (my first language was actually AppleBASIC) back in grade school, and this continued even through college - when I had a choice in my projects. I found I was much more willing to challenge myself with difficult problems when I was interested in the task at hand, rather than just completing some random problem handed out. When I taught a college lab myself, the students also seemed pretty enthusiastic about their programming projects when they could choose among various games to program, or working on their own original designs with approval.
Many of your lessons can revolve around creating very simple games or interesting visual displays (such as drawing fractal patterns), and then lead up to larger projects that they finish themselves, preferably in small groups. For later projects, I'd recommend that you let the students choose among several different games that you've specified in some detail and have working examples of. This will prevent the students from trying to create a game too far above or below their capabilities. You didn't mention what ages the kids are, so you'll have to determine if that's appropriate for your kids age group. For older students, you may wish to allow them to choose their own project, but the instructor would have to approve after a detailed proposal has been submitted.
Language is not relevant? All languages are not created equal. They have very specific strengths and weaknesses related to the design of the language.
I don't know why people always talk about programming languages in a vacuum: "I personally like x language, so I think people should learn it". Instead, it should be: "What are you interested in DOING with the language?" Just learning how programming works? Want to make web apps? Program an app for your iPhone? Create a computer game? Analyze and visualize a bunch of data? Build AI systems? Model physics or math equations? Interact with physical hardware? Tinker with an operating system?
The answer to the question of "what do you want to do?" may point you to any one of a dozen different languages depending on how you answer.
Also, I found this quote from TFA amusing:
What is R? It’s the industry standard for data science & analytics. It’s also free.
As opposed to all those other languages that cost thousands of dollars to purchase, right?
Also, "worldwide ban". Good luck with that. Indian government, the attempt at a ban says much more about you than the documentary itself does.
The fact that this incident sparked mass protests, on the other hand, shows that many people in India are good and decent, and of course abhor things like this. I wish them the best of luck in taking control of their government someday. It's something we're still struggling with ourselves on a regular basis.
I'm apparently a little dated, as I haven't had cable for the last six or seven years. It used to have really good documentaries, but I guess they've traded that in for lowest-common-denominator programming. Too bad.
Well, I'm sure you can still find good historical documentaries out there somewhere.
Honestly, this really sounds like a person who is addicted to life on the net, and can't imagine how people can be content with just some moderate interaction with e-mail, a website like slashdot, or some form of social media of their choosing... but could probably live without it as well. Having grown up without it, some of us understand that a fulfilling live is possible without the internet, just... not quite as convenient. He talks about being at a "huge disadvantage" without it, but seemed fairly vague about exactly what the actual advantages will be, other than some vague handwaving about how we'll possess some sort of creepy social advantages.
And we’ll look back at the time before our feed started — before Year Zero — as a huge, unknowable black hole.
Seriously? Read a book. Watch the History Channel. Talk to some people older than you. Damn. This is just inane rambling. It makes no sense to me as to why this "timeline" is going to occur, or how it's going to benefit us, as he implies. And this phenomenon is not unique to the digital age. The world before your own life began is *always* something of a "black hole" to you, as you can only learn about it second-hand. But honestly, this will be less so in the future, simply because of the pervasiveness of the information age and how much of the world is recorded and preserved for posterity. History has never been so accessible as it is now.
I also think he overestimates the extent to which things will be integrated into one, all-powerful, all-convenient system. Each company is still going to have their own little walled garden they're offering, and people will either choose one of these to play in, or even *gasp* none of them.
Yep, same here. I typically require silence to do my best work. College was a nightmare, because college students (and crappy neighbors in general) seem to think they have a God-given right to inflict their music of choice on everyone else around them.
The *only* thing I can tolerate is classical, movie soundtracks, or maybe some sorts of ambient/synthetic/trance music, and I generally only do that when I need to drown out other noise in the environment. It still tends to affect my concentration and productivity.
I agree with your assessment about how FPS games may not be the best choice for VR headsets. Personally, I also think vehicular-based games are the killer apps for VR. I used to love playing flight sims, but they always suffered from an inability to crane your neck around and track your targets, for instance. I'd love to try both flight sims and other mech/vehicular combat games with this new tech, especially when using a proper HOTAS input system. Years ago, I used a set of flightstick, throttle, and petals from CH Products, and it was an absolute joy to fly simulated planes with these, except for having to peer through a relatively tiny screen as a viewport.
In order for FPS games to work, I suspect we may need to see dedicated peripherals designed specifically for moving, and other peripherals for aiming and firing guns or other devices - sort of a purpose-built HOTAS system for FPS/VR games - something like a simple one-handed analog thumbstick for the off/movement hand, and a motion-tracked aiming device for the dominant/aiming hand.
If the motion-sickness issue isn't solidly resolved, then these games may be simply limited to the smaller demographic who is a bit more tolerant to motion-sickness. I tend to find it hard to believe the statement claiming "0 percent" motion sickness, because the world is a pretty big place, and some people are going to barf no matter how perfectly it's engineered. Hopefully I'm wrong, because I'd like to see this tech really take off.
Absolutely. I'm glad it was a good enough landing that we can now joke about it using Star Wars and Indiana Jones references. I think most of the best jokes have been taken, so I'll just wish him a speedy recovery!
Well, I wasn't really talking about adaptive cruise control, which has actually been available for quite a while. But those only control throttle and braking. I was thinking more like fully autonomous steering on freeways within a decade.
I was poking around to see if I could find some other predictions, and ran across this Wikipedia article. The section on predictions by major automobile manufacturers and others in the industry was really interesting. It looks like it may only be a year or two until cars can drive themselves on the freeway. Some highlights:
By 2016, Audi and Nissan plans to market vehicles that can autonomously steer, accelerate and brake at lower speeds, such as in traffic jams. By 2016, Mercedes plans to introduce "Autobahn Pilot" aka Highway Pilot, the system allow hands-free highway driving with autonomous overtaking of other vehicles.
So, damn... it's probably going to happen in just a couple of years. No way they'd make those predictions if they weren't already well prototyped and gearing up for production. So, how about fully autonomous?
By 2020, Google autonomous car project head's goal to have all outstanding problems with the autonomous car be resolved. By 2025, Daimler and Ford expect autonomous vehicles on the market. Ford predicts it will have the first mass-market autonomous vehicle.
Again, faster than I would have predicted. Possibly optimistic, but who knows? And longer term predictions?
By 2035, IHS Automotive report says will be the year most self-driving vehicles will be operated completely independent from a human occupant’s control. By 2040, expert members of the Institute of Electrical and Electronics Engineers (IEEE) have estimated that up to 75% of all vehicles will be autonomous.
Awesome. We may never see flying cars ourselves, but self-driving cars won't be a bad runner-up.
I agree that adoption will be gradual. The first generation of "self-driving" cars will probably have "smart cruise-control" and "self-parking" modes, but the driver will still be expected to be at the wheel and ready to take control if needed. Next, the vehicle will be smart enough to take you from start to destination by itself, but only in good weather and relatively common driving circumstances. Eventually, engineers will probably figure out how to make these systems so smart and reliable that we can simply take out the manual controls, or at least have them stowed away for emergencies.
At some point, people will be far worse drivers than their cars not just because the AI drivers are better, but also because they don't have as much of an opportunity to practice. At that point, it will actually be safer to prohibit any manual driving on the road except in emergencies, as they'd be more of a liability. You'll only need a driver's license if you have a need to operate a car manually, and that will be an increasingly rare occurrence.
The only part I really disagree with is your timeline. I'm guess early "limited" self-driving cars will be here well within a decade, while completely hands-off, license-free driving will happen about thirty years from now. Between those two points will be a very gradual transition from partially to fully autonomous, as systems improve and people learn to trust their cars more and more.
In the first Heinlein book I read, The Number of the Beast, the already-insufferable-yet-amazingly-forgettable characters eventually ended up in the land of Oz in a flying car... What. The. Fuck. At that point I put the book down and decided my time was better spent with other authors. Or sorting my lint collection. Anything else.
Starship Troopers was better, but nothing really special. I also read it after seeing the movie, so I had pretty low expectations going into it - but people kept telling me how much better the book was.
I never bothered with anything of Heinlein's after those two utter disappointments. Maybe those weren't representative of his best works, but The Number of the Beast was so atrocious and the Starship Troopers movie so vapid, it probably forever tainted my opinion of his other works.
Yeah, Windows has some penetration on low-end devices, but you know that's not where they really want to be.
Interestingly enough, Microsoft is now in the same position on the phone as Linux is on the desktop. They have an extremely competent offering, but they can't seem to really break though to make significant gains in the market. As we've seen time and time again with Linux, it's not enough to offer something "almost as good" to get someone to switch. You can't even compete with "just as good". You need to provide something that's significantly better than the competition in some fashion - some significant advantage that will compel people to move from Android or iOS to Windows phones.
In the article, Microsoft stated that a Microsoft phone would provide a "more consistent experience across smartphones, tablets, and PCs". Interestingly, that was exactly why I hated Windows 8 so much, because it was obviously a mobile UI bolted rather clumsily on top of my desktop. Windows 10 is unfortunately using the same "modern fugly" visual design, but is at least fixing the usability and integration problems. So, in theory, a cross-platform app store could end up being a win for them. If you can buy an app and run it on all three of those platforms, I could see that as being attractive for consumers.
Another possibility is if they provide businesses some great tools to help manage mobile corporate devices. Apple has been notoriously bad at this - not sure how easy it is with Android. But for consumers? I don't know. At the moment, I just don't really see how they're going to crack into this extremely competitive market.
Do you see Cheney up on charges? Or Bush? Or Obama? Or the head of the CIA?
Of course not, because those clowns are operating under a different set of laws than you and I do.
Not that I disagree with your general point, but... the US president and members of Congress actually do constitutionally operate under a different set of rules than everyone else.
Nope, it's when I take the awful, unmaintainable spaghetti code someone else produced when they were in a deadline crunch and convert it into something maintainable.
Sigh... I wish I could say that with a straight face.
Interestingly, in my experience, poorly structured code seems to come about often less often because of "rushed code" but instead a lack of foresight in the original structure of a system to deal with continuously evolving features (which happens in most projects), along with a lack of willingness to refactor those systems as soon as it's apparent it's starting to break down.
This is the "golden time" to refactor code, because it's just now become apparent where the structural flaws are in the architecture, but it's still early enough to refactor without causing a significant amount of pain. It's often hard to justify, because you've only got a couple of ugly special cases that complicate things here and there. However, if you procrastinate too long, you're going to start piling on more and more "ugly special cases", and the code is going to get harder and harder to read and maintain.
It has dick-all to do with "correctness" or whatever. It's simply because even if a subclass has its own implementation of a parent's method, it'll still call the parent method - this goes against one of the core principles of OO: polymorphism. This means that even *if* you wanted to override a method from a parent class in your subclass, unless the parent has it marked as virtual, you're SOL.
If you read about Stroustrup's design intentions, he absolutely believed that strong type safety was an important part of making programs safer and less bug-prone. Obviously, the creators of Objective-C (and many other languages) chose to follow a different design philosophy. It's probably not helpful to get into a debate about which one is "correct", as that's obviously going to be pretty subjective.
As far as the example you give, this is because C++ always adheres to the "zero-cost principle", meaning that the language designers don't believe C++ developers should pay for features they're not using. Virtual functions are more expensive to call than non-virtual, and you can't always determine at compile time whether one will be called or not, so it's left to the programmer to tag the function. It has nothing to do with "going against the core principles of OO". It just means C++ will happily let you shoot your own foot by ignoring the language rules it requires the programmer to adhere to.
This is why people consider it one of the more difficult languages to master. It's a powerful tool, but has many sharp edges. For programmers like me who value C++ primarily for it's runtime efficiency, this is absolutely the correct design decision. There are plenty of better languages to use if your primary goal is programmer efficiency.
BTW, you're a bit out of date regarding C++ and allocation. Modern C++ now has several built-in smart pointers (including ref-counted versions) which makes modern C++ feel a lot closer to C# with it's garbage collection than to C-style manual memory management.
I think this question has been answered pretty well on Stack Overflow. C++ is too deep and complex to learn from a few web tutorials of unknown quality. Get a good tutorial book and just follow along - that's how I learned it. Then get a good reference book for more in-depth knowledge as you move past the basics.
Anything that at least covers C++ 11 is fine, as C++ 14 was more about some minor tweaks that you can learn on your own.
Be careful about learning bad habits from C++ code examples you find on the web, or in older projects. Essentially, if you see the code using new, delete, and raw pointers, it's likely outdated. You may still need these on occasion, but their use is vanishingly rare in modern C++.
Or you should in theory at least. In the 8-bit arena (Embedded or old) C++ support is pretty much nonexistent or incomplete.
Heck, once you leave the architectures supported by GCC the portability of C++ becomes questionable.
Was anyone confused that I might be talking about an Apple II or Commodore 64 when I said "just about every platform"? And regarding embedded, it seems relatively easy to find C++ compilers for embedded hardware.
Well, it definitely wasn't perfect. I cross-compiled code with Microsoft, Borland, gcc, Watcom, and others years ago, but I don't recall it ever being as bad as you seem to remember. If you used a reasonably conservative set of language features, it was definitely possible to keep your code quite portable.
Nowadays, as you mentioned, it's an entirely different situation, as full standards compliance seems to be getting a lot more attention.
Modern, properly designed C++ code is absolutely safer than C code. However, because C++ is a superset of C, you can obviously write code that's just as unsafe as C, simply by ignoring the best practices and writing "C with classes" (which many do). A lot of what you can do in C++ exists solely to provide backward compatibility, both with earlier versions of itself as well as with C.
C++ gives you the ability to create new types using objects, which you can operate on both through member functions as well as logical operator overloading (where it makes sense to do so). For instance, you could create a class for handling file paths (as opposed to using raw character pointers or arrays, or even C++ strings), and when that class is properly developed and debugged, you can then be confident that you no longer have to worry about accidentally creating a security vulnerability or introducing a crashing bug. Moreover, it can handle path-specific things, such as ensuring proper form when paths are concatenated. Even better, when compiled down, it's really no different than code written in C, since C++ still adheres to the "zero-overhead" principle for most features.
When people talk about C++'s "dangerous casts", they're almost universally taking about "C-style casts", which are discouraged in modern C++. Instead, you should use the more explicit casts, which either use static compile-time checking or even run-time checking as appropriate. Whenever you have to resort to a C-style cast in C++, you had better have a *very* good reasons (in many cases it's just a design failure). Nowadays, that also includes managing raw memory or raw pointers thanks to the addition of standardized smart pointers.
This is why C++ is almost universally used in the videogame industry (I work as a videogame programmer), because is strikes a reasonable balance between safety, advanced language features, and performance. It's also nicely compatible with C libraries, with which we often have to interface at the OS level, or when using 3rd party libraries. And finally, while "better" alternatives arguably do exist, C++ is also well supported and extremely ubiquitous across the industry. As the saying goes, "quantity can have a quality all it's own". This is important when trying to hire experienced developers, or looking on the web for solutions to a problem.
You just have to keep beating him down with facts. It may take a while. After a mere two centuries, even the Catholic Church had to admit the world is NOT in the center of the universe. A century and a half later, it even apologized for it's treatment of the late Galileo!
Yep, it's the exact opposite, so I'm not sure how he figures that either. It's a reduction in sharpness in order to save computation power for other GPU operations. I was just expounding on how that worked in a bit more detail, based on my experiences as a videogame programmer.
I just hope Kyocera has the balls to fight this shit and win.
It probably won't, and even if it did, it wouldn't change anything. We need to get rid of software patents altogether. The fact that Microsoft has a war chest of profitable patents for cell phone software pretty much should disabuse anyone of the notion that software patents are necessary in order to compete and innovate in the market. They're nothing more than leverage for extracting licensing fees from others for solving software problems in the same obvious way that your patent happened to solve a problem. Copyright is more than enough to protect a company's intellectual property.
With such a volume of software patents, the problem for developers in navigating patent minefields is growing beyond all reason, as it's all but impossible to avoid accidentally infringing. It's holding back rather than helping innovation. The entire *point* of patents is not to establish or assert some natural rights of inventors, but to protect innovation by artificially granting an time-limited monopoly. The fact that everyone is forced to cross-license patents from each other, or the invention of software "patent pools" shows how far we've come from that ideal. It's beyond absurd, and it needs to stop. When both the EFF and Forbes are both in agreement that software patents need to go, can we just get rid of the damned things?
No, you're right, the scaling produces slightly blurrier images. Quality upscaling algorithms can only reduce the additional artifacts that would otherwise occur. It's just a way to conserve rendering power that has been used elsewhere, probably on additional scene complexity, like higher polygon counts, or improved pixel shaders that improve scene lighting, or realistic shadows. Or, it allows the use of more advanced full-screen post-processing effects. A 720p render target has *less than half* of the number of pixels a 1080p render target has, so you can see how this would be a significant savings.
There are two possibilities I can see. Either the devs:
a) Made a deliberate choice to trade off reduced resolution for higher scene complexity because they felt it actually looked better, or
b) The artists blew past their hardware budgets, and they since reworking all the game assets wasn't feasible, they either had to accept lower frame rates or lower resolution.
Given my past experience when working with game artists, my guess is that 'b' is more likely.
I agree. The focus on resolution seems ridiculously overblown. It doesn't help that the press breathlessly reports on it every time it happens. Faux outrage makes for lots of page views, I guess. It's pretty damn clear the current generation of consoles are far too underpowered to render a complex scene in high resolution, so we shouldn't be surprised at this anymore. The developers probably looked at how much rendering detail would be lost to try to boost it to full resolution, and decided it wasn't worth the tradeoff.
From TFA:
some of the worst fears of the community are becoming reality.
720p is really what they fear most? Not bugs, crappy frame rate, day-one DLC, broken matchmaking, overloaded servers, or cookie-cutter gameplay? Really?
I've found that kids will be much more interested in programming if they can create games, because almost every kid on earth enjoys playing them. That's pretty much what I did when teaching myself how to program (my first language was actually AppleBASIC) back in grade school, and this continued even through college - when I had a choice in my projects. I found I was much more willing to challenge myself with difficult problems when I was interested in the task at hand, rather than just completing some random problem handed out. When I taught a college lab myself, the students also seemed pretty enthusiastic about their programming projects when they could choose among various games to program, or working on their own original designs with approval.
Many of your lessons can revolve around creating very simple games or interesting visual displays (such as drawing fractal patterns), and then lead up to larger projects that they finish themselves, preferably in small groups. For later projects, I'd recommend that you let the students choose among several different games that you've specified in some detail and have working examples of. This will prevent the students from trying to create a game too far above or below their capabilities. You didn't mention what ages the kids are, so you'll have to determine if that's appropriate for your kids age group. For older students, you may wish to allow them to choose their own project, but the instructor would have to approve after a detailed proposal has been submitted.
It should be said that women in India are often EXTREMELY hostile and manipulative toward men.
I see. So, "the beatings will continue until morale improves", huh? Good luck with that!
Language is not relevant? All languages are not created equal. They have very specific strengths and weaknesses related to the design of the language.
I don't know why people always talk about programming languages in a vacuum: "I personally like x language, so I think people should learn it". Instead, it should be: "What are you interested in DOING with the language?" Just learning how programming works? Want to make web apps? Program an app for your iPhone? Create a computer game? Analyze and visualize a bunch of data? Build AI systems? Model physics or math equations? Interact with physical hardware? Tinker with an operating system?
The answer to the question of "what do you want to do?" may point you to any one of a dozen different languages depending on how you answer.
Also, I found this quote from TFA amusing:
What is R? It’s the industry standard for data science & analytics. It’s also free.
As opposed to all those other languages that cost thousands of dollars to purchase, right?
Also, "worldwide ban". Good luck with that. Indian government, the attempt at a ban says much more about you than the documentary itself does.
The fact that this incident sparked mass protests, on the other hand, shows that many people in India are good and decent, and of course abhor things like this. I wish them the best of luck in taking control of their government someday. It's something we're still struggling with ourselves on a regular basis.
I'm apparently a little dated, as I haven't had cable for the last six or seven years. It used to have really good documentaries, but I guess they've traded that in for lowest-common-denominator programming. Too bad.
Well, I'm sure you can still find good historical documentaries out there somewhere.
Honestly, this really sounds like a person who is addicted to life on the net, and can't imagine how people can be content with just some moderate interaction with e-mail, a website like slashdot, or some form of social media of their choosing... but could probably live without it as well. Having grown up without it, some of us understand that a fulfilling live is possible without the internet, just... not quite as convenient. He talks about being at a "huge disadvantage" without it, but seemed fairly vague about exactly what the actual advantages will be, other than some vague handwaving about how we'll possess some sort of creepy social advantages.
And we’ll look back at the time before our feed started — before Year Zero — as a huge, unknowable black hole.
Seriously? Read a book. Watch the History Channel. Talk to some people older than you. Damn. This is just inane rambling. It makes no sense to me as to why this "timeline" is going to occur, or how it's going to benefit us, as he implies. And this phenomenon is not unique to the digital age. The world before your own life began is *always* something of a "black hole" to you, as you can only learn about it second-hand. But honestly, this will be less so in the future, simply because of the pervasiveness of the information age and how much of the world is recorded and preserved for posterity. History has never been so accessible as it is now.
I also think he overestimates the extent to which things will be integrated into one, all-powerful, all-convenient system. Each company is still going to have their own little walled garden they're offering, and people will either choose one of these to play in, or even *gasp* none of them.
Yep, same here. I typically require silence to do my best work. College was a nightmare, because college students (and crappy neighbors in general) seem to think they have a God-given right to inflict their music of choice on everyone else around them.
The *only* thing I can tolerate is classical, movie soundtracks, or maybe some sorts of ambient/synthetic/trance music, and I generally only do that when I need to drown out other noise in the environment. It still tends to affect my concentration and productivity.
I agree with your assessment about how FPS games may not be the best choice for VR headsets. Personally, I also think vehicular-based games are the killer apps for VR. I used to love playing flight sims, but they always suffered from an inability to crane your neck around and track your targets, for instance. I'd love to try both flight sims and other mech/vehicular combat games with this new tech, especially when using a proper HOTAS input system. Years ago, I used a set of flightstick, throttle, and petals from CH Products, and it was an absolute joy to fly simulated planes with these, except for having to peer through a relatively tiny screen as a viewport.
In order for FPS games to work, I suspect we may need to see dedicated peripherals designed specifically for moving, and other peripherals for aiming and firing guns or other devices - sort of a purpose-built HOTAS system for FPS/VR games - something like a simple one-handed analog thumbstick for the off/movement hand, and a motion-tracked aiming device for the dominant/aiming hand.
If the motion-sickness issue isn't solidly resolved, then these games may be simply limited to the smaller demographic who is a bit more tolerant to motion-sickness. I tend to find it hard to believe the statement claiming "0 percent" motion sickness, because the world is a pretty big place, and some people are going to barf no matter how perfectly it's engineered. Hopefully I'm wrong, because I'd like to see this tech really take off.
Absolutely. I'm glad it was a good enough landing that we can now joke about it using Star Wars and Indiana Jones references. I think most of the best jokes have been taken, so I'll just wish him a speedy recovery!
Well, I wasn't really talking about adaptive cruise control, which has actually been available for quite a while. But those only control throttle and braking. I was thinking more like fully autonomous steering on freeways within a decade.
I was poking around to see if I could find some other predictions, and ran across this Wikipedia article. The section on predictions by major automobile manufacturers and others in the industry was really interesting. It looks like it may only be a year or two until cars can drive themselves on the freeway. Some highlights:
By 2016, Audi and Nissan plans to market vehicles that can autonomously steer, accelerate and brake at lower speeds, such as in traffic jams.
By 2016, Mercedes plans to introduce "Autobahn Pilot" aka Highway Pilot, the system allow hands-free highway driving with autonomous overtaking of other vehicles.
So, damn... it's probably going to happen in just a couple of years. No way they'd make those predictions if they weren't already well prototyped and gearing up for production. So, how about fully autonomous?
By 2020, Google autonomous car project head's goal to have all outstanding problems with the autonomous car be resolved.
By 2025, Daimler and Ford expect autonomous vehicles on the market. Ford predicts it will have the first mass-market autonomous vehicle.
Again, faster than I would have predicted. Possibly optimistic, but who knows? And longer term predictions?
By 2035, IHS Automotive report says will be the year most self-driving vehicles will be operated completely independent from a human occupant’s control.
By 2040, expert members of the Institute of Electrical and Electronics Engineers (IEEE) have estimated that up to 75% of all vehicles will be autonomous.
Awesome. We may never see flying cars ourselves, but self-driving cars won't be a bad runner-up.
I agree that adoption will be gradual. The first generation of "self-driving" cars will probably have "smart cruise-control" and "self-parking" modes, but the driver will still be expected to be at the wheel and ready to take control if needed. Next, the vehicle will be smart enough to take you from start to destination by itself, but only in good weather and relatively common driving circumstances. Eventually, engineers will probably figure out how to make these systems so smart and reliable that we can simply take out the manual controls, or at least have them stowed away for emergencies.
At some point, people will be far worse drivers than their cars not just because the AI drivers are better, but also because they don't have as much of an opportunity to practice. At that point, it will actually be safer to prohibit any manual driving on the road except in emergencies, as they'd be more of a liability. You'll only need a driver's license if you have a need to operate a car manually, and that will be an increasingly rare occurrence.
The only part I really disagree with is your timeline. I'm guess early "limited" self-driving cars will be here well within a decade, while completely hands-off, license-free driving will happen about thirty years from now. Between those two points will be a very gradual transition from partially to fully autonomous, as systems improve and people learn to trust their cars more and more.
In the first Heinlein book I read, The Number of the Beast, the already-insufferable-yet-amazingly-forgettable characters eventually ended up in the land of Oz in a flying car... What. The. Fuck. At that point I put the book down and decided my time was better spent with other authors. Or sorting my lint collection. Anything else.
Starship Troopers was better, but nothing really special. I also read it after seeing the movie, so I had pretty low expectations going into it - but people kept telling me how much better the book was.
I never bothered with anything of Heinlein's after those two utter disappointments. Maybe those weren't representative of his best works, but The Number of the Beast was so atrocious and the Starship Troopers movie so vapid, it probably forever tainted my opinion of his other works.
Yeah, Windows has some penetration on low-end devices, but you know that's not where they really want to be.
Interestingly enough, Microsoft is now in the same position on the phone as Linux is on the desktop. They have an extremely competent offering, but they can't seem to really break though to make significant gains in the market. As we've seen time and time again with Linux, it's not enough to offer something "almost as good" to get someone to switch. You can't even compete with "just as good". You need to provide something that's significantly better than the competition in some fashion - some significant advantage that will compel people to move from Android or iOS to Windows phones.
In the article, Microsoft stated that a Microsoft phone would provide a "more consistent experience across smartphones, tablets, and PCs". Interestingly, that was exactly why I hated Windows 8 so much, because it was obviously a mobile UI bolted rather clumsily on top of my desktop. Windows 10 is unfortunately using the same "modern fugly" visual design, but is at least fixing the usability and integration problems. So, in theory, a cross-platform app store could end up being a win for them. If you can buy an app and run it on all three of those platforms, I could see that as being attractive for consumers.
Another possibility is if they provide businesses some great tools to help manage mobile corporate devices. Apple has been notoriously bad at this - not sure how easy it is with Android. But for consumers? I don't know. At the moment, I just don't really see how they're going to crack into this extremely competitive market.
Do you see Cheney up on charges? Or Bush? Or Obama? Or the head of the CIA?
Of course not, because those clowns are operating under a different set of laws than you and I do.
Not that I disagree with your general point, but... the US president and members of Congress actually do constitutionally operate under a different set of rules than everyone else.
Nope, it's when I take the awful, unmaintainable spaghetti code someone else produced when they were in a deadline crunch and convert it into something maintainable.
Sigh... I wish I could say that with a straight face.
Interestingly, in my experience, poorly structured code seems to come about often less often because of "rushed code" but instead a lack of foresight in the original structure of a system to deal with continuously evolving features (which happens in most projects), along with a lack of willingness to refactor those systems as soon as it's apparent it's starting to break down.
This is the "golden time" to refactor code, because it's just now become apparent where the structural flaws are in the architecture, but it's still early enough to refactor without causing a significant amount of pain. It's often hard to justify, because you've only got a couple of ugly special cases that complicate things here and there. However, if you procrastinate too long, you're going to start piling on more and more "ugly special cases", and the code is going to get harder and harder to read and maintain.
It has dick-all to do with "correctness" or whatever. It's simply because even if a subclass has its own implementation of a parent's method, it'll still call the parent method - this goes against one of the core principles of OO: polymorphism. This means that even *if* you wanted to override a method from a parent class in your subclass, unless the parent has it marked as virtual, you're SOL.
If you read about Stroustrup's design intentions, he absolutely believed that strong type safety was an important part of making programs safer and less bug-prone. Obviously, the creators of Objective-C (and many other languages) chose to follow a different design philosophy. It's probably not helpful to get into a debate about which one is "correct", as that's obviously going to be pretty subjective.
As far as the example you give, this is because C++ always adheres to the "zero-cost principle", meaning that the language designers don't believe C++ developers should pay for features they're not using. Virtual functions are more expensive to call than non-virtual, and you can't always determine at compile time whether one will be called or not, so it's left to the programmer to tag the function. It has nothing to do with "going against the core principles of OO". It just means C++ will happily let you shoot your own foot by ignoring the language rules it requires the programmer to adhere to.
This is why people consider it one of the more difficult languages to master. It's a powerful tool, but has many sharp edges. For programmers like me who value C++ primarily for it's runtime efficiency, this is absolutely the correct design decision. There are plenty of better languages to use if your primary goal is programmer efficiency.
BTW, you're a bit out of date regarding C++ and allocation. Modern C++ now has several built-in smart pointers (including ref-counted versions) which makes modern C++ feel a lot closer to C# with it's garbage collection than to C-style manual memory management.
I think this question has been answered pretty well on Stack Overflow. C++ is too deep and complex to learn from a few web tutorials of unknown quality. Get a good tutorial book and just follow along - that's how I learned it. Then get a good reference book for more in-depth knowledge as you move past the basics.
Anything that at least covers C++ 11 is fine, as C++ 14 was more about some minor tweaks that you can learn on your own.
Be careful about learning bad habits from C++ code examples you find on the web, or in older projects. Essentially, if you see the code using new, delete, and raw pointers, it's likely outdated. You may still need these on occasion, but their use is vanishingly rare in modern C++.
Or you should in theory at least.
In the 8-bit arena (Embedded or old) C++ support is pretty much nonexistent or incomplete.
Heck, once you leave the architectures supported by GCC the portability of C++ becomes questionable.
Was anyone confused that I might be talking about an Apple II or Commodore 64 when I said "just about every platform"? And regarding embedded, it seems relatively easy to find C++ compilers for embedded hardware.
Well, it definitely wasn't perfect. I cross-compiled code with Microsoft, Borland, gcc, Watcom, and others years ago, but I don't recall it ever being as bad as you seem to remember. If you used a reasonably conservative set of language features, it was definitely possible to keep your code quite portable.
Nowadays, as you mentioned, it's an entirely different situation, as full standards compliance seems to be getting a lot more attention.