Smalltalk vs. Java c Chris Burkert 2002. Smalltalk versus Java



Ähnliche Dokumente
Java-Schulung Grundlagen

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Grundlagen der Modellierung und Programmierung, Übung

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

3. Java - Sprachkonstrukte I

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

3. Java - Sprachkonstrukte I

1. Der Einstieg in Java. Was heißt Programmieren?

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java für C++ Programmierer

Java - Programmierung - Prozedurale Programmierung 1

3. Java - Sprachkonstrukte I

MiniJava-Sprachbericht Version 3.1

Java Lexikalische Struktur

5 Grundlagen der Java-Syntax

Java - Programmierung - Objektorientierte Programmierung 1

SE2-6. Übung Johannes Bürdek

Smalltalk. Gespräche über alltägliche, allgemeine und unwichtige Dinge. Smalltalk ist die Kunst zu reden, ohne zu denken.

Einführung in die Programmierung mit BlueJ

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

Java Spickzettel von Panjutorials.de

Gebundene Typparameter

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Java Einführung Abstrakte Klassen und Interfaces

Sprachvergleich C# / Java / C++

Datenbankanwendungsprogrammierung Crashkurs Java

Vorkurs Informatik WiSe 16/17

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Programmieren und Problemlösen Java-Sprachkonstrukte. Java-Sprachkonstrukte. Übung Altersberechner. Namen und Bezeichner. Namen und Bezeichner

II.4.2 Abstrakte Klassen und Interfaces - 1 -

1. Der Einstieg in Java

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Übungen Informatik I. JAVA - Einführung. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 Folie 1

Java für Computerlinguisten

SmallTalk - Eine kurze Einführung

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

Primitive Datentypen

C# im Vergleich zu Java

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

EINFÜHRUNG IN DIE PROGRAMMIERUNG

AuD-Tafelübung T-B5b

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Ausnahmebehandlung in Java

J.5 Die Java Virtual Machine

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Programmieren in Java

Vorkurs Informatik WiSe 17/18

Prinzipien Objektorientierter Programmierung

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Algorithmen und Datenstrukturen

Wiederholung aus SWE2

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java für Anfänger Teil 4: Anweisungen. Programmierkurs Manfred Jackel

Algorithmen und Datenstrukturen

3 Objektorientierte Konzepte in Java

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Pragmatik von Programmiersprachen

2 Programmieren in Java I noch ohne Nachbearbeitung

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Tutorium Rechnerorganisation

Modul 122 VBA Scribt.docx

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

II.4.4 Exceptions - 1 -

Praxis der Programmierung

RO-Tutorien 15 und 16

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

Java Idioms. Basic und Advanced Java Coding Style. Prof. Dr. Nikolaus Wulff

Diplomarbeit Antrittsvortrag

Javakurs 2013 Objektorientierung

Java I Vorlesung 6 Referenz-Datentypen

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Programmieren in Java

Transkript:

Smalltalk versus Java

Gliederung Einführung Geschichte sprachliche Aspekte technische Aspekte theoretische Aspekte praktische Aspekte Fazit

Einführung - Merkmale Objektorientierung

Einführung - Merkmale Objektorientierung Kapselung

Einführung - Merkmale Objektorientierung Kapselung Vererbung

Einführung - Merkmale Objektorientierung Kapselung Vererbung Blocks / Inner Classes

Einführung - Merkmale Objektorientierung Kapselung Vererbung Blocks / Inner Classes Plattformunabhängigkeit

Einführung - Merkmale Objektorientierung Kapselung Vererbung Blocks / Inner Classes Plattformunabhängigkeit Speicherbereinigung

Einführung - Merkmale Objektorientierung Kapselung Vererbung Blocks / Inner Classes Plattformunabhängigkeit Speicherbereinigung Reflexivität

Einführung - Beispiel - Java List party = new ArrayList(); Iterator it = party.iterator(); party.add( Beer ); party.add( Chips ); party.add( Dip ); while (it.hasnext()) { String string = (String)it.next(); System.out.println(string); } for(int i = party.size() - 1; i>-1; i ) { String string = (String)party.get(i); System.out.println(string); }

Einführung - Beispiel - Smalltalk party party := OrderedCollection with: Beer with: Chips with: Dip. party do: [ :each Transcript cr; show: each ]. party reversedo: [ :each Transcript cr; show: each ].

Geschichte - Java 1990 - öffentliche Diskussion über die Zukunft von SUN

Geschichte - Java 1990 - öffentliche Diskussion über die Zukunft von SUN 1992 - James Gosling OAK mit Maskottchen Duke

Geschichte - Java 1990 - öffentliche Diskussion über die Zukunft von SUN 1992 - James Gosling OAK mit Maskottchen Duke einfach, robust, leicht erlernbar, objektorientiert

Geschichte - Java 1990 - öffentliche Diskussion über die Zukunft von SUN 1992 - James Gosling OAK mit Maskottchen Duke einfach, robust, leicht erlernbar, objektorientiert optimiert für Computerchips, grafische Oberfläche

