Sunday, February 24, 2008

Java sucks?

An interesting story from CrossTalk: The Journal of Defense Software Engineering and reported on Joels on Software's blog has a few controversial statements.

First, both the journal and Joel agree that Java is not a good choice for a first programming language at universities. Second, Joel mentions that there should be a separate college degree for programming, for those kids that don't want to deal with the more theoretical aspects of Computer Science. He also calls programming an art and as such the degree these kids get should be a Bachelors of Fine Arts.

While I agree that programming can be considered an art form, I do not share the same feelings toward Java "dumbing down the curriculum" and the comment about the BFA degree. Java does hide many of the low-level details such as pointers and direct memory manipulation when compared to C/C++. However, Java is a modern programming language. It was designed to not use those features and to make it easier on programmers to get their job done. Depending on what you are working on that might be a benefit or a problem. But the same thing can be said about C and C++. And any degree dealing with programming should be a Science degree: Bachelors of Science, etc.

The other comments in Joel's blog basically boil down to never-ending battle between Computer Science vs Software Engineering. Both disciplines are necessary, but I tend to fall in the CS camp. Without the theory behind computers how do we expect to come up with the next "big thing." Google was made because of the theory behind graphs, not because of the low-level details of the implementing language. Lastly, most universities these days offer enough programming electives for students to focus on their interests.

Undergraduate programming - Joel on Software blog.
Where are the the Software Engineers of tomorrow - CrossTalk

The benefits of multiple monitors for developers

The topic of using multiple monitors has been discussed before in "teh internetz," but I will like to share my views on this use of technology. Research shows that having more screen real-state does increase productivity. It seems that people do work better and more efficiently when they are able to see more of what they are working on.

Generally, the easiest way to get more screen space is not to get a single "huge" monitor, but to use two, or more smaller ones. For example having a single 24'' monitor will provide less screen area than having two smaller 15'' monitors. Software developers, graphic designers, and even Office users can benefit from the multiple-monitor setup. Since programmers can benefit greatly I will do my best to list the benefits of using multiple monitors when developing software.

First, the number one reason to get multiple monitors is because it just looks cool. Secondly, and perhaps the most important reason is that multiple monitors allow you to get more work done. How? In software development it is common to debug by stepping through the code, and at the same time making sure that the line of code executed successfully. However, the output might not be in the same window as the debugger. For example, when debugging a GUI program.

Most developers I know use the "dual-monitor" setup, two monitors of equal or similar size side-by-side. With this setup a developer doesn't have to switch back and forth between the program's output and the debugger. That is precious time saved. In some cases more than two windows need to be open in each screen. For instance, to monitor register, and memory values. This again allows you to have everything in sight instead of having it all crammed in one screen. With one window blocking your view of another.

Another example is having the code editor in one screen and the documentation open in another. You can instantly lookup anything. A good example is in Visual C++ when you put the cursor in a language keyword and press the F1 key - MSDN opens. With a dual screen setup your MSDN is always open and all F1 does is instantly refresh to the correct topic. With Java you might have an IDE open in one screen and a browser with the JDK documentation in another.

So you want to use multiple monitors? The first thing to do is to check whether your computer supports more than one monitor. Most computers only have one VGA or DVI port. If your computer has a video card and it is a newer model it might come with two ports. If you are buying a second monitor I highly recommend that you try to get the same model as your current one. And if you are planning to replace your old monitor get two of the same type.

You might think that switching between program windows doesn't save that much time, but it does. And it also might be the case that because you are able to see everything at once, code and GUI, you are also able to understand what you are doing better. Thus, you get your job done faster. For modern software development I believe that having dual-monitor setup is a must. And even if you can't afford two brand new top-of-the-line LCD's you can always get a cheaper older model. The important thing is having two.

Friday, February 22, 2008

Oops!

If you use Java you probably know about Generics. Generics are a powerful part of the language that can potentially save a lot of time, and code by allowing the use parameter types.

The way generics were implement was by erasure in order to keep compatibility with legacy code. By doing it this way a few compromises had to be made, especially with arrays. Now one of the designers of Generics is basically saying "We might have screwed up."

Changing Generics in Java 7

Thursday, February 21, 2008

Learning game programming with C#


The fine folks at gamedev.net made a really cool C# tutorial last summer. Not only do you get to learn programming but also the fundamentals of making a game. There are three substantial projects in the tutorial, none of them tied to C# in case you prefer another language. The site also has one the coolest online communities in case questions arise.

Overall, it seems like a good way to code for fun and learn the basics. And once completed the logical step after the tutorial would be learning XNA which now is free to students.

Learn C# - gamedev.net

Wednesday, February 20, 2008

PC Gaming? No go.

Perhaps a little late, but last week, thanks to a link in the CAG forums, I finally got myself a copy of what has been described as the best deal in gaming in 2007. A brand new copy of The Orange box for the pc.

The game arrived today and there is no way to be disappointed with the collection of games. The quality of all the games packed inside the orange box is excellent if metacritic is to be believed. More so with the PC version which has the complete version of Team-Fortress 2 and superior graphics than the Xbox 360 and PS3 versions.

There is just one problem: all the games in the orange box keep crashing. After installing the game I'm beginning to realize why so many people choose the console version. With that version you don't have to deal with pesky driver problems, graphics cards, lengthy installations, or just plain weird errors. All you have to do is pop the disk in and you are set. So after an hour trying to figure out what is wrong I have discovered that integrated graphics are not be enough to play the game.

Well it appears the cake will have to wait until the nVidia 8800gt drops in price.