Direkt zum Hauptbereich

Posts

Es werden Posts vom April, 2007 angezeigt.

Hochstapelei

Wissen Sie, was ein Stack ist? In der Informatik ist damit eine Datenstruktur gemeint. Auf einem Stack, zu deutsch "Stapel", können Sie Datenelemente ablegen und wieder entfernen. Ein Stack organisiert die Datenablage in einer Form, die man mit "last in, first out" bezeichnet: Das letzte auf einem Stapel abgelegte Element ist auch das erste, das Sie wieder vom Stapel nehmen können. Für einen Stapel ist eine Handvoll Methoden definiert. Der Konstruktor, der einen Stack erzeugt; eine push-Methode, mit der Sie ein Element auf dem Stack ablegen können; eine top-Methode, die Ihnen verrät, was "oben" auf dem Stack liegt (das Element verbleibt auf dem Stack); eine pop-Methode, die Ihnen das oberste Element vom Stack entfernt; und eine is_empty-Methode, mit der sich feststellen lässt, ob ein Stack leer ist oder nicht. Wenn Sie einen Stack in einer OO-Sprache umsetzen wollen, dann ist eine typische Vorgehensweise die Folgende: Sie suchen eine Datenstruktur, die Ih...

Breakpoint mit Farbrausch

Haben Sie auch schon von "Breakpoint 2007" gehört? Vorgestern machte mich Herr Arz auf die Meldung bei golem aufmerksam (" Breakpoint 2007 - Gewinner der Demo-Party stehen fest ", 11. April 2007). Das Team " Farbrausch " hat im Bereich "PC-Demo" den Titel geholt. Aus einer gerade mal 180 KByte großen ausführbaren Datei entzaubert "Farbrausch" einen 7minütigen Film -- mir verschlägt sowas den Atem. Ich habe mir das Video auf YouTube angeschaut. Es wirkt fast wie Hexerei! Machen wir einmal sehr ungünstige Annahmen, was die Bildqualität betrifft: 320 x 200 Bildpunkten mit 8 Bit für die Farbkodierung und 15 Frames pro Sekunde (fps). Das macht für einen etwa 7minütigen Beitrag (7 x 60 Sekunden = 420 Sekunden) eine Datenmenge von 3.225.600.000 Bits aus, sprich 403.200.000 Bytes, also ungefähr 400 MB. Das File kommt jedoch nur mit ca. 180 KB daher! Dem entspricht eine Kompressionsrate um den Faktor 2000 (400/0,18). Ein Kompressionsstandard wie...

Design by Contract in Practice

Design by Contract (DbC) is a very valuable specification technique -- I already posted about it in German ( Netze spannen mit Design by Contract ). However, you should be aware that DbC also tends to complicate matters if state is involved. In this case, we need a complementing approach. To give you a simple example, have a look at a thing called "Account". The "Account" is purely specified via pre- and post-conditions ( require and ensure ); "context" enables you to capture a context required for a subsequent post-condition. The code is written in a syntax close to Python. A contract precedes the method signature. class Account(object): ensure: self.balance == 0 def __init__(self) require: 0 context: balance = self.balance ensure: self.balance == balance - amount def withdraw(self,amount) require: amount > 0 context: balance = self.balance ensure: self.balance == balance + amount def deposit(self,amount) ...

Von Beruf Software Engineer

Na, was glauben Sie, wie Ihr Beruf als Software Engineer in 10, 20 Jahren aussehen wird? Zu Beginn des Wintersemesters 2006 habe ich meine Studierenden im Hauptstudium befragt, wie sie die Zukunft des Software Engineering in 10 Jahren sehen. Folgende Liste kam dabei heraus: mehr Konzeption von Software: Anforderungen, Modellierung Software aus Komponenten “zusammenstecken”, Code-Generierung mehr Planung und Organisation von Software-Projekten viel Planung und Kommunikation mit Kunden Hohe Qualitätssicherung bei Outsourcing der Programmierung Teamarbeit: internationale, verteilte Arbeit und Kommunikation Pflege, Weiterentwicklung, Optimierung von Altsystemen sicherer Arbeitsplatz: es entsteht immer mehr Software => Wartung neue Technologien, da HW immer leistungsfähiger wird Entwicklung mit leistungsfähigen CASE-Werkzeugen und IDEs Fortschritte in HMI, Webtechnologie, KI, Virtual Reality, … Notwendigkeit ständiger Weiterbildung es wird eine neue Programmiersprache geben => weniger...