Wednesday 22 January 2014

Object-Oriented Programming

    The class so far is very interesting. It is very different from CSC108. In the reading for object-oriented programming, the paradigm of procedural programming was mentioned and that was the bulk of the workload and concepts in CSC108. We would be given a problem, and the algorithms for solving the problem were either given or very straightforward. So all we really needed to be concerned with was the implementation of the algorithm (the writing of the code to follow the procedure). CSC108 was a course of application and answering the question "How?".
    CSC148 is a more complex, multi-faceted beast that still relies on the "how" but also relies on the "why" and the "what". The concept of object-oriented programming I feel is the quintessential starting point for this course. A very good explanation as to why that is comes straight from the reading. When calling a method on an object, we write the code as "object.method()" implying that the object is the active agent possessing attributes and functions which are at the disposal of the user. The reading goes on to analogize this concept of the object as the active agent with experiences from our daily lives. I.e. the cook method being a part of the microwave, the call method or text method being intrinsic functions of the mobile phone.
    This general introduction to what I feel is the computer science equivalent to biology's "central dogma" already reveals how limited the scope of creativity and exploration in CSC108 really is. Of course this is not to say CSC108 is useless. The introduction to coding language or methodology of algorithm implementation is an essential building block when exercising the "why" and the "what" of CSC148. CSC108 would give us classes and we would just write functions that operate on them. Now in CSC148 the focus has shifted to the creation of the classes themselves (which implicitly means creation of functions as well). This requires a higher-level of active learning to discern why a class is being made, what uses it has, how it can interact with other classes, and how to efficiently optimize the use of instances of the class.
    The greater ramifications this concept of object-oriented programming has is what it means for you as an individual and a future leader of society (provided your academic career is taken seriously). Our universe is completely coded by the language of chemistry. When you learn to manipulate objects in computer code, it has the potential to help you better understand how to manipulate objects in reality to be used for the achievement of your goals. The best example, people. Humans are just a more complicated extension of matter coded by the language of chemistry (DNA, RNA, proteins). Even extrinsic properties of humans that are given to us such as a driver's licence number, health card number, social insurance number, phone number, student number, are just attributes of an instance of a line of code that is class Human. Through the METHOD of verbal communication, we can manipulate people to solve problems whether they be of self-interest, societal, political, economic, etc.
    So to hone in on the central thesis of this slog entry, object-oriented programming is not just a central concept to computer programming, but serves as the basis of life as well. I know this blog has kind of been a digression from the actual subject matter of object-oriented programming but the segments listed above from the reading made me come to a deeper realization of what object-oriented programming means to the world. And I just wanted to take a more philosophical approach for this entry and see what people had to say on these concepts. After all, I firmly subscribe to the idea that Professor Heap mentioned in class; that university is an institution of higher-learning and open discourse.

Until next week,

Cheers.