Redditech Blog

Jun 02

What Programming Language Should I Learn?

This was the question a colleague asked me today. It suprised me, even though an urban myth in the non-IT community is that every “techie” person can or likes to write software. So when the question was asked of me, the first thing I did was ask more questions:

Why do you want to learn to program? To go into the profession? To add it to your resume? A quest for enlightenment? (The last one is a joke)

This had my colleague thinking, so I furthered with the most pressing question, that in hindsight, should have been my first:

What do you want to build?

Today, we have mobile applications, web applications, Windows applications, Cloud-driven applications and embedded applications, just to name a few. For each type of application, there’s usually a different language that preferably “fits” into the style a programmer wishes to adopt to maximise performance in building applications for each. And to compound things, each language usually has a preferred IDE (Integrated Development Environment) that makes rapid development of applications in that language that much quicker.

This is also where language frameworks start to matter. Just as different languages can each be optimal for building each type of application, each language usually carries its own language framework, sometimes called a system library, or simply a framework. The framework attached to a language usually provides a series of commonly used classes, methods, extension points and other useful “plumbing” that gives great power to a developer using that language. While this is definitely fun for the passionate programmer to learn, it definitely comes with an overhead cost for those of us trying to meet a deadline.

This is where the Visual Studio 2010 and the Microsoft .Net Framework starts to make much more sense for those of us passionate about building all types of applications and not afraid of learning different programming languages but still concerned about losing the “experience advantage” gained by the investment in learning a framework attached to a programming language of choice, along with a preferred IDE. 

This might be getting abstract, so let me bring it back to real experiences for a second. Pre-university I learnt QBasic, a DOS-based programming language that came with most versions of MS-DOS purchased at the time. Great, I was off an running as a programmer! And then my school’s computer lab got Windows 3.1, and subsequently Windows 95, there was Visual Basic ready for me to maximise some of those “Basic” skills in programming (pun intended) as I learnt about GUI development.

Then it got a bit tricky. At University I had to learn Pascal for the first year. While it was definitely a more structured programming language that built my discipline for the craft and prepared me for OOP challenges of later years, it was painful to have to learn this new Pascal library framework. In my final year at University, we were then introduced to Java. While not as painful as it could have been for me, since I had dabbled in OOP (Object Oriented Programming) with Java between breaks in Secondary School and University, I saw so much pain in my fellow students as they painfully, again, had to learn a new library framework, this time Java’s. I won’t get started on what happened when I had my Computer Graphics course, and got to know about tuples with much grief now understanding what the CPython libraries were. I wasn’t the only student who cried “Good Grief!” that year, or in subsequent years, I’m sure.

Would it not have been simpler, and more beneficial for me as a student, to have been able to maximise the investment I made in learning a standard framework that crossed multiple languages, and maximise it moving forward as I advanced in my degree, not to mention my subsequent professional career?  

What would have happened if, on entering University, I had started with C# as an entry to learning proper OOP? The Microsoft .NET Framework would then be exposed to me as well, and moving forward provide a foundation for branching into the various application programming languages and the problems learning them would help me tackle: perhaps something like VB.Net for Windows GUI application development, Silverlight and ASP.Net for mobile, web and rich Internet application development, F# for functional programming etc. 

With the advent of the DLR (Dynamic Language Runtime) even the dynamic languages could now be available to me. Life would be so much simpler if I did my degree today, since using IronPython for Computer Graphics I could rely on my previous years’ knowledge of the Microsoft .NET Framework experience to get right into the mysterious of tuples and image transformations and not get too tied up in the non-essential “plumbing”. And what’s more, each of these languages works within the same IDE provided by Visual Studio!

So the answer to the question that started it all? What programming language should I learn? Well, it still depends on what I want to build. But with Visual Studio 2010 and the Microsoft .NET Framework, I now know that the effort I put into learning a language such as VB.Net, C#, F#, Visual C++, IronPython, IronRuby or any other language to come that utilises the Microsoft .Net Framework and compiles to the CLR (Common Language Framework), will be an investment bearing great fruit by minimising my own learning curve and overhead when I choose to learn a subsequent language for something else I wish to build. 

Apr 30

[video]

Apr 11

[video]

Apr 03

[video]

Mar 25

Interesting events around movietowne #trinidad, sadly not part of the #ttlug meetup

Interesting events around movietowne #trinidad, sadly not part of the #ttlug meetup

Happy Birthday Reeza (guy on right), our resident MSTT Software Architect, the dude’s probably as old as MS itself

Happy Birthday Reeza (guy on right), our resident MSTT Software Architect, the dude’s probably as old as MS itself

Mar 19

Can you guess where I’m working now?

Can you guess where I’m working now?

Feb 25

At the Microsoft #trinidad developer bootcamp in the hyatt regency

At the Microsoft #trinidad developer bootcamp in the hyatt regency

Nov 15

Safe trip little brother. Here my big brother and I say farewell to my little brother Runcie as he returns to his duties in the US Navy.

Safe trip little brother. Here my big brother and I say farewell to my little brother Runcie as he returns to his duties in the US Navy.

Nov 14

At the #ttcs pizza hut lime in Valsayn, #trinidad

At the #ttcs pizza hut lime in Valsayn, #trinidad