How programming language influence interaction and culture

taxidermistplateΛογισμικό & κατασκευή λογ/κού

7 Νοε 2013 (πριν από 3 χρόνια και 7 μήνες)

45 εμφανίσεις


1

“Language exerts hidden power, like a moon on the tides.”


Rita Mae Brown



How programming language
influence

interaction and culture

By Ivar Tormod Berg Ørstavik

Abstract:

This article illustrates how morphology in programming languages influences int
eraction
among programmers.
To facilitate this illustration three theoretical (dialogic, Cassirian
and phenomological) approaches is presented and contrasted against each other.
Based on
this theoretical exploration, analytical tools from dialogic theory a
nd
an experimental
study,
how
different type systems in object
-
oriented programming

encourage and
discourage different programming practices and power structures

is exhibited
.

1. Introduction

1.1 A
n applied linguistic appro
ach to theories of language
1

For
an applied linguist theories of language are
combine
d with empirical studies.
T
h
e
s
e
synthese
s
often
focus on solving/describing language problems/phenomena from the
‘real’ world

and place the theoretical foundation in the background
. Such an approach fits
well with the name ‘applied linguistics’. But, it
is
wrong to conclude that such synthes
e
s
sum

up applied linguistics. Applied linguistics just as often focus on and place theories in
the foreground and use the empirical foundation as a background against
which to
investigate

and
evaluate these theories.
Hence, a
pplied linguistics is not just about
empirical knowledge and
solving problems: applied linguistics
also
strives to enhance our
theoretical
understanding of language by constantly switching empirical

phenomena and
theory as foreground and background.


Direct comparison of different theories is one way to shed light on both similarities and
differences between theories and the theories in themselves. But, evaluating theories
through abstract or histori
cal analysis alone is vulnerable for the personal, subjective taste
and
beliefs of researchers. Therefore
,
different theories

on language
should
not only
be
described
against each other, but also against some empirical background.
By pulling in a
third par
ty,
such as
empirical data, a less biased mediator is involved in discussions on
the ‘righteousness’, ‘truthfulness’, ‘usefulness’ or other value of different theories
,

values
that might elude abstract, historical analysis alone.


In this article I will tr
y to use just this approach to better understand the nuances and
seem
ingly

trivial differences between
three related
theoretical views on language:
D
ialogism
2
, Cassirer and phenomenology
.
3

This theoretical analysis will then be



1

In this article,

language’ refers to ‘language, language use and communication’.

2

Dialogism refers here to a current, applied Scandinavian school of thought (Evensen
2002
, Linnel
1998
).
This tradition takes its name and
much of its t
heoretical foundation
from Bakhtin
’s work
.


2

juxtaposed with an extensive

empirical analysis of morphology and power in
programming language using a dialogic perspective. Based on this empirical analysis and
the preceding theoretical discussion, the article will raise some arguments and open a
discussion on the form and content

of the different theoretical views on language.
4

2. Theory

2.1
A

hidden, historical legacy from Cassirer to
D
ialogism


Tragic
omical’ is probably the best word one can use to describe the link between
Cassirer and Bakhtin’s theories. Their common focus on
laughter, comedy and carnival
as philosophical subjects is a dominant, direct line between the two. In addition, the need
for contemporary studies to uncover (or rather recover/salvage) 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, is a
tragic
example of
the damning effect external and internal forces in men can have on
research
.


However, this
tragicomic connection is not th
e only legacy left behind by Cassirer
through Bakhtin
. For me as an applied linguist the method Bakhtin adopts from Cassirer
is
the most pertinent
: historical studies of texts and thought (ibid.:546
-
47
:


historicism

).
With Cassirer’s method Bakhtin turns
to textual data spanning longer historical periods in
order to understand the emergence of both language and thought and their symbiotic
relationship. (
TODO:
quote from Bakhti
n/S
peech
Genres:
the importance of not
-
synchronic studies.) Time

is needed to und
erstand languages evolving,
and time
is here
understood
in a loooong, historical sense, i.e.
years and
centuries, not hours and minutes.
I
t is through this understanding of the emergent historical dimension of language
, a.o.,

that one can understand a) how

language come to form b) how men form c) their
perceptions of ‘reality’


ecologically.

“[The language of techniques] first begins to open
up and let go of its secrets when one, even here, goes from forma formata and back to
forma formans, from that which

is created, back to the principle of creation.” (Cassirer
2006: 91).







3

The article will begin with a description of a blurred connection between Cassirer and Bakhtin. This
connection highlights the similarities between the Scandinavian dialogic tradition (represented by Bakhtin)
an
d Cassirer, a philosopher
much discussed in relation

to phenomenology. Second, this article will describe
a sociolinguistic influence on Bakhtin that differs from Cassirer’s approach. This will illustrate a distance
on a social axis between the two theoret
ical strands. Third, this article will try to place Cassirer and
phenomenology along this same axis. This discussion will help illustrate subtle differences between the
three theoretical viewpoints, a difference having more to do with research agenda and m
ethodological
starting point more than theoretical conclusions.

4

This empirical study will end with an open discussion on whether or not a phenomenological approach
would come to the same conclusions as the dialogical approach illustrated. This would illu
strate points of
connection between the two theories. But, of equal importance is the discussion on what points,
theoretically and methodologically, the two theoretical approaches would part and what aspects of the
empirical phenomena a phenomenological ap
proach could capture that has eluded the dialogic approach
taken. Different theories of language and communication will highlight different aspects in empirical
studies, and understanding such differences is of great value to both applied linguistics and d
iscussions on
the theories in themselves.


