Tuesday, 28 January 2014

The Challenge of Learning Programming

Computer languages, like any language that a person tries to learn, is about understanding the principles and the "most correct" ways of implementing them.  One can make a comparison between learning Latin and learning Python, for example.

Latin requires a structure whereby the particular verb placement marks clauses, and the bracketing of subordinate clauses by markers on either side help you read an unfamiliar language with no punctuation to help you.

Python requires understanding where you can place elements (and in which order you must do so), and a system of objects and methods, so that the end result of a program is achieved.

  • Both require that the "author" understand the totality of the syntax and the object/word function that they are trying to implement, to create a system of problem solving strategies.
  • Both require that the author be able to understand their instructions, and select the key words to be used for designing a linguistically sound statement around
  • Both will end up needing the author to think beyond what they have been told explicitly, and to determine the strategies necessary to accomplish an end goal by their understanding of the elements.
The last point is possibly the hardest obstacle for programmers to accomplish.  Being able to outline an efficient method is one thing, but being able to extrapolate a program design from general directions/instruction is going to make the difference between basic comprehension and applicable, creationist understanding.

Wednesday, 22 January 2014

Object-Oriented Programming

Object-Oriented Programming is the fundamental structure for all high functioning languages.  The basic premise is that instead of limiting a language to syntax and flat information assignments, there is a collection of Objects which can take Methods (to create, modify or delete these Objects), interact with other Objects (within reason), and provide a foundation for a more programmer-friendly interactive software model.

For Python in particular, there are built-in Object Types, which allow for pre-coded Methods and easy access to an inherent understanding of the language.  More customizable programs can be written by creating Classes--a custom Object type defined by the programmer--including what it is, what it can do, how (or if) it interacts with other Objects, how to tell the user when something cannot be accepted; all of these attributes allow for a comprehensive, integrated program.

The architecture of Object-Oriented Programming is such that no matter how complex a program is, there is a way to maintain it because of the reliance on a system of Objects, instead of a linear and dependent structure of code.  A programmer still has to be conscientious of writing efficient and precise code, to avoid creating sources for errors.  This means that a programmer must inherently understand the hierarchy of the Classes that he/she has created, and how they interact with each other.  This also means that he/she should be aware of Objects that may take similar (or identical) Methods to reduce redundant coding.