Programming is an interesting undertaking but over and beyond producing lines after lines of code is the effort spent in thinking about the structure of the problem and forming an idea about the eventual shape of the solution. In that regard, the code is a fulfillment of an idea, design and architecture. I have come to enjoy the process of developing a solution through careful considerations of various options in terms of tools and technologies as well as the processes involved in implementing the solution. With time, I have learnt enough and there is still more to learn which I keep looking forward to each day.
At the moment, there are an inordinate number of projects that needs to be implemented. The main two need implementation in C/C++ and C#. For the former, I am taking advantage of it to perfect the idea of developing portable code: I want my code to be able to execute on Linux (Ubuntu) and also on Windows. The C/C++ project is a Computer Graphics unit assignment which is sufficiently challenging but interesting never the less. I initially wanted to use Python for my implementation but the project needs to be done in a group and C/C++ is lowest common denominator in the context. While on the subject of language choices, I wanted to work on Python on Linux but at the same time my unit is almost exclusively biased to Windows so this would have meant that I also ensure that the Python code is portable across OS platforms.
The C# project on the other hand is an application which I hope to find a market for. I am implementing it in ASP.NET 2.0 and it is coming along quite nicely (I am thinking of posting some screen shots of the work I have done thus far). A while back, I stated my intention to post a LINQ tutorial, that’s still in the works. Anyhow, back to ASP.NET: since the app is essentially an implementation from scratch, I took the opportunity to incorporate something things that were originally envisioned for post version 1.0 such as AJAX. I am currently using ASP.NET 2.0 AJAX Extensions 1.0 (yes, the version numbers are a bit confusing but hey those are Microsoft naming). The application scenarios that AJAX enables are impressive to say the least.
I have done more work on my Ubuntu installation and it is going to play an important role in my intention to produce portable code. I don’t think it is a big challenge to have pretty generic C/C++ code, more so when the code in question primarily (or at least should) target OpenGL. For the Computer Graphics project, there may be need to use physics engines as well as libraries that makes event handling much easier that it seems in OpenGL. I have Eclipse running on Ubuntu and the CDT is nicely configured and working. I still need to work on writing my own makefile and then use it to compile a project. I am aware that I can have a managed C/C++ project in Eclipse but I am more interested in getting a closer feel of C/C++. Besides Eclipse, I am also running the preview release of NetBeans 6.0. I am in the process of downloading Sun Studio 12 which runs on Linux and I want to install it and see how much easier it makes my development efforts.
The other subject that is programming related that has been occupying my mind is dynamic languages and more specifically Python; I have a nice Python tutorial on Ubuntu as well as an installation of IronPython on the Windows Vista machine. The code semantics of these two implementations of Python is the same (as far as the knowledge I have gained so far is concerned) but there is of course significant difference between the standard Python and IronPython though I can’t quite articulate these difference at this time; it basically boils down to how tightly integrated each implementation is to the Microsoft’s .NET. IronPython, being a language that runs on the CLR has access to the extensive .NET framework base class library. Standard Python do have a massive number of extensions to it as well from GUI extensions such as wxPython to OpenGL extensions such as Pyogengl.