3

Cassirer and Bakhtin’s historical method has a second, important characteristic: the
historical,
textual data selected often exemplifies language revolutions and uses a wide
conception
of language (cf. Cassirer 2006, Cassirer
’s notion of

symbolic forms
, and

Bakhtin
’s selction of literature
). Language development, forms and functions are
investigated through illustrations of change and
anomalies
, not through descriptions of
systematic evo
lution of normality in ‘natural languages’
. This focus on abnormality
differs from
traditional linguistic studies of language development (
cf.
TODO??
(grammaticalization)
, Chomsky

TODO
, etc.)

or classical, philogical studies (cf.
Humboldt tradition
??
)
. The
ir historical approach is revolutionary rather than stationary,
focusing more on
sporadic
examples of ‘abnormality’ than on
continuous
descriptions of
‘normality’.


This historical, revolutionary method goes hand in hand with the theoretical stance
Bakhtin

and Cassirer takes on intersubjectivity
. Common in their understanding of
language is a view of intersubjectivity rather than subjectivity
as the driving force behind
language
evolution
.
However, t
heir views on intersubjectivity differ: Cassirer takes a
m
ore abstract, general view of intersubjectivity while Bakhtin takes a very concrete,
personified view;
while
Cassirer searches for neokantian
Basisphenomena, the
‘Objectivity of the symbolic form’
(
et annet begrep for language
??)
grounding
inters
ubjective
processes
5
,
Bakhtin
’s descriptions seem more content with an
open
-
ended,
chaotic picture. But regardless of their differences, they both present an interactional,
historical, intersubjective process driving language development, a process that is more
erra
tic, incidental

and revolutionary, than ordered, logical and steady.
6

2
.
2

Dialogism inspired by the Soviet Union

However, this development in dialogic theory was not only inspired by Cassirer’s view
on language development. “’Marxist understanding of the
social
-
historical process’
[
(
Iakubinskii

1930
-
31)
] constitute the main source of Bakhtin’s sociological and
historical account of language in his essays of the 1930s.” (Brandist 2004:146). Partially



5

Each of us speaks his own language, and it is unthinkable that the language of one of us is carried over
into the language of the other. And yet, we understand ourselves through the medium of language. Hence,
the
re is something like
the

language. And hence there is something like a unity which is higher than the
infinitude of the various ways of speaking. Therein lies what for me is the decisive point. And it is for that
reason that I start from the Objectivity of

the symbolic form, because here the inconceivable has been done.
Language is the clearest example. […] And I believe here that there is no other way from Dasein to Dasein
than through this world of forms.” (Cassirer quoted in Heidegger 1997: 205).

6

In th
e Scandinavian dialogic tradition few studies use methods that enable a long historical perspective or
revolutionary text focus. While the theoretical dimension of this historical timeline and emergence in
language is well described in models such as ‘the
double dialogue’ (Linnel
1998??
) and ‘diatope’ (Evensen
2002
), these methodological guidelines from Cassirer and Bakhtin are not as evident. When this theoretical
and methodological synthesis is broken in empirical studies, discrepancies between theory and

method
might arise. First, macro
-
historical theoretical perspectives risk being set up against essentially micro
-
historical empirical data. Second, “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 dialogic imagination). Researchers need abnormality and
differen
ces between

symbolic forms to create meta
-
perspectives on language and how it sha
pes their own
language based perceptions. It can be argued that the contemporary Scandinavian dialogic tradition
does
not fully

address these aspects in their
choice
of methods.


4

isolated in the Soviet Union in the 1920s and
1930s Bakht
in
was
both
inspired by and
forced to relate his theories to Marxism and strong socially oriented views. Cassirer on
the other hand, a neokantian
,

German philosopher, discussed his theories with logically
oriented
philosopher
heavily preoccupied with indiv
idual consciousness and subjectivity.
Although both conclude that intersubjectivity drives language development, Bakhtin and
Cassirer reach this conclusion from two almost diametrical theoretical
arenas
.


Common to Cassirer and Bakhtin’s theoretical and me
thodological approach on language
and its development can therefore be understood to include their historical and change
-
oriented method and their conclusion on intersubjectivity. But the strong social and
concrete starting point in Bakhtin’s theories seem
s political and different from Cassirer’s
philosophical and abstract starting point. Bakhtin combined a socialist
agenda with
Cassirer’s historicism
, “severed Iakubinskii’s argument from its historical moorings, and
incorporated it into an account of liter
ary history with different origins and historical
coordinates” (ibid.: 150).


Another
point of departure between the two
approaches
is Voloshinov,
a contemporary
Soviet scholar to Bakhtin,
who “translated intersubjectivity into discursive forms:
dialogic r
elations” (ibid.: 146). Giving
an abstract concept of
intersubjectivity
concrete
counterparts in various descriptions of ‘dialogic relations’,
the dialogic approach thus
established enable researchers

to more readily identify such phenomena in empirical da
ta
from text and discourse.
Building on
both historicism and a dialogic twist Bakhtin
illustrates in several studies not only this directions value for theoretical understanding of
language, but, perhaps even more so, the applicable value these ‘nuances’ m
ade for
empirical investigations.


