What’s the best language to learn the fundamentals of Computer Science?
Joel Spolsky is against Java – he posted this a while back. Then I was reading an article linked on Digg by veteran programmer named Doug Ross and he says pretty much the same thing. I will too.
At Lake State, the first programming language that we were introduced to was Borland Delphi (Pascal with RAD features). For a frame of reference, this was 1997. Delphi taught us the bare basics; variables, functions, conditionals and loops. I don’t know if it was possible to fail CS105: Intro to Computer Programming and I still doubt that it was a weed-out class. However, the next course, CS121: Principles Of Programming, was the first of two weed-out classes. This course used C++ instead of what Joel and Doug prefer, C, but not a whole lot is different in an “intro” type of course. Now we were being bombarded with pointers, simple data structures, recursion and a smidgen of OOP. This class was also the breaking point for many; they’d usually change their majors to Math or Business at some point during the semester. I found it hard since I had done hardly any programming prior to switching my major to Computer Science, but I hung in there somehow. The following class, CS201: Data Structures And Algorithms, was the final weed-out class. If you could survive that course and the subsequent math courses, you were pretty much on your way to earning your CS degree.
Now, did I benefit from learning the ugly nitty gritties of Computer Science using a “hard” language like C++ instead of an “easy” one like Java? You bet. Pointers in C and C++ force you to think about what that code that you’re writing is actually doing to the computer. Sure Assembly would really give you insight into what’s going on, but then I find you’re fighting with the language more than learning the basics. Java, on the other hand, is suited for building a cross-platform application quickly and glosses over the fundamentals. I think that learning the basics with C/C++ gives programmers a solid foundation. I don’t particularily like C/C++ for day-to-day use. Up to this point in my career, I’ve never worked on a project that offered me the time and resources I’d need to make a C++ project slick. 99% of time they are rush jobs that are customized for clients and I remember hating the overhead associated with C++ when I didn’t have a choice in the matter. When given a choice nowadays, I’ll opt for languages other than C or C++, if possible. But having that C++ experience is like a badge of honor that you can take into the battles that are real-world software projects, be it with languages like C#, Visual Basic, Java, Python, Perl, Ruby, PHP or whatever.
Today’s the day. Vote in the federal election! We live in a democracy and it’s your duty to do so.
Now I don’t want to influence your vote – you should be able to make up your own mind. Don’t listen to stupid slander. Paul Martin is clueless. Jack Layton rocks a porn ‘stache. Stephen Harper is creepy. Yada yada. Read up on what each of the parties stand for and ignore TV and radio commercials. Maybe some public opinion would help? Pat dishes plenty of it gets even deeper on Matter and Media.
I’d really like it if the MP that you vote for belongs to the same party as the MP that I’m voting for 😉
But that’s your choice.
After almost two years of remission thanks to Chlorambucil, my mom’s non-Hodgkin’s Lymphoma has returned. Today she starts her first day of treatment at the GRRCC; an IV cocktail containing Cyclophosphamide, Vincristine and Rituximab with Prednisone and anti-nauseant chasers. Lymphoma’s are annoying in that most of them are never curable and they almost always return. The only redeeming thing is that, while being chronic, they’re usually very treatable. My mom’s oncologist is optimistic. One of the hardest things for my mom to deal with is the fact that she’ll probably lose her hair from this treatment (Chlorambucil didn’t cause any hair loss) – try telling a former hair dresser that she’ll lose her hair. Hopefully everything turns out ok.
I grew up in an arcade. Specifically it was the arcade on the bottom floor of the 101 Mall in Timmins and, to a lesser extent, the arcade in the Timmins Square. In the 80’s, a joystick and a few buttons were all that you needed. I also had an Atari 2600, Nintendo Entertainment System and Super NES. At some point shortly thereafter, I bought my first computer. Since then, most of my gaming has been PC Gaming. And since the days of the original Quake, it’s been the keyboard+mouse setup that I’m accustomed to. In the case of FPS games, the keyboard+mouse setup works perfectly. I haven’t played the game consoles from Sony, Nintendo and Microsoft much since then.
While Dena and I were in Crystal Falls over the holidays, I played a lot of cards. It’s very popular up there. And sorting a lot of cards in my hand is painful. This makes me notice “the ache”. Also, I did play some X-Box – plenty of Mortal Kombat: Shaolin Monks. Consider the X-Box controller; 2 analog sticks, 1 digital d-pad, 2 triggers, 6 buttons on the right side and 2 more buttons on the left. All of this is on a piece of hardware that you hold in your hands. Ouch. Maybe it’s the years of video games, hockey, golf and working in an industry that requires me to be tethered to a keyboard, but my wrists are killing me. Clearly, the video game console manufacturers are aiming for young wrists. And then along comes my old friend Nintendo…
Sometime this spring, Nintendo will release its successor to the GameCube – its final name isn’t set in stone but it’s currently known as “Revolution”. I haven’t cared at all about the console video game scene for the longest time. I hardly play games at all, and when I do, it’s a UT or EA Sports PC game. And then I saw the “Revolution”‘s controller and my mind’s been blown. It can sense its position in 3D space! How cool is that?!?!? It totally opens up new gameplay possibilities. Hell, even FPS will actually be playable on consoles now. And the fact that I won’t have to wrap my hands around a small controller with a gazillion buttons really piques my interest. Due to Nintendo‘s emphasis on gameplay innovation over polygon-pushing, maybe I can play console games again and stave that carpal tunnel surgery for a few more years 😉
Microsoft is making Express editions of the 2005 versions of SQL Server, VB.NET, C# .NET and C++ .NET freely available:
That’s right; no cost. There’s even a new product in the Visual Studio family called Visual Web Developer. Perhaps it’s a resurection of InterDev? Meh. But still…free! The reasons behind this are obvious, but they’re damn-fine reasons from their perspective. Put the tools in the hands of the developers for no-cost and they’ll use them. It works for the open-source community. I’ve played around with the 2005 versions of C# and VB.NET and I think they’re a huge improvement over Visual Studio .NET 2003.
I also installed SQL Server 2005 Express Edition. An absolute must to accompany this should be SQL Server Management Studio Express – again, free. This allows you to administer databases with a GUI, instead of from a command line.
My favourtite part about all of this is that .NET 2005 can coexist with other versions. I also have Visual Studio 6.0 and Visual Studio .NET 2003 (I skipped 2002 ’cause I was poor) installed and all is well. And having .NET Framework 1.1 and 2.0 installed together poses no problems at all – it was designed that way.
I know…all the anti-Microsoft fanboys will post nasty comments. Yes, IE still sucks. But the one thing that they do properly is cater to developers.
PS: If you’re running Windows, don’t open any WMF files anytime soon 😉 Just use Firefox or Opera and avoid WMF files or else this will happen to you 😐 Here’s some background on the WMF flaw that affects every version of Windows since v3.0 (circa 1990).