Here is a first bunch of links concerning the perspectives of your Master Project. As you might remember we're talking about concepts like "Middleware", "Tangible Computing", "Programming", "Live Coding", "Digital Performance" etc..

It turned out that this is a much more time consuming task than I expected - partly, because it should be a GENERAL overview which at the same time shouldn't distract you from your main focus; partly, because such an overview is always personally biased, and I'll be trying to be as objective as possible :-)  

Therefore, in my first "bunch of links" I will focus on Programming. Additional bunches will follow.

 

Programming:

There is an endless number of different programming languages, but only some basic "paradigms"; also - as usual - there are "fashions" ...

Some of the main programming paradigms are (en.wikipedia.org is a good starting point for all of them):

• Functional Programming
• Imperative Programming
• Object Oriented Programming
• Declarative Programming
• Constraint Based Programming

Many languages are multi-paradigm, like Java or Lisp. We also have to distinguish between sequential programming and parallel (distributed) programming.

For mostly historical reasons, the most widespread paradigm is sequential imperative programming; hence it looks very "intuitive" to most people. Unfortunately, it's very error prone and not very robust; in particular, if you start to expand the imperative style to distributed programming it's getting really bad.

The other extreme is "functional programming". It's inherently parallel and very robust; for most people it looks (at least at the beginning) not that intuitive (except for people with a strong mathematical background).

Object Oriented Programming (OOP) is probably the most familiar paradigm right now. It sits somehow between the imperative style and distributed programming; with "pure" OO languages (like Smalltalk), the focus of computation is on "message passing".

In order to get the most exciting experience, and getting most productive, there are - IMHO - two basic features a programming language/environment should have: (1) dynamic, realtime interactivity (ideally: capability of live coding), and (2) programmability, i.e. it should be a "programmable" programming language. The latter means - roughly - the possibility to build domain specific languages (DSL) on top of the "main" language. Some people think that Language Oriented Programming (LOP) turns out to be the next big "Programming Paradigm".

Another important aspect for choosing a language is the availability of a professional integrated development environment (IDE), with features like code completion, syntax-sensitive editors, class- and library browsers, version management etc. etc.. Ideally, all this would be Open Source and cross-platform.

Finally, there should be a powerful "foreign function interface", and an appropriate set of domain specific libraries ("middleware", Multimedia APIs and appropriate Frameworks). In our case this means probably a C/C++ interface, and strong libraries for image processing, graphics, audio, video, networking, and physical computing.

With all this in mind, we should have a closer look at the following languages/IDEs (or better: language families):

Smalltalk

This is the "oldest" OOP language - it somehow introduced the concept into the community. There is only a remote similarity to current OOP languages like C++ or Java; Smalltalk - in this respect similar to Lisp, and unsimiliar to most other languages - has a theory behind it (Actors), and is essentially based on so-called "message passing". Insofar it's much closer to distributed languages like Erlang.

Having a strong theoretical background results in a lean, consistent implementation. One of the best supported implementations at the moment is Squeak, which is also part of the just launched OPCL project. Despite the fact that it looks (with its standard image) rather "childish", Squeak is a full-featured, powerful language and IDE, and has very good support for multimedia and networking. It's Open Source, and there are at least three interesting big applications right now, eToys, Seaside and Croquet. (For the latter one, see also here).

Other implementations are VisualWorks, GNU Smalltalk, etc.

There is also a Smalltalk "wrapper" around Cocoa - one of the main OSX Programming APIs - called F-Script, which somehow enables developers to programm OSX applications directly in Smalltalk.

A similiar, interesting implementation for the .NET Framework is Vistascript

Lisp

Lisp (== List Processing Language) is the second oldest "high-level" programming language (1958), invented as a tool for implementing lambda-calculus-based computer programming. There exist a lot of different "dialects"; the two main implementations right now are Common Lisp and Scheme.

"Pure Lisp" was a functional programming language. Today, both Common Lisp and Scheme are multi-paradigm languages, supporting functional, object-oriented, and imperative programming styles.

The real power of Lisp is its DSL-capacities, in particular its ability to get written in itself! There is a nice, short paper by Paul Graham, where this aspect of Lisp is discussed.

For a long time Lisp was considered as an AI-Language (Artificial Intelligence), and with the rise and fall of the AI-Hype, Lisp was - transitorily - forgotten. Today, there is a sort of revival, and more and more people realize the immense power of this programming language (You will find an excellent starting point here - read the comments!).

Whether Lisp (Common Lisp or Scheme) itself will survive, or some (new) developments like Qi or NewLisp, or whether none of them but one of the upcoming Metaprogramming Systems - who knows?

It's at least interesting, that in recent times several Lisp-based media programming tools have been (and are still) developed (like fluxus, impromptu, PWGL - more on these later), and - right now - Lisp seems a very reasonable choice for doing DSL-oriented prototyping.

A good starting point for Common Lisp is PCL (by P. Seibel - a free download is available) and the "Road to Lisp Survey"; for Scheme it's DrScheme.

Besides Ruby and Python, which integrated a lot of Lisp language constructs, there is also Clojure - a young, new scripting language targeting the JVM (Java Virtual Machine), meaning that you can write Lisp, and run Java ... 

Java

So here we go.

"The real romance is out ahead and yet to come. The computer

revolution hasn't started yet. Don't be misled by the enormous

flow of money into bad defacto standards for unsophisticated

buyers using poor adaptations of incomplete ideas."

- Alan Kay

