Your Cart

A Language for All Seasons

One of the greatest scientific achievements was a linguistic one--the invention of software. By inventing the first language through which any computation could be expressed, Alan Turing set the scene for the computer revolution that created the modern world. Curiously, Turing's breakthrough is rarely couched in such linguistic terms; instead, his innovation is typically framed as discovering the original universal machine, his eponymous Turing Machine capable of arbitrary computation. But it was his new language defining this machine that made all the difference. It revealed that a language could be so much more than previously thought: A language could not only be merely descriptive, something sitting outside the phenomena it was describing, but rather, it could itself be thrown right into the thick of the action; by specifying its own transformation, a language could become every bit as part of the phenomenon it was simultaneously describing. Today we take this for granted as all modern, "Turing-complete" computing languages share this wonderful property by which their literature or more familiarly, their software is immediately "self-executable": A well-written program not only describes an algorithm, it is an algorithm to be invoked at will in order to do something. Words double as machines. It's extraordinary.

This at least, is the ideal, to have words seamlessly perform this dual purpose of description and action, but it is one that humanity has continued to perfect ever since Turing's seminal insight. The description-action axes possessed by Turing's original language was heavily tilted towards the action side (hence its machine-like conceptualization) since the extra precision required, initially came at the expense of its inherent descriptiveness. Turing's new language defined esoteric notions of symbols, states and rules, all indispensable for adding a new precision, but sufficiently foreign to forever link "software" with all the obscurity traditionally associated with "code". A revolution was triggered however, precisely because this didn't have to always be so. A description-action trade-off was not fixed in stone; a language's descriptive quality could be progressively improved without compromising its action-ability--an affordance traceable back to its linguistic essence.

Languages characteristically galvanize translations between them and the door Turing prised ajar back in the 1930's, was the opportunity to translate to more descriptive languages while still retaining their precious actionable power. Turing's canonical language might have started with a description-action axis short on description and long on action, but this inaugural trade-off was merely temporary. The freedom to translate to other, Turing complete languages offered, and continues to offer, the mouth-watering prospect of unearthing languages long on both descriptive and actionable power. Indeed, a not insignificant part of the entire history of computer science can be viewed as the story of the long march towards higher and higher computing languages. Languages progressively improving their descriptive qualities all the while preserving their computational universality.

The point of this historical prologue is to emphasize not only the importance of computational expressivity but to remind us of its inherent malleability. In relation to this course and accompanying tools, it stands as manifesto for the feasibility of not just extending the Wolfram Language in the usual way by supplementing with extra functions, but instead, suggests an utter transformation. Subject to one critical caveat, of all the languages devised in this ascent towards greater descriptiveness, one language stands apart, The Wolfram Language. It has been the only computing language that, right from the outset, seemed to consciously equate descriptiveness with natural language. In hindsight this seems completely obvious--what else could descriptiveness entail outside an affinity with every person's linguistic endowment?--and yet, the unparalleled literateness of the WL points to a unique apprehension of this fact, a uniqueness perhaps born from originally under-appreciating Turing's advance as ultimately one of language.


The end-result of the WL's unprecedented literateness, is a compelling language in which its code, actually doesn't look like traditional code, instead almost appearing as linguistic dialect imbued with this self-executing" superpower--currently our closest approach to words that both describe and action. By committing to ensuring its software is both unfailingly "grammatical", the WL's syntax ends up mirroring the way we naturally communicate which, in turn, ends up mirroring the way we think. Indeed, I would argue that this combination renders the WL as the world's first functionally-literate language. There remains however, a pulsating contradiction at the heart of WL's supreme expressiveness - if the WL is so natural why do so few people use it?

The answer lies in there aforementioned caveat about the WL's descriptiveness revolving around a particular genre of computation, namely, that typically exercised during scientific exploration. But as a general-purpose language in widespread use, the WL doesn't even enter the conversation. Of course, "so few people" using the WL is relative, the ~1M global user-base speaks to its scientific effectiveness but surveys consistently place the language outside the top 100 in terms of widespread application. In other words, the Wolfram Language might be famous for its exploratory prowess but a track record for directly translating its computational discoveries into real-world products remains steadfastly absent. The missing catalyst is a certain system-building descriptiveness--a capability this course aims to provide for its graduates.

The conventional developmental pathway has initial WL-experimentation giving way to "proper" system-building languages (e.g. Python, C++ etc.) for widespread deployment. The onSoc initiatives deployed in this course however, embody an alternative vision, one that coalesces both exploration and system-building into the same, smooth process all the while tapping this precious human literateness.

Translating scientific discoveries into scientific applications forms the bedrock of technological progress so that turbo-charging this process clearly has profound ramifications. This course then, is aimed first at those intrepid WL pioneers ranging from academics needing to produce FAIR-compliant research software, start-ups choosing the WL as their core system-building language or forward-leaning organizations seeking to embed their significant WL code-bases. There is however, a strong argument for all WL coders and educators to seriously consider WL's system-building prowess for reasons again related to software's linguistic origins.