Examples of terms and perspectives that modern dialogism cultivate from this socialist,
Soviet source of inspiration
7

are variations on ‘dialogue’, ‘utterance’, ‘sentrifugale and
sentripetale forces of language’, ‘hetero
glossia’ and ‘polyglossia’. These
concepts and
perspectives have their cousins in
other theoretical traditions, such as
for example
Cassirer
’s
, but the socialist agenda underpinning these perspectives and the ‘dialogic’
twist they are given are historicall
y and theoretically quite unique to Dialogism. In this
way the social, dialogic starting point in this theoretical perspective differs from that of
Cassirer.


Bridging empirical data such as text and complex theories of language is no small matter
.

Seeming
ly insignificant ‘theoretical’ differences such as
nuances in approach, methodic
starting point
, political agenda

and choice of words can greatly impact
how empirical
data and theories shed light on each other
.

2
.
3

A subjective presentation of Phenomenolog
y and its time


In the Logical Investigations

[
Husserl
]
conceives of phenomenology as descriptive
psychology

[and]
analyzes the intentional structures of mental acts and how they are
directed at both real and ideal objects
” (
Wikipedia 2007
). Logic, psychol
ogy and analysis



7

Not

excluding other sources of inspiration.


5

of intentions and mental actions constructed a platform for a philosophical tradition and a
forum in which Cassirer participated, but that Bakhtin only observed. The reasons for this
are not only geographical and political. Contrary to the

socialist
8

starting point of
Bakhtin, the phenomenological platform started with the individual
:

“p
henomenology
studies conscious experience as experienced from the subjective or first person point of
view
” (
Stanford 2007
).


Both
D
ialogism and phenomenolo
gy room both the subjective
and

the intersubjective.
This article does not argue otherwise. However,
historically
the two traditions’
start off
from opposite directions
along this axis. This difference makes the
ir

approaches
and
preferences
to subjectivity

and inter
-
subjectivity differ. This article investigates the
consequences of this diametrical methodological and theoretical starting point when
applied to empirical phenomena. How do a) their different approach to subjectivity and
inter
-
subjectivity shap
e b) how dialogism and phenomenology shape c) our perception of
empirical phenomena such as language and its
use
?
To illustrate the difference between
different approaches illumination of empirical phenomena
, we
will begin by illustrating

how
different
sta
rting point
s

can color terms and perspectives.



Time


is once more a
n

appropriate

example
.

For Cassirer and Bakhtin their looong
historical perspective was intrinsically part of their understanding of intersubjectivity.
On
the other hand,
Heidegger,
a
par
ticipant in the phenomenological discussion, “believes
that we […] can only understand the phenomenon of time from our mortal or finite
vantage point” (Alweiss 2002: 117). Taking a subjective, rather than inter
-
subjective
approach, “time ‘is’ only for a be
ing that lives with an awareness of its own mortality”
(ibid.: 118). This perception of time was based on the necessity of using our death as
individuals, rather than eternity, as an understandable point of departure against which to
understand time (Heide
gger 1924, translated by Alweiss 2002
: 118
).



T
ime


in this particular phenomenological interpretation, is thus tightly linked with the

individual subjective

,
both
concepts
informing the other. However, an individual
,
subjective

experience of death (an
d thus time) is no more within our human grasp than
eternity
:

“death comes from outside and transforms us into the outside” (Satre 1969,
quoted by Alweiss 2002).

Th
is

critique
of an individual
concept of time refers to the
scope and boundaries of a subject
ive approach.


A
n inter
-
subjective approach to a similar timeline is however not open for the same
criticism.
Even though we may never experience the phenomenon of our own death, w
e
can perceive the death of others
:

w
e can know and feel
quite tangibly
wha
t
an
other

s
death
mean for me and
for
us.

I
ndividual death in general

(
as abstracted from
that of
others
)

and
our own death

(a
s a reflection of
others
) become

meaningful with
in

this
approach. Having a reference for ‘death(s)’ thus gives a reference for a s
imilar timeline

-
t
he
only
difference
being
the starting point on the subjective/inter
-
subjective axis.


Viewing time from an intersubjective stance
highlights
the plurality of time. Using a
metaphor from computer science, our ‘environment’ can be understoo
d as



8

cf. the rights of the collecti
ve vs. the rights of individuals


6

‘multithreaded’
,
not only ‘single
-
threaded’
.

S
everal independent timelines and flow of
control run concurrently, parallel and cross each others’ paths.


A subjective, individual approach might also eventually

in their argument

support a
multithreaded

view of time and
a view
that such timelines cross, overlap and interact with
each other. But
, time’s multiplicity and heterogeneity would not be as glaringly apparent
from an individual, subjective stance as it is from an
intersubjective approach.

The
met
hodic starting point establishes a conceptual priority that consequently shapes our
theoretical perceptions.


Therefore,
understanding the priorities of different theories

is especially important in
empirical studies of
for instance
language
. In such stud
ies
only the
tip of the iceberg of
theoretical conclusions makes it to the surface
in
the
sea of empirical data
, the rest being
weighted down by the priority of other conclusions
.
9

But, crucially, t
his knowledge is not
only important in order to understand