Nach langem hin und her habe ich zumindest die ODE (0.9) unter Leopard zum Laufen gebracht.

Zunächst entpacken, dann:

./configure --disable-debug --enable-release

Anschließend in allen config-Dateien die Typ-Deklaration "uint32" entfernen! 

Mit "make; sudo make install" funktioniert es dann - zumindest bei mir :-)  

Wir haben als erste Form der Datenabstraction "Strukturen" kennengelernt - "positions", "students" etc.

Nicht jedem scheint dies so geläufig; also würde ich vorschlagen, daß der nächste Dienstag ganz im Zeichen der Vertiefung stehen sollte. Sektionen 6.5 - 6.7, sowie Sektion 7 (komplett) von HtDP wären dazu angesagt. Also: bitte bis nächsten Dienstag (incl.) durcharbeiten; am 27. 11. gibt's dann Übung 7.4 als Test :-)

Außerdem trägt Marcel am 27. über L-Systems vor ... 

Nagehan wrote a nice summary of her talk last week on Bruno Latour's Introduction to "Reassembling the Social":

Introduction Summary of the Book ‘Reassembling the Social’

French sociologist Bruno Latour intends to devise an alternative approach to social theory.
Latour’s goal is to redefine the notion of the social while going back to the traditional
meaning of the word ‘social’ itself and explaining the Latin root of the word as ‘to follow’.
He firstly emphasizes the metamorphosis of the two terms; science and social, by doubting the
existence of specific relations and orders that are combined together to form and function as a
society (p.2). According to Latour since both the social and the science is stable over years
there can not be a strong designation for the term ‘socio-logy’. Therefore he devises an
alternative definition of sociology by the inquiry of such questions as what society is and what
the word social means mainly and in order to reveal these inquiries he comments on two
different views on social theory where one of them is the common sense whereas the other is
the alternative approach taken into analysis throughout the book.

Beginning with the first approach, Latour defines it as the ‘sociology of the social’ in
which the actors of a predefined social ‘context’ are limited to the degree of taking actions
which can only be observed and that’s effects can only be explained by the trained eyes of
social scientists (p.4). In this approach ‘social’ is considered as a specific domain of reality
such as mathematics, physics etc. in where the scientist can observe the phenomenon on
material basis and establish some rules. By then, the limitation of the actor’s activity by social
scientists is inevitable when the observed one is already a defined pattern of actions. This so-
called specific domain of reality also deals mainly with the issues that can not be explained by
other domains such as psychology, law, economics etc. but rather it can enlighten the
remaining aspects of these domains. By this view it is generally believed that there are some
hidden forces in actor’s motivation while acting so and these forces can only be revealed by
certain existing rules of ‘sociology of science’.

The second approach, on which Bruno Latour establishes his alternative definition as
actor-network-theory, refuses to accept the specification of social context, social order,
distinct domain of reality and the stability of the social. Rather than accepting the social as the
predefined order, it embraces the idea that the social is the connecting elements of the actors’
interaction within themselves or their environment. Since ‘the actor’ is the determinant factor
for both the innovations he establishes and the method he uses, the actor is the one to be
followed in order to reach a consensus on social theory. In this context, Latour defines this
second approach as the “sociology of associations” or the “sociology of collective” (p. 9).

For actor-network theory Latour comes up with an acronym A.N.T as a definition to this
alternative approach and he adopts the idea of himself mimicking an ANT between the other
ANTs -actors- who must be followed and observed within the social. Rather than an absolutist
application, this approach brings along relativity as a means of analyzing accelerated
innovations of actors. The actors within this understanding, according to Latour, should not
also be limited to humans but also should be extended to non-humans. The actor can not be
reduced to objects; however, it should be understood within the context of different elements
influencing each other to create new associations. Relative to that context, he defines the
social as the “associations between heterogeneous elements” (p.5). He also grants the
differences of the actors as the root sources of new innovations within the social. The social
also can not be considered as a materialized object since it is established by “the connections
of things that are not themselves social” (p.5). From there arises the actor network defined in
Latour’s theory as the action connected together with all its affects of the surrounding and
then forming a network.

Bruno Latour also embraces French sociologist, criminologist and social psychologist
Gabriel Tarde as an early ancestor of ANT and mentions his definition of society as an
opposition to younger generation sociologist Durkheim (p.15). According to Tarde the
definition of the society is built up by the movements of the actors that act in a “law of
evolution” which presupposes series of irregular changes and dynamism within itself (p.14).
The substantial part of this evolution is not human beings but innovations within social
connection, created by aggregations over time.

In the first part of the book Bruno Latour addresses the reason of abstention to limit the
actors that ‘sort of beings’ living in the network.  He aims to explain new innovations by
setting up a mind that centers relativity. In the second part of the book Latour emphasizes the
ways to trace these new innovations by observing social connections. Finally he concludes by
defending the crucial fact of assembling the collective after assimilating the understanding of
society and definition of social.

References:
Latour, B. (2005) Reassembling the Social (pp.1-17). Oxford University Press.

Actually, in our last meeting in the "Evolutionary Computation" class we established three working groups, which are

You can find a nice and short summary/reference of Erlang programming language here:

Erlang Handbook. 

Tim-Christian gave a nice overview on the first chapter of Eduardo Kac's new reader "Signs of Life", which you can download here:

Robert Baruch wrote a nice introductory paper on Erlang – recommended to people who have already programming experience. Get it here.

Erlang Editor for NetBeans - ErlyBird 0.10.1 released: Caoyuan's Blog

« Previous Entries