How programming language influence interaction and culture

How programming language
influence interaction and culture
Ivar Tormod Berg Ørstavik
HiST
Can morphology in programming languages
influence interaction among programmers?
HiST
Philosophy of Computer Science
• Floridi on the Philosophy of Information
(PI.a.i-ii)
• White 2004: the Philosophy of Programming
language
• Shute 2006: abstraction and the human
element
What are the reciprocate dialectics between
human minds and ICT?
HiST
What’s missing?
• Empirical examples
• That grounds and justifies our theories
But how to get that?
• Strategically choose social theories on
language and language use
HiST
Dialogism
• Language is socially constructed
• ”[Language] is populated with the intentions of
others”
• Actions and perceptions as compositions of
others voices.
HiST
Social semantic taxonomy
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
4+4=8
2+2=4
2+2=4
HiST
A social semantic focus
• Social structures are seen not only side by side
with language, but also as within language
itself.
• To understand language we need to understand
the interaction that surrounds it.
HiST
Analysis
How do programmers use the words of others?
» ’path-relative types’ in Python (and Java)
» ’URL-types’ in theJ
HiST
minidomPrinter.py
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>goodbye..</line></text>"
printDocument(document)
HiST
Path-relative type morphology
• a compound act:
a) write a word
b) obtain the word text
c) update path
class
Cla
Clas ssA {
sC c
Clas =
sE.d
}
o();
}
class C
lass
ClassD B {
d=
ClassC
.work();
}
class
Th
while ing {
(…)
...
class
St
while range {
(…
class
... ss )
Some} cla
class
St wh
{ wh Strange
ile (…
{
while rangile
e (…
)
(… cla
... { )
...
... } ) ss Strang
}
while
e{
}
(…)
...
class
}
Ot
while herE {
(…)
...
}
}
}
class MyClass {
ClassA a =
ClassB.work();
}
class
C
while lassE {
(…)
...
}
class
C
if (… lassC {
)
...
class
C
for (… lassD {
)
...
• Words interpreted within
– a path
– an inter-textual context
• Words depend on each other
to function and make sense
?
?
?
class MyClass {
ClassA a =
ClassB.work();
}
?
HiST
Social interaction with words
Path-relative type morphology does as much
for programming as the concept of a leather
ball and an enclosed pitch does for soccer.
Reciprocally programmers can ‘hide’
incomprehensible problematic details from
other programmers who can then ‘neglect’ to
learn and focus on these details (cf. Shute
2006).
HiST
Social interaction with words
• But there are practical, social and ethical
concerns.
• ’Terms’ and intentions are associated with
using others words
• Look ahead! Chains of dependencies between
words cause social and practical problems.
HiST
}
}
class
Th
while ing {
(…)
...
class
S
while trange {
(…)
class
...as
Som } cl
class
e { w s Strang
S whi
hile (… e {
while trangle
e (…
)
(…)cl
...as { )
...
s Stra
... }
}
ng
w
}
hile (… 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 ...
}
HiST
Second or third party?
• Issuing standard libraries fix many practical
problems.
• But programmers outside this sphere wanting
to team up still face problems.
• This makes it easier for programmers to use
the standard words, and harder for ’third
parties’ to get their voice heard.
HiST
Actions shaping morphology
• MAS – needed collaboration of Java code
across different inter-textual run-time
• In principle the same practical, social and
technical issues as at design-time
• Manual ’fixes’ not an option run-time
• Could we change how we use morphological
forms?
HiST
theJ
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.*;
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);
}
}
}
HiST
Morphology changing actions
• Changed the front-(compiler) and back-end
(JVM)
• Changes interaction in chained dependency
contexts
• Everyone are potential second parties
– Everyone is untrustworthy and a security risk
HiST
Morphology changing actions
• Resolves a technical problem using OO as an
inter-program language run-time
• Also, enables dangerous, but still freer use of
’third party words’
– No standard library!
– Replaced by a search engine
– Openness key, write code in wikis
• A new morphology gave a philosophical
hindsight into old morphology
HiST
“Language exerts hidden power,
like a moon on the tides.”
Rita Mae Brown
HiST