On Programming, Computing and Intelligence
For quite a while I've wanted to share my trials, tribulations, and final wonder for programming, and how it's opened a plethora of insights into how I perceive the world to work. You might question the utter T-ness of such a discussion, and indeed I've been known to overdo many a topic. I'm probably doing the same for this one, but I can't really help my romantic view of the world. I apologise before hand for the length and absolute abstract-ness of much of this discussion. I hope to have made it easier to digest by creating subsections, so you can skim through more easily.
In general, I like to view the world as a network or flow (depending on the nature/quality of the item in question) of an abstract matter. 1. And in this framework, I put in nearly everything that "be", whether it is economics and the flow of money/goods/services or the way we learn things, and the interconnected network of knowledge. I hope to elaborate on these topics later in this post. This article is just dump of all the thoughts that have been mulling in my head recently.
The Effect of Programming
For me, the act of programming has been channelling that 'abstract flow' of matter into another subsystem, setting it up so that it's operation is (hopefully) clear and one that we can analyse. The remarkable thing (for me) has been that as my experience with programming has increased, that stream seems have found a way to put itself magically in order. Today, when I see a "task", I generally can sense where the components are "naturally" separated, how they tie into each other. I see how each component ties into each other, how there is a flow of data between the two. And I model it thus, each component is a neat subsystem, a block, and I could draw a block-cutpoint graph 2 in my head. Of course, the block-cutpoint graph then translates into interface at each cut point. And you now have a network, and you can analyse how data flows between them. Furthermore, I am happy to say that I can now create "threads" for concious (i.e. not breathing or walking, etc.)tasks in my head, and schedule thought between them.
Yet another "mental model" I keep which has aided me greatly is the understanding that a program is just at state machine, with memory. This is nothing new, it's just what Turing showed us with his Turing machines. All the same, I am constantly awed at the power of such a model, because it seems to naturally translate itself into a code structure. I make a note that my modified Turing model isn't constrained to having a linear tape for it's memory storage. It could be any more convenient data structure).
On Computational Insights
Moving beyond "Programming", I wish to discuss what I mean when I say "gaining an insight into the way the world works". On a randomly initiated 3 jogging session with a professor of mine, N.S. Narayanaswamy 4, he was discussing with me about how you might classify or qualify "computation", and even "complexity". His open-ended questions were of the form of: "If you had a 'machine' that was non-deterministic (in whatever sense of the term), how much more could you do than on a deterministic machine?" or "How does "randomness" affect your calculations?". Questions that I must admit that I haven't thought about yet, and have no answers to.
Another discussion I hope to have with NSN would be "what could quantum computing enable?" It just came to me that a quantum computer would be akin to a non-deterministic Turing machine. My thought-question is of the form: "Godel's fundamental result, the Incompleteness theorem, showed a fundamental limitation on the abilities of a consistent system. It is proved using a proof-by-contradiction. Now, if you have a quantum mechanical system, by Schroedinger's cat, you essentially can have both true and false evaluations at the same time (in a limited sense, as the two states are coupled, and once you "open the box", you'll get only one of the two results)5. And this of course raises the interesting question, "What could we do if we had an inconsistent system? What probelms would it have?". I ask this because I ponder whether human intelligence is possible because of our ability to be inconsistent.
On Academic Insights
I feel I have to mention some events and discussions that made me feel like I had gained some insight into the complex workings of my "world"-flow. I remember attending a lecture by the beloved "Balki" from our Physics department (which I unfortunately had to leave early from). He discussed the "ideas" behind modelling how an adsorbent might work. He brought in the study of fractals, random walks on such fractals, and how the fractal dimension of such entities led to a result. This was the first time I saw an application of the fractal dimension, and while everything else went over my head, I was ecstatic to have gained an insight into how the world works.
A discussion on "insight" would not be complete without reference to my friend, Naveen S. P., undoubtedly the most 'ignited' of minds I've ever had the privilege of meeting. There is a famous theorem in Chaos Theory, which states how a dynamical system with a period of 3 or more would certainly have some chaotic behaviour. This to me is a deeply profound result, something that seemed arcane, and far beyond my possible comprehend-ability (well, actually, it still is). In asking how you could come to such a result, Naveen told me how real analysis comes into the picture; how you could simply write down the equations for the system, and show using some clever mathematics that such a system will never come to a steady state, and how in "phase space", two initially near-by points would unboundedly diverge. In some abstract sense this connected with me, and I finally found some relevance to the study of convergence and divergence we learnt in class. I envy how other stalwarts like Akarsh Simha can gain so much from the mere transformation of a system into Phase space, or a Hamiltonian system 6. When I talk about "gaining an insight into the "working of the world", I hope these examples convey what I mean7.
The Learning Model
One last exploration of my notion of "computation", what I think of learning. I see knowledge of the world as points in space. Now, in the raw form of it, I feel like they are multi-dimensional "diffuse" spheres, which 'interfere' when two such topics interlink. Now one might say that all topics are one some level correlated, and I agree. The density cloud of a 2s orbital comes to mind here8. Now, for the sake of simplicity, we might remodel this set of points as nodes in a complete graph, with "edge weights" corresponding to how correlated two units of knowledge are 9. I see then learning as a path between going from what you know, to a new topic that you don't. Of course, you don't know the path to all these nodes (think "unexplored map" in AoE) before hand, and you only discover them in course of learning something else (or by the guiding hand of a teacher). And different ways of constructing that path are different methodologies of learning. You might always go from the shortest route you know from point A to point B, approaching from one side (think a modified A* search). You might instead decide that at each sub node you explore every "neighbouring" node one level just for the heck of it, so in an "amortized" analysis, it might be cheaper to learn something new. I personally, think that I follow the first model, and thus far it seems to have worked well.
I hope this article conveyed my new wonder for the world at large. I also hope for the slim possibility that you enjoyed it, and the even slimmer possibility that you have read it completely. I'd love to hear any comments, or discussions on the topics I've brought up (or anything else as well actually).
Whether that body is "energy" or "matter" is, by physics, irrelevant, since they are equivalent anyways. I prefer matter over energy, because it gives me a greater ability to materialise the same in my head↩
A block cutpoint graph is a "graph" (a set of vertices and edges joining them), whose vertices are either a "block" (for these purposes it suffices to define a block as a "contained" subsystem, one component of the bigger picture), or "cutpoints" (a common point between two blocks).↩
I was walking down the road when I saw him jogging, I dumped my cycle and just joined him then and there.↩
I have the utmost respect of a professor who constanly peppers his class with thought provoking questions; questions that in exploring you are guaranteed to gain some insight into the "workings of this universe", abstract as that may be. I also adore anyone who cycles to work (class).↩
I'm sure that there could be a gross misunderstanding of the Schroedinger's cat, and of quantum mechanical systems as a whole here, but I hope you understand the gist of my argument. Feel free to berate my naive foolishness↩
Another vivid discussion we had was on how it might be if one was "dragged" from the "current projection" of the 3rd dimension through the fourth dimension, to another projection.↩
On a side note, if you ever, ever feel some mathematical/physical topic you're learning is pointless, please meet Naveen.↩
Yes, I agree this is a terribly abstruse analogy.↩
Of course, the "quantification" of knowledge is another wonderful thing to think about.↩