In my last post, I looked at the Adder code given in the Axum Programmer's guide, comparing it with an equivalent C# example.
When learning a new language, I am always faced with the same dilemma, namely, how do I become proficient with this language as it was meant to be used. I write a very good C# code in Python, but my pythonic python code, that which takes advantage of a dynamic language with some nice functional constructs, borders on average, largely as I have had little real world Python experience, but the point is, I am trying to think now as a Python programmer when I code in Python.
The same problem applies when, as an entrenched C++, Java, C# developer starting to write in Axum.
One question that might be posed here, is why I am so keen to understand Axum. It is not even a true Microsoft product at this stage, and might disappear without fanfare any time. The comprehensive answer to that question is probably subject to another post, however, to put it succinctly
- A personal challenge
- I strongly believe that any developer who doesn't seriously start looking at the multi-core development paradigm now, will be seriously behind in a few years time.
That out of the way, how I normally tackle familiarity with a new language is to code first 15-20 Euler problems. I will give some Axum Euler solutions in later posts.
What, initially, struck me about writing in Axum is that the paradigm did not in fact feel too unfamiliar. I had just finished writing a C# based server for an Action Script based Google Maps application for a product at work. All the concepts seemed familiar.
If I view the MainAgent agent as a client talking to the AdderAgent server and the Channel as my 'documented' (ahem) protocol, I had no problems in visualising the concepts, and, indeed, felt quite comfortable in coding the Euler problems in a way that Axum was (I believe) intended.
Reading further through the documentation, I feel vindicated in this view, as, it appears this is precisely how I should be looking at it, and the language extends the analogy further with concepts such as Protocols and Correlators. I shall discuss these later.