empirical phenomena.
Flipping the coin,
the
reliefs
synthesized of theory and empirical data can
also
be read as a topographical map of
theories priorities.

Hence, both empirical phenomena and theories illustrate each other.

2.4 The semantics in dialogism



dialogic semantics

Focusing explicitly on the social character of language, dialogism has developed several
analytical concepts to illuminate the intricate, reciprocate relationships between language,
our thinking, interaction and culture. A central con
cept 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 lang
uage, we use the language of others in
order to compose our own perspective on reality. Thus,
in
dialogic studies (Evensen
2002, Bostad 2005), our thoughts, actions and ontologies 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 univers
al logic (figure left), the meaningful
references or ‘semantic relationships’ in words become their relationships to other social
actors and their texts, i.e. their 'inter
-
textual' role (figure right). 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.




9

In dialogism this multithreaded timeline is very evident in say models of overlapping, interacting
utterances, dialogues, discourses, languages, cultures, etc. The inter
-
subjective timeline permeates the
dialogic perspect
ive.


7

a tree
2
+
2
=
4
e
=
mc
2
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
2
+
2
=
4
2
+
2
=
4
2
+
2
=
4

Figures: The two simplistic models try to present the
diff
erence in focus and taxonomy of
the two research approaches; the models do not present the approaches in themselves.

Left side illustrates simplistic models
of how a subjective, individual approach
exemplifies

index and logic oriented semantics.

Right
side illustrates
how an
instersubjective approach can exemplify
social, inter
-
textual semantics. The arrows
indicate the meaningful

relationships that the different semantics focus on.


Viewing language and words neither as individual property nor asocial
realities, social
forces become a primary reality in language. Social structures are seen not only side by
side with language, but also as within language itself. Core aspects of language are
viewed as sedimented patterns of interaction. Several separate l
inguistic traditions pick
up on this point: Socio
-
constructionistic genre theory understands genres as ‘recurrent
rhetorical actions’ (Miller 1984, Berkenkotter 1993). Other research on
‘grammaticalization’ tries to describe how “yesterday’s pragmatics is
today’s syntax”
(Givon 1979).


In order to understand the make
-
up of languages, it therefore becomes essential to
understand the social interaction and relationships that languages are built up along side.
Interaction among language users, patterns of recu
rring rhetorical actions, practices, and
other social dynamics all become dimensions potentially reflected within language. And
since these languages are the ones
we
in turn use to form our individual utterances and
perspectives on the world, the
spiral
is

completed: social patterns of interaction shape
language that shape individual actions and thoughts that in turn shape social interaction.


Turning to programming languages, a dialogic approach and social semantic taxonomy
can seem irrelevant if programmi
ng is deemed solely utilitarian and asocial.
Social
dogma and stigma greatly encourages such a view on programming languages, and if a
subjective approach and
a conventional semantic orientation

is taken towards this
particular, empirical domain, it is mor
e than likely that these views will only be enforced.
However, though quite common, an asocial perception of programming languages and
their use is
not the only meaningful take on the subject
.
Programming can also be

8

understood as highly social a
s for inst
ance
the o
pen
s
ource
movement
has demonstrated
to
its
fullest. Software is an inter
-
text, and the words of programmers reference not only
logical functionality, but also echo the voices of other programmers. The more complex
and socially entangled these in
ter
-
textual programs become, the more important it
becomes to understand this social dimension programming languages.
10


3. Empirical analysis

3.1
S
cope of
a
nalysis

Morphology in object
-
oriented programming is a
complex phenomenon, and the
empirical scope o
f this study must therefore be specified and constrained.


The first constraint regards the kind of words to be studied. In object
-
oriented

programming there are several ways to compose and use words.
First and a
t the core is a
set of

‘reserved words and o
perators’ defined and made significant by the compiler,
interpreter

and/or platform. These words constitute a lexical skeleton in all object
-
oriented

languages.
Second and f
leshing out a body around this skeleton is a set of words
that we here will

describ
e as ‘types’. In this study we use a broad definition of types to
mean all kinds of

words that can be defined and referenced by any user alike.
Third and
w
ithin the reach of this body

of words are other similar
mechanisms
to
describe
and refer
to
functiona
lity
. Relevant examples of

such
mechanisms
are remote objects/methods (as
in CORBA, RPC and RMI)
and
web

services.


In this study we will only focus on
the second category: ‘
types

. The reason for excluding

the first category, the lexical core,
is that the
se words are
rarely, and if so very limitedly,
defined by ordinary users. The reason for excluding
the second category, similar
mechanisms,
is that these methods primarily use syntactical, not

morphological forms to
express
refer
ences

to other programmers’

texts.


Second
ly
, there are several nuances in the way types can be defined and referred: In
Python types can be structured as both methods and classes, while in Java all types must
be defined as classes; import and package statements can shorten type
-
nam
es; object
variables at different levels can function as ‘proforms’ or morphological placeholders;
inner classes are stored differently than normal classes; etc. etc. However, all these
nuances adhere to the same overall morphological form. We will therefo
re not address all
such details, but only the general, overall structure of type references.


Third, this study approaches type morphology with a dialogic perspective and a social
semantic taxonomy. Therefore, this study will primarily focus on the social
ly oriented
actions and practices that directly surround the morphological forms, and secondarily on
the symbolic morphological forms. This approach differs substantially from traditional
linguistic descriptions such as BNF and traditional linguistics that

