HiST How programming language influence interaction and culture Ivar Tormod Berg Ørstavik.

Post on 20-Jan-2016

217 views 0 download

transcript

HiST

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

• Strategically choose social theories on language and language use

But how to get that?

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

2+2 = 4

e = mc 2

a tree

a tree

a tree

a tree

a tree

a tree

a tree

4 + 4 = 8

2 + 2 = 4

2 + 2 = 4

2 + 2 = 4

2 + 2 = 4

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

• Words interpreted within– a path

– an inter-textual context

• Words depend on each other to function and make sense

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 (…) ... }

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 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 (…) ... }

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

theJpackage 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