Samstag, 9. Oktober 2010

 

Berkeley Bionics - eLEGS

Eine Anwendung der Robotik: Exoskelett für Rollstuhlfahrer. Super Sache!
Die Personen, die das in dem Video probieren sind sehr zuversichtlich und sprechen sogar davon, dass es jetzt zu gebrauchen ist. Ich glaube das nicht, aber trotzdem bin ich überzeugt, dass das Zukunft hat - bald.



Links:

Labels: ,


Mittwoch, 26. Mai 2010

 

Softwarezuverlässigkeit - "Warum explodierten Mariner 1, Ariane 5, ..." oder: "Was kümmern mich die Probleme der Datenverarbeitung"

Dieser Artikel von Ingolf Giese ist zwar schon etwas älter, aber er enthält eine Reihe interessanter Beispiele zu Fehlern in Softwaresystemen:
Warum explodierten Mariner 1, Ariane 5, ...
oder:
Was kümmern mich die Probleme der Datenverarbeitung

Labels: , ,


Donnerstag, 18. März 2010

 

Kompetenzmatrix - was muss ein Programmierer können?

Unter folgendem Link sind die Kompetenzstufen von Programmierern ganz gut zusammengefasst.
http://www.indiangeek.net/programmer-competency-matrix/

Es ist ein weiter Weg von Stufe 0 auf Stufe 3.

Labels: ,


Freitag, 5. Februar 2010

 

Google sagt dem IE6 den Kampf an

Microsoft ist schon zwei Browsergenerationen weiter, es gibt schon den Internet Explorer 8 (und IE7 natürlich). Dennoch verwenden immer noch viele den alten und sehr fehlerhaften IE6 - es sind derzeit laut Browser Version Market Share immer noch 20%. Immerhin ist der IE6 im August 2001 auf den Markt gekommen. Den IE7 gibt es seit 2006 und seit knapp einem Jahr gibt es den IE8.

Für Web-Entwickler macht der IE6 die meiste Arbeit. Vielleicht wäre es wirklich das Beste, auf den IE6 ganz zu verzichten. Vor einigen Jahren gab es ja auch immer einen Eintrag auf den Webseiten "best viewed with ...". Ich finde es gut, dass diese Meldungen selten geworden sind, aber vielleicht sollte man eine extra für den IE6 einbauen: "not viewed with IE6".

Da ich auch immer wieder Webseiten (mit-)entwickle, weiß ich, wovon ich spreche. Ein schönes CSS-Design wird zur Hölle, wenn man es auch für den IE6 zurechtbiegen muss. Ich hör nun auf damit, denn die Auftraggeber wollen zwar die Kunden, die den IE6 verwenden, sind aber nicht gewillt, das auch zu zahlen.


Weitere Infos gibt es hier:

Labels: , ,


Donnerstag, 3. Dezember 2009

 

Objektorientiertes Programmieren

Sie finden hier ein paar Informationen zum objektorientierten Programmieren und den von uns verwendeten Begriffen:
Es folgt ein Beispiel:

Aufgabe: Finden Sie Klassen bzw. Objekte zu folgenden Begriffen: Leo, Tiger, Samurai, Elefant, Taigon, Benjamin Blümchen, Tier, Löwe
Lösung: Beim Programmieren muss man aus einer Aufgabenstellung immer wieder Objekte und Klassen identfizieren, die man zur Implementierung benötigt. Man kann z.B. alle Subjekte der Aufgabenstellung suchen und sich dazu fragen "ist das ein Objekt oder sind das viele Objekte?". In letzterem Fall hat man einen Kandidaten für eine Klasse. Sonst ist es ein Objekt. Nicht alle Objekte werden für das Programm benötigt.
Bei diesem Beispiel ist nur eine Liste von Tieren und Namen gegeben. Namen sind normalerweise Objekte, die verschiedenen Tiere sind natürlich Klassen.
Wir werden also die Klassen Tier, Tiger, Löwe und Elefant haben. Die anderen Begriffe sind konkrete Namen. Weiters können wir die "is-a" ("ist-ein") Beziehung Tiger is-a Tier, Löwe is-a Tier und Elefant is-a Tier ausmachen.
Damit ergibt sich folgendes Bild:


Kästchen mit unterstrichenen Namen stellen konkrete Objekte dar.
Die strichlierten Pfeile stellen die Instanzierung dar. Sie sind in Pfeilrichtung zu lesen: Leo ist-ein-konkreter Löwe (Leo is-instance-of Löwe) oder Samurai ist-ein-konkreter Tiger.
Die Pfeile mit Dreiecksspitzen und durchgehenden Linien stehen für die Vererbung (is-a, ist-ein), Beispielsweise Löwe ist-ein Tier (Löwe is-a Tier).

Die Klassen könnte man so implementieren (z.B. Scrapbook):
class Tier {
String name;
public String toString() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

class Löwe extends Tier {

}

class Elefant extends Tier {

}

class Tiger extends Tier {

}

Löwe leo = new Löwe();
leo.setName("Leo");
Elefant benjamin = new Elefant();
benjamin.setName("Benjamin Blümchen");
Tiger samurai = new Tiger();
samurai.setName("Samurai");
Tiger taigon = new Tiger();
taigon.setName("Taigon");

System.out.println(leo);
System.out.println(benjamin);
System.out.println(samurai);
System.out.println(taigon);

Die Ausgabe könnte so aussehen:
Leo
Benjamin Blümchen
Samurai
Taigon


In Python könnte man das Beispiel so implementieren:
class Tier:
def __init__(self):
self.name = ""
def setName(self, name):
self.name = name
def __str__(self): # toString() in Java
return self.name

class Loewe(Tier):
pass

class Elefant(Tier):
pass

class Tiger(Tier):
pass

leo = Loewe()
leo.setName("Leo")
benjamin = Elefant()
benjamin.setName("Benjamin Blümchen")
samurai = Tiger()
samurai.setName("Samurai")
taigon = Tiger()
taigon.setName("Taigon");

print leo
print benjamin
print samurai
print taigon

Labels: , ,


This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]