derive their
descriptions of morphology primarily from the symbolic forms (Wikipedia a,b 2006).




10

So, in order to fully understand the reciprocate influence between programming languages and
programmers’ actions, thoughts and ontologies, it is crucial to at the same time understand the reciprocate
relationships between programming languages, pro
grammer interaction, and culture.


9


With this scope, this article
analyses
two different morphological forms in object
-
oriented
programming:
‘pc
-
based morphology’
in Java and Python and ‘
web
-
bas
ed morphology

in
an
experimental programming language theJ (Ørstavik 2006).

3.2
The path to
the words of others
:
describing pc
-
based

morphology

When writing a program in Java or Python, a programmer uses words that other

programmers have defined as underl
ying resources in his own text. As mentioned earlier,

these words can be operators and ‘reserved words’ defined by the programmers who

made the compiler, interpreter and/or platform (figures: grey), or types defined by any

other programmer (figures: italic
). These words are fundamental and indispensable for all

meaningful program
texts.




T
ype
name
s

(such as
org.jdom.Element

in
HelloJDOM
and

xml.dom.minidom

in
minidomPrinter
)
are always path
-
relative

in Java and Python
.

P
ath
-
relative

means that all type references
depend on the context of a path delineating a certain group of texts, and type names must
be interpreted within this inter
-
textual context. The act of wording type references is
therefore no
t only to a) explicitly formulate a type name consistent with a morphological
pattern. Implied in this act are also the acts of b) obtaining a resource (for instance
downloading a .class
-

or .py
-
file) in which another programmer has defined the type and
c)

updating the path settings
(i.e.
CLASSPATH

or
PYTHONPATH
)
to associate words with
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);


}


}

}

A Java clas
s called
HelloJDOM
.

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(do
cument
)


A Python module called
minidomPrinter
.


10

resources.
PC
-
based
morphology can thus be seen as a compound act: a) write a word, b)
obtain the word text, and c) update
the
path

on your PC
.


This individual, compound ac
t of using other programmers’ words is not limited to a
single step. A programmer can use another programmers’ word that in turn uses yet other
programmers’ words, etc. etc.
The morphological system

thus creates relationships
between programmers that span
several individual words and actions.

class Strange
{
while
(

)

..
.
}
class Strange
{
while
(

)

..
.
}
class Strange
{
while
(

)

..
.
}
class
OtherE
{
while
(

)

..
.
}
class Thing

{
while
(

)

..
.
}
class Strange
{
while
(

)

..
.
}
class Some

{
while
(

)

..
.
}
class
ClassE
{
while
(

)

..
.
}
class
ClassB
{

ClassD
d
=

ClassC
.
work
()
;
}
class
MyClass
{

ClassA
a
=

ClassB
.
work
()
;
}
class
ClassC
{
if
(

)

..
.
}
class
ClassA
{

ClassC
c
=

ClassE
.
do
()
;
}
class
ClassD
{
for
(

)

..
.
}

Figure: Words
are
interpreted in an inter
-
textual context.


In principle and contrary to popular belief, words such as types in a program text are
therefore
not specific to one particular
interpretation:
p
rogram words should not be
mistaken for fixed indices to predetermined, universal functionality. The meaning of a
word such as a type name must be determined
within
a path, and setting up different
paths around the same program text thus a
llow for different interpretation of the same
words.
11

Program words rely on each other in order to function. Hence, program words
can be viewed as
inter
-
reliant
voices that
need each other in order to make sense and that
echo across inter
-
textual webs of w
ords
.

O
nly
when situated
in inter
-
textual environments
enabling
concrete

interpretation

of
words
do the texts become programs and start (to
make sense)
.

class
MyClass
{

ClassA
a
=

ClassB
.
work
()
;
}
?
?
?
?

Figures: Undetermined

meaning potential in program

words.





11

If this path is broken, problems occur, and broken paths is the source of much aggrevation.


11

3.3
Social int
eraction

and dynamics of
pc
-
based
morphology

The value and usefulness of
using others’ words
cannot be understated. To be able to
quickly and simply instantiate objects and invoke methods that other programmers have
spent countless of hours developing is a
s enabling in programming as the concept of a
round leather ball is in soccer. Also, to be able to delineate a space in which these words
can be used with a specific path setting does as much for programmers as the concept of
an enclosed pitch with two goa
ls does for soccer players.


The reason, as might be guessed from the soccer analogue, is that this morphological act
enables positive and competitive interaction among programmers. By rounding up
programmable thoughts in types easily referable as words, a

programmer can build his
game with the input of other programmers working as his team mates. Switching to the
social semantic taxonomy of dialogism, a programmer can construct his perspective on
the world reusing ‘fractions’ of other programmers’ code. Th
e previous examples
HelloJDOM
and

minidomPrinter

can thus be seen as
textual,

programmed
composition
s

or

polyphonies

, where meaning is not
just an individually formed idea, but a product

or
mosaic
of social collaboration

in a cultural sphere
.


class Strange
{
while
(

)

..
.
}
class Strange
{
while
(

)

..
.
}
class Strange
{
while
(

)

..
.
}
class
OtherE
{
while
(

)

..
.
}
class Thing

{
while
(

)

..
.
}
class Strange
{
while
(

)

..
.
}
class Some

