How programming language shape interaction and culture

advertisement
Title
Language shaping power: Bakhtin, Cassirer and Phenomenology
By
Ivar Tormod Berg Ørstavik
The Faculty of Informatics and e-Learning
Sør-Trøndelag University College
NO-7004 Trondheim
Norway
Email: ivar.orstavik@hist.no
Phone: +47 92030838 (mobile)
Phone: +47 7355 8989 (work)
Abstract:
This article illustrates how morphology in programming languages influences interaction
among programmers. To facilitate this illustration three theoretical approaches (Dialogism,
Cassirer and Phenomenology) are presented and contrasted against each other. Based on
this theoretical exploration an empirical study is performed. This study experiments with
how different morphological type systems in object-oriented programming encourage and
discourage different programming practices and power structures. The study concludes
with a discussion of how the historical setting around Bakhtin’s original theories
highlighted in the theoretical analysis also stands out in this empirical study.
1
Title
Language shaping power: Bakhtin, Cassirer and Phenomenology
1. Introduction - An applied linguistic approach to theories of language
For an applied linguist theories of language are combined with empirical data. These
syntheses often focus on solving ‘real-world’ language problems and place linguistic
theories in the background. Such an approach fits well with the name applied linguistics.
But, this approach does not epitomize applied linguistics. Applied linguists also foreground
theories and use empirical data as background against which to investigate these theories.
Hence, applied linguistics both solves problems and enhances linguistic theories by
constantly flipping empirical data and theory as foreground and background.
This applied linguistic study aims at both solving problems related to wording inter-textual
references in computer programs and understanding if and how Dialogism is particularly
suited to such a task. To accomplish these goals Dialogic theory is first foregrounded
against the Cassirer’s theory of language and then against a subjective Phenomenological
perspective. These comparisons illustrate the complex link from Cassirer to Dialogism, the
differences between Dialogism and a subjective Phenomenological tradition, and how these
links and differences make Dialogic theory a unique analytical perspective.
In the second part of this study this sharpened Dialogical perspective is used as a platform
on which to analyze and experiment with wording inter-textual references in computer
programs. The empirical analysis shows how programming language morphology directly
shape interactional patterns among programmers and illustrates how new morphological
means can empower programmers so to enable new forms of interaction. The empirical
findings bolster the theoretical findings that Dialogism provides a unique analytical
perspective that connect language and social interaction.
2
2. Cassirer’s legacy in Dialogism
‘Tragicomical’ can be used to describe the link between Cassirer and Bakhtin’s theories.
Their common focus on laughter, comedy and carnival as philosophical subjects is a direct
line between the two. In addition, the need for contemporary studies to uncover, or rather
recover, such things as “Bakhtin’s verbatim translation of over half a page of Cassirer’s
[writing]”(Poole 1998: 543) and other references of Cassirer’s line of thought in Bakhtin’s
works, tragically illustrates how politics may influence research.
However, for me as an applied linguist the most pertinent link from Cassirer to Bakhtin is
the method of historical studies of texts and thought: ‘historicism’ (ibid: 546f). This method
use textual data spanning longer historical periods to understand the emergence of linguistic
structures, turning the focus from the linguistic structures themselves to their process of
change (Bakhtin 1986: 65 & Cassirer 2006: 91). Viewing language over a longer historical
time period reveals processes of change, and it is through seeing these changes that we get
a glimpse of how our thinking is connected with our language – ecologically (cf. Bakhtin
Chronotope).
Further, this historical method has a second, important characteristic. Textual data is
selected using a wide conception of language. Cassirer (2006, TODO Symbolic forms) see
language in relation to other symbolic forms such as technology, religion and myth.
Bakhtin on the other hand stresses language variety: “Only with the coming of
‘mnogoiazychie’, a pluri-lingual environment (polyglossia), can ‘consciousness be
completely freed from the power of its own language and linguistic myths’” (Brandist
2004: 150 quoting Bakhtin 1981). Hence, the method uses differences between and within a
broad spectrum of languages to shed light on each other rather than working with examples
of a coherent, unitary, normal language.
In the Scandinavian dialogic tradition few studies use methods that enable neither a long
historical perspective nor a polyglot language view. While the historical timeline and
3
emergence in language is well described in theoretical models such as ‘diatope’ (Evensen
2002) and ‘double dialogue’ (Linell 1998), the associated methodological guidelines from
Cassirer and Bakhtin are not as evident. When this theoretical and methodological synthesis
is broken, discrepancies between theory and method might arise. First, macro-historical
theoretical perspectives risk being set up against essentially micro-historical empirical data.
Second, the exceptional and abnormal is often missing. Researchers need abnormality and
difference to create meta-perspectives on language and how it shapes their own language
based perceptions.
3. Dialogism inspired by the Soviet Union
The historical, polyglot method goes hand in hand with the theoretical stance Bakhtin and
Cassirer takes on inter-subjectivity. Common in their understanding of language is a view
of inter-subjectivity rather than subjectivity as the driving force behind language evolution.
However, on this issue Bakhtin was inspired by contemporary Soviet views on language
development. “’Marxist understanding of the social-historical process’ [(Iakubinskii 193031)] constitute the main source of Bakhtin’s sociological and historical account of language
in his essays of the 1930s.” (Brandist 2004:146). Cassirer on the other hand, a neokantian,
discussed his theories with other German philosophers heavily preoccupied with individual
consciousness and subjectivity. These discussions led him to pursue a Basisphenomenon
grounding inter-subjective processes, an ‘Objectivity of the symbolic form’ (Cassirer
quoted in Heidegger 1997: 205). Although both might conclude that inter-subjectivity
drives language development, Bakhtin and Cassirer approach this idea from almost
diametrical theoretical origins.
Bakhtin’s theories also differ from Cassirer’s in its down-to-earth approach to language.
Voloshinov “translated inter-subjectivity into discursive forms: dialogic relations” (ibid:
146) and thus provided a more concrete approach to language. Bakhtin combined this
socialist agenda with Cassirer’s historicism, “severed Iakubinskii’s argument from its
historical moorings, and incorporated it into an account of literary history with different
4
origins and historical coordinates” (ibid: 150). Combining this concrete approach to
language with the theoretical concept of inter-subjectivity, the dialogic perspective thus
enables researchers then and now to describe inter-subjective phenomena in empirical data
from text and discourse.
Cassirer and Bakhtin thus share a historical, change-oriented method and the idea of
language as basically inter-subjective. But the strong social and down-to-earth starting
point in Bakhtin’s theories seems political and too direct compared to Cassirer’s
philosophical and abstract starting point.
4. Time for Phenomenology and Dialogism
To compare Dialogism with Phenomenology, this study will briefly discuss two topics:
time and semantics. These discussions take a birds-eye perspective from both a subjective
and inter-subjective view point. These discussions should not be read as in-depth analyses
of neither the topics nor the perspectives themselves, but rather as two simple examples of
how different theoretical preferences towards inter-subjectivity and subjectivity can affect
the outcome of empirical analysis.
First, time. Arguing against a tradition that uses eternity as its point of departure from
which to understand time, Heidegger states that “time ‘is’ only for a being that lives with an
awareness of its own mortality” (Alweiss 2002: 118). Heidegger “believes that we […] can
only understand the phenomenon of time from our mortal or finite vantage point” (ibid:
117), and since eternity cannot be conceptually grasped by such a being, eternity must be
replaced by something that can: the subjects death. From this subjective, phenomenological
viewpoint ‘time’ is thus tightly linked with the ‘individual subjective’, both concepts
informing the other.
However, an individual, subjective experience of death is no more within our human grasp
than eternity: “death comes from outside and transforms us into the outside” (Satre 1969,
5
sited by Alweiss 2002). This critique refers to the scope and boundaries of this subjective
approach to time.
But, an inter-subjective approach to time and death is not open to the same criticism. Even
though I cannot experience the phenomenon of my own death and live to talk about it, I can
experience and feel quite tangibly the death of others. Individual death in general and my
own death can therefore become graspable and meaningful from an inter-subjective stance:
my understanding of my own time is a reflection of my perception of others time, their
birth and death.
Viewing time as an abstraction of other’s time also highlights time’s plurality. Using a
metaphor from computer science, our ‘environment’ can be understood as ‘multithreaded’.
Several independent timelines and ‘flows of control’ run concurrently and cross each
others’ paths. Such plurality is essential in the Dialogic view of language as a chaotic sea of
utterances and voices, each with its own time and direction, overlapping, interacting, and
flowing in and out of each other.
Second, semantics. Focusing explicitly on the social character of language, Dialogism has
developed several analytical concepts to illuminate the intricate, reciprocate relationships
between words, our thinking, interaction and culture. A central concept within these
theories is the social dimension of utterances, texts and words (Bakhtin 1986). "[Language]
is populated – overpopulated – with the intentions of others "(Bakhtin 1981: 294), and
when we perceive and express reality with words in any language, we use the language of
others in order to compose our own perspective on reality. Thus, our thoughts, actions and
utterances are composed as ‘polyphonies’ (Bakhtin 1984) or ‘refractions’ (Bakhtin 1981:
300, cf.276) of other's voices.
When viewing language and our perception of the world primarily as social references,
'semantics' is seen in a new light. Rather than categorizing semantic relationships between
say a word and a physical world or a universal logic, the meaningful references or
6
‘semantic relationships’ in words become their relationships to other social actors and their
texts, i.e. their inter-subjective role (see figure 1 below). The meaning ascribed to words are
not viewed primarily in categories such as ‘information’ or ‘indices’ to domain-specific
logics or lexica; the meaning-potential of words are viewed rather as social ques or voices
of others. Both a subjective and inter-subjective approach to semantics focus on
‘meaningful references in words’, however the two approaches have completely different
concepts of what a reference is.
a tree
a tree
a tree
a tree
a tree
a tree
a tree
a tree
2+2=4
2+2 = 4
2+2=4
2+2=4
e = mc 2
2+2=4
2+2=4
2+2=4
2+2=4
Figure 1: A subjective approach highlighting index and logic oriented references (arrows
on the left) and an inter-subjective approach highlighting social, inter-textual references
(arrows on the right).
When words are viewed as neither individual property nor asocial realities, social forces
become a primary reality in language. Social structures are seen as within language itself,
not as separate phenomenon. So, in order to understand this social make-up of languages, it
becomes essential to describe the social dynamics and relationships in language use.
Interaction among language users, sedimented patterns of “recurrent rhetorical actions”
(Miller 1984, Berkenkotter 1993) and “grammaticalization” (Givon 1979), and other social
processes all become intrinsic in language.
7
5. Empirical analysis of inter-textual references in programming languages
Dialogism stands out from related linguistic theories by focusing on inter-subjective, social
structures and methodologically enabling a historical, change-oriented approach. This study
will now use this perspective to analyze computer program words and problems related to
wording inter-textual references in computer programming.1
A program text in Java or Python (see figure 2) is composed of a variety of words. These
words can generally be categorized into four groups: syntactic markers, primitives,
variables and types. Syntactic markers such as parenthesis, commas, and some so-called
‘reserved words’ reference generic functionality in special platform program texts such as a
compiler or class loader. These words play primarily a syntactic role ordering the interplay
between functionality described by other words. Primitives such as numbers and the ‘+’operator function as atomic entities in the text. Both syntactic markers and primitives are
morphologically closed and represent a finite set of symbols that can only be defined by the
platform programmers. Variables function as placeholders or proforms (cf. pronouns) that
can store a value or reference. Variables are most often used ‘locally’ within texts, but can
also be used ‘globally’ between texts. Types mark text as being or referring to entities such
as a class or method. Types are the primary morphological means by which programmers
link their text with other program texts beyond the platform. Both variables and types are
morphologically open allowing programmers to define and reference a practically indefinite
number of words. Even though all four groups enable inter-textual links, this study analyzes
only types.
1
At first sight Dialogism can seem irrelevant to programming. Computers and programmers can be viewed as
solely utilitarian, technical and asocial, and if such an empirical view is taken, that leaves a primarily social,
inter-subjective theory little room to maneuver. However, programming can also be understood as highly
social (cf. the open source movement). The words of programmers reflect not only logical functionality, but
also link different text written by different programmers together. Software is inter-text. As these inter-textual
systems become evermore complex, the need to understand and describe the socially entangled networks
underlying them become evermore important.
8
import org.jdom.*;
public class HelloJDOM {
public static void main(String[] args) {
Element root = new Element("GREETING");
root.addChild("Hello JDOM!");
Document doc = new Document(root);
org.jdom.output.XMLOutputter output = new org.jdom.output.XMLOutputter();
try {
output.output(doc, System.out);
} catch (Exception e) {
System.err.println(e);
}
}
}
import xml.dom.minidom
def printDocument(text):
dom = xml.dom.minidom.parseString(text)
print "<html>"
for line in dom.getElementsByTagName("line"):
print "<p>%s</p>" % getText(line)
print "</html>"
def getText(node):
text = node.childNodes[0]
if text.nodeType == node.TEXT_NODE:
return text.data
return ""
document = "<text> <line>hello!</line> <line>and good bye..</line> </text>"
printDocument(document)
Figure 2: A Java text and a Python text. Syntactic markers and primitives are marked in
grey, variables in italic and types in bold.
Types in Java and Python are relative to a path. A path, called ‘classpath’ in Java and
‘pythonpath’ in Python, is conceptually a list of program texts that is set up around
individual programs. In order to clarify which text entity that a type refers to, the type
reference is interpreted against this list. Different path settings thus essentially establish
different inter-textual contexts enabling different interpretations of the same type reference.
And it is only when words are situated in an inter-textual environment enabling concrete
interpretations that the texts become programs and start (to make sense).
9
}
}
class
C
if (…) lassC {
...
class
Cla
Clas ssA {
sC c
Clas =
sD.d
}
o();
class
Th
while ing {
(…)
...
class
S
while trange {
(…)
class
...
clas
S
class
while ome} { w s Strange
Stra
hile (…
nge (…
{
while
)
...as { )
(…) cl
...
sS
... }
}e
while trang
}
{
(…)
...
class
}
O
while therE {
(…)
...
}
}
class MyClass {
ClassA a =
ClassB.work();
}
class
C
for (… lassD {
)
...
}
class
C
while lassE {
(…)
...
class C
lass
ClassD B {
d=
ClassE
.work()
}
;
Figure 3: Words are interpreted in an inter-textual context.
In principle program words such as types are therefore not specific to one particular
interpretation: program words are not fixed indices to predetermined, universal
functionality. What the type reference means must be determined within a path, and by
changing this path different interpretation of the same program word is established. Giving
such ‘new, alternative’ interpretation words are for instance used to ‘hack’ other
programmers’ systems. Program words rely on each other in order to function, and program
words can thus be viewed as words refracting and echoing each other across vast intertextual webs of words.
The value and usefulness of using others’ words cannot be overstated. To be able to quickly
and simply instantiate objects and invoke methods that other programmers have spent
countless of hours developing enables programmers to constantly enrich their programming
language and culture. Types and the morphology, syntax and pragmatics that underlie them
enable programmers to break down big problems into smaller, more manageable pieces.
Moreover, the solution to these pieces can then quite easily be reused by other
programmers by simply referring to a method or class. This essentially enables thousands
of programmers to collaborate with each other directly linking their program texts together,
10
dwarfing most other means of programmer collaboration. Put dialogically, types enable
programmers to construct their systems as refractions of other programmers’ code,
composing their programs as ‘polyphonies’ whose meaning is not just an individually
formed idea, but a mosaic of social collaboration in a cultural-linguistic sphere.
6. Problems concerning the social interaction and dynamics of types
But, using types has its problems. The act of wording a type reference is not only to a)
explicitly formulate a type name; implied in this act is also the acts of b) obtaining an actual
program text that defines the type and c) updating the path settings. Both Java and Python
conceptually sees both the type and paths as operating on a single computer such as a PC.
Here the act of wording a type reference typically compounds the acts of a) writing a word,
b) finding and downloading a text with a corresponding class or method, and finally c)
updating the path settings on the PC so as to include this new file. Wording PC-based types
in Java and Python is thus both a morphologic2 and pragmatic practice.
Further, the act of using another programmer’s word is not limited to single steps. A
programmer can use another programmers’ word that in turn uses a third programmers’
words, etc. etc. The pragmatic-morphological linguistic practice thus creates relationships
that span several individual texts and thus several individual actions. These relationships
linking both texts and actions are called ‘chains of dependencies’. To illustrate how such
‘chain of dependencies’ can arise a simple example will be presented.
from minidomPrinter import printDocument
document2 = "<text> <line>hello again!</line> <line>ta ta..</line> </text>"
printDocument(document2)
Figure 4: A Python module called printUser.
2
A set of conventions by which words can be formulated.
11
Building on the minidomPrinter text (figure 2), a new program called printUser is set up
(figure 4). printUser directly refers to printDocument, and in order to work the printUser
text needs to be interpreted against a path that includes a text such as minidomPrinter.
Without such an inter-textual context printDocument and thus the entire printUser text
would fail to make sense. The new text printUser thus directly require that we b) find and
download a file such as minidomPrinter and c) update the pythonpath settings to include
this file on our PC. This is a direct ‘dependency link’ between printUser and
minidomPrinter. But, minidomPrinter alse reference other types such as
xml.dom.minidom. In order for minidomPrinter to work, a text describing
xml.dom.minidom must also be available within the path. Thus, an indirect dependency
from printUser via minidomPrinter to xml.dom.minidom arises forcing the programmer
or user of to update the pythonpath around printUser and minidomPrinter to include
xml.dom.minidom.
}
}
class
Th
while ing {
(…)
...
class
S
while trange {
(…)
class
clas
Som } ...
class
e { w s Strang
S whi
e{
hile (…
while trangle
e (…
)
{
)
...
(… cl
...
... } ) ass Strang
}
while
e{
}
(…)
...
class
}
Other
while
E{
(…)
...
}
class
C
for (… lassD {
)
...
}
}
class
C
while lassE {
(…)
...
}
p a cka g
e
class E org.jdom;
lement
{
while(.
..)
...
class
C
for (… lassA {
)
...
}
class
C
while lassB {
(…)
...
}
p a cka g
e
class E java.lang;
xceptio
n{
while(.
..)
...
class HelloJDOM {
org.jdom.Element...
…{
Exception ...
}
Figure 5: Illustration of chain of dependencies around HelloJDOM from figure 2.
The social, ethical, technical and practical concerns that follow in the wake of such
dependency chains greatly influence programmers’ choice of words in several ways.
12
First, a well known ethical concern relates to ‘licensing terms’. When a programmer
chooses to use another programmer’s word, he also presupposes that his program will use
the texts behind these words. However, the use of other programmers’ texts can be
restricted by legal, commercial and political licenses. Using another programmer’s word
therefore presupposes accepting or breaking the terms of both the words used and all the
other words that this word uses recursively. Hence, the words become in a very tangible
sense “populated with the intentions of others” (Bakhtin 1981).
Second, words written for one language or platform rarely fit other languages or platforms.
Using a word of another programmer thus also involves choosing which language, platform
and social network of programmers with whom to interact. If a programmer wishes to use
another word written for another language or platform, a lot of extra work is involved.
Having first chosen a certain language, programmers therefore tend to advocate their own
platforms benefits quite fervently.
Third, the dependencies between program texts are just as relevant when using a finished
program as they are when writing it. Although some mechanisms allow programmers to
pack and distribute a program with ‘all’ the necessary files included, the basic principles of
chain-of-dependencies still apply when a program is used. As many users have a zerotolerance to updating their path themselves, many programmers are super-sensitive to the
hassle of updating path settings.
Forth, using another programmer’s word implies that his text will be run and thus also
places a certain amount of trust in that programmer’s hands. But if the other program text
you want to use also require you to use yet other third party program texts that you have not
heard about, you are asked or forced to trust not only the other programmer, but also the
other programmers that he in turn trusts. This can be a tall barrier to transcend for both
many users and programmers.
13
Programmers of Java and Python therefore have to weigh the benefits of using a certain
word against the cost of obtaining files and setting up a path needed to back its intended
interpretation. If using a certain word demands obtaining dozens of files from different
locations in separate steps, odds are that this word will not be used as often as other
alternatives requiring less work.
PC-based morphology enable the programmer to only perform act a) for only the first step,
but in order to maintain control over the inter-textual context in which his program should
run, PC-based morphology specifies that a programmer must perform acts b) and c) for all
iterative steps in the dependency chain. A programmer may therefore get an infinite, illegal
or broken path thrown into the bargain when using a simple word. His choice of words is
therefore not only concerned with the words technical qualities, but also their ensuing
practical tasks, ‘licensing terms’, his trust in them, and other social constraints.
7. Second and third party words in pc-based morphology
Because of these practical, social and ethical concerns, Java and Python platforms are
distributed with a standard library of words and standard path settings. Distributing the
language in this manner establishes in practice a ‘standard inter-textual context’. A
programmer can anticipate that words from these libraries such as xml.dom.minidom and
java.lang.Exception are always within the inter-textual contexts, while words such as
org.jdom.Element and minidomPrinter are not. This segregates words within and outside
the standard library into second and third party words respectively: when referring to
second party words (a2), a programmer can presume that actions (b_ and c_) will not be
needed; when referring to third party words (a3), a programmer can presume that actions to
establish an inter-textual setting (b3n and c3n) are needed, and in all contexts were his
programs/words are used.
These practical and social concerns play an important role in shaping program literature. A
programmer using another programmer’s words orients not only towards the current
14
program text and its relationship to prior program texts or types. The programmer of
HelloJDOM implicitly makes the choice to perform acts (b3n and c3n) surrounding
org.jdom.Element not only for himself and his own program, but also for any other user or
programmer who wants to use HelloJDOM as an application or type. On the other side, the
programmer of minidomPrinter chooses words such as xml.dom.minidom that with
reasonable certainty can be assumed to be part of later users ‘standard inter-textual
context’. Therefore, minidomPrinter does not place the extended burden on future users of
this word that HelloJDOM does.
This future burden of using a program text is very important. Thinking ahead programmers
can foresee other program texts establishing links to their program texts. Because of this
‘responsibility’ to other texts potentially referring to ‘me’ in the future, ‘addressing future
utterances’ is therefore often as vividly apparent as the texts’ awareness of other already
existing texts.
Because of these social, practical and ethical concerns related to path-relativity of program
texts that 1) have been written, 2) are being written, and 3) might be written, a ‘centripetal
force’ (Bakhtin 1981: 270) in languages using pc-based morphology emerges. Because the
use of second party words (a2) has so many clear advantages over technically similar third
party alternative words (a3), both for present and future users, programmers flock towards
the use of second party words. The social, practical and interactional structure of pathrelativity combined with the distributors’ ability to set up a default inter-textual context
thus gives a clear home-court advantage for the social groups uttering second party words
over technically equal or better alternatives from third parties who then struggle to get their
voice heard.
8. Situated needs shaping actions - actions shaping morphology
Our informal experiment started with the development of a platform for programming multi
agent systems in Java (Ørstavik 2005, 2006a). One of the core issues we faced in this work
15
was the need for different agent programs to interact with each other using the Java
language as medium, while at the same time maintaining their ability to function
autonomously in individual inter-textual contexts.
Due to the make up of the Java language morphology a problem quickly arose in our
project. When one agent wants another agent to respond to a request, they need to involve
words/types that are part of one agent’s inter-textual context, but not the other’s. There are
many known mechanisms to work around this problem: type definitions can be passed
directly between agents, or one agent can tell another agent to alter its path settings.
However, such mechanisms provide alternatives to type morphology that make program
texts more difficult and heavy-handed to read and write. Further, the problem of extracontextual words/types in multi agent systems is in principle the same practical, social and
technical problem of actions b) and c) in PC-based morphology described above.
To tackle this problem, we therefore started looking more closely and creatively at type
morphology. We found that the morphological forms quite easily could be changed so to
enable references to types out-side the PC context. Based on the Java language we
developed an experimental dialect called ‘theJ’ (ibid.) that a.o. extended the PC-based
morphology to also allow for types to be referred to as URLs (URL-types), an extension of
the existing morphological forms.
16
package thej;
A theJ class called thej.ExampleTwo.
import ftp://213.221.2.15/consult/EAMKA_02_05/client/lib/jdom-1.0.jar/org.jdom.*;
import ftp://213.221.2.15/consult/EAMKA_02_05/client/lib/jdom1.0.jar/org.jdom.input.SAXBuilder;
public class ExampleTwo {
public static void main(String[] args) {
http://the.hist.no/thej.ExampleOne parserA =
new http://the.hist.no/thej.ExampleOne("<b>", "</b>");
SAXBuilder parserB = new SAXBuilder();
try {
parserB.build(args[0]);
} catch (JDOMException e) {
System.err.println(parserA.taggThis(e.getMessage()));
} catch (Exception e) {
System.out.println(e);
}
}
}
Figure: A theJ program.
The implementation of URL-types (Løkke 2005) extends both the front- and back-end of
the Java type system: front-end type names can be written echoing complete URLs, for
instance as http://www.jdom.org/jdom.jar/org.jdom.Element, and back-end the compiler
and platform is extended so as to locate, download and utilize program files found using the
URL-information in the URL-type name from the web.
9. How morphological change can alter interaction among programmers
The principal consequence of this change in morphology has to do with the perception of
inter-textual context and actions to control path (b and c). The path is no longer pc-oriented;
the path is web-oriented echoing a protocol that describes how programmed words can be
exchange both within and across different computers. The underlying compiler, interpreter
and/or platform can thereby be told to relate to words on the web, using the web to
automate the tasks b) and c), even in chained dependencies. Using a new symbolic,
morphological form moves actions into morphology - “today’s pragmatics tomorrow’s
syntax” (Givon 1979).
Exploring alternative, exotic linguistic forms gave me a fresh perspective on my old
linguistic practices. With ‘URL-types’ in mind I became conscious that I am continuously
17
searching for second party words, even when better suited third party alternatives are
available. Exploring this linguistic abnormality highlights limits in existing linguistic
mindsets and practices. Hence a ‘hindsight’ view of current pc-based morphology was
created, a perspective that is very difficult to achieve only having experienced ‘normal’
programming language morphology. This has led me to conclude that morphology can
tacitly guide our minds and perceptions so as to, 2) direct our linguistic actions that in turn
can 3) form new morphological conventions that enable us to think of and act with program
words in new ways.
10. Conclusion - How Dialogic theory informed my empirical understanding
Applying this dialogic perspective to programming language should not be read as an
attempt to capture a somehow ‘truer’ description of the world of programming. It is not.
Using a theoretical perspective is a strategic choice taken in order to shed light on certain
aspects or dimensions of phenomena that other theoretical approaches might miss. In this
study the ‘new’ phenomena captured are how certain morphological forms can cluster or
disperse certain patterns of interaction, and how this effect can be seen as crucial for how
languages are shaped.
The Marxist social agenda and theoretical view underlying the dialogic tradition of the
1920-1930’s Soviet Union and Bakhtin’s theory of language can clearly be seen as
reappearing in this study. This was not the original intent and not fully understood until
later in this study, as can be seen in an earlier version of this study (Ørstavik 2006b).
The social agenda finds a clear philosophical ally in the open source movement. Both the
dialogic perspective and the open source movement advocate collective ownership and
openness over corresponding individual rights. However, an interesting finding in this
study is that ‘open source languages’ such as the liberal Python on Ubuntu employ the
same centripetal forces to almost the same extent as commercially owned languages. This
illustrates that power is not only accumulated for monetary ends.
18
The social agenda in the Dialogism, an agenda that neither Cassirer nor Phenomenology
use as their starting point, shapes my perception of programming languages and
morphology in a way that I do not believe a study based on either a more subjective or
philosophical/symbolic theory would do. So, to assume that social power would stand out
against a similar empirical backgrounds in a Phenomenological or Casserian study would
be to underestimate the consequences of the social intensions buried in the words of
Dialogism. Thus, this study finds dialogic theory provides a valuable perspective to shed
light on highly relevant social and human aspects of language and discourse.
19
References
Alweiss L. (2002). Heidegger and ‘the concept of time’. History of the human sciences,
vol.15, no.3, 117-132 (London: Sage Publications).
Bakhtin, M. M. (1981). Discourse in the novel. (In Emerson C. and Holquist M. (trans.):
The Dialogic Imagination: Four Essays. Austin: Texas University Press.)
Bakhtin M. M. (1986). The problem of speech genres. (In McGee V. (trans.): Speech
Genres and Other Late Essays. Austin, TX: University of Texas Press.)
Bakhtin M. M. (1984). Problems of Dostoevsky’s Poetics. Emerson C. (trans.).
Minneapolis: University of Minnesota Press.
Berkenkotter C., Huckin T. N. (1993). Rethinking Genre from a Sociocognitive
Perspective. Written Communication, 10, 475-509.
Bostad F. et. al. (Ed.) (2004). Bakhtinian Perspectives on Language and Culture: Meaning
in Language, Art and New Media. (New York: Palgrave MacMillan)
Brandist, C. (2004) Mikhail Bakhtin and early Soviet sociolinguistics. In: Proceedings of
the Eleventh International Bakhtin Conference. Universidade Federal do Paraná, Curitiba
(Brazil), pp. 145-153. ISBN 859043981X. http://eprints.whiterose.ac.uk/archive/00001115/
Cassirer E. (2006). Form og Teknikk. (In Folkvord I. (trans.), Hoel A.S.: Form og Teknikk:
Utvalgte tekster, 87-142 (Oslo: Cappelen Akademisk Forlag)
Chomsky N. (1965). Aspects of the Theory of Syntax. MIT Press. ISBN 0-262-53007-4.
20
Crowley T. (1990). That obscure object of desire: a science of language. (In Joseph J. E. &
Taylor T. J. (eds.): Ideologies of Language, 27-50. London: Routledge.)
L. S. Evensen (2002). Convention from below: Negotiating interaction and culture in
argumentative writing. Written Communication 19(3), 382-413.
Givon T. (1979). On understanding grammar. (Sited by Faarlund J. T. (2002).
Grammatikalisering av ordstilling. (In Moen I. et.al.(ed.) (2002). MONS 9 - Utvalgte
artikler fra Det niende møtet om norsk språk i Oslo 2001. Oslo: Universitetet i Oslo)).
Gosling J., Bracha G., Joy B., Steele G. L. (2000). The Java Language Specification:
Second edition. (Boston: Addison-Wesley)
Heidegger M. (1997). Appendix IV: Davos disputation between Ernst Cassirer and Martin
Heidegger. (In Heidegger M., Taft R. (trans.): Kant and the problem of metaphysics, 5.ed.,
Bloomington: Indiana University Press)
Hopper P.J. (1987). Emergent Grammar. Berkeley Linguistics Society(13), 139-57.
Lindholm T., Yellin F. (1999). The Java(TM) Virtual Machine Specification (2nd Edition)
(Paperback) (Boston: Addison-Wesley Longman Publishing Co.)
Linell P. (1998). Approaching dialogue: Talk, interaction and contexts in dialogical
perspectives. (John Benjamins Pub Co.)
Løkke J. (2005). Implementing URL-types in Java. (Trondheim: HiST)
Miller C. (1984). Genre as Social Actions. (In Freedman A. and Medway P. (ed.) (1994).
Genre and the new rhetoric. London: Taylor & Francis.)
21
Poole B. (1998). Bakhtin and Cassirer: The Philosophical Oirigins of Bakhtin’s Carnival
Massianism. South Atlantic Quarterly 97:3/4 (Duke University Press).
Python (2006). The Python Programming Language. Retrieved June 20, 2006 from
http://www.python.org/.
Saussure F. (1916). Cours de Linguistique Générale, Payout, France. (Eng. ed.: The
Philosophical Library, 1959; McGraw-Hill, 1966.)
Ubuntu (2006). Ubuntu. Retrieved June 20, 2006 from http://www.ubuntu.com/.
Wikipedia (2007). Phenomenology. Wikipedia, The Free Encyclopedia. Retrieved March 1,
2007 from en.wikipedia.org/wiki/Phenomenology
Stanford (2007). Phenomenology. Stanford Encyclopedia of Philosophy. Retrieved March
1, 2007 from plato.stanford.edu/entries/phenomenology
Ørstavik I. T. B. (2005). Designing multi agent systems using Java as an Inter-Program
language. (Paper presented at JavaZone 2005:
http://www3.java.no/JavaZone/2005/presentasjoner/IvarOrstavik/html/Ivar_Orstavikjavazo
ne2005.html)
Ørstavik I. T. B. (ed.) (2006a). Site of theJ programming language. Retrieved June 1, 2006,
from http://the.hist.no.
Ørstavik I. T. B. (2006b). How programming language can shape interaction and culture.
Presented at the International European Conference on Computing and Philosophy (ECAP)
2006.
22
Download