Sunday, January 02, 2005

Ben Dugan on Programming Languages

Today I read an older essay written by Benedict Dugan entitled Programming Languages. In this essay Dugan examines his department's (Computer Science at University of Washington) move from Ada to C/C++ as the language of choice in introductory programming courses. His examination leads him to question what constitutes the "best" language, what factors are important in language choice. He argues that "the decision to accept a given programming language is not necessarily based on what is the 'best' language for the job, but rather a wide variety of other factors" such as interdepartmental demands, student expectations, and pedagogical continuity.

From my vantage, it seems equally important to define how one is approaching programming languages; that is, whether they are to be viewed as a tool (i.e., a 20 oz. claw hammer is better suited to some purposes versus a 15 oz. ball-peen), a dialect (as writers may use certain affectations of speech to demonstrate regional affiliation, etc.), a framework (interpreting a text from a structuralist perspective versus a marxist one), etc. Dugan appears to (implicitly) choose the "tool" approach, stating, "Given the huge variety of languages to choose from, why and how do we chose [sp] the ones we do?" However, in the third section of his essay, "So, Why does this Bother me?", he moves toward a framework-based approach. That is, by examining the criteria for determining the "right" language through the dialectic of functional requirements (the first section of his essay) and idealistic ones (the second portion of his essay), he presents the underlying structure of language-choice. As he writes, "what is important is to understand what is driving us to accept and use certain programming languages."

Early on, Dugan points to the relationship between thought and language, using Dykstra's comments on FORTRAN as an example. Essentially, this is a linguistically deterministic view of programming languages, whereby Dugan shifts language choice outside the mere range of tool-usage, into a more Whorfian universe. The students' ability to interpret and function within their world (of code) is determined by what tools they are given, what synaptic mappings are provided for.

Yet, while Dugan returns to a broader view of language in the second portion of his essay, the first portion focuses on pragmatic rationales. Thus, students want to learn C because it "is a dominant industry language" and the department wants to teach C because it is used "in all of [the] higher level courses." The idea of teaching C because it is the dominant industry language echoes the sentiment that we teach Edited American English in classrooms because it is the standard language of business and power. These sentiments are widely accepted because we can readily see the results - the premises and conclusion to the argument appear to be quantifiable, thus we never ask the question whether the approach lends itself to creation. That is, we are unconcerned (to some degree) whether this is an approach that fosters a mastery of the universe, in the Whorfian sense, because we view successful participation in the status quo as mastery itself.

Conversely, Dugan sees teaching C across all course levels as limiting because "it will lead to the creation of programmers and designers whose vision and capabilities are constrained by the fact that they have become comfortable with only one language, one paradigm of programming." Essentially, this is the liberal-arts approach to learning as derived from scholasticism, whereby students should be able to derive solutions based upon their own authority (in turn, derived from broad study). Whorf is stood upon his head here, as a single language becomes insufficient to describe and understand the universe. Unfortunately, Dugan fails to bring this argument into the essay in any convincing fashion; the way in which he addresses this problem suffers through contradiction with much of the rest of the essay, particularly the second part.

In the second portion of the essay, "A Digression: What should programming languages be used for?", Dugan "present[s] [his] view of programming languages," that they are "ideologically laden technological artifacts." Again echoing Dykstra, he writes, "[Programming languages] are value laden because depending upon their structure, they can act as either the barrier between, or the conduit for, giving the public control and access of computer systems and all that entails." No longer tools for shaping and manipulating the world, programming languages - and this is what separates Dykstra-ian from Whorfian interpretation in this context - intrinsically dictate the exchange between individual and experience, a sort of phenomenological filter. Paraphrasing Alan Kay, Dugan adds, "Knowing or not knowing the language quite literally translates (at some level) into having power or not. Programming langauges - if they are 'done right'... - will become communications media which will amplify the human potential for creativity and understanding." There are several subjective premises here, that is the semantics of: "human potential", "creativity", "understanding", and - importantly - "done right". Using the examples of Lisp and Smalltalk, Dugan asserts that the designers of these languages "hoped to create a language which was greater than itself, embodied a new design philosophy, was widely accessible, and most importantly, would foster (rather than hinder) the creative processes of the human mind." This is the ideal state, but also one abstracted from the rather utilitarian perspective of using a language in order to participate in the status quo dialogue. Instead, languages are chosen based upon their liberal potential; that is, their ability to free oneself from constraints rather than to participate in them.

Rather as an extension of this idea of breaking free of constraints, Dugan looks to the history of rationalism, particularly the criticism of Max Horkheimer. Borrowing from Saussure's concept of the sign, Horkheimer claims that "[c]oncepts have been reduced to summaries of the characteristics that several specimens have in common...[c]oncepts have become 'streamlined,' rationalized, labor-saving devices...thinking itself [has] been reduced to the level of industrial processes...in short, made part and parcel of production." Again we see that as society pushes for quantifiable premises, as we view the resultant participation in status quo as a worthy goal (something that Althusser sees as the real function of education - the ideology of the status quo is maintained through education). Thus, "[t]he logical and frightening conclusion of this process, Horkheimer maintains, is the mechanization of knowledge and the very processes of thought themselves." Dugan sees this trend towards the mechanization of knowledge at play within the push toward certain programming tools and paradigms (specifically the move towards a C-based computer science curriculum).

I would add that our focus on efficiency is not to be underestimated, either. Non-efficient paradigms (the verbosity and demands of Ada or the complexity of poetry) are tossed out because they foster inefficiency at some point in the exchange. Ada is inefficient in that its demands for explicitness create a rather lengthy and redundant text. Poetry, where (in contrast to a programming language such as Ada) meanings are tightly packed and devices such as metonymy and metaphor abstract intention and increase depth, is expensive to parse. Yet, while poetry is increasingly ignored in curricula, I would doubt that many would refute its value. Thus, our focus on efficiency may prevent us from identifying the most valuable solutions.

0 Comments:

Post a Comment

<< Home