{
while
(

)

..
.
}
class
ClassD
{
for
(

)

..
.
}
class
ClassE
{
while
(

)

..
.
}
class
ClassC
{
if
(

)

..
.
}
class
ClassB
{

ClassD
d
=

ClassE
.
work
()
;
}
class
ClassA
{

ClassC
c
=

ClassD
.
do
()
;
}
class
MyClass
{

ClassA
a
=

ClassB
.
work
()
;
}

However,
all that glitters is not gold
. Several social, technical, ethical and practical
concerns are associated with path
-
relative type morphology.


F
irst
,

a
well known ethical concern relat
es

to ‘licensing terms’. When a programmer
ch
ooses to use another programmer’s word, he also
presupposes
that a text

defin
ing

the
word must be added to the path.
A

programmer do
ing

act a)

also
implies
do
ing

b) and c).
But, linked to these underlying texts
are ethical
,

legal, commercial, political and

cultural
terms
and licenses
. Using another programmer’s word therefore presupposes
accepting
or
breaking
the terms
of
both
the words directly used and
all
the words that these words
iteratively use.

“[Words are]
populated with the intentions of others


[1
]
, and
in
programming
these intentions
are
long chains of
both

technical functionality

and

social,
commercial and
cultural
terms and
agendas
.



12

A
s in soccer, the social game in programming is played to win. Using the words of others
means in programming
, as

in for example academia,

to accept the passes from certain
players and

choos
e

sides
. The programmer

behind
HelloJDOM
and

minidomPrinter

has in
effect chosen
to
side
with
the team
s

at ‘java.sun.com’, ‘
jdom.org
’ and ‘p
ython
.org’
.
These teams have their own
agenda and
terms associated with their words
, and
using
these teams


words
also
involve
s accepting
and pushing
their
agenda to a certain extent.


A second well known practical
, technical

and social
concern relates to chained
dependencies between words. Bu
ilding on the
minidomPrinter

example, a new program
text called
print
User

is set up to reference the
minidomPrinter
. This program text uses
words to directly refer to a
printDocument

function from
minidomPrinter
.



In order to

interpret the words in
print
User
, we need to see it in an inter
-
textual context.
In
print
User

printDocument

is another programme
d utterance
. In order to interpret
print
User
,
an inter
-
textual context
must
be
set up in which
printDocument

means some thing (
i.e. text):

b) obtain a file matching this description (
the above
minidomPrinter

is
a possible
,
but not
compulsory alternative
) and c) updat
e

the
PYTHONPATH

settings
to include this file
.
If
minidomPrinter

described above is used, it references
xml.dom.min
idom.

Therefore, if this
interpretation of
minidomPrinter

is used, the inter
-
textual context of
print
User

will now also
imply
xml.dom.minidom
.
Thus

a path with both a working definition of
minidomPrinter

and
xml.dom.minidom

must be set up.
Th
is

contextual
relationship
from
print
User
,
minidomPrinter

to
xml.dom.minidom

constitutes
a
dependency
chain.


class Strange
{
while
(

)

..
.
}
class Strange
{
while
(

)

..
.
}
class Strange
{
while
(

)

..
.
}
class
OtherE
{
while
(

)

..
.
}
class Thing

{
while
(

)

..
.
}
class Strange
{
while
(

)

..
.
}
class Some

{
while
(

)

..
.
}
package org
.
jdom
;
class
Element
{
while
(
...
)


...
}
class
HelloJDOM
{

org
.
jdom
.
Element
...


{

Exception

...
}
package java
.
lang
;
class
Exception
{
while
(
...
)


...
}
class
ClassD
{
for
(

)

..
.
}
class
ClassE
{
while
(

)

..
.
}
class
ClassA
{
for
(

)

..
.
}
class
ClassB
{
while
(

)

..
.
}

Figure:
Illustration of
chain of dependencies
around
HelloJDOM
.


As described in the above example a

programmer
using

another pro
grammer’s words

will
have to
weigh the benefits of using the word against the cost of
obtaining files and
setting
from

minidom
Printer

import

printDocument

document2
= "
<text> <line>hello again!</line> <line>ta ta..</line> </text>
"

printDocument
(document2)


A Python module called
printUser
.


13

up a

path
needed to realize a certain interpretation of these words.

If using a certain word
demands

obtain
ing

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
.

In addition to
these practical concerns, programmers place a certain amount of trust in each other when
they use each others


words an
d types. Several technical and practical barriers
stop
programmer
s

from
knowing
exactly what happen
s

when the flow of control
passes in
to
a
n externally defined word in
their
program
s. T
his
lack of insight applies even more so
when flow of
control iterative
ly
are
passed to words within words
.
If the programmer
does not trust other words with this control,
he probably
will not use

them
.

Chains of
dependencies thus also entail trust issues.


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
.
Hi
s
choice of words is therefore not only
concerned with
the words technical qualities, but
also
their ensuing
practical
tasks, ‘licensing terms’
, his
t
rust

in them, and other social
intentions
.

3.4
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 setting
s. Distributing the
language
in this manner establishes in practice a ‘
standard

inter
-
textual context

.
A
programmer can anticipate that w
ords
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 (a
2
)
, a programmer

can presume that action
s (b
_

and c
_
)
will
not be
needed;

when
referring to third party words (a
3
)
, a programmer can
presume that
actions
to
establish an
inter
-
textual setting (b
3
n

and c
3
n
)
is needed, and
in all contexts were his
programs/
word
s

are
used.


Th
ese

practical and soci
al concerns play an important role in shaping program literature.
A programmer using another programmer’s words orients not only towards the current
program text and its relationship to prior program texts or types.
T
he programmer
of
HelloJDOM

implicitly m
akes the choice to perform acts
(b3
n

and c3
n
) surrounding
org.jdom.Element

not only for himself and his own program, but

also
for
any
other

user or
programmer

who
wants to
us
e

HelloJDOM

as an application or type
.

On the other side, the
programmer of
minido
mPrinter

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 th
e

extended burde
n on future users of this word
that
HelloJDO
M

does.


This future burden of using a program text is
very
important in programming. A current
program text will potentially establish links to other program texts.
Thinking ahead
and

14

‘addressing future utterances’
is
sometimes
as vivid in many program te
xts as
programmer’s awareness
of
already
existing
program texts
.


B
ecause 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
f
orce’(Bakhtin 1981: 270)
in
languages using pc
-
based
morphology
emerge
.
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 floc
k towards the use of second party words. The social, practical

and

interactional structure of path
-
relativity combined with the distributors’ ability to set up a
default inter
-
textual context
thus
giv
es

a clear home
-
court advantage for the
social groups
ut
tering
second party words over technically equal or perhaps even better a
lternatives
from third parties.


O
n Ubuntu

(2006)
there is
a platform tool
to
ease
the practical
task
of
obtaining files and
updating path settings
:
apt
. With tools such as
aptitude
,
Ubuntu offers everyone the
ability to
semi
-
automate the process of
establishing new inter
-
textual environments
for
both Java and Python programs via the Internet

(b and c)
. However,
these tools are also
shipped with a standard setting, mainly
due to concer
ns of trust. Therefore, even though
apt

makes several steps as to simplify the practical tasks

of b) and c)
, the process is only
partially
automated
and still specifies a ‘standard inter
-
textual context’.

