Transcript
Page 1: Was können wir von Rebol lernen?

Was kann Perl von Rebol lernen?

Page 2: Was können wir von Rebol lernen?

Kein Rebol Lehrgang

Page 3: Was können wir von Rebol lernen?

etwas Hobbyphilosophie

Page 4: Was können wir von Rebol lernen?

Perl Philosophie

TIMTOWTDI

simple and possible

context sensitive

Page 5: Was können wir von Rebol lernen?

Philosophie

TIMTOWTDI

simple and possible

context sensitive

Page 6: Was können wir von Rebol lernen?

Zitat

Take a dash of PERL, mix with the crossplatform compatibilty of a Java, and make it

extremely easy for beginners to start coding, andyou get the general idea.

Page 7: Was können wir von Rebol lernen?

A Hobby Philosopher

Page 8: Was können wir von Rebol lernen?

„Real“ Philosopher

Page 9: Was können wir von Rebol lernen?

Carl Sassenrath

Page 10: Was können wir von Rebol lernen?

Carl Sassenrath

- Apple, HP and Commodore

Page 11: Was können wir von Rebol lernen?

Carl Sassenrath

- Apple, HP and Commodore

- Pantaray, American Multimedia, Videostream

Page 12: Was können wir von Rebol lernen?

Carl Sassenrath

- Apple, HP and Commodore

- Pantaray, American Multimedia, Videostream

- REBOL Technologies

Page 13: Was können wir von Rebol lernen?

Carl Sassenrath

- Amiga OS, IOS, VisCorp ED

- CDTV

- Amiga Logo, Next Gen. Forth, Rebol

Page 14: Was können wir von Rebol lernen?

- Distribution

Page 15: Was können wir von Rebol lernen?

- Browser

Page 16: Was können wir von Rebol lernen?

Left Click : Start Rebol App

Page 17: Was können wir von Rebol lernen?

Left Click : Start Rebol App

Page 18: Was können wir von Rebol lernen?

Rebol App

Page 19: Was können wir von Rebol lernen?

Rebol App

Page 20: Was können wir von Rebol lernen?

Rebol App

Page 21: Was können wir von Rebol lernen?

Rebol App

Page 22: Was können wir von Rebol lernen?

- Browser

Page 23: Was können wir von Rebol lernen?

Right Click : Get Meta Data

Page 24: Was können wir von Rebol lernen?

Rebol Editor

Page 25: Was können wir von Rebol lernen?

- Browser

Page 26: Was können wir von Rebol lernen?

Rebol Shell

Page 27: Was können wir von Rebol lernen?

Carl Sassenrath

- Amiga OS, IOS, VisCorp ED

- CDTV

- Amiga Logo, Next Gen. Forth, Rebol

Page 28: Was können wir von Rebol lernen?

Carl Sassenrath

- Amiga OS, IOS, VisCorp ED

- CDTV

- Amiga Logo, Next Gen. Forth, Rebol

Page 29: Was können wir von Rebol lernen?
Page 30: Was können wir von Rebol lernen?

● Lisp, Forth, Logo and Self

Page 31: Was können wir von Rebol lernen?

● Lisp, Forth, Logo and Self

● Lightweight Distributed Computing

Page 32: Was können wir von Rebol lernen?

● Lisp, Forth, Logo and Self

● Lightweight Distributed Computing

● programming-in-the-small (PITS)

Page 33: Was können wir von Rebol lernen?

PITS:

~ 800kB Interpreter 1.8 MB für die Distribution

Libs Tools SamplesDocs Links

Page 34: Was können wir von Rebol lernen?

PITS:

Remote Editor: 53Daytime Server Deamon: 61

bmp2png KonverterTCP Port Scanner: 98einfache Uhr App: 106

minimaler Email Client: 130einfacher Bildbetrachter: 132

Page 35: Was können wir von Rebol lernen?

PITS:

Remote Editor: 53Daytime Server Deamon: 61

bmp2png ConverterTCP Port Scanner: 98Simple Clock App: 106