Geschichte - Java 1990 - öffentliche Diskussion über die Zukunft von SUN 1992 - James Gosling OAK mit Maskottchen Duke einfach, robust, leicht erlernbar, objektorientiert optimiert für Computerchips, grafische Oberfläche 1995 - Java Netscape-Integrierung

Geschichte - Java 1990 - öffentliche Diskussion über die Zukunft von SUN 1992 - James Gosling OAK mit Maskottchen Duke einfach, robust, leicht erlernbar, objektorientiert optimiert für Computerchips, grafische Oberfläche 1995 - Java Netscape-Integrierung 1996 - JDK 1.0

Geschichte - Java 1990 - öffentliche Diskussion über die Zukunft von SUN 1992 - James Gosling OAK mit Maskottchen Duke einfach, robust, leicht erlernbar, objektorientiert optimiert für Computerchips, grafische Oberfläche 1995 - Java Netscape-Integrierung 1996 - JDK 1.0 1997 - JDK 1.1 zunehmende Popularität durch kluges Marketing

Geschichte - Java 1990 - öffentliche Diskussion über die Zukunft von SUN 1992 - James Gosling OAK mit Maskottchen Duke einfach, robust, leicht erlernbar, objektorientiert optimiert für Computerchips, grafische Oberfläche 1995 - Java Netscape-Integrierung 1996 - JDK 1.0 1997 - JDK 1.1 zunehmende Popularität durch kluges Marketing 1998 - Java 2 JDK 1.2

Geschichte - Java 1990 - öffentliche Diskussion über die Zukunft von SUN 1992 - James Gosling OAK mit Maskottchen Duke einfach, robust, leicht erlernbar, objektorientiert optimiert für Computerchips, grafische Oberfläche 1995 - Java Netscape-Integrierung 1996 - JDK 1.0 1997 - JDK 1.1 zunehmende Popularität durch kluges Marketing 1998 - Java 2 JDK 1.2 1999 - Community Source License

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine 1970 - Xerox Palo Alto Research Center

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine 1970 - Xerox Palo Alto Research Center 1983 - ParcPlace Inc. Smalltalk-80 Cincom Visual Works

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine 1970 - Xerox Palo Alto Research Center 1983 - ParcPlace Inc. Smalltalk-80 Cincom Visual Works objektorientierte Programmiersprache

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine 1970 - Xerox Palo Alto Research Center 1983 - ParcPlace Inc. Smalltalk-80 Cincom Visual Works objektorientierte Programmiersprache leistungfähige Entwicklungsumgebung

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine 1970 - Xerox Palo Alto Research Center 1983 - ParcPlace Inc. Smalltalk-80 Cincom Visual Works objektorientierte Programmiersprache leistungfähige Entwicklungsumgebung Virtual Machine

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine 1970 - Xerox Palo Alto Research Center 1983 - ParcPlace Inc. Smalltalk-80 Cincom Visual Works objektorientierte Programmiersprache leistungfähige Entwicklungsumgebung Virtual Machine Garbage Collection

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine 1970 - Xerox Palo Alto Research Center 1983 - ParcPlace Inc. Smalltalk-80 Cincom Visual Works objektorientierte Programmiersprache leistungfähige Entwicklungsumgebung Virtual Machine Garbage Collection Zeigergeräte

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine 1970 - Xerox Palo Alto Research Center 1983 - ParcPlace Inc. Smalltalk-80 Cincom Visual Works objektorientierte Programmiersprache leistungfähige Entwicklungsumgebung Virtual Machine Garbage Collection Zeigergeräte 2D Rastergrafik

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine 1970 - Xerox Palo Alto Research Center 1983 - ParcPlace Inc. Smalltalk-80 Cincom Visual Works objektorientierte Programmiersprache leistungfähige Entwicklungsumgebung Virtual Machine Garbage Collection Zeigergeräte 2D Rastergrafik 1995 - Alan Kay / Dan Ingalls Squeak

Geschichte - Smalltalk 1967 - Alan Kay The Reactive Machine 1970 - Xerox Palo Alto Research Center 1983 - ParcPlace Inc. Smalltalk-80 Cincom Visual Works objektorientierte Programmiersprache leistungfähige Entwicklungsumgebung Virtual Machine Garbage Collection Zeigergeräte 2D Rastergrafik 1995 - Alan Kay / Dan Ingalls Squeak 1997 - ANSI NCITS J20-Kommite

sprachliche Aspekte - reservierte Wörter abstract boolean break byte byvalue case cast catch char class const continue default do double else extends false final finally float for future generic goto if implements import inner instanceof int interface long native new null operator outer package private protected public rest return short static super switch synchronized this throw throws transient true try var void volatile while

sprachliche Aspekte - reservierte Wörter abstract boolean break byte byvalue case cast catch char class const continue default do double else extends false final finally float for future generic goto if implements import inner instanceof int interface long native new null operator outer package private protected public rest return short static super switch synchronized this throw throws transient true try var void volatile while nil self super true false

sprachliche Aspekte - Kontrollstrukturen True iftrue: ablock ˆ ablock value. iffalse: ablock ˆ nil. False iftrue: ablock ˆ nil. iffalse: ablock ˆ ablock value.