Ubuntu does
therefore not alter the pc
-
based morpho
logy in its programming languages, mainly
complements it with a web
-
based platform.

3.5
TheJ experiment and URL
-
types: Actions shaping morphology

Our experiment started with the development of a platform for programming multi agent
systems in Java

(Ørstavi
k 2005)
. One of the core issues we faced in this work 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
-
tex
tual contexts.


Due to the make up of the Java language morphology a
problem quickly arose

in our
project. W
hen one agent
want
s

another agent to
respond to a request
, they needed to
involv
e

word
s
/type
s

that
are

part of
one agent’s
inter
-
textual context, b
ut not
the other’s
.

There are many
known mechanisms
to work around this problem
:

type definitions can be
pass
ed

directly between agents
,

or
one
agent

can tell another agent
to alter
its
path

settings
. However,
such

mechanisms provide
alternative
s to type m
orphology that make
program texts more difficult and heavy
-
handed to read and write. Further
,
the
problem of
extra
-
contextual words/types
in multi agent systems
is in principle the same
practical,
social and technical
problem concerned with
PC
-
based
morpho
logy described earlier.


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
enabl
e

us to
reference
extra
-
contextual types and
tackle

chain
ed

dependencies between
such
types.
Based on the Java language w
e made an
experiment
al dialect called ‘theJ’


15

(Ørstavik 2006)

that
a.o.
extended

the
PC
-
based
morphology to also allow for types to be
referred
to
as
URL
s

(URL
-
types)
, a
n exten
sion of the

existing

morphological
form
s
.

Figure: To run this theJ program,

1) download
http://the.hist.no/CoreClasses/agentcore.jar
,

2) run
java
-
jar …/agentcore.jar http://the.hist.no/ thej.ExampleTwo http://ntnu.no
, and

3) hope that

the system is up and running
.


The
implementation
of
URL
-
types
(Løkke 2005)
extend
s

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.Elem
ent
, 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
.


The principal consequence of
this change in morphology
is
primarily linked to
t
he
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

echo
ing a
protocol
that describe
s

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,
potentially
using the web to
automat
e

the tasks b) and c) completely
, even
in
chained dependencies
.
Using a symbolic, morphological form to move actions in
to
morphology as described is making
“today’s pragmatics tomorrows syntax”
(Givon
1979)
.


However, this
move
leads to
problems with security and
a series of
primarily
social and
trust issues when the now quite centralized
control over
programmers
inter
-
tex
tual
context

is lost
. Possible solutions to these
security
problems
exists, but
have not been
implemented
. These issues need to be explored before widespread use of web
-
based
morphology can be supported.

But, this experiment is
not about producing a new
pr
ogramming language; the primary goal of this study is
to learn more about the
dialectics between human minds and languages.


package

thej;


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/jdom
-
1.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.t
aggThis
(
e.getMessage
()));


}
catch

(
Exception

e) {


System.out.println
(e);


}


}

}

A
theJ class
called
thej.ExampleTwo
.


16

By setting up a contrasting example this experiment
illustrate
both 1) how existing
morphology tacitly may have guided our minds a
nd perceptions and 2) how we can think
of program words in new ways.
12

This contrasting image creates a ‘hindsight’ view of
current pc
-
based morphology, a perspective that is very difficult to achieve only having
experienced existing programming language mo
rphology. By exploring new possibilities
limits in existing technical framework and mindsets highlight such phenomena as
second
and third
party status
, and the centrifugal power they bring with them.

