Harrison's "One Step from Earth" collection of short stories is brilliant, taking the reader through a timeline of progress in 'jumpgate' technology, from the early invention right through to the end of humanity where alien scholars discuss the now-ubiquitous gate's inventors.
Stainless Steel Rat stories are great too, but I'd recommend the 2000AD comic book reworking of them, I read them as a kid and thought they did a reasonably better job than the sometimes old-fashioned writing style of the novels.
The Jurgen / Silver Stallion / Figures of Earth trilogy is excellent, but.. you have to understand that is was written back in the 1920s by an an educated in the traditional classics. So if you don't know your Greek and Roman myths and history along with literary works like Shakespeare and the Bible... you'll have a real hard time getting the full meaning of it all. Still a good story, if a little old-fashioned writing style.
it usually doesn't really matter if your code runs half (or even 1/10th) as fast as a comparable C/C++ implementation unless you're doing heavy number crunching or your code is used extremely often and does not spend most of its time waiting for IO.
I used to think that too, but as facebook (and all the accelerator libraries) has shown, there's a lot of inefficiency in running everything in a scripting language which overall slows your app down and doesn't let it scale so well.
Its ok to say it doesn't matter as your app spends most of its time waiting for IO, if there are 1000 requests coming in at once, then you realise the CPU is running flat out.
So now I think the best way to write your app is php or python or whatever in the web server grabbing requests from the browser and passing them on to a C++ app for crunching. You also gain a load of security by splitting things up like this, as well as 'enforced design' where the script developer cannot just hack in a quick routine without speccing it properly for the C++ app to implement.
operator overloading and MI in C++ are good things, I expect you'd want the dumbed down version of them in languages like java or.net where overloading is basically add-on methods, and MI is single inheritance for the first class, and interface inheritance for the others. The latter is particularly depressing (ie choose one or the other guys)
You can also forgive C's preprocessor, as it was needed way back in the day of low-power computers. Naturally, things you used back then stay with us if people still find them useful (eg goto is hardly ever used nowadays)
SQL doesn't have any security. If you're thinking of sql injection attacks, that's a problem with the client not validating user input, not SQL. The client is persuaded to pass a different SQL string to the DB, but that SQL must still be valid.
Still, different tools for different jobs is a good thing. I think we're missing a really good language for GUI creation, as that always seems to be implemented in whatever language the rest of the system is written in (which leads to the usual monolithic crappy apps we put up with, the exception being some web apps where the GUI has to be implemented differently).
LOGO was traditionally used for this, followed by BASIC (not the now-bloated VB.NET of course)
Or there's assembler, which although you might think "no way, WTF that's the hardest of them all", its only true when you try to make very complex systems, for simple stuff (ie learning how it all works), assembler is the simplest there can be. I wouldn't want to write a large GUI enterprise app in assembler, but hello world isn't particularly difficult to write it in, and it really shows logic and how computers work under the hood.
except C++ didn't have defined threads until recently, and the threading libraries you could use were either very low level OS-provided ones, or thread libraries like Intel's TBB or OpenMP. These are very much "easy to use".
forget tversity if you want a DLNA server. Try TVMobili instead. Open source, free, cross platform without being Java, small and works. (in fact so small and works that I had trouble remembering what it was called)
Or, you can use PS3MediaServer (which is good, but I dumped it when Windows used to go to sleep halfway through a movie.. PS3MP can't prevent this happening).
of course what we have isn't a true democracy. In the original, everyone had a say in everything - in other words ruling the country was effectively crowd-sourcing political policies, and we know that mostly works (crowd-sourcing, not politics).
Today we have a democracy in voting for whichever psychopath has crawled to the top of his party's tree. We all choose which media-led, advertising-fuelled eejot who manages persuade us to vote for. I guess we might have better chance if we voted for anyone of a large number of candidates (and thus rejecting the obvious fools) but we don't - we get to democratically choose one of 2 or maybe 3 potential parties.
I guess there are trade-offs to be had today, but to call what we have a democracy is just wrong. In the UK we call it a 'parliamentary democracy' as we know democracy stops with the selection of a parliament, our job as voters is over at that point until the next time.
except this is a problem - the people actually in the disaster often won't have access to FB, whereas the people nowhere near can happily say they are safe.
Hey mom, I'm ok, I'm not under attack in Syria.
(because I'm at home in the UK, with nothing more dangerous than thinking whether to have cheese or ham on my sandwich).
There again, there's the after-effect problem... actually in a disaster, post "I'm safe" to FB, then look up to see the chunk of falling masonry.... somebody's going to sue FB for sure when that happens!
Skype calls can be made and received when it's running in the foreground, but as soon as you switch away - even mid-conversation - the application goes offline. Want to check a detail in an e-mail so you can tell the person you're calling? You'll have to hang up first.
$8.5bn for Skype, shame they couldn't chuck a few dollars at getting multitasking for the phone working.
3/5 cores - this is a Tegra thing, the snapdragon does it differently.
Tegra has a 'companion' core that is low, low power for standby tasks, then it switches the main cores on individually as they are needed. Note that the Tegra main cores are on/off designs.
The Snapdragon doesn't do this, it varies the power to each core individually, so they are all running in a low-power mode all the time until they need more. This means it doesn't need a 3rd core. Its debatable which is better, but the snapdragon can run its cores at half-power unlike the Tegra which is probably more efficient overall (when you use limited resources doing boring tasks like reading your messages).
there are plenty of UK motorways that barely have lights at all - the ones in the SW particularly are a little bit of a shock when you go from brightly lit to dark, but you quickly get used to it and it's not really a problem.
amen. Windows 2000 was a good OS. I can't think why the new ones use so much resources to do pretty much the same thing.
Guis don;t work too well in C# - look at the performance issues many people have with WPF. Now, this can mean that WPF was poorly designed (all that XML... I can believe it) or it can mean it was badly implemented (too much copying 'cheap' memory about?) or it could mean that C# GUI apps can be crap too.
Given than, I don't think people have many problems with C++/Qt apps though.
Or imagine just how bad it would be if Windows really was re-implemented in C#.
"Modern" C++ code that uses STL and smart pointers tends to waste a lot of time copying memory
this is false. Unless you explictly code to pass by value all the time, the optimiser will be making it work without the copying. Modern C++ even has the move constructs now that make it easy to ensure your memory is moved rather than copied in the tricky cases.
I always thought the problems with the java-style languages were more memory based. Every one I've seen sucks up RAM like there's no tomorrow - which is fair, coders in those languages are told that memory is cheap and that the GC will fix all their problems for them. Its a lie (of course) but enough still believe it.
And there are enough reports of poor performance with WPF that you have to think these new languages with their fancy libraries are poorly designed, or engineered. When your GUI requires better performance you know your language isn't up to scratch.
He does work for Microsoft, I think his expertise in the community was the reason they hired him. Given that, I'd say he is more knowledgeable about the real OS-level limitations of.NET than the rest of us.
(although I did enjoy reading Chris Brumme's blog posts where he went into detail about the.net runtimes and some of the decisions they'd not do again if they had the chance to start over. The one on exceptions was brilliant).
Yes, C++ is harder than PHP, but that's maybe the point. I've seen so much truly awful code and most of it is in 'easy' languages. I do despair that the answer to a difficult problem (coding) is to make yet another accessible language that doesn't solve the problem well enough, and you end up with more coders who think they can do the job when really its all about education and training. To my mind C++ isn't that difficult, but then I've been doing it for years and I understand what happens under the covers, which allows me to make much more informed decisions on how to design my code. A lot of my junior colleagues seem to just slap something together that works and leave it at that. Then I have to come in and fix the performance issues.
Threading is probably better in C++ now. You have the new thread constructs (eg thread thread1 = thread(myfunc, paraam1, param2); will start a thread going. But you also have a load of power over what else you can do compared to other languages).
Or if threading is too difficult, you should look into things like Thread Building Blocks that try to keep the threads compartmentalised (which is the problem most people have with threading - getting their shared data mixed up between the threads). Or you could use OpenMP which is amazingly easy to code for (just slap a pragma before your code and your loops with magically become parallelised)
Maybe C++ isn't that hard after all, it just has that 'my language is so much easier and just as powerful' hype working against it.
Mainstream use is shifting back to C++ since Microsoft decided that C++ was batter than C# (or at least Sinofsky and the Windows team decided that was the case). Herb Sutter has done a lot of presentations on the new paradigm at Microsoft - do a quick google.
Of particular note is the reason they're giving for this: in the datacentre native code reduces the amount of energy required to run your apps, and that adds up significantly if you're using dynamic or even JIT language.
Then simply prepend the type identifier to the variable name, simples!
Or, if you don't do this, you can use the IDE's ability to tell you the type by hovering over the variable. In which case, it really doesn't matter if you declare it using var or not.,
apart from the sensible answers along the lines of "so Jack Bauer can't track your ass", one reason is that criminals used to regularly call 999 (911 in the UK) and tell the police that they were "dealing drugs and you stupid coppers can't stop us, hahahaha". Of course, with a GPS signal from that mobile, the police could stop them:)
no-one cares about graphics acceleration on servers but there is a lot of noise about using the graphics card for some data processing tasks. Even Microsoft has release its AMP and there's OpenCL (not to mention CUDA). These things are flavour-of-the-month at the moment, so if Linux dropped support for the AMD gfx card, they'd effectively be dropping support for AMD gpus too. That would hurt.
so integrate it - let Chrome generate passwords (using keepass' quite good generator) and store the resulting password (plus site info etc) into a keepass DB. Then you can also use the passwords in different browsers and back them up a lot easier.
firstly, it would be a good thing for Chrome to generate passwords, but I'd like to see it store them in a keepass DB file instead of holding it Chrome itself or on Google's servers.
Secondly, OpenID means you don't have to use Google as a provider. Seriously, what is with the 'one password to rule them' bullshit. Use MyOpenID or MyId or Verisign. Or implement your own provider and use that, then you can be the big bad nasty sociopath and volunteer your own ass for Russian hookers.
Come on here and post, but at least try to sound like you have more sense than an immature 14 year old.
Sales is all about providing people with what they want ore need, in this case you'd have one hell of a marketing advantage if your were the only printers that didn't identify your prints to the secret police. But, hey, you continue to make the same cookie-cutter software to put on them because your processes are too 'dilbert' to manage a couple of #ifdefs or configuration options on the build servers.
They say this is why small businesses do well against their massively-funded corporate opposition, its because they can respond to changing needs quickly and effectively.
Harrison's "One Step from Earth" collection of short stories is brilliant, taking the reader through a timeline of progress in 'jumpgate' technology, from the early invention right through to the end of humanity where alien scholars discuss the now-ubiquitous gate's inventors.
Stainless Steel Rat stories are great too, but I'd recommend the 2000AD comic book reworking of them, I read them as a kid and thought they did a reasonably better job than the sometimes old-fashioned writing style of the novels.
The Jurgen / Silver Stallion / Figures of Earth trilogy is excellent, but.. you have to understand that is was written back in the 1920s by an an educated in the traditional classics. So if you don't know your Greek and Roman myths and history along with literary works like Shakespeare and the Bible... you'll have a real hard time getting the full meaning of it all. Still a good story, if a little old-fashioned writing style.
Have a link, but it too is pretty heavy going :)
it usually doesn't really matter if your code runs half (or even 1/10th) as fast as a comparable C/C++ implementation unless you're doing heavy number crunching or your code is used extremely often and does not spend most of its time waiting for IO.
I used to think that too, but as facebook (and all the accelerator libraries) has shown, there's a lot of inefficiency in running everything in a scripting language which overall slows your app down and doesn't let it scale so well.
Its ok to say it doesn't matter as your app spends most of its time waiting for IO, if there are 1000 requests coming in at once, then you realise the CPU is running flat out.
So now I think the best way to write your app is php or python or whatever in the web server grabbing requests from the browser and passing them on to a C++ app for crunching. You also gain a load of security by splitting things up like this, as well as 'enforced design' where the script developer cannot just hack in a quick routine without speccing it properly for the C++ app to implement.
operator overloading and MI in C++ are good things, I expect you'd want the dumbed down version of them in languages like java or .net where overloading is basically add-on methods, and MI is single inheritance for the first class, and interface inheritance for the others. The latter is particularly depressing (ie choose one or the other guys)
You can also forgive C's preprocessor, as it was needed way back in the day of low-power computers. Naturally, things you used back then stay with us if people still find them useful (eg goto is hardly ever used nowadays)
SQL doesn't have any security. If you're thinking of sql injection attacks, that's a problem with the client not validating user input, not SQL. The client is persuaded to pass a different SQL string to the DB, but that SQL must still be valid.
Still, different tools for different jobs is a good thing. I think we're missing a really good language for GUI creation, as that always seems to be implemented in whatever language the rest of the system is written in (which leads to the usual monolithic crappy apps we put up with, the exception being some web apps where the GUI has to be implemented differently).
LOGO was traditionally used for this, followed by BASIC (not the now-bloated VB.NET of course)
Or there's assembler, which although you might think "no way, WTF that's the hardest of them all", its only true when you try to make very complex systems, for simple stuff (ie learning how it all works), assembler is the simplest there can be. I wouldn't want to write a large GUI enterprise app in assembler, but hello world isn't particularly difficult to write it in, and it really shows logic and how computers work under the hood.
except C++ didn't have defined threads until recently, and the threading libraries you could use were either very low level OS-provided ones, or thread libraries like Intel's TBB or OpenMP. These are very much "easy to use".
forget tversity if you want a DLNA server. Try TVMobili instead. Open source, free, cross platform without being Java, small and works. (in fact so small and works that I had trouble remembering what it was called)
Or, you can use PS3MediaServer (which is good, but I dumped it when Windows used to go to sleep halfway through a movie.. PS3MP can't prevent this happening).
Or there are a hundred different ones out there.
of course what we have isn't a true democracy. In the original, everyone had a say in everything - in other words ruling the country was effectively crowd-sourcing political policies, and we know that mostly works (crowd-sourcing, not politics).
Today we have a democracy in voting for whichever psychopath has crawled to the top of his party's tree. We all choose which media-led, advertising-fuelled eejot who manages persuade us to vote for. I guess we might have better chance if we voted for anyone of a large number of candidates (and thus rejecting the obvious fools) but we don't - we get to democratically choose one of 2 or maybe 3 potential parties.
I guess there are trade-offs to be had today, but to call what we have a democracy is just wrong. In the UK we call it a 'parliamentary democracy' as we know democracy stops with the selection of a parliament, our job as voters is over at that point until the next time.
except this is a problem - the people actually in the disaster often won't have access to FB, whereas the people nowhere near can happily say they are safe.
Hey mom, I'm ok, I'm not under attack in Syria.
(because I'm at home in the UK, with nothing more dangerous than thinking whether to have cheese or ham on my sandwich).
There again, there's the after-effect problem... actually in a disaster, post "I'm safe" to FB, then look up to see the chunk of falling masonry .... somebody's going to sue FB for sure when that happens!
not on Windows Phone it doesn't.
Skype calls can be made and received when it's running in the foreground, but as soon as you switch away - even mid-conversation - the application goes offline. Want to check a detail in an e-mail so you can tell the person you're calling? You'll have to hang up first.
$8.5bn for Skype, shame they couldn't chuck a few dollars at getting multitasking for the phone working.
3/5 cores - this is a Tegra thing, the snapdragon does it differently.
Tegra has a 'companion' core that is low, low power for standby tasks, then it switches the main cores on individually as they are needed. Note that the Tegra main cores are on/off designs.
The Snapdragon doesn't do this, it varies the power to each core individually, so they are all running in a low-power mode all the time until they need more. This means it doesn't need a 3rd core. Its debatable which is better, but the snapdragon can run its cores at half-power unlike the Tegra which is probably more efficient overall (when you use limited resources doing boring tasks like reading your messages).
Here's a nice article on the subject
seriously?
http://lmgtfy.com/?q=lte
its a network technology like GPRS, but better. They call it "4G" in some places, but it should be considered 3.5G.
there are plenty of UK motorways that barely have lights at all - the ones in the SW particularly are a little bit of a shock when you go from brightly lit to dark, but you quickly get used to it and it's not really a problem.
amen. Windows 2000 was a good OS. I can't think why the new ones use so much resources to do pretty much the same thing.
Guis don;t work too well in C# - look at the performance issues many people have with WPF. Now, this can mean that WPF was poorly designed (all that XML... I can believe it) or it can mean it was badly implemented (too much copying 'cheap' memory about?) or it could mean that C# GUI apps can be crap too.
Given than, I don't think people have many problems with C++/Qt apps though.
Or imagine just how bad it would be if Windows really was re-implemented in C#.
"Modern" C++ code that uses STL and smart pointers tends to waste a lot of time copying memory
this is false. Unless you explictly code to pass by value all the time, the optimiser will be making it work without the copying. Modern C++ even has the move constructs now that make it easy to ensure your memory is moved rather than copied in the tricky cases.
I always thought the problems with the java-style languages were more memory based. Every one I've seen sucks up RAM like there's no tomorrow - which is fair, coders in those languages are told that memory is cheap and that the GC will fix all their problems for them. Its a lie (of course) but enough still believe it.
And there are enough reports of poor performance with WPF that you have to think these new languages with their fancy libraries are poorly designed, or engineered. When your GUI requires better performance you know your language isn't up to scratch.
He does work for Microsoft, I think his expertise in the community was the reason they hired him. Given that, I'd say he is more knowledgeable about the real OS-level limitations of .NET than the rest of us.
(although I did enjoy reading Chris Brumme's blog posts where he went into detail about the .net runtimes and some of the decisions they'd not do again if they had the chance to start over. The one on exceptions was brilliant).
Yes, C++ is harder than PHP, but that's maybe the point. I've seen so much truly awful code and most of it is in 'easy' languages. I do despair that the answer to a difficult problem (coding) is to make yet another accessible language that doesn't solve the problem well enough, and you end up with more coders who think they can do the job when really its all about education and training. To my mind C++ isn't that difficult, but then I've been doing it for years and I understand what happens under the covers, which allows me to make much more informed decisions on how to design my code. A lot of my junior colleagues seem to just slap something together that works and leave it at that. Then I have to come in and fix the performance issues.
Threading is probably better in C++ now. You have the new thread constructs (eg thread thread1 = thread(myfunc, paraam1, param2); will start a thread going. But you also have a load of power over what else you can do compared to other languages).
Or if threading is too difficult, you should look into things like Thread Building Blocks that try to keep the threads compartmentalised (which is the problem most people have with threading - getting their shared data mixed up between the threads). Or you could use OpenMP which is amazingly easy to code for (just slap a pragma before your code and your loops with magically become parallelised)
Maybe C++ isn't that hard after all, it just has that 'my language is so much easier and just as powerful' hype working against it.
Mainstream use is shifting back to C++ since Microsoft decided that C++ was batter than C# (or at least Sinofsky and the Windows team decided that was the case). Herb Sutter has done a lot of presentations on the new paradigm at Microsoft - do a quick google.
Of particular note is the reason they're giving for this: in the datacentre native code reduces the amount of energy required to run your apps, and that adds up significantly if you're using dynamic or even JIT language.
Then simply prepend the type identifier to the variable name, simples!
Or, if you don't do this, you can use the IDE's ability to tell you the type by hovering over the variable. In which case, it really doesn't matter if you declare it using var or not.,
firstly, I wish I was using VC6 still - the IDE was the best there ever was, fast, simple, didn't flicker or use up all your RAM.
However, you can use a different IDE if you must keep the old compiler for backwards compatibility.
Alternatively, you can replace the compiler in the IDE.
I wonder then if requiring all users to pay a 10c charge would stop piracy completely for site such as this.
apart from the sensible answers along the lines of "so Jack Bauer can't track your ass", one reason is that criminals used to regularly call 999 (911 in the UK) and tell the police that they were "dealing drugs and you stupid coppers can't stop us, hahahaha". Of course, with a GPS signal from that mobile, the police could stop them :)
no-one cares about graphics acceleration on servers but there is a lot of noise about using the graphics card for some data processing tasks. Even Microsoft has release its AMP and there's OpenCL (not to mention CUDA). These things are flavour-of-the-month at the moment, so if Linux dropped support for the AMD gfx card, they'd effectively be dropping support for AMD gpus too. That would hurt.
so integrate it - let Chrome generate passwords (using keepass' quite good generator) and store the resulting password (plus site info etc) into a keepass DB. Then you can also use the passwords in different browsers and back them up a lot easier.
firstly, it would be a good thing for Chrome to generate passwords, but I'd like to see it store them in a keepass DB file instead of holding it Chrome itself or on Google's servers.
Secondly, OpenID means you don't have to use Google as a provider. Seriously, what is with the 'one password to rule them' bullshit. Use MyOpenID or MyId or Verisign. Or implement your own provider and use that, then you can be the big bad nasty sociopath and volunteer your own ass for Russian hookers.
Come on here and post, but at least try to sound like you have more sense than an immature 14 year old.
doesn't benefit you directly?
Sales is all about providing people with what they want ore need, in this case you'd have one hell of a marketing advantage if your were the only printers that didn't identify your prints to the secret police. But, hey, you continue to make the same cookie-cutter software to put on them because your processes are too 'dilbert' to manage a couple of #ifdefs or configuration options on the build servers.
They say this is why small businesses do well against their massively-funded corporate opposition, its because they can respond to changing needs quickly and effectively.