was können wir von rebol lernen?

90
Was kann Perl von Rebol lernen?

Upload: lichtkind

Post on 25-May-2015

654 views

Category:

Documents


4 download

DESCRIPTION

Rebol hat strikt überprüfte Datentypen und erlaubt einfache Definition einer eigenen DSL. Daher kennt es viele Kontexte und ist unglaublich ausdrucksstark. Rebolprogramme können so kurz werden, daß selbst Perl etwas davon lernen kann.

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