The original was unbelievably true to dysfunctional form. I Everyone I know says "yeah, I used to work for a guy like that". that's mainly what made it so popular. The US version... well, I believe they altered it to make it fit the US culture, mini series format, product placement and got a pit of writers in to add some jokes and make it run for half a dozen series. I'm sure the joke wore thin after the 1st.
Getting Mantis installed and configured is easy. No problems there. Getting it so your bug number gets linked to a revision number when you commit some source files to subversion is another matter. Its not that difficult, but the end-to-end configuration is still something someone has to do.
This is why we have the 'packaged' systems that do all that work for you, unfortunately, no-ones put a load of them together in this way in a F/OSS project.
Collabnet's Teamforge might do most of what you're after there - but its not open source or free. Its cheap for the solution though, costs the same for 25 users as TFS does for 1.
There isn't any open source equivalents though... unless you take a load of pieces that do parts of your requirements, eg subversion for version control, hudson for continuous integration, mantis for bug tracking, etc. All the pieces are out there, but you'll have to do the work integrating them yourself.
No, its still about politeness. Mccabe doesn't want royalties or anything like that, he doesn't want legal nonsense either - he just wants them to respect the fact that he created a language before them that has the same name.
Its not even about that, but the need to disambiguate the languages, Even I checked the '99 bottles of beer' website to see if anyone had already posted in Go, and found Go! already there.
Its not about whether the language is updated in years or not, or they could call their language Algol and get the same amount of criticism:)
Google should change the name, then thank their lucky stars for the massive publicity!
in other news, Microsoft employee says "iPhone is better than WinMobile", cue Microsoft fanbois to criticise employee and distract everyone from the frickin' obvious.
No, after all, isn't MS paying those developers to build the games for Xbox too? This is nothing new, console manufacturers have always done this, and charged developers licence fees to get their cash back:)
I meant the amount of money MS has given out in developing and 'aggressively' marketing the xbox line. Current estimate is $7bn losses - quick link I can find says $5.4bn loss up to 2007, which doesn't count the red-ring-of-death losses (of $1.2Bn).
so Microsoft burns yet more money on XBox development by subsidising this in order to win market share from its competitors. I guess this is what happens when you have a spare $10bn to throw at a problem (xbox development included):)
Hi. Did you know/. supports i and quote html tags (sorry, can't type angle brackets by themselves)
My point about GC leakage is that people can too easily *think* they've released the object and consider it will clean up by itself, but find out later that their app is using 500 Mb RAM and has obviously got an 'error' *somewhere* in the program. GC gives you a false sense of security that a manual memory system doesn't - manual systems leakage is a outright bug more often caused by sloppy programming. Sometimes I think this is a flaw in the GC systems, if you have to manually de-reference an object, or manually call a closure method, its not as OO as I was taught (but I was brought up on RAII idiom)
One thing about GC references and deferred finalisation is not that you want to close your handle or suchlike, its the next application along might want to open that handle and will fail because its technically still in use. Safehandle was introduced because the GC mechanism (in C#) couldn't provide application correctness.
Let's think about this not from a moral perspective, but from a business one
Ok, lets do that.
As Microsoft software is the single most predominately used OS in the world, having large numbers of these installations being vulnerable to botnets is not only putting the efficient working of the global networks at risk, costing large sums as innocent ISPs upgrade their infrastructure to cope with the deluge of useless spam traffic and and virus payloads; costing businesses large sums to protect themselves from the deluge of virus, phishing and spam that routinely attacks their users; costing consumers vast sums as they attempt to protect themselves from the same deluge of attacks; but also puts the economy at risk with phishing attempts and other fraudulent and criminal activities that at best reduce people's confidence in using it for economic activity.
Given the above, the government should step in and force Microsoft to be more responsible for securing the national infrastructure from these attacks. Infrastructure that the modern economy depends upon. They keep telling us how many billions of Dollars are lost to virus attacks, how much conficker cost business, etc. Imagine how much the economy would suffer if there was a really big botnet/virus that did more than inconvenience users.
You can ignore moral aspects here and focus on the purely economic. We did that with banker's bonus-driven practices, and look how well that turned out. By ignoring the 'moral' aspects of Microsoft's monopoly and their self-interested lack of securing their OS, we may yet suffer similar problems.
(this isn't really Microsoft bashing, its more monopoly bashing)(though, I recall someone senior at MS saying they liked piracy because it made developers and users become accustomed to Microsoft software which had a beneficial effect to them - perhaps it is Microsoft's fault after all).
2. use a C++ compiler and change your code to be 'better C' using it - ie use a few pieces of C++ that provide a benefit. Once you've used the STL containers you'll be happier and you'll have far less memory corruption issues.
3. Change your programming style, pointers and direct memory access isn't a good style to use in the first place.
ie. Manual management works like this: alloc, dealloc, alloc, dealloc, alloc dealloc.
GC works like this: alloc, alloc, alloc, dealloc, dealloc, dealloc.
So overall there is no difference to speak of.
There are places where you can see a benefit to one over the other. In GC, you do not get the fragmentation of the heap like you do with manual management. However, in GC you do have to walk the heap and compress it. So you're making trade offs there, that will possibly have an effect with some types of application. (note you can mitigate the fragmentation on manual heaps with fixed-block allocators).
GC can have better performance with shared objects, ie once allocated an object can be passed around by passing the 'pointer' to it. With a RAII style system, the full object tends to be passed around (which is why C++ compilers do a very good job of optimising code, and the boost shared_ptr was created. GC is in effect like having all objects created in a shared_ptr).
GC does have an issue with memory leakage - see the notes that inexperience C# programmers have been complaining of when not (manually) removing event handlers from UI components. The GC never frees them if there's always a reference held to an in-use object, even if that object no longer gets used. GC also has issues with 'deterministic finalisation' - which is not a problem if the only resource used by your object is memory, but it is a huge problem for all other types of resource. I think the designers didn't grasp this fact. (I know they didn't when designing C# because they had to later go and create a reference-counting wrapper, SafeHandle)
So GC is a tool that is useful in some instances, but its not something that should be your only option, unfortunately all languages that provide GC-based memory don't tend to offer much in the way of alternatives, unlike C++ which not only allows you to have GC memory management for objects you choose to be collected, but also allows you to have shared objects with deterministic finalisation, and also allows you to have cheap stack-based objects too.
Back in the day, C++ was pretty much C code written with some nicer syntax features. the lack of a string class really doesn't make much of a muchness.
Hell, even today, C++ is (well, should, you know some people overengineer C++ code so every little thing is a multiply-inherited object) pretty much C code packaged up with a nicer syntax. And some STL and Boost thrown in to make some things simpler.
C# - suffers the same memory issues as Java. Practically *is* Java really.
So Go.. add a common library of useful stuff and it could be a killer language, especially if Google drops their Java-based language they hacked up for Android and starts to use it for everything. Lets hope it doesn't become just another entry in the '99 bottles of beer' list. They're going to have to rename it though;)
If you want to be efficient in terms of memory, the last language you'd choose is C#.
There's no reason why you can't have a fixed-size string class that can grow its buffer if anyone calls the appending methods. In any case, the StringBuilder class provides everything you'd want in a string - including preallocating the size, but without being a string that everyone uses daily, leaving you to convert to and from it all the time.
I'm not even sure if there are efficiencies in performance from using a resizeable string class (if you don't resize the buffer, that is)
ok, so we've upped the requirements from 640x480x8bpp to 1280x960x32bpp. That's 16x as much data. Networking has increased from old 10mbps coax cables to gigabit networks in the same time. That's 100 times as much. Processors, RAM and graphics accelerators are similarly increased (gfx tremendously so), so I'd expect performance to be roughly on par with those old systems at the minimum.
sure.. but on a dial-up connection? I'm guessing you don't remember the days when you had to plug in the modem, or pay per minute, or get automatically disconnected by the ISP if you left it on for 2 hours (to stop you running up a huge phone bill).
you kids have it easy now, so easy you think nothing of downloading a 100Mb.NET service pack, and then another one, and another one, followed by another 300mb OS patch, and then a whole suite of Office patches. Magazines don't tend to ship these on their coverdiscs like they used to, mainly because there'd be no space left for anything else!
and not just the trust of users getting WGA installed as a 'critical' update, think of other memorable 'critical' updates like silverlight. And then think of the issues they've had when WU has broken apps. Its no wonder MS only pushes updates out on patch Tuesdays now, and people don't update unless they have to.
are we talking about the Razr v8? 'cos if you are, you can lock the external keys so they don't work - open the phone, options menu, lock external keys. You can unlock them by holding down the 'select' key, but you have to do that for a good couple of seconds, and if you keep it held, it toggles back to locked.
I don't understand why the Ubuntu team has never simplified the setup process for Samba
If you're the Samba configuration expert (or even someone who has managed to get a setup that works like that), why not share some of your existing config files, with some description of what you did, with the Ubuntu team. Most of the time, the GUI is not the hard part - its the figuring out what to make the GUI do that is difficult. Providing your expertise removes a lot of that workload in one fell swoop.
They might get to understand how to re-install Ubuntu. They manage it with Windows, and tech support hand-holding them, or just slapping in the DVD and clicking next a lot.
The only good reason for a separate/home is to partition your data from everything else. I don't care if my OS dies, I can re-install it without having to worry (or copy) masses of data to a backup partition, and possibly (probably in my case) forget something. Its not something you'd do very often, but when you do come to do it you realise why you did it. If you have Windows on, you'll realise exactly why you did it when Windows 7 practically won't let you do an upgrade anyway.
In these days of super-large disks, there's no reason to give / a mere 10Gb. Give it 25Gb (which is what I gave Vista, and is nearly full now:( ) and you'll never fill that, not with Linux software.
I tend to do 3 partitions anyway - one for the OS and stuff; one for my data; one for temp files, downloads, backups etc. It works well for me. I think it'd work well for the common user too, the days of one big "C:" partition should be over.
actually, I disagree with that statement. Imagine a world where every app required 1Gb RAM to run acceptably (Office 2010 anyone?). What you will see is not an app that runs slow if you give it less and faster if you give it more, but an app that runs slowly no matter how much you give it.
Think of that 1Gb, how long does it take to get that off disk and into RAM? Or, if the ram usage is calculated/generated and the disk image is tiny, how long does it take to fill it up with what ever it is doing?
that said, once you have the app that has all that RAM used, how much of it will fit into the CPU caches? How much time will be spent shifting data from RAM to L3 to L2 to L1 caches - and if the CPU is waiting for data to be updated in its cache, its certainly not running at those multi-gigahertz speeds, you'd be better off with an old 200 Mhz P3 and a gigabyte of L1 cache!
Of course, we wont even go into the time it takes if you end up swapping!
It doesn't matter if an app used 64k or 1Mb - both those numbers are still quite small, small enough not to make a difference that you'd notice. But when the memory usage creeps up to tremendous levels, you know its going to run like a dog. 200Mb plus another 200Mb swapped out is normal for some apps. Guess how well they run?
In some cases I wouldn't be worried about an app that did use a lot of memory, if its used for data structures or cached data, but these slow apps seem to be built on bloated frameworks that make them use masses of ram just to do nothing (well, just to make a lazy programmer's life a little bit easier)
An app that requires 256MB will always run faster than one that takes 1Gb, even if you have a machine with 100Gb RAM. RAM may be cheap but I/O bandwidth is not.
RAM is meant to be used, but I'd like that to be used by the OS to cache the disk, or whatever it likes, not to have all that gobbled up by apps that leave the OS with little left over to cache with.
but... is the The Office, or the US version?
The original was unbelievably true to dysfunctional form. I Everyone I know says "yeah, I used to work for a guy like that". that's mainly what made it so popular. The US version... well, I believe they altered it to make it fit the US culture, mini series format, product placement and got a pit of writers in to add some jokes and make it run for half a dozen series. I'm sure the joke wore thin after the 1st.
Integrating,. not installing
Getting Mantis installed and configured is easy. No problems there. Getting it so your bug number gets linked to a revision number when you commit some source files to subversion is another matter. Its not that difficult, but the end-to-end configuration is still something someone has to do.
This is why we have the 'packaged' systems that do all that work for you, unfortunately, no-ones put a load of them together in this way in a F/OSS project.
Collabnet's Teamforge might do most of what you're after there - but its not open source or free. Its cheap for the solution though, costs the same for 25 users as TFS does for 1.
There isn't any open source equivalents though... unless you take a load of pieces that do parts of your requirements, eg subversion for version control, hudson for continuous integration, mantis for bug tracking, etc. All the pieces are out there, but you'll have to do the work integrating them yourself.
No, its still about politeness. Mccabe doesn't want royalties or anything like that, he doesn't want legal nonsense either - he just wants them to respect the fact that he created a language before them that has the same name.
Its not even about that, but the need to disambiguate the languages, Even I checked the '99 bottles of beer' website to see if anyone had already posted in Go, and found Go! already there.
Its not about whether the language is updated in years or not, or they could call their language Algol and get the same amount of criticism :)
Google should change the name, then thank their lucky stars for the massive publicity!
in other news, Microsoft employee says "iPhone is better than WinMobile", cue Microsoft fanbois to criticise employee and distract everyone from the frickin' obvious.
so did xkcd.
That's why I suggested Purify too...
No, after all, isn't MS paying those developers to build the games for Xbox too? This is nothing new, console manufacturers have always done this, and charged developers licence fees to get their cash back :)
I meant the amount of money MS has given out in developing and 'aggressively' marketing the xbox line. Current estimate is $7bn losses - quick link I can find says $5.4bn loss up to 2007, which doesn't count the red-ring-of-death losses (of $1.2Bn).
so Microsoft burns yet more money on XBox development by subsidising this in order to win market share from its competitors. I guess this is what happens when you have a spare $10bn to throw at a problem (xbox development included) :)
Hi. Did you know /. supports i and quote html tags (sorry, can't type angle brackets by themselves)
My point about GC leakage is that people can too easily *think* they've released the object and consider it will clean up by itself, but find out later that their app is using 500 Mb RAM and has obviously got an 'error' *somewhere* in the program. GC gives you a false sense of security that a manual memory system doesn't - manual systems leakage is a outright bug more often caused by sloppy programming. Sometimes I think this is a flaw in the GC systems, if you have to manually de-reference an object, or manually call a closure method, its not as OO as I was taught (but I was brought up on RAII idiom)
One thing about GC references and deferred finalisation is not that you want to close your handle or suchlike, its the next application along might want to open that handle and will fail because its technically still in use. Safehandle was introduced because the GC mechanism (in C#) couldn't provide application correctness.
Let's think about this not from a moral perspective, but from a business one
Ok, lets do that.
As Microsoft software is the single most predominately used OS in the world, having large numbers of these installations being vulnerable to botnets is not only putting the efficient working of the global networks at risk, costing large sums as innocent ISPs upgrade their infrastructure to cope with the deluge of useless spam traffic and and virus payloads; costing businesses large sums to protect themselves from the deluge of virus, phishing and spam that routinely attacks their users; costing consumers vast sums as they attempt to protect themselves from the same deluge of attacks; but also puts the economy at risk with phishing attempts and other fraudulent and criminal activities that at best reduce people's confidence in using it for economic activity.
Given the above, the government should step in and force Microsoft to be more responsible for securing the national infrastructure from these attacks. Infrastructure that the modern economy depends upon. They keep telling us how many billions of Dollars are lost to virus attacks, how much conficker cost business, etc. Imagine how much the economy would suffer if there was a really big botnet/virus that did more than inconvenience users.
You can ignore moral aspects here and focus on the purely economic. We did that with banker's bonus-driven practices, and look how well that turned out. By ignoring the 'moral' aspects of Microsoft's monopoly and their self-interested lack of securing their OS, we may yet suffer similar problems.
(this isn't really Microsoft bashing, its more monopoly bashing)(though, I recall someone senior at MS saying they liked piracy because it made developers and users become accustomed to Microsoft software which had a beneficial effect to them - perhaps it is Microsoft's fault after all).
I'd rather have very smart tooling which gets to know me and corrects me
really?
Hi. you seem to be writing an application. Would you like help with that?
1. run it through valgrind of purify.
2. use a C++ compiler and change your code to be 'better C' using it - ie use a few pieces of C++ that provide a benefit. Once you've used the STL containers you'll be happier and you'll have far less memory corruption issues.
3. Change your programming style, pointers and direct memory access isn't a good style to use in the first place.
Roughly the cancel out overall.
ie. Manual management works like this:
alloc, dealloc, alloc, dealloc, alloc dealloc.
GC works like this:
alloc, alloc, alloc, dealloc, dealloc, dealloc.
So overall there is no difference to speak of.
There are places where you can see a benefit to one over the other. In GC, you do not get the fragmentation of the heap like you do with manual management. However, in GC you do have to walk the heap and compress it. So you're making trade offs there, that will possibly have an effect with some types of application. (note you can mitigate the fragmentation on manual heaps with fixed-block allocators).
GC can have better performance with shared objects, ie once allocated an object can be passed around by passing the 'pointer' to it. With a RAII style system, the full object tends to be passed around (which is why C++ compilers do a very good job of optimising code, and the boost shared_ptr was created. GC is in effect like having all objects created in a shared_ptr).
GC does have an issue with memory leakage - see the notes that inexperience C# programmers have been complaining of when not (manually) removing event handlers from UI components. The GC never frees them if there's always a reference held to an in-use object, even if that object no longer gets used. GC also has issues with 'deterministic finalisation' - which is not a problem if the only resource used by your object is memory, but it is a huge problem for all other types of resource. I think the designers didn't grasp this fact. (I know they didn't when designing C# because they had to later go and create a reference-counting wrapper, SafeHandle)
So GC is a tool that is useful in some instances, but its not something that should be your only option, unfortunately all languages that provide GC-based memory don't tend to offer much in the way of alternatives, unlike C++ which not only allows you to have GC memory management for objects you choose to be collected, but also allows you to have shared objects with deterministic finalisation, and also allows you to have cheap stack-based objects too.
Back in the day, C++ was pretty much C code written with some nicer syntax features. the lack of a string class really doesn't make much of a muchness.
Hell, even today, C++ is (well, should, you know some people overengineer C++ code so every little thing is a multiply-inherited object) pretty much C code packaged up with a nicer syntax. And some STL and Boost thrown in to make some things simpler.
C# - suffers the same memory issues as Java. Practically *is* Java really.
So Go.. add a common library of useful stuff and it could be a killer language, especially if Google drops their Java-based language they hacked up for Android and starts to use it for everything. Lets hope it doesn't become just another entry in the '99 bottles of beer' list. They're going to have to rename it though ;)
If you want to be efficient in terms of memory, the last language you'd choose is C#.
There's no reason why you can't have a fixed-size string class that can grow its buffer if anyone calls the appending methods. In any case, the StringBuilder class provides everything you'd want in a string - including preallocating the size, but without being a string that everyone uses daily, leaving you to convert to and from it all the time.
I'm not even sure if there are efficiencies in performance from using a resizeable string class (if you don't resize the buffer, that is)
Why do you need EVDO Broadband to connect with a guy in the back of the bus?
because you missed it and had to catch the next one?
ok, so we've upped the requirements from 640x480x8bpp to 1280x960x32bpp. That's 16x as much data. Networking has increased from old 10mbps coax cables to gigabit networks in the same time. That's 100 times as much. Processors, RAM and graphics accelerators are similarly increased (gfx tremendously so), so I'd expect performance to be roughly on par with those old systems at the minimum.
Yes. Download the file once, overnight
sure.. but on a dial-up connection? I'm guessing you don't remember the days when you had to plug in the modem, or pay per minute, or get automatically disconnected by the ISP if you left it on for 2 hours (to stop you running up a huge phone bill).
you kids have it easy now, so easy you think nothing of downloading a 100Mb .NET service pack, and then another one, and another one, followed by another 300mb OS patch, and then a whole suite of Office patches. Magazines don't tend to ship these on their coverdiscs like they used to, mainly because there'd be no space left for anything else!
and not just the trust of users getting WGA installed as a 'critical' update, think of other memorable 'critical' updates like silverlight. And then think of the issues they've had when WU has broken apps. Its no wonder MS only pushes updates out on patch Tuesdays now, and people don't update unless they have to.
are we talking about the Razr v8? 'cos if you are, you can lock the external keys so they don't work - open the phone, options menu, lock external keys. You can unlock them by holding down the 'select' key, but you have to do that for a good couple of seconds, and if you keep it held, it toggles back to locked.
I don't understand why the Ubuntu team has never simplified the setup process for Samba
If you're the Samba configuration expert (or even someone who has managed to get a setup that works like that), why not share some of your existing config files, with some description of what you did, with the Ubuntu team. Most of the time, the GUI is not the hard part - its the figuring out what to make the GUI do that is difficult. Providing your expertise removes a lot of that workload in one fell swoop.
So I just have to wait for Ubuntu SP1, just like ... other OSes.
They might get to understand how to re-install Ubuntu. They manage it with Windows, and tech support hand-holding them, or just slapping in the DVD and clicking next a lot.
The only good reason for a separate /home is to partition your data from everything else. I don't care if my OS dies, I can re-install it without having to worry (or copy) masses of data to a backup partition, and possibly (probably in my case) forget something. Its not something you'd do very often, but when you do come to do it you realise why you did it. If you have Windows on, you'll realise exactly why you did it when Windows 7 practically won't let you do an upgrade anyway.
In these days of super-large disks, there's no reason to give / a mere 10Gb. Give it 25Gb (which is what I gave Vista, and is nearly full now :( ) and you'll never fill that, not with Linux software.
I tend to do 3 partitions anyway - one for the OS and stuff; one for my data; one for temp files, downloads, backups etc. It works well for me. I think it'd work well for the common user too, the days of one big "C:" partition should be over.
actually, I disagree with that statement. Imagine a world where every app required 1Gb RAM to run acceptably (Office 2010 anyone?). What you will see is not an app that runs slow if you give it less and faster if you give it more, but an app that runs slowly no matter how much you give it.
Think of that 1Gb, how long does it take to get that off disk and into RAM? Or, if the ram usage is calculated/generated and the disk image is tiny, how long does it take to fill it up with what ever it is doing?
that said, once you have the app that has all that RAM used, how much of it will fit into the CPU caches? How much time will be spent shifting data from RAM to L3 to L2 to L1 caches - and if the CPU is waiting for data to be updated in its cache, its certainly not running at those multi-gigahertz speeds, you'd be better off with an old 200 Mhz P3 and a gigabyte of L1 cache!
Of course, we wont even go into the time it takes if you end up swapping!
It doesn't matter if an app used 64k or 1Mb - both those numbers are still quite small, small enough not to make a difference that you'd notice. But when the memory usage creeps up to tremendous levels, you know its going to run like a dog. 200Mb plus another 200Mb swapped out is normal for some apps. Guess how well they run?
In some cases I wouldn't be worried about an app that did use a lot of memory, if its used for data structures or cached data, but these slow apps seem to be built on bloated frameworks that make them use masses of ram just to do nothing (well, just to make a lazy programmer's life a little bit easier)
An app that requires 256MB will always run faster than one that takes 1Gb, even if you have a machine with 100Gb RAM. RAM may be cheap but I/O bandwidth is not.
RAM is meant to be used, but I'd like that to be used by the OS to cache the disk, or whatever it likes, not to have all that gobbled up by apps that leave the OS with little left over to cache with.