sprachliche Aspekte - Kaskadierung party.with( Beer ); party.with( Chips ); party.with( Dip ); party.start();

sprachliche Aspekte - Kaskadierung party.with( Beer ); party.with( Chips ); party.with( Dip ); party.start(); party with: Beer ; with: Chips ; with: Dip ; start.

technische Aspekte - Virtual Machine - Java Stack Übergabe von Argumenten 4 Byte 4 GByte

technische Aspekte - Virtual Machine - Java Stack Übergabe von Argumenten 4 Byte 4 GByte Register pc Program Counter optop Operand Top frame Methodenkontext vars lokale Variable

technische Aspekte - Virtual Machine - Java Stack Übergabe von Argumenten 4 Byte 4 GByte Register Garbage Collection Heap Speicherbereich für neue Instanzen Zugriff über Referenzen Parallele Garbage Collection pc Program Counter optop Operand Top frame Methodenkontext vars lokale Variable

technische Aspekte - Virtual Machine - Java Stack Übergabe von Argumenten 4 Byte 4 GByte Register pc Program Counter optop Operand Top frame Methodenkontext vars lokale Variable Garbage Collection Heap Speicherbereich für neue Instanzen Zugriff über Referenzen Parallele Garbage Collection Methoden- & Konstantenbereich Bytecodes der Methoden Konstanten-Array

technische Aspekte - Virtual Machine - Smalltalk Interpreter Compiled Method Instruction Pointer Reciever & Argumente temporäre Variablen Stack

technische Aspekte - Virtual Machine - Smalltalk Interpreter Compiled Method Instruction Pointer Reciever & Argumente temporäre Variablen Stack ObjectMemory Erfragen der i ten Instanzvariable Übergeben der i ten Instanzvariable Erfragen der zugehörigen Klasse Anlegen eines neuen Objektes Anzahl der Instanzvariablen

technische Aspekte - Garbage Collection Reference Counting

technische Aspekte - Garbage Collection Reference Counting Perl Python Visual Basic Smalltalk-80

technische Aspekte - Garbage Collection Reference Counting Perl Python Visual Basic Smalltalk-80 Mark & Sweep

technische Aspekte - Garbage Collection Reference Counting Perl Python Visual Basic Smalltalk-80 Mark & Sweep Java (Sun) Eiffel Lisp Ruby

technische Aspekte - Garbage Collection Reference Counting Perl Python Visual Basic Smalltalk-80 Stop & Copy Mark & Sweep Java (Sun) Eiffel Lisp Ruby

technische Aspekte - Garbage Collection Reference Counting Perl Python Visual Basic Smalltalk-80 Stop & Copy Java (Microsoft) Mark & Sweep Java (Sun) Eiffel Lisp Ruby

technische Aspekte - Garbage Collection Reference Counting Perl Python Visual Basic Smalltalk-80 Mark & Sweep Stop & Copy Java (Microsoft) Generation scavenging Java (Sun) Eiffel Lisp Ruby

technische Aspekte - Garbage Collection Reference Counting Perl Python Visual Basic Smalltalk-80 Mark & Sweep Java (Sun) Eiffel Lisp Ruby Stop & Copy Java (Microsoft) Generation scavenging Smalltalk Java (Hotspot) Haskel Eiffel

theoretische Aspekte - Typsystem Java Typ steht zur Compilezeit fest Es exisiteren primitive Datantypen...... und Referenztypen

theoretische Aspekte - Typsystem Java Typ steht zur Compilezeit fest Es exisiteren primitive Datantypen...... und Referenztypen Smalltalk Typ steht zur Laufzeit fest Es existieren nur Objekte

theoretische Aspekte - Entscheidungsbaum - Smalltalk

theoretische Aspekte - Entscheidungsbaum - Java

theoretische Aspekte - Entscheidungsbaum - Java

praktische Aspekte - Entwicklungsprozess - Java Source *.java Compiler *.class Interpreter laufende Applikation

praktische Aspekte - Entwicklungsprozess - Java Source *.java Compiler *.class Interpreter laufende Applikation viele Einzelschritte, Try & Error zusätzlich benötigte Tools wie Browser, Debugger, etc.

praktische Aspekte - Entwicklungsprozess - Smalltalk Bytecode Image Interpreter laufende Applikation Source Compiler Bytecode

praktische Aspekte - Entwicklungsprozess - Smalltalk Bytecode Image Interpreter laufende Applikation Source Compiler Bytecode Kreislauf Integrierte Entwicklungsumgebung Verschmelzung von Inmplementierungs- und Testphase

praktische Aspekte - Plattformen - Smalltalk Windows NT/2000/XP Windows 95/98/ME Windows CE Linux BSD MacOS / MacOS X Solaris OS/2 BeOS NeXT DOS Acorn RISC Zaurus DEC Itsy Unixware SunOS ULTRIX RealIX SGI-IRIX Alpha OSF-1 HP-UX AIX HP-UX

Fazit www.whysmalltalk.com java.sun.com