I'm a full time linux user and I also own a ps3 for two years now. However, I never tried to install linux on it because it does it's job well for what I can't do on my linux system - play games. I wouldn't be surprised if most slashdotters that posted so far don't even use linux on their desktop let alone own a ps3. So what's up with the hate?
From your point of view they took away a feature you never used. Now imagine Dell forced a new BIOS that would disable Linux from booting on your PC. Because "nobody uses linux". What would you say then?
I bought the PS3 for 3 things, linux, movies and games.
I used my PS3 as a thin client mostly. But also as a media center. But now thats no longer possible.
1. Don't overengineer! Overengineering wastes time on things that may never be used. Features should be customer driven.
2. Functions and methods should be as small as possible. You should make it an obsession to split methods and functions into the smallest possible components. Only then can you have good code reuse. Don't start thinking I will split it when I need it, you never will!
3. Never ever reinvent the wheel. Reinventing things that exist is overengineering.
4. Don't optimize ahead of time. When I say that I don't mean don't use a hash table instead of an array where it makes sense. I mean don't try to avoid exception handling or function calls or other minor optimizations. If it has an impact on readability don't do it. Optimization always comes last. Often you'll find there are only 1 or 2 "hotspots" in your code. If you spend time optimizing these "hotspots" after your application is built thats when you'll get the best return on your investment. Another gotcha with optimization is using technologies that can't deliver the level of performance you expect. You should test to make sure the underlying components you plan to use will perform as expected before you start coding.
5. Don't cram as much code in a single statement as possible. Every compiler I know about today will produce identical code whether it's one statement or 5 statements. It makes it hard to read so don't do it!
6. Allocate time for testing. No one writes perfect code.You want to give a good impression to your customer so don't skip this step.
7. Make unit testing an obsession. Always add unit tests for new code, it reveals errors in your code. When you find a bug in your code add a unit test to test for it. If in the future someone decides to rewrite some function or method you wrote because it's not elegant enough they will not reintroduce old bugs.
8. Don't rewrite code if possible. Refectoring is almost always easier and less error prone.
Kb is kilobits so kilobytes divided by 8. Oh way no! Not with this new crap... It now means 39 600 bits per second or 4.95KB/s or 4.83KiB/s assuming it's using the old convention.
This mean the downloads will seem faster on a Mac. What about benchmarks? Does this mean we are going to see tons of amateur reviews with inaccurate results?
I hope Apple gives us a way to switch back to GiB mode in any case.
To be honest I wouldn't care if the engine wasn't the latest and greatest technology.
However, they better have the most amazing plot ever. They've had 11 years to come up with it already!
I have to disagree C is not overkill and isn't hard either. It is a shame that people are getting CS degrees without knowing what is really going on at the machine level.
I got news for universities teaching only JAVA!!! Your Students better know that computers aren`t magic. They should know why and how things work inside their computer or they will be flipping burgers before you know it.
Why you should learn C or C++ instead of a language like Java first.
1. If you know C or C++, you already know a lot of Java.
2. C/C++ teaches you about the Processor and Operating System.
3. Linux is written in C do I really need to say more?
4. Java does things for you. Can you imagine not knowing to multiply and having to use a Calculator for everything? Now imagine a Computer Science Student that doesn't know how to use pointers!
5. Forces you to understand memory management.
6. Java and Real-Time programming is blasphemy!
Java is a nice language but it is not a general purpose language. Show me something in Java that can't be done in C/C++ and I'll show you a liar. I can however, give many examples of things in C/C++ that cannot be done in Java.
Students in CS related fields need to learn low level languages! Primarily because it teaches you about the operating system the CPU, the memory etc.
In the workplace it often makes sense to use languages like Java since it does in fact speed up the development process where program speed is not a major factor. But it is much harder for someone to go from Java to C/C++ then to go from C/C++ to Java and for that reason I think I would be a big mistake to only teach Java.
I am also disappointed by the fact a lot of researchers in various fields limit themselves to interpreted or high level languages for writing distributed programs. They buy for example a $10 000 000 cluster running "insert interpreted/high level language name here"!!! They know nothing of C or C++ and will argue to the death that "insert interpreted/high level language name here" is faster or just as fast as C/C++. You know you have problem when your researchers dont bother researching best solutions to their problems! Btw what happened to making custom vector units for specialized algorithms using FPGA's 10x-1000x speed improvements anyone?
At the end of the day the more you know the better your solution to a problem will be. Ideally someone in a CS or CE related field should be familiar with at least the following areas Processor Architecture, Compiler Design, Assembly, C and C++, Real-Time Programming, Operating System Development, Data Structures, Software Engineering, "insert popular high level language here".
Seriously why should we limit ourselves to Java anyway? And could you really call yourself a Computer Engineer or Computer Scientist without knowing anything about lower level processes that are invisible in higher level languages?
Perhaps this will encourage vendors to provide better Linux driver support for products such as sound cards etc. Since you have access to things like YouTube you will need working Video, Network, Sound drivers.
As I recall this is not the first quantum computer chip. Didn't a company called D-Wave Systems of British Columbia demonstrate a 16-qubit quantum computer a while back?
It's the first quantum bus maybe... But surely not the first chip.
Very nice! So when can I buy one?
Does anyone remember the movie Sneakers? Now we can finally make Dr. Gunter Janek's little blackbox... Okay maybe not that little... Yet...
I once dropped a hammer on a motherboard and cracked the board. The board stopped working and wouldn't power on anymore. A friend of mine who was trying to figure out what was broken accidentally shorted two wires of the ATX power cable and the machine started up again! So finally we soldered on a wire (green and black wire if I recall). The bad thing was that we couldn't stop the machine with the power button anymore so everytime I had to shutdown using the power supply switch.
I hope this game is getting better all the time. Maybe the idea is to stokepile years of development into one really great game and to pay for it using the other games they release. If this is the case it could take a very very long time and who knows it might be the best thing that ever happened to the gaming industry. Up to now most games have been similar with very weak plots and often poor gameplay. Games don't usually stay interesting because of the limited amount of levels and the insufficient level of game detail. A perfect example would be Doom 3. The first levels of Doom 3 have an extraordinary amount of detail compared to the later levels, you can really tell they decided to accelerate development, the result, I didn't play Doom 3 more then 2 months. Now imagine for a second that IdSoftware had kept on making more and better levels with more details for 10 years in a row! I hope thats what Duke Nukem Forever will be! If anything the plot will be amazing which is what really makes or breaks a game. Rushing now would be the worst thing they could do. I just hope they won't wait 20 years to release it because I will be too old to be playing PC games.
Easy, write good code, make sure you write a lot of functions, lots of objects, don't write large chunks of code at once. If there is a library or function already made for something use it, that will avoid bugs and unstability. And test test test test and test again. You could go as far as dividing the program into several smaller application and use IPC(fork + dup2 + pipes) to have them all communicate but I don't think that will help much to be honest. Unless you're using shared memory and message queues, semaphores etc... however keep in mind these things are sometimes very difficult to debug. As far as efficiency just remember one thing the Big O!!!!! for example an algorithm that has a Big O of (1) is better then a Big O of (Log2N) which is better then (N), which is better then (Nlog2N), which is better then (N^2) that will give you the biggest difference in performance, SIMD and -O3 and other optimizations are really just candy and will only give you marginal increase in performance.
Spend time learning the debugger, and I've seen a few utilities to find memory leaks, for linux anyway. Oh! and make a memory map sometimes it helps figure out where your leaks are.
I'm a full time linux user and I also own a ps3 for two years now. However, I never tried to install linux on it because it does it's job well for what I can't do on my linux system - play games. I wouldn't be surprised if most slashdotters that posted so far don't even use linux on their desktop let alone own a ps3. So what's up with the hate?
From your point of view they took away a feature you never used. Now imagine Dell forced a new BIOS that would disable Linux from booting on your PC. Because "nobody uses linux". What would you say then?
I bought the PS3 for 3 things, linux, movies and games.
I used my PS3 as a thin client mostly. But also as a media center. But now thats no longer possible.
Great can I have Linux on my PS3 now?
Now that Sony has lost maybe they can give me back the features I PAID FOR.
Thanks.
A few rules of thumb for a startup environment:
1. Don't overengineer! Overengineering wastes time on things that may never be used. Features should be customer driven.
2. Functions and methods should be as small as possible. You should make it an obsession to split methods and functions into the smallest possible components. Only then can you have good code reuse. Don't start thinking I will split it when I need it, you never will!
3. Never ever reinvent the wheel. Reinventing things that exist is overengineering.
4. Don't optimize ahead of time. When I say that I don't mean don't use a hash table instead of an array where it makes sense. I mean don't try to avoid exception handling or function calls or other minor optimizations. If it has an impact on readability don't do it. Optimization always comes last. Often you'll find there are only 1 or 2 "hotspots" in your code. If you spend time optimizing these "hotspots" after your application is built thats when you'll get the best return on your investment. Another gotcha with optimization is using technologies that can't deliver the level of performance you expect. You should test to make sure the underlying components you plan to use will perform as expected before you start coding.
5. Don't cram as much code in a single statement as possible. Every compiler I know about today will produce identical code whether it's one statement or 5 statements. It makes it hard to read so don't do it!
6. Allocate time for testing. No one writes perfect code.You want to give a good impression to your customer so don't skip this step.
7. Make unit testing an obsession. Always add unit tests for new code, it reveals errors in your code. When you find a bug in your code add a unit test to test for it. If in the future someone decides to rewrite some function or method you wrote because it's not elegant enough they will not reintroduce old bugs.
8. Don't rewrite code if possible. Refectoring is almost always easier and less error prone.
I think this is a good time to make a disk image of your playstation hard drive.
Is the ps3 firmware stored in flash?
That said this is my last Sony product.
Learn design patterns and data structures. Good programmers can't live without them.
Sweet I am the first to post.
Unfortunately I have nothing to say....
It's the charge that moves not the electrons! At least according to most electronics teachers...
Kb is kilobits so kilobytes divided by 8. Oh way no! Not with this new crap...
It now means 39 600 bits per second or 4.95KB/s or 4.83KiB/s assuming it's using the old convention.
Kilo = 1<<10
Mega = 1<<20
Giga = 1<<30
Tera = 1<<40
Goes by ten!
This has nothing to do with languages in a bilingual country.
This mean the downloads will seem faster on a Mac. What about benchmarks? Does this mean we are going to see tons of amateur reviews with inaccurate results? I hope Apple gives us a way to switch back to GiB mode in any case.
I vote for Project Orion. I am sure Carl Sagan would agree if he was alive.
To be honest I wouldn't care if the engine wasn't the latest and greatest technology. However, they better have the most amazing plot ever. They've had 11 years to come up with it already!
I have to disagree C is not overkill and isn't hard either. It is a shame that people are getting CS degrees without knowing what is really going on at the machine level. I got news for universities teaching only JAVA!!! Your Students better know that computers aren`t magic. They should know why and how things work inside their computer or they will be flipping burgers before you know it.
Why you should learn C or C++ instead of a language like Java first. 1. If you know C or C++, you already know a lot of Java. 2. C/C++ teaches you about the Processor and Operating System. 3. Linux is written in C do I really need to say more? 4. Java does things for you. Can you imagine not knowing to multiply and having to use a Calculator for everything? Now imagine a Computer Science Student that doesn't know how to use pointers! 5. Forces you to understand memory management. 6. Java and Real-Time programming is blasphemy! Java is a nice language but it is not a general purpose language. Show me something in Java that can't be done in C/C++ and I'll show you a liar. I can however, give many examples of things in C/C++ that cannot be done in Java.
Students in CS related fields need to learn low level languages! Primarily because it teaches you about the operating system the CPU, the memory etc.
In the workplace it often makes sense to use languages like Java since it does in fact speed up the development process where program speed is not a major factor. But it is much harder for someone to go from Java to C/C++ then to go from C/C++ to Java and for that reason I think I would be a big mistake to only teach Java.
I am also disappointed by the fact a lot of researchers in various fields limit themselves to interpreted or high level languages for writing distributed programs. They buy for example a $10 000 000 cluster running "insert interpreted/high level language name here"!!! They know nothing of C or C++ and will argue to the death that "insert interpreted/high level language name here" is faster or just as fast as C/C++. You know you have problem when your researchers dont bother researching best solutions to their problems! Btw what happened to making custom vector units for specialized algorithms using FPGA's 10x-1000x speed improvements anyone?
At the end of the day the more you know the better your solution to a problem will be. Ideally someone in a CS or CE related field should be familiar with at least the following areas Processor Architecture, Compiler Design, Assembly, C and C++, Real-Time Programming, Operating System Development, Data Structures, Software Engineering, "insert popular high level language here".
Seriously why should we limit ourselves to Java anyway? And could you really call yourself a Computer Engineer or Computer Scientist without knowing anything about lower level processes that are invisible in higher level languages?
Perhaps this will encourage vendors to provide better Linux driver support for products such as sound cards etc. Since you have access to things like YouTube you will need working Video, Network, Sound drivers.
As I recall this is not the first quantum computer chip. Didn't a company called D-Wave Systems of British Columbia demonstrate a 16-qubit quantum computer a while back? It's the first quantum bus maybe... But surely not the first chip.
Very nice! So when can I buy one? Does anyone remember the movie Sneakers? Now we can finally make Dr. Gunter Janek's little blackbox... Okay maybe not that little... Yet...
I once dropped a hammer on a motherboard and cracked the board. The board stopped working and wouldn't power on anymore. A friend of mine who was trying to figure out what was broken accidentally shorted two wires of the ATX power cable and the machine started up again! So finally we soldered on a wire (green and black wire if I recall). The bad thing was that we couldn't stop the machine with the power button anymore so everytime I had to shutdown using the power supply switch.
I think it's great that Google is taking over in many areas, it's about time someone gave those monopolies work for their money.
I hope this game is getting better all the time. Maybe the idea is to stokepile years of development into one really great game and to pay for it using the other games they release. If this is the case it could take a very very long time and who knows it might be the best thing that ever happened to the gaming industry. Up to now most games have been similar with very weak plots and often poor gameplay. Games don't usually stay interesting because of the limited amount of levels and the insufficient level of game detail. A perfect example would be Doom 3. The first levels of Doom 3 have an extraordinary amount of detail compared to the later levels, you can really tell they decided to accelerate development, the result, I didn't play Doom 3 more then 2 months. Now imagine for a second that IdSoftware had kept on making more and better levels with more details for 10 years in a row! I hope thats what Duke Nukem Forever will be! If anything the plot will be amazing which is what really makes or breaks a game. Rushing now would be the worst thing they could do. I just hope they won't wait 20 years to release it because I will be too old to be playing PC games.
Easy, write good code, make sure you write a lot of functions, lots of objects, don't write large chunks of code at once. If there is a library or function already made for something use it, that will avoid bugs and unstability. And test test test test and test again. You could go as far as dividing the program into several smaller application and use IPC(fork + dup2 + pipes) to have them all communicate but I don't think that will help much to be honest. Unless you're using shared memory and message queues, semaphores etc... however keep in mind these things are sometimes very difficult to debug. As far as efficiency just remember one thing the Big O!!!!! for example an algorithm that has a Big O of (1) is better then a Big O of (Log2N) which is better then (N), which is better then (Nlog2N), which is better then (N^2) that will give you the biggest difference in performance, SIMD and -O3 and other optimizations are really just candy and will only give you marginal increase in performance. Spend time learning the debugger, and I've seen a few utilities to find memory leaks, for linux anyway. Oh! and make a memory map sometimes it helps figure out where your leaks are.