Walking through the imaginary forest of possibilities can be overwhelming. I walk to discover, and I walk to create, and I walk to achieve my goals within the boundaries of time. Studying python has been exploration unto itself, and an exploration of exploration.
I have surpassed primary levels of comprehension within python (absorbing presumptions and laws of syntax and vocabulary) towards more elaborate lessons (such as preferential solutions or object usage). I have also surpassed primary levels of exploration, although these lessons are even more abstract than the pidgin of a programming language, or predictions of its logical iterations.
I don’t know whether it is possible to appreciate where I walk, or what it would mean to do so, or whether the closest that may be approximated is an appreciation more properly called “preparation”. Barbara Oakley has said that we can expect leaps of comprehension, and that we should prepare for them.
Early progress in direction
As an early student of python I approach a field of study for the practical benefits it serves (or the possibility of satiating curiosity). This is a sound prerequistite for investigation, and the only other major option is the one recommended by experts and those that have walked further along the path.
In choosing a direction I ask myself, “What do I want, how can I get it, and will this give it to me”. Tangential considerations also exist, “Is this a good use of my time, am I ready to appreciate this, are there other features warrenting priority”.
In choosing a direction I cannot predict the scope of what I will learn. I cannot plan for the things I do not know that I do not know, or for the epiphanies that expose themselves in the idiosyncrasies of progress or as outcomes of categorization. Pygame is an opening of an entire vista, whose novelty of range depends on what I have and have not experienced. It offered me (most obviously) a platform for graphical and dynamic interface. And by the end it had offered me a context for comprehending lessons I had already learned, allowing me to re-envision their profundity and scope.
Things that contextualize
I offer here three examples of exercises and tools that have provided an education that surpassed their appearances.
Using Pygame
The first two are modules: Surface and Sprites.
Sprites are an object class that allows inheritance of useful attributes and methods for sprite tasks.
Surfaces are objects that may be instantiated for graphical representation.
Sprites taught me an appreciation of class inheritance. I was already familiar with whatever classes I had already written, but these were the first classes (beyond object
) from outside. Like most ephiphanies, there was an element of accumulated experience, but a singular major motif appears: there are methods that (didn’t necessarily give me more tools but) short-cut tasks obviously related to them. This included generating Rect
objects, and the ability to get dimensions or modify them by using a host of reference points (e.g. top, centre) or to collate and manipulate using spritegroup
. The nature of the “short cut” methods perhaps highlighted inheritance as a an inheritance of self-familiarity, that is the ability of an object to understand, express, and manipulate itself, and that these abilities form the existence of the (well written) object.
Sprites (and Rects which they had) provided a context for appreciating the power and versatility of classes on a new level. There was no obvious intellectual or conceptual breakthrough. Only a context for reinforcing potentials of which I was already aware.
Surfaces taught me how libraries were, beyond their tools and methods, (potentially) novel opportunities for thinking about problems. Without knowing how to program any sort of graphical interface (e.g. images, backgrounds, texts), I obviously started with preconceptions about the processes that could be involved and utilized and manipulated towards these ends. But with Surfaces came a host of related concepts, including notably the blit
method which was significant because it separated graphic objects, including their dimensions (potentially in Rect objects) and their presentation onto a place (and separate to the flip
of the display). The very act of overcoming resistance of comprehension of Surfaces (not necessarily an impressive task, especially for the well-travelled) seemed to open up a new vista for appreciating how a library included its own implicit recommendation of using itself, and thus could carry its own culture to be used.
Surfaces provided a context for appreciating the role of libraries in hosting, potentiating and enabling paradigms of abstraction (esp. for solving problems). Once again, there was no obvious new facts or usages that I suddenly understood. There was just using a library to solve a problem I had already thought about, and then understanding how libraries held their own tendencies of comprehension.
Working on a project
The third context I provide here is that of working on my own project.
Working on a project tied together a number of things I had already know but (and this is hard to express) not known how to know.
There feels to be a process of whittling of internal processes when working on a project with defined goals. Because the goals are set, and because iterative experimentation and efforts must be made towards that goal, there are necessary changes in approach. These changes exist superficially (e.g. in the way the code is written) and internally, changing the way thoughts are thought.
Some of these changes to thought are obvious developments of programming strategy and tactics. Perhaps learning new ways to organize objects or modularize.
Some of these changes to thought are subtle yet amenable to distinction after reflection. Perhaps in the way objects qua objects are perceived and conceived.
Some of these changes are so subtle as to only be available to imagination regarding the cause of changes. Perhaps a perception of executed flow.
Some of these changes are invisible to roaming mind.
Working on a project provides a context for generating and nurturing these changes.
Contextualized comprehension
The practical conclusion is that context is required for a comprehension that extends beyond internal logic. And that extending the range of contexts might extend the range of comprehension. The correlation of contextualization (breadth) to comprehension (depth) might not be simple.
The theoretical conclusion is that meaning is interrelated by its application (manual or cognitive), and derives nuances of applicability that expand with each novel meeting. Meaning may exist as the interplay of idea – born as a spark and cosmic coordinate – and the real world – enforcing itself as a delimiter and echoing of potential.