Exploring
alternative, exotic linguistic forms made me a
ware that I was
continuously check
ing

the
standard library for words, even when
I already knew better suited
third party
alternatives.

4. Conclusion

4.1
How theory
has informed

our empirical
study

Applying
this
dialogic perspective on programming
language

should not be read as an
attempt to capture a somehow ‘truer


description of the world

of programming
. It is not.
U
sing
a

theoretical perspective

is a strategic choice
taken in order
to shed light on
certain
aspects or dimensions of
phenomen
a that other t
heoretical 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
language
s

is shaped and made to use
.


The ‘new’ phenomena captured can be described as 1) a hindsight view of current
practices and 2) an insight into what might come. The first, our hindsight view has
already been extensively described in the analysis chapter, and will not be pursued
furth
er. However, a few words can still be said about the second.


The difference between pc
-
based morphology and web
-
based morphology is both
technically and conceptually similar to the difference between pc
-
based and web
-
based
file systems for ordinary text d
ocuments. The sentrifugale power unleashed with the
advent of the Internet in the last decade has yet to be fully unleashed in programming
languages. This study shows that the changes are simple to implement technically. This
study also shows that the conc
ept in web
-
based morphology is simple enough for
individuals to handle. It remains to be seen if this sentrifugale power can be balanced
properly
in social interaction, especially with regards to security and issues of trust.


Having tested URL
-
types in ac
tion, what is most striking is the perception of the still
untapped potential of

third party programming

. The new morphological way of wording
and seeing types encourage
s

us to focus on
the
use of third party words. This has
direct
ed

our
research against

creating tools and services to support this form of interaction
among



12

Since this experimental language has not yet accumulated a big body of interaction and
practice, empirical data about interact
ion with URL
-
type is fairly limited. The data is
constricted mainly to experiences of a couple of programmers related to the project and
the subjective interpretations of our ‘old’ path
-
relative practices viewed in the light of a
new morphological concept.



17

programmers, directing our attention to
wikis for writing
program text directly online,
web
-
based compilers
and search engines
for programming texts
.
Such resources are
necessary to ful
ly support web
-
based morphology, but since this w
ork
has just begun
,
our
perception of the world with web
-
based morphology is
still misty.

4.3 How empirical
study has informed theoretical understanding

The Marxist social agenda and theoretical view underly
ing 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 of the author and not fully
understood until very late in this study, as can be
seen in
an
earlier version of this study
(Ørstavik
2006

ECAP)
.


The social agenda finds a clear philosophical ally in the open source movement. Both the
dialogic perspective and the open source movement advocate
for
freedom and openness
of language use, i
mplicitly
or explicitly
invoking
socialist
slogans such as ‘power to the
people’ etc. However, an interesting finding in this study is that

open source languages

such as the liberal Python on Ubuntu

employ the same centripetale forces to
almost
the
same
extent as commercially owned languages
. This illustrate that power is not only
accumulat
ed

for
monetary ends.


The social agenda in the dialogic tradition, an agenda that neither Cassirer nor
phenomenology theories use as their starting point, thus shapes
my
perception
of
programming languages and their morphology
in a way that I do not believe
a
more
subjective
study would do.
Assuming that a phenomenological or Casserian study would
stand out similarly against similar empirical backgrounds would be to und
erestimate the
consequences of the subtle, historical differences between these theories. Thus, b
oth
theoretical differences and the findings of this particular empirical study suggest that
D
ialogism should be understood as more than a subset of phenomenol
ogy
.

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
I
magination: 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.

C. Emerson (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. (Ed.) (2004).
Bakhtinian Perspectives on Lang
uage 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/


18

Cassirer E. (2006).
Form og Teknikk.
(In Folkvord I. (trans.), Hoel A.S.:
Form og Teknikk: Utvalgte
tekster
, 87
-
142 (Oslo:

Cappelen Akademisk Forlag)

Crowl
ey 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 argumentativ
e
writing.
Written Communication 19(3),
382
-
413
.

Givon (1979).
On 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
Heid
egger M., Taft R. (trans.):
Kant and the problem of metaphysics
, 5.ed., Bloomington: Indiana
University Press)

Lindholm T., Yellin F. (1999).
The Java(TM) Virtual Machine Specification (2
nd

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.)

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 a (2006). Backus
-
Naur_form.
Wikipedia, The Free Encyclopedia.
Retrieved June 20, 2006 from
http://en.wikipedia.org/wiki/Backus
-
Naur_form.

Wikipedia b (2006). Morphology (linguistics).
Wikipedia, The Free Encyclop
edia
. Retrieved June 20, 2006
from
http://en.wikipedia.org/wiki/Morphology_%28linguistics%29
.

Wikipedia (2007). Phenomenology.
Wikipedia, The Free Encyclopedia
. Retrieved
March 1
, 2
00
7

from
en.wikipedia.org/wiki/Phenomenology

Stanford (2007). Phenomenology.
Stanford Encyclopedia of Philosophy
. Retrieved
March 1
, 200
7

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_Orstavikjavazone2005.html
)

Ørstavik I. T. B. (ed.) (2006).
Site of theJ programming language
. Retrieved June 1, 2006, from
h
ttp://the.hist.no.