October 31, 2013

Me and the C# Language

October 2013 By Stevenson Masdal Que

C# is a programming Language used for application development and is also one of the major languages that are being taught and discussed briefly in current curriculums of Undergraduate Computer Science subjects. Since it is a multi-paradigm encompassing procedural, functional, imperative, declarative, object-oriented to name just a few. It is a language developed by Microsoft as part of the .NET languages and is directly influenced by other languages such as C++ and Java. Also, C# is one of the languages that are developed for the Common Language Infrastructure or (CLI), which is the core of Microsoft’s .NET Implementation, wherein multiple high-level languages can operate on several types of platforms without the need to be rewritten for specialized architectures.

The name C# has been derived from the Musical sharp sign which means, as far as I could remember my elementary music class, to raise the written note higher by half a step.[1] I think they used this name so that the indication of the language is that it is a notch higher than the previous C languages such as C and C++. Not superior but higher in some cases where the succeeding languages are not so strong whether it is a feature or an implementation. It was a Microsoft man named Anders Hjelsberg, who was also involved with the design of languages such as Turbo Pascal and Visual J++, that formed a team that developed the C# language early 1999 and they decided to call it “Cool” which stands for “C like Object Oriented Language” and even thought of the filenames will be calleuntil the end when they have decided not to continue with the name for trademark issues.[2] C# is designed for the objective to develop a general purpose language that is simple object oriented language.[3]

On 2002, Bill Joy, chief scientist and co-founder of Sun Microsystems which is the company behind the Java Language, called the C# language an imitation of the Java and even though it was, as he said, “a sincere form of flattery”[4], combining the powers of C and Java, the C# does not add the feature of Security to the overall design. But I guess through the updating of version of the language, the latest version is C# version 5.0, these issues have been fixed thus improved. Especially during 2005 wherein both languages, C# and Java, evolved in a big factor separating one from the other making it different from each other specifically in the features in Generics[5] where I still have not much idea what it is to be honest which proves that these programming language have so much to offer than just the things that the school has taught us.

According to a standards organization the European Computer Manufacturers Association or (ECMA), the C# language is intended for creating software components that are suitable for the use of several distributed systems[3]. For me, this is a very strong feature of a language because dealing with distributed environments increases the risks of security threats and data integrity because multiple processes are simultaneously working on a task which are all crucial for the computing of the whole system. Another design goal is source code portability, which is very important for developers that specialized on the previous languages such as C and C++. Bt an important standard mentioned is that C# is also intended to develop applications for embedded systems. These systems are very important in our current era because almost everything now is computerized and digitized from watches to washing machines and even the simplest traffic lights, having a language that can cater to such machines shows flexibility to cater to such processors.

Reading more about the C# Language gives me flashbacks to my own experience with it. We had our C# Programming Class on our senior year at DLSU- Dasmarinas. Our teacher used the language to further our learning to objects and classes. It was quite hard for me that time because we have been used to programming in our “own way” and techniques and that usually means programming in procedural and sequential methods. We seldom used classes and objects for applications that we did on the earlier years of our Undergrad except from our basic Java where these concepts have been introduced. But though it was a bit tricky for me, I knew how important this object-oriented approach into programming because of the features that is really beneficial to coding such as using classes.

At first I hated classes and objects! Why would I have to make things as complicated as it was? Why use it when I can do the programming exercise that our professor is asking us to do in my “own way”. And then I get to realize that using it makes the code more portable in the sense that passing works from a developer to another can be made easier to understand with the use of classes. I know that Visual Basic also has methods, which was also introduces by our Visual Basic Professor, though I really did not use it regardless of the power that it has in it.

Another thing I learned through the object oriented approach in C# is that you can also make classes and variables much more secured by using classes. You can protect values and objects through it and make it concealed and less prone to risks. I have been a Laboratory Instructor to Programming Languages such as C, C++, Visual Basic and even ASP.NET but I always refuse when I was given C# loads because aside from a not so good experience with the Language during my college days, I haven’t developed that confidence in basic programming in C# as compared to other languages.

I am not really much of a programmer but as a faculty member and a computer science student, I really have to learn many languages and just as those that are discussed in our class, more paradigms. And as I mature learning things not just from my teachers but also from my student, that programming not just in different languages but also on different paradigms can truly help me as a person because I can apply several techniques to specific problems. And C#, for me, has introduced me and made me realize how important classes and objects are and that using them does not just make things hard but actually, better.

References

[1] – James Kovacs’ Weblog: C#/ .NET History Lesson: http://jameskovacs.com/2007/09/07/cnet-history-lesson/
[2] - The A-Z of Programming Languages: C#: http://www.computerworld.com.au/article/261958/a-z_programming_languages_c_/
[3] - C# Language Specification: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
[4] – Bill joy: Microsoft’s Blind Spot: http://news.cnet.com/2010-1071-831385.html
[5] – Generics (C# Programming Guide): http://msdn.microsoft.com/en-us/library/512aeb7t.aspx