Minimal Email Client: 130Simple Picture Viewer: 132

Page 36: Was können wir von Rebol lernen?

PITS:

view layout [ f: field btn"Edit"[editor to-url f/text]]

Page 37: Was können wir von Rebol lernen?

● Lisp, Forth, Logo and Self

● Lightweight Distributed Computing

● programming-in-the-small (PITS)

Page 38: Was können wir von Rebol lernen?

● Lisp, Forth, Logo and Self

● Lightweight Distributed Computing

● fighting software complexety

Page 39: Was können wir von Rebol lernen?

● Lisp, Forth, Logo and Self

● Lightweight Distributed Computing

● fighting software complexety

Page 40: Was können wir von Rebol lernen?
Page 41: Was können wir von Rebol lernen?

Silent Scream: Rebel with a cause

Page 42: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

Page 43: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

eval that like REBOL does:

back to front

Page 44: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

the obvious, don't argue with that

Page 45: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

sounds like OOP ?

Page 46: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

● no OOP like Ruby or Perl 6

Page 47: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

● no OOP like Ruby or Perl 6

● Object means here just „thing“

Page 48: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

That brings no meaning anyway :)

There are same principles it's based on

Page 49: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

Sounds like a functional language ?

Page 50: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

(not pure) functional (since 2.0)

Page 51: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

Page 52: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

● Thats's the main message

Page 53: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

● Thats's the main message

● That's how Rebol syntax works

Page 54: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

● Thats's the main message

● That's how Rebol syntax works

● In Perl we call that context sensitive

Page 55: Was können wir von Rebol lernen?

Relative Expression-Based Object Language

read http://www.perl.org/learn.html

read %info.txt

Page 56: Was können wir von Rebol lernen?

Rebol Perl 5

read http://www.perl.org/learn.html use LWP::Simple;

get("http://www.perl.org/learn.html");

text: read %info.txt use File::Slurp; my $text = slurp( 'info.txt' ) ;

Page 57: Was können wir von Rebol lernen?

Rebol Perl 6

read http://www.perl.org/learn.html use HTTP::Client;

HTTP::Client.new.get("http://www.perl.org/learn.html");

text: read %info.txt my $text = slurp( 'info.txt' ) ;

Page 58: Was können wir von Rebol lernen?

Rebol

messages: read nntp://news.server.dom/comp.lang.rebol

Page 59: Was können wir von Rebol lernen?

Rebol

messages: read nntp://news.server.dom/comp.lang.rebol

image: read/binary http://www.page.dom/image.jpgwrite/binary %image.jpg image

Page 60: Was können wir von Rebol lernen?

welcome to the strange land

Page 61: Was können wir von Rebol lernen?

shock therapy

Page 62: Was können wir von Rebol lernen?

, vergiss was du weißt

keine Variablenkeine Hashes

Keine Vorrangtabelle (2 + 3 * 2 == 10)keine Builtins

keine Subroutinenmanchmal lexikalische räume

keine Namensräume (vor Rebol 3)keine Regex (parse)

Page 63: Was können wir von Rebol lernen?

Alles weg?

Page 64: Was können wir von Rebol lernen?

4 Begriffe müsst ihr verstehen

Page 65: Was können wir von Rebol lernen?

4 Begriffe

worte:

data types:

series:

refinements:

Page 66: Was können wir von Rebol lernen?

4 Begriffe

worte: typenloser Datenkontainer

data types:

series:

refinements:

Page 67: Was können wir von Rebol lernen?

4 Begriffe

worte: Variablen, Routinen, Builtins

data types:

series:

refinements:

Page 68: Was können wir von Rebol lernen?

4 Begriffe

worte: Variablen, Routinen, Builtins

data types: integer, string, char, tuple, pair, block,

series:

refinements:

Page 69: Was können wir von Rebol lernen?

4 Begriffe

worte: Variablen, Routinen, Builtins

data types: integer, string, char, tuple, pair, block,money, file, url, email, tag, binary, date, time, issue

series:

refinements:

Page 70: Was können wir von Rebol lernen?

4 Begriffe

worte: Variablen, Routinen, Builtins

data types: integer, string, char, tuple, pair, block,money, file, url, email, tag, binary, date, time, issue

series:

refinements:

Page 71: Was können wir von Rebol lernen?

4 Begriffe

worte: Variablen, Routinen, Builtins

data types: integer, string, char, tuple, pair, block,money, file, url, email, tag, binary, date, time, issue

serien: Listen, Hashes, Codeblöcke

refinements:

Page 72: Was können wir von Rebol lernen?

4 Begriffe

worte: Variablen, Routinen, Builtins

data types: integer, string, char, tuple, pair, block,money, file, url, email, tag, binary, date, time, issue

series: Listen, Hashes, Codeblöcke

refinements: (@ / %) slices / return value

Page 73: Was können wir von Rebol lernen?

Perl Rebol# => ;

{} => [] $var = => var:$var => :var

eval $var => var $var[3] => var/3

$var{'sub'} => var/sub sub() => sub

sub($p,$m) => sub p m

Page 74: Was können wir von Rebol lernen?

Perl Rebol

print => printsay => prin $var = => var:

Page 75: Was können wir von Rebol lernen?

Perl Rebol

$a++ a: a + 1

Page 76: Was können wir von Rebol lernen?

Perl Rebol

$a = 30 * 3.1415 / 180 sin($a) / cos($a) tangent 30

sin($a) / cos($a) tangent/radians 30

use Math::Trig; tan(deg2rad(30));

Page 77: Was können wir von Rebol lernen?

Perl 6 Rebol

loop => foreverall, any none @a => all, any []

prompt => ask slurp => read

kein break in switchPair als nativer Typ

grammars, viel MMD

Page 78: Was können wir von Rebol lernen?

Meta Data

REBOL [Title:Date:

Version:...

]

Page 79: Was können wir von Rebol lernen?

Meta Data

File: Author: Email: Web: Rights: Requires:

Purpose: { }, Comment: { }, Notes: { }

History: [0.1.1 12-Oct-2008 "add to ... path"

Library: [ ...

Page 80: Was können wir von Rebol lernen?

DSL for GUI

view layout [ text :rise_time

button "Quit" #"q" [quit]]

Page 81: Was können wir von Rebol lernen?

in Perluse Tkx;

Tkx::button(".b", -text => "Hello, world", -command => sub { Tkx::destroy(".") },);

Tkx::pack(".b");

Tkx::MainLoop();

Page 82: Was können wir von Rebol lernen?

in Perluse Prima qw(Application Button);

New Prima::MainWindow( text => "Hello, world", size => [ 200, 200] ,)-> insert( Button => centered => 1, text => "Hello, world", onClick => sub { $::application->close } ,);

run Prima;

Page 83: Was können wir von Rebol lernen?

RebGUI

view layout [ text :rise_time

button "Quit" #"q" [quit]]

Page 84: Was können wir von Rebol lernen?

DSL for Regex

expr: [term ["+" | "-"] expr | term] term: [factor ["*" | "/"] term | factor]

factor: [primary "**" factor | primary] primary: [some digit | "(" expr ")"]

digit: charset "0123456789"

probe parse "1 + 2 * ( 3 - 2 ) / 4" expr== true

Page 85: Was können wir von Rebol lernen?

DSL for Regex

parse read http://www.gaisma.com/en/location/halle.html [ thru <td class="sunshine"><i> copy rise_time to </i> ]

Page 86: Was können wir von Rebol lernen?

funktionale DSL

does

func

function

Page 87: Was können wir von Rebol lernen?

DSL für OOP

make

Page 88: Was können wir von Rebol lernen?

Rebol 3

Open Source

Unicode

Debug Hooks

bessere GUI Objekte

Page 89: Was können wir von Rebol lernen?

Ideen

Io::All

Contextual::Return

Prima

Page 90: Was können wir von Rebol lernen?

Ideen

Perlapi

Module

Distributionen


Recommended