no, all you "know" is that there is a method called "add" on the object named 3 that is being called with the parameter 5.
So the 'add' method could easily carve 3 and 5 on a tree. You have no way of knowing what it does just from the method name. The classic example is string::add(). Does "hello".add("world") produce "hello world" or does it only apply to "3".add("5") to produce "8"? You may criticise operator+ for this reason, but note that the add() method is just as bad.
So there is no difference between the operator+() method, and the add() method (except the name chosen, and the way its written by the developer).
Now we've established that there is no difference between the two, we can say that as normal humans are the ones that read and write code, the former, operator, mechanism is easier to read, write and understand, then it is the one that should be preferred.
exactly, 'cloud' isn't a new name for co-located servers. Its a new name for VPS hosting (roughly).
You could always have paid for rented physical servers that were set up for DR and HA - Rackspace in particular would sell you service to practically guarantee uptime (if not totally guarantee it), but the cost was a bit much for most people and I don't think they would do it with colocated servers.
They, and others who aren't total cheap-ass hosts, still offer some form of HA service. As always you get what you pay for.
I don't suppose it was the Tablet form factor at fault here, I rather think it was the lack of backwards compatibility (we're talking the ARM-based Surface, not the x86-based Surface Pro).
Just like when netbooks turned up with Linux on them and had significant enough returns because people couldn't run their old Windows programs on them, I think these failed for the same reason. People bought a Windows box and expected (crazily!!!) that it would run Windows applications.
I predict the same with Windows 8 but for the desktop mode - which is what people are actually using windows 8 for. A surface tablet that runs Windows 8 without the desktop mode will be a similar flop.
so yes.. people are ignoring the fluff adverts (if they ever did, seeing how dreadful they've been)
you going to code java with qt creator? only an idiot - masochistic glorious idiot - would try to code java nowadays.
TFTFY.
You have a point though - C++ in eclipse is a real PiTA. Code::Blocks is much better, and I shall give QtCreator a go now. For java, if you must, then I guess Eclipse is made for you.
Na, next - compiler comparison between GCC and LLVM...
which suggests one of 2 things will happen in the future:
a) he'll accidentally fall down the steps of the Vatican as his reforms start to really change things. b) nothing, its all PR.
I hope the new Pope goes in there and cleans it all up, seems the Catholic church is pretty damn corrupt all the way through at the moment from paedophilia and coverups to financial fraud.
The new C++ system is good, you put paths in a global file (ok, this happens to live in your user directory, but there's only 1 of them, not 1 per project) and you can then reference the file in your build, so you get to say "this build requires the following environment", and you can then set your environment so your build machine can be different from your own, etc..csprojs always used to mangle the references to relative directories, unless the reference was on a different drive letter. Maybe they've changed it, they change so much at the moment.
TFS - well, I was really referring to the horrible xaml-based monstrosity that is the 'workflow build configuration'. Its ok to change it, but forget maintaining it.
you say it yourself - you acquire a resource in the ctor, and release it in the dtor... so you acquire the shared_ptr (which increments a ref count) and release it in the dtor (which decrements the ref count).
That's still RAII, the true meaning of RAII is that the acquisition and releasing occurs deterministically, so you always know what the system is doing for you. there's no surprises like in GC systems where the resource is still held for an unknown amount of time.
RAII has nothing directly to do with resource allocation and free, its all to do with deterministic initialization and cleanup. There's a subtle difference, in that it works for a lot more than just allocating memory.
that's true - no-one's going to run Crysis on their mobile, but they could easily run Quake. Maybe our expectations of them need to be reduced similarly.
I do think that we will see mobiles with more RAM and power over time, they're still a very immature industry. One day I hope to see a mobile that I can dock to my TV and get a 'desktop' experience, but I still think the best way to achieve this is not to pander to poor developer's desire to have things handed to them, but to try to keep some efficiency in programming.
You can get good performance with low-RAM environments. You need to code in C, or C++ with the wonderful RAII, and you suddenly no longer need gobs of RAM for your GC-based language that assumes RAM is free and unlimited. Our problem is fundamentally down to that.
yes it is - or it should be. I used to have 512Mb RAM years ago on my desktop and things ran fine. Hell, I had less than that when I first started work - I remember upgrading my dev box to 32MB RAM way back, and visual studio still ran fine.
Of course, they hadn't layered in so much crap on to it that required all the RAM is does now.
The same applies to mobiles, there are physical constraints that are not about financial cost, typically battery life, that apply to mobiles. If your app requires 2gb RAM, that means firstly that the phone must have much more than that to work effectively for the user (who will be running other things too, and if they requires 2gb as well, well, you do the math) but it also means that RAM is sucking up juice all the time. If you need that much RAM, it also means your app is not very efficient - even if its only garbage collecting,that means its doing stuff that require CPU cycles that suck up more juice. Net result - you have crap reviews for your battery-draining app and no-one uses it.
See, the modern myth that computers have so much processing power that's unused may apply to the desktop where 1 user sits there while the CPU twiddles its thumbs. It does not apply on the server where ten thousand users are all asking it to process stuff simultaneously; or on mobile where the CPU tries very hard to do nothing for as often as possible.
So, the problem does not lie with the manufacturers for making a mobile phone that requires the same form factor as a desktop pc, complete with several fans and heatsinks. The problem lies with the programmers, not only for writing code in languages that are not designed for efficiency, but also the programmers who come up with the libraries, frameworks and other systems that are so bloated with crap because they're written from the point of view of someone used solely to coding a desktop PC that has CPU to spare and can't figure out how to write efficient code (which is understandable as they've grown up in a world of bloated crappy libraries and languages that put "ease of coding" way above anything else.
I mean, if you wrote code in C, the compiler will strip out everything that's not needed. If you write in javascript, you pull in a megabyte of data scripts from several sites, just for 1 function... because its easy to do.
Similarly, if you code for Android, in Java, you'll see your app is slow. Code it in the NDK and you'll get something very fast. (See for yourself, download Addons Detector and run it to see the development tool used for each of your apps. The fast and responsive apps will all have been written using the NDK). That shows a difference between native code and Java, imagine the difference between native code and javascript!
So use the right tool for the job. If you only know the javascript pliers, everything will look like a bent nail. Its not that js is bad, but that its not appropriate for this task.
huh? Smart pointers work *because* of RAII, there's no "I'm better than you because I roll my own destructors and don't use the library systems that help".
There shouldn't be any willy-waving here, real men use C++ and don't need to worry about memory management and object lifetimes much anymore.
he's probably talking about TFS as its known to be useless at merging. Nothing to do with VS at all, though his problems with solution projects and CI could be more to do with MSBuild and TFS's pretty poor build system.
The only thing I can think of where he'd have a point that VS is poor is the way projects depend on each other. Microsoft's "best practise" is to put all projects into a single huge solution so they can reference each other rather than building projects and referencing them from a common directory (as.net projects don't seem to like absolute paths in references... and if you put a reference path in your project, it turns out it gets stored in the per-user file, not anything that gets stored in source control. The old C++ way of include and link paths was a much better system when projects start to get big)
this is so true - I remember the discussions about TPC benchmarks (where a Sun server would run a million transactions, but it required a cluster of Windows servers... I say"discussion" it was more arguments about a single server was better than a farm).
But in all, the Windows PC was 80% as good as the AIX workstation. But the PC cost £1000 where the workstation cost £10,000. The maths are obvious even to IBM-only managers.
It also had a nice programming model (this was back in the days of NT4, before they f***ed things up with all the built-up "features" cruft) and a consistent development system - I recall all the things I could now do in 1 way, rather than all the little lock-ins the 3 unix systems made me work with.
Today, the situation is that the Windows PC may only be £300, but it needs £10k in software licences and server costs to run... they've truly become what they pushed out all those years ago.
I'd say the world is changing again (and MS knows it) to be cloud-connected, so the PC is being pushed out by (effectively) websites that have no fixed client.
sorry - I meant the website, I'm sure the apps themselves can be in any language. If you don't speak spanish, a visitor is just not likely to progress further in the site and find out more.
absolutely. I see a lot of companies right now moving to TFS for their source control needs, and lets be fair - TFS2012+ is a lot better than the shite the old versions were, but.... its very integrated, cloyingly so. I know a few people say "yes but you can still use jenkins for builds" etc, but forget to say that you cannot hook the results of the builds back into the TFS summary and other panes which suddenly makes it less of an option. This doesn't just apply to systems either, if you use something like nUnit for your tests, you'll have a hard time re-integrating the results into the integrated view.
so MS is subtly persuading everyone to move wholesale to their product. I know this isn't anything unusual, but I am seeing a lot of it wrt TFS at the moment. Something needs to be done!
They're doing something similar with MSDN, now to get a couple of new toys you need to get the Premium edition (which is 5x the cost of Professional). eg. To get TFS, you can have Professional... but to get all the features like the code review stuff they've been heavily plugging, you need Premium.
I think its just a ploy to squeeze more revenue out of us all, without us noticing until its too late.
NASA says, "Yes, but this is for 10 MeV electrons. Which are not really part of the space radiation problem. Where are the higher energy proton and heavy ion results?" RAL says, "give us some funding and we'll go expand our research".
See, that's why they contact the state department, who know nothing about science but have lots of cash they already fritter away.
I suppose this is like what happens when you dream - if you've ever had a dream where you were naked in public or similar, your subconscious is just trying to help you out with some social anxieties.
Of course, I use such virtual imaging techniques myself all the time, usually using the internet as a tool to assist. Only its everyone else that has no clothes on. And they're all women.
its more the fear of the GPL, where you use something like a css file and suddenly all your website has to be licenced under the GPL too because of the GPL requirements in the CSS files' licence.
This is usually the reason things are dual-licenced, to try and clear up the kind ofd confusion ordinary people have with using GPL software.
Personally, I think it might be time to change things a little to keep with the spirit of GPL without affecting your right to make your own software and release it (or not) as you like - a licence where the software you receive is most definitely OSS, and any changes you make to it must also be re-released as free software, but anything you create that uses it doesn't have to be. (the GOSPL licence? Gnu Open Source Public Licence)
I know there are things like the LGPL that try to clear this up, but they rely on the GPL project source being pretty much self-contained.
I guess it is hard to describe the concept of all these files are free and must stay free, and any additions to them that are required for them to keep working must also be free, but not any additional source that is solely needed to make your application work.
ie. when MS took the BSD tcpip network source and put it into Windows, we can say this was a good thing as if they had to make their own, they'd have made it ever so slightly incompatible or just broken with respect to other tcpip stacks and we'd be running all kinds of horrible hacks to keep Windows and Linux running side by side on a network. (in much the same was as WCF SOAPv2 services do not interoperate with Java or PHP SOAPv2 services). Buit when MS made improvements to that code, as it was BSD licenced, they didn't have to share those improvements with everyone else. Hence we need a half-way house, where the changes to the free source must be shared, but without turning all of Windows into GPL licenced code (you wouldn't really want to see it:-) )
I think such a licence would do wonders for OSS as it'd get used a lot more in industry,making it much more popular. It would also help our industry actually have standards that were standard!
ok, so it is still considered harmful or was that the usual guff about how DirectX (or whatever brand-name they're pushing today) is vastly superior to anything standard.
Have they done anything with WebGL to "fix" the mentioned problems, or have they just realized no-one listens to their FUD anymore?
no, all you "know" is that there is a method called "add" on the object named 3 that is being called with the parameter 5.
So the 'add' method could easily carve 3 and 5 on a tree. You have no way of knowing what it does just from the method name. The classic example is string::add(). Does "hello".add("world") produce "hello world" or does it only apply to "3".add("5") to produce "8"? You may criticise operator+ for this reason, but note that the add() method is just as bad.
So there is no difference between the operator+() method, and the add() method (except the name chosen, and the way its written by the developer).
Now we've established that there is no difference between the two, we can say that as normal humans are the ones that read and write code, the former, operator, mechanism is easier to read, write and understand, then it is the one that should be preferred.
still more than Windows Phone 8 managed.... :)
OpenCL is C based so it shouldn't be that hard to pick up
the guy's a C# developer. I think you underestimate how VB-ish that language is, despite the superficial veneer of curly brackets.
Really? Erm, I think we should be given a list so that, you know, we can, err.., check their data-collating algorithms for accuracy. Yeah, that.
exactly, 'cloud' isn't a new name for co-located servers. Its a new name for VPS hosting (roughly).
You could always have paid for rented physical servers that were set up for DR and HA - Rackspace in particular would sell you service to practically guarantee uptime (if not totally guarantee it), but the cost was a bit much for most people and I don't think they would do it with colocated servers.
They, and others who aren't total cheap-ass hosts, still offer some form of HA service. As always you get what you pay for.
I don't suppose it was the Tablet form factor at fault here, I rather think it was the lack of backwards compatibility (we're talking the ARM-based Surface, not the x86-based Surface Pro).
Just like when netbooks turned up with Linux on them and had significant enough returns because people couldn't run their old Windows programs on them, I think these failed for the same reason. People bought a Windows box and expected (crazily!!!) that it would run Windows applications.
I predict the same with Windows 8 but for the desktop mode - which is what people are actually using windows 8 for. A surface tablet that runs Windows 8 without the desktop mode will be a similar flop.
so yes.. people are ignoring the fluff adverts (if they ever did, seeing how dreadful they've been)
you going to code java with qt creator? only an idiot - masochistic glorious idiot - would try to code java nowadays.
TFTFY.
You have a point though - C++ in eclipse is a real PiTA. Code::Blocks is much better, and I shall give QtCreator a go now. For java, if you must, then I guess Eclipse is made for you.
Na, next - compiler comparison between GCC and LLVM...
don't forget - classes are good, but don't use more than you can count up to.
which suggests one of 2 things will happen in the future:
a) he'll accidentally fall down the steps of the Vatican as his reforms start to really change things.
b) nothing, its all PR.
I hope the new Pope goes in there and cleans it all up, seems the Catholic church is pretty damn corrupt all the way through at the moment from paedophilia and coverups to financial fraud.
The new C++ system is good, you put paths in a global file (ok, this happens to live in your user directory, but there's only 1 of them, not 1 per project) and you can then reference the file in your build, so you get to say "this build requires the following environment", and you can then set your environment so your build machine can be different from your own, etc. .csprojs always used to mangle the references to relative directories, unless the reference was on a different drive letter. Maybe they've changed it, they change so much at the moment.
TFS - well, I was really referring to the horrible xaml-based monstrosity that is the 'workflow build configuration'. Its ok to change it, but forget maintaining it.
you say it yourself - you acquire a resource in the ctor, and release it in the dtor... so you acquire the shared_ptr (which increments a ref count) and release it in the dtor (which decrements the ref count).
That's still RAII, the true meaning of RAII is that the acquisition and releasing occurs deterministically, so you always know what the system is doing for you. there's no surprises like in GC systems where the resource is still held for an unknown amount of time.
RAII has nothing directly to do with resource allocation and free, its all to do with deterministic initialization and cleanup. There's a subtle difference, in that it works for a lot more than just allocating memory.
that's true - no-one's going to run Crysis on their mobile, but they could easily run Quake. Maybe our expectations of them need to be reduced similarly.
I do think that we will see mobiles with more RAM and power over time, they're still a very immature industry. One day I hope to see a mobile that I can dock to my TV and get a 'desktop' experience, but I still think the best way to achieve this is not to pander to poor developer's desire to have things handed to them, but to try to keep some efficiency in programming.
You can get good performance with low-RAM environments. You need to code in C, or C++ with the wonderful RAII, and you suddenly no longer need gobs of RAM for your GC-based language that assumes RAM is free and unlimited. Our problem is fundamentally down to that.
yes it is - or it should be. I used to have 512Mb RAM years ago on my desktop and things ran fine. Hell, I had less than that when I first started work - I remember upgrading my dev box to 32MB RAM way back, and visual studio still ran fine.
Of course, they hadn't layered in so much crap on to it that required all the RAM is does now.
The same applies to mobiles, there are physical constraints that are not about financial cost, typically battery life, that apply to mobiles. If your app requires 2gb RAM, that means firstly that the phone must have much more than that to work effectively for the user (who will be running other things too, and if they requires 2gb as well, well, you do the math) but it also means that RAM is sucking up juice all the time. If you need that much RAM, it also means your app is not very efficient - even if its only garbage collecting,that means its doing stuff that require CPU cycles that suck up more juice. Net result - you have crap reviews for your battery-draining app and no-one uses it.
See, the modern myth that computers have so much processing power that's unused may apply to the desktop where 1 user sits there while the CPU twiddles its thumbs. It does not apply on the server where ten thousand users are all asking it to process stuff simultaneously; or on mobile where the CPU tries very hard to do nothing for as often as possible.
So, the problem does not lie with the manufacturers for making a mobile phone that requires the same form factor as a desktop
pc, complete with several fans and heatsinks. The problem lies with the programmers, not only for writing code in languages that are not designed for efficiency, but also the programmers who come up with the libraries, frameworks and other systems that are so bloated with crap because they're written from the point of view of someone used solely to coding a desktop PC that has CPU to spare and can't figure out how to write efficient code (which is understandable as they've grown up in a world of bloated crappy libraries and languages that put "ease of coding" way above anything else.
I mean, if you wrote code in C, the compiler will strip out everything that's not needed. If you write in javascript, you pull in a megabyte of data scripts from several sites, just for 1 function... because its easy to do.
Similarly, if you code for Android, in Java, you'll see your app is slow. Code it in the NDK and you'll get something very fast. (See for yourself, download Addons Detector and run it to see the development tool used for each of your apps. The fast and responsive apps will all have been written using the NDK). That shows a difference between native code and Java, imagine the difference between native code and javascript!
So use the right tool for the job. If you only know the javascript pliers, everything will look like a bent nail. Its not that js is bad, but that its not appropriate for this task.
huh? Smart pointers work *because* of RAII, there's no "I'm better than you because I roll my own destructors and don't use the library systems that help".
There shouldn't be any willy-waving here, real men use C++ and don't need to worry about memory management and object lifetimes much anymore.
he's probably talking about TFS as its known to be useless at merging. Nothing to do with VS at all, though his problems with solution projects and CI could be more to do with MSBuild and TFS's pretty poor build system.
The only thing I can think of where he'd have a point that VS is poor is the way projects depend on each other. Microsoft's "best practise" is to put all projects into a single huge solution so they can reference each other rather than building projects and referencing them from a common directory (as .net projects don't seem to like absolute paths in references... and if you put a reference path in your project, it turns out it gets stored in the per-user file, not anything that gets stored in source control. The old C++ way of include and link paths was a much better system when projects start to get big)
this is so true - I remember the discussions about TPC benchmarks (where a Sun server would run a million transactions, but it required a cluster of Windows servers... I say"discussion" it was more arguments about a single server was better than a farm).
But in all, the Windows PC was 80% as good as the AIX workstation. But the PC cost £1000 where the workstation cost £10,000. The maths are obvious even to IBM-only managers.
It also had a nice programming model (this was back in the days of NT4, before they f***ed things up with all the built-up "features" cruft) and a consistent development system - I recall all the things I could now do in 1 way, rather than all the little lock-ins the 3 unix systems made me work with.
Today, the situation is that the Windows PC may only be £300, but it needs £10k in software licences and server costs to run... they've truly become what they pushed out all those years ago.
I'd say the world is changing again (and MS knows it) to be cloud-connected, so the PC is being pushed out by (effectively) websites that have no fixed client.
sorry - I meant the website, I'm sure the apps themselves can be in any language. If you don't speak spanish, a visitor is just not likely to progress further in the site and find out more.
I had a click on the Velneo link... it might be awesome, but its in spanish(?) so that would put most people off it immediately.
I know I'm preaching to the converted here but...
absolutely. I see a lot of companies right now moving to TFS for their source control needs, and lets be fair - TFS2012+ is a lot better than the shite the old versions were, but.... its very integrated, cloyingly so. I know a few people say "yes but you can still use jenkins for builds" etc, but forget to say that you cannot hook the results of the builds back into the TFS summary and other panes which suddenly makes it less of an option. This doesn't just apply to systems either, if you use something like nUnit for your tests, you'll have a hard time re-integrating the results into the integrated view.
so MS is subtly persuading everyone to move wholesale to their product. I know this isn't anything unusual, but I am seeing a lot of it wrt TFS at the moment. Something needs to be done!
They're doing something similar with MSDN, now to get a couple of new toys you need to get the Premium edition (which is 5x the cost of Professional). eg. To get TFS, you can have Professional... but to get all the features like the code review stuff they've been heavily plugging, you need Premium.
I think its just a ploy to squeeze more revenue out of us all, without us noticing until its too late.
you're not thinking this through properly...
NASA says, "Yes, but this is for 10 MeV electrons. Which are not really part of the space radiation problem. Where are the higher energy proton and heavy ion results?"
RAL says, "give us some funding and we'll go expand our research".
See, that's why they contact the state department, who know nothing about science but have lots of cash they already fritter away.
I suppose this is like what happens when you dream - if you've ever had a dream where you were naked in public or similar, your subconscious is just trying to help you out with some social anxieties.
Of course, I use such virtual imaging techniques myself all the time, usually using the internet as a tool to assist. Only its everyone else that has no clothes on. And they're all women.
its more the fear of the GPL, where you use something like a css file and suddenly all your website has to be licenced under the GPL too because of the GPL requirements in the CSS files' licence.
This is usually the reason things are dual-licenced, to try and clear up the kind ofd confusion ordinary people have with using GPL software.
Personally, I think it might be time to change things a little to keep with the spirit of GPL without affecting your right to make your own software and release it (or not) as you like - a licence where the software you receive is most definitely OSS, and any changes you make to it must also be re-released as free software, but anything you create that uses it doesn't have to be. (the GOSPL licence? Gnu Open Source Public Licence)
I know there are things like the LGPL that try to clear this up, but they rely on the GPL project source being pretty much self-contained.
I guess it is hard to describe the concept of all these files are free and must stay free, and any additions to them that are required for them to keep working must also be free, but not any additional source that is solely needed to make your application work.
ie. when MS took the BSD tcpip network source and put it into Windows, we can say this was a good thing as if they had to make their own, they'd have made it ever so slightly incompatible or just broken with respect to other tcpip stacks and we'd be running all kinds of horrible hacks to keep Windows and Linux running side by side on a network. (in much the same was as WCF SOAPv2 services do not interoperate with Java or PHP SOAPv2 services). Buit when MS made improvements to that code, as it was BSD licenced, they didn't have to share those improvements with everyone else. Hence we need a half-way house, where the changes to the free source must be shared, but without turning all of Windows into GPL licenced code (you wouldn't really want to see it :-) )
I think such a licence would do wonders for OSS as it'd get used a lot more in industry,making it much more popular. It would also help our industry actually have standards that were standard!
ok, so it is still considered harmful or was that the usual guff about how DirectX (or whatever brand-name they're pushing today) is vastly superior to anything standard.
Have they done anything with WebGL to "fix" the mentioned problems, or have they just realized no-one listens to their FUD anymore?
However they can't actually say HOW they are inaccurate, because they would be compromising classified information.
diff those documents before and after amendment, see the classified information. I don't know if the senators are dumb or being subtly clever.