SlideShare a Scribd company logo
What can Perl learn from Rebol ?
No Rebol Course
some hobby philosophy
Perl Philosophy


   TIMTOWTDI

 simple and possible

  context sensitive
Philosophy


  TIMTOWTDI

simple and possible

 context sensitive
Quote


    Take a dash of PERL, mix with the cross
  platform compatibilty of a Java, and make it
extremely easy for beginners to start coding, and
            you get the general idea.
A Hobby Philosopher
„Real“ Philosopher
Carl Sassenrath
Carl Sassenrath


- Apple, HP and Commodore
Carl Sassenrath


       - Apple, HP and Commodore

- Pantaray, American Multimedia, Videostream
Carl Sassenrath


       - Apple, HP and Commodore

- Pantaray, American Multimedia, Videostream

          - REBOL Technologies
Carl Sassenrath

    - Amiga OS, IOS, VisCorp ED

              - CDTV

- Amiga Logo, Next Gen. Forth, Rebol
- Distribution
- Browser
Left Click : Start Rebol App
Left Click : Start Rebol App
Rebol App
Rebol App
Rebol App
Rebol App
- Browser
Right Click : Get Meta Data
Rebol Editor
- Browser
Rebol Shell
Carl Sassenrath

    - Amiga OS, IOS, VisCorp ED

              - CDTV

- Amiga Logo, Next Gen. Forth, Rebol
Carl Sassenrath

    - Amiga OS, IOS, VisCorp ED

              - CDTV

- Amiga Logo, Next Gen. Forth, Rebol
●   Lisp, Forth, Logo and Self
●   Lisp, Forth, Logo and Self

●   Lightweight Distributed Computing
●   Lisp, Forth, Logo and Self

●   Lightweight Distributed Computing

●   programming-in-the-small (PITS)
PITS:

~ 800kB binary
1.8 MB for distribution

      Libs
      Tools
      Samples
      Docs
      Links
PITS:

     Remote Editor: 53
Daytime Server Deamon: 61
   bmp2png Converter
  TCP Port Scanner: 98
  Simple Clock App: 106
 Minimal Email Client: 130
Simple Picture Viewer: 132
PITS:

     Remote Editor: 53
Daytime Server Deamon: 61
   bmp2png Converter
  TCP Port Scanner: 98
  Simple Clock App: 106
 Minimal Email Client: 130
Simple Picture Viewer: 132
PITS:


view layout [
  f: field btn"Edit"[editor to-url f/text]
]
●   Lisp, Forth, Logo and Self

●   Lightweight Distributed Computing

●   programming-in-the-small (PITS)
●   Lisp, Forth, Logo and Self

●   Lightweight Distributed Computing

     ●   fighting software complexety
●   Lisp, Forth, Logo and Self

●   Lightweight Distributed Computing

     ●   fighting software complexety
Silent Scream: Rebel with a cause
Relative Expression-Based Object Language
Relative Expression-Based Object Language




        eval that like REBOL does:

              back to front
Relative Expression-Based Object Language




       the obvious, don't argue with that
Relative Expression-Based Object Language




             sounds like OOP ?
Relative Expression-Based Object Language



         ●   no OOP like Ruby or Perl 6
Relative Expression-Based Object Language



           ●   no OOP like Ruby or Perl 6

       ●   Object means here just „thing“
Relative Expression-Based Object Language




       That brings no meaning anyway :)

     There are same principles it's based on
Relative Expression-Based Object Language




      Sounds like a functional language ?
Relative Expression-Based Object Language




        (not pure) functional (since 2.0)
Relative Expression-Based Object Language
Relative Expression-Based Object Language


          ●   Thats's the main message
Relative Expression-Based Object Language


            ●   Thats's the main message

       ●   That's how Rebol syntax works
Relative Expression-Based Object Language


              ●   Thats's the main message

         ●   That's how Rebol syntax works

     ●   In Perl we call that context sensitive
Relative Expression-Based Object Language




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

                read %info.txt
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' ) ;
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' ) ;
welcome to the strange land
shock therapy
, forget all you know


            no variables
             no hashes
no precedence table (2 + 3 * 2 == 10)
             no builtins
          no Subroutinen
         sometimes scopes
   no name spaces (befor Rebol 3)
         no Regex (parse)
All is gone?
You have to know 4 concepts
4 Terms
     words:

 data types:


     series:

refinements:
4 Terms
     words:    typeless data container

 data types:


     series:

refinements:
4 Terms
     words:    variables, routines, buildins

 data types:


     series:

refinements:
4 Terms
     words:     variables, routines, buildins

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


     series:

refinements:
4 Terms
      words:     variables, routines, buildins

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

      series:

refinements:
4 Terms
      words:     variables, routines, buildins

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

      series:

refinements:
4 Terms
      words:     variables, routines, buildins

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

      series:       lists, hashes, code

refinements:
4 Terms
      words:     variables, routines, buildins

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

      series:       lists, hashes, code

refinements:       (@ / %) slices / return value
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
Perl   Rebol


$a++   a: a + 1
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));
Perl 6             Rebol

          loop     =>    forever
all, any none @a   =>   all, any []
         prompt    =>      ask
          slurp    =>      read

         no break in switch
         Pair als nativer Typ
    grammars, heavy usage of MMD
Meta Data

  REBOL [
    Title:
    Date:
    Version:
     ...
  ]
Meta Data

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

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

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

                 Library: [ ...
DSL for GUI

  view layout [
       text :rise_time
      button "Quit" #"q" [quit]
  ]
in Perl
use Tkx;

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

Tkx::pack(".b");

Tkx::MainLoop();
in Perl
use 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;
RebGUI

view layout [
     text :rise_time
    button "Quit" #"q" [quit]
]
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
DSL for Regex

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

     does

     func

    function
DSL for OOP



    make
Rebol 3

  Open Source

     Unicode

  Debug Hooks

Better GUI Objects
Ideas

Io::All

Perlapi

Modules

 Prima

More Related Content

What's hot

Programming in Computational Biology
Programming in Computational BiologyProgramming in Computational Biology
Programming in Computational BiologyAtreyiB
 
Unit 1-introduction to perl
Unit 1-introduction to perlUnit 1-introduction to perl
Unit 1-introduction to perl
sana mateen
 
Introduction to Modern Perl
Introduction to Modern PerlIntroduction to Modern Perl
Introduction to Modern Perl
Dave Cross
 
Power of Puppet 4
Power of Puppet 4Power of Puppet 4
Power of Puppet 4
Martin Alfke
 
Hacking with hhvm
Hacking with hhvmHacking with hhvm
Hacking with hhvm
Elizabeth Smith
 
Perl Basics with Examples
Perl Basics with ExamplesPerl Basics with Examples
Perl Basics with Examples
Nithin Kumar Singani
 
Yapc::NA::2009 - Command Line Perl
Yapc::NA::2009 - Command Line PerlYapc::NA::2009 - Command Line Perl
Yapc::NA::2009 - Command Line Perl
Bruce Gray
 
PyCon 2013 : Scripting to PyPi to GitHub and More
PyCon 2013 : Scripting to PyPi to GitHub and MorePyCon 2013 : Scripting to PyPi to GitHub and More
PyCon 2013 : Scripting to PyPi to GitHub and MoreMatt Harrison
 
Introduction to source{d} Engine and source{d} Lookout
Introduction to source{d} Engine and source{d} Lookout Introduction to source{d} Engine and source{d} Lookout
Introduction to source{d} Engine and source{d} Lookout
source{d}
 
Your Own Metric System
Your Own Metric SystemYour Own Metric System
Your Own Metric System
Erin Dees
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1Lin Yo-An
 
SPL to the Rescue - Tek 09
SPL to the Rescue - Tek 09SPL to the Rescue - Tek 09
SPL to the Rescue - Tek 09
Elizabeth Smith
 
Why Python (for Statisticians)
Why Python (for Statisticians)Why Python (for Statisticians)
Why Python (for Statisticians)
Matt Harrison
 
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
Puppet
 
Writing and using php streams and sockets tek11
Writing and using php streams and sockets   tek11Writing and using php streams and sockets   tek11
Writing and using php streams and sockets tek11
Elizabeth Smith
 
Thnad's Revenge
Thnad's RevengeThnad's Revenge
Thnad's Revenge
Erin Dees
 
PHP Web Programming
PHP Web ProgrammingPHP Web Programming
PHP Web Programming
Muthuselvam RS
 
Large scale nlp using python's nltk on azure
Large scale nlp using python's nltk on azureLarge scale nlp using python's nltk on azure
Large scale nlp using python's nltk on azure
cloudbeatsch
 
Unix command-line tools
Unix command-line toolsUnix command-line tools
Unix command-line toolsEric Wilson
 

What's hot (20)

Programming in Computational Biology
Programming in Computational BiologyProgramming in Computational Biology
Programming in Computational Biology
 
Unit 1-introduction to perl
Unit 1-introduction to perlUnit 1-introduction to perl
Unit 1-introduction to perl
 
Introduction to Modern Perl
Introduction to Modern PerlIntroduction to Modern Perl
Introduction to Modern Perl
 
Spl in the wild
Spl in the wildSpl in the wild
Spl in the wild
 
Power of Puppet 4
Power of Puppet 4Power of Puppet 4
Power of Puppet 4
 
Hacking with hhvm
Hacking with hhvmHacking with hhvm
Hacking with hhvm
 
Perl Basics with Examples
Perl Basics with ExamplesPerl Basics with Examples
Perl Basics with Examples
 
Yapc::NA::2009 - Command Line Perl
Yapc::NA::2009 - Command Line PerlYapc::NA::2009 - Command Line Perl
Yapc::NA::2009 - Command Line Perl
 
PyCon 2013 : Scripting to PyPi to GitHub and More
PyCon 2013 : Scripting to PyPi to GitHub and MorePyCon 2013 : Scripting to PyPi to GitHub and More
PyCon 2013 : Scripting to PyPi to GitHub and More
 
Introduction to source{d} Engine and source{d} Lookout
Introduction to source{d} Engine and source{d} Lookout Introduction to source{d} Engine and source{d} Lookout
Introduction to source{d} Engine and source{d} Lookout
 
Your Own Metric System
Your Own Metric SystemYour Own Metric System
Your Own Metric System
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1
 
SPL to the Rescue - Tek 09
SPL to the Rescue - Tek 09SPL to the Rescue - Tek 09
SPL to the Rescue - Tek 09
 
Why Python (for Statisticians)
Why Python (for Statisticians)Why Python (for Statisticians)
Why Python (for Statisticians)
 
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
 
Writing and using php streams and sockets tek11
Writing and using php streams and sockets   tek11Writing and using php streams and sockets   tek11
Writing and using php streams and sockets tek11
 
Thnad's Revenge
Thnad's RevengeThnad's Revenge
Thnad's Revenge
 
PHP Web Programming
PHP Web ProgrammingPHP Web Programming
PHP Web Programming
 
Large scale nlp using python's nltk on azure
Large scale nlp using python's nltk on azureLarge scale nlp using python's nltk on azure
Large scale nlp using python's nltk on azure
 
Unix command-line tools
Unix command-line toolsUnix command-line tools
Unix command-line tools
 

Similar to What we can learn from Rebol?

Programming Under Linux In Python
Programming Under Linux In PythonProgramming Under Linux In Python
Programming Under Linux In Python
Marwan Osman
 
Python: an introduction for PHP webdevelopers
Python: an introduction for PHP webdevelopersPython: an introduction for PHP webdevelopers
Python: an introduction for PHP webdevelopers
Glenn De Backer
 
Language-agnostic data analysis workflows and reproducible research
Language-agnostic data analysis workflows and reproducible researchLanguage-agnostic data analysis workflows and reproducible research
Language-agnostic data analysis workflows and reproducible research
Andrew Lowe
 
Docopt, beautiful command-line options for R, user2014
Docopt, beautiful command-line options for R,  user2014Docopt, beautiful command-line options for R,  user2014
Docopt, beautiful command-line options for R, user2014
Edwin de Jonge
 
Bioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introductionBioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introduction
Prof. Wim Van Criekinge
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
Rowan Merewood
 
Solid C++ by Example
Solid C++ by ExampleSolid C++ by Example
Solid C++ by Example
Olve Maudal
 
Php training100%placement-in-mumbai
Php training100%placement-in-mumbaiPhp training100%placement-in-mumbai
Php training100%placement-in-mumbai
vibrantuser
 
The Essential Perl Hacker's Toolkit
The Essential Perl Hacker's ToolkitThe Essential Perl Hacker's Toolkit
The Essential Perl Hacker's Toolkit
Stephen Scaffidi
 
Python (3).pdf
Python (3).pdfPython (3).pdf
Python (3).pdf
samiwaris2
 
Architecture | Busy Java Developers Guide to NoSQL | Ted Neward
Architecture | Busy Java Developers Guide to NoSQL | Ted NewardArchitecture | Busy Java Developers Guide to NoSQL | Ted Neward
Architecture | Busy Java Developers Guide to NoSQL | Ted Neward
JAX London
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesEelco Visser
 
Hadoop with Python
Hadoop with PythonHadoop with Python
Hadoop with Python
Donald Miner
 
Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018
Adam Tomat
 
Easy native wrappers with SWIG
Easy native wrappers with SWIGEasy native wrappers with SWIG
Easy native wrappers with SWIG
Javier Arturo Rodríguez
 
Basics PHP
Basics PHPBasics PHP
Apache Spark Workshop, Apr. 2016, Euangelos Linardos
Apache Spark Workshop, Apr. 2016, Euangelos LinardosApache Spark Workshop, Apr. 2016, Euangelos Linardos
Apache Spark Workshop, Apr. 2016, Euangelos Linardos
Euangelos Linardos
 

Similar to What we can learn from Rebol? (20)

Programming Under Linux In Python
Programming Under Linux In PythonProgramming Under Linux In Python
Programming Under Linux In Python
 
Python: an introduction for PHP webdevelopers
Python: an introduction for PHP webdevelopersPython: an introduction for PHP webdevelopers
Python: an introduction for PHP webdevelopers
 
Language-agnostic data analysis workflows and reproducible research
Language-agnostic data analysis workflows and reproducible researchLanguage-agnostic data analysis workflows and reproducible research
Language-agnostic data analysis workflows and reproducible research
 
Phpwebdevelping
PhpwebdevelpingPhpwebdevelping
Phpwebdevelping
 
Docopt, beautiful command-line options for R, user2014
Docopt, beautiful command-line options for R,  user2014Docopt, beautiful command-line options for R,  user2014
Docopt, beautiful command-line options for R, user2014
 
Bioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introductionBioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introduction
 
Avro
AvroAvro
Avro
 
Phpwebdev
PhpwebdevPhpwebdev
Phpwebdev
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
Solid C++ by Example
Solid C++ by ExampleSolid C++ by Example
Solid C++ by Example
 
Php training100%placement-in-mumbai
Php training100%placement-in-mumbaiPhp training100%placement-in-mumbai
Php training100%placement-in-mumbai
 
The Essential Perl Hacker's Toolkit
The Essential Perl Hacker's ToolkitThe Essential Perl Hacker's Toolkit
The Essential Perl Hacker's Toolkit
 
Python (3).pdf
Python (3).pdfPython (3).pdf
Python (3).pdf
 
Architecture | Busy Java Developers Guide to NoSQL | Ted Neward
Architecture | Busy Java Developers Guide to NoSQL | Ted NewardArchitecture | Busy Java Developers Guide to NoSQL | Ted Neward
Architecture | Busy Java Developers Guide to NoSQL | Ted Neward
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
 
Hadoop with Python
Hadoop with PythonHadoop with Python
Hadoop with Python
 
Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018
 
Easy native wrappers with SWIG
Easy native wrappers with SWIGEasy native wrappers with SWIG
Easy native wrappers with SWIG
 
Basics PHP
Basics PHPBasics PHP
Basics PHP
 
Apache Spark Workshop, Apr. 2016, Euangelos Linardos
Apache Spark Workshop, Apr. 2016, Euangelos LinardosApache Spark Workshop, Apr. 2016, Euangelos Linardos
Apache Spark Workshop, Apr. 2016, Euangelos Linardos
 

More from lichtkind

Perl 5.20: Feature, Kultur, Module, Werkzeuge
Perl 5.20: Feature, Kultur, Module, WerkzeugePerl 5.20: Feature, Kultur, Module, Werkzeuge
Perl 5.20: Feature, Kultur, Module, Werkzeuge
lichtkind
 
Perl 6 in Context
Perl 6 in ContextPerl 6 in Context
Perl 6 in Context
lichtkind
 
Wx::Perl::Smart
Wx::Perl::SmartWx::Perl::Smart
Wx::Perl::Smart
lichtkind
 
P6kontext2014
P6kontext2014P6kontext2014
P6kontext2014
lichtkind
 
Complete Programming
Complete ProgrammingComplete Programming
Complete Programming
lichtkind
 
P6 OO vs Moose (&Moo)
P6 OO vs Moose (&Moo)P6 OO vs Moose (&Moo)
P6 OO vs Moose (&Moo)
lichtkind
 
Perl 5 Quiz Chemnitz Edition
Perl 5 Quiz Chemnitz EditionPerl 5 Quiz Chemnitz Edition
Perl 5 Quiz Chemnitz Edition
lichtkind
 
P6oo
P6ooP6oo
P6oo
lichtkind
 
Writing Perl 6 Rx
Writing Perl 6 RxWriting Perl 6 Rx
Writing Perl 6 Rx
lichtkind
 
Wundertüte Perl
Wundertüte PerlWundertüte Perl
Wundertüte Perl
lichtkind
 
Perl 6 Regex und Grammars
Perl 6 Regex und GrammarsPerl 6 Regex und Grammars
Perl 6 Regex und Grammars
lichtkind
 
Perl 6 Datastructures
Perl 6 DatastructuresPerl 6 Datastructures
Perl 6 Datastructures
lichtkind
 
Perl 6 Datenstrukturen
Perl 6 DatenstrukturenPerl 6 Datenstrukturen
Perl 6 Datenstrukturen
lichtkind
 
Document Driven Development
Document Driven DevelopmentDocument Driven Development
Document Driven Development
lichtkind
 
Modern wx perl
Modern wx perlModern wx perl
Modern wx perl
lichtkind
 
Bettereditors
BettereditorsBettereditors
Bettereditorslichtkind
 
Hgit
HgitHgit
Hgit
lichtkind
 
Perl Testing
Perl TestingPerl Testing
Perl Testing
lichtkind
 
Perl in der Wiki
Perl in der WikiPerl in der Wiki
Perl in der Wiki
lichtkind
 

More from lichtkind (20)

Perl 5.20: Feature, Kultur, Module, Werkzeuge
Perl 5.20: Feature, Kultur, Module, WerkzeugePerl 5.20: Feature, Kultur, Module, Werkzeuge
Perl 5.20: Feature, Kultur, Module, Werkzeuge
 
Perl 6 in Context
Perl 6 in ContextPerl 6 in Context
Perl 6 in Context
 
Wx::Perl::Smart
Wx::Perl::SmartWx::Perl::Smart
Wx::Perl::Smart
 
P6kontext2014
P6kontext2014P6kontext2014
P6kontext2014
 
Complete Programming
Complete ProgrammingComplete Programming
Complete Programming
 
P6 OO vs Moose (&Moo)
P6 OO vs Moose (&Moo)P6 OO vs Moose (&Moo)
P6 OO vs Moose (&Moo)
 
Perl 5 Quiz Chemnitz Edition
Perl 5 Quiz Chemnitz EditionPerl 5 Quiz Chemnitz Edition
Perl 5 Quiz Chemnitz Edition
 
P6oo
P6ooP6oo
P6oo
 
Writing Perl 6 Rx
Writing Perl 6 RxWriting Perl 6 Rx
Writing Perl 6 Rx
 
Wundertüte Perl
Wundertüte PerlWundertüte Perl
Wundertüte Perl
 
Perl 6 Regex und Grammars
Perl 6 Regex und GrammarsPerl 6 Regex und Grammars
Perl 6 Regex und Grammars
 
Perl 6 Datastructures
Perl 6 DatastructuresPerl 6 Datastructures
Perl 6 Datastructures
 
Perl 6 Datenstrukturen
Perl 6 DatenstrukturenPerl 6 Datenstrukturen
Perl 6 Datenstrukturen
 
Document Driven Development
Document Driven DevelopmentDocument Driven Development
Document Driven Development
 
Modern wx perl
Modern wx perlModern wx perl
Modern wx perl
 
Bettereditors
BettereditorsBettereditors
Bettereditors
 
Hgit
HgitHgit
Hgit
 
Neuperl6
Neuperl6Neuperl6
Neuperl6
 
Perl Testing
Perl TestingPerl Testing
Perl Testing
 
Perl in der Wiki
Perl in der WikiPerl in der Wiki
Perl in der Wiki
 

Recently uploaded

Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 

Recently uploaded (20)

Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 

What we can learn from Rebol?

  • 1. What can Perl learn from Rebol ?
  • 4. Perl Philosophy TIMTOWTDI simple and possible context sensitive
  • 5. Philosophy TIMTOWTDI simple and possible context sensitive
  • 6. Quote Take a dash of PERL, mix with the cross platform compatibilty of a Java, and make it extremely easy for beginners to start coding, and you get the general idea.
  • 10. Carl Sassenrath - Apple, HP and Commodore
  • 11. Carl Sassenrath - Apple, HP and Commodore - Pantaray, American Multimedia, Videostream
  • 12. Carl Sassenrath - Apple, HP and Commodore - Pantaray, American Multimedia, Videostream - REBOL Technologies
  • 13. Carl Sassenrath - Amiga OS, IOS, VisCorp ED - CDTV - Amiga Logo, Next Gen. Forth, Rebol
  • 16. Left Click : Start Rebol App
  • 17. Left Click : Start Rebol App
  • 23. Right Click : Get Meta Data
  • 27. Carl Sassenrath - Amiga OS, IOS, VisCorp ED - CDTV - Amiga Logo, Next Gen. Forth, Rebol
  • 28. Carl Sassenrath - Amiga OS, IOS, VisCorp ED - CDTV - Amiga Logo, Next Gen. Forth, Rebol
  • 29.
  • 30. Lisp, Forth, Logo and Self
  • 31. Lisp, Forth, Logo and Self ● Lightweight Distributed Computing
  • 32. Lisp, Forth, Logo and Self ● Lightweight Distributed Computing ● programming-in-the-small (PITS)
  • 33. PITS: ~ 800kB binary 1.8 MB for distribution Libs Tools Samples Docs Links
  • 34. PITS: Remote Editor: 53 Daytime Server Deamon: 61 bmp2png Converter TCP Port Scanner: 98 Simple Clock App: 106 Minimal Email Client: 130 Simple Picture Viewer: 132
  • 35. PITS: Remote Editor: 53 Daytime Server Deamon: 61 bmp2png Converter TCP Port Scanner: 98 Simple Clock App: 106 Minimal Email Client: 130 Simple Picture Viewer: 132
  • 36. PITS: view layout [ f: field btn"Edit"[editor to-url f/text] ]
  • 37. Lisp, Forth, Logo and Self ● Lightweight Distributed Computing ● programming-in-the-small (PITS)
  • 38. Lisp, Forth, Logo and Self ● Lightweight Distributed Computing ● fighting software complexety
  • 39. Lisp, Forth, Logo and Self ● Lightweight Distributed Computing ● fighting software complexety
  • 40.
  • 41. Silent Scream: Rebel with a cause
  • 43. Relative Expression-Based Object Language eval that like REBOL does: back to front
  • 44. Relative Expression-Based Object Language the obvious, don't argue with that
  • 45. Relative Expression-Based Object Language sounds like OOP ?
  • 46. Relative Expression-Based Object Language ● no OOP like Ruby or Perl 6
  • 47. Relative Expression-Based Object Language ● no OOP like Ruby or Perl 6 ● Object means here just „thing“
  • 48. Relative Expression-Based Object Language That brings no meaning anyway :) There are same principles it's based on
  • 49. Relative Expression-Based Object Language Sounds like a functional language ?
  • 50. Relative Expression-Based Object Language (not pure) functional (since 2.0)
  • 52. Relative Expression-Based Object Language ● Thats's the main message
  • 53. Relative Expression-Based Object Language ● Thats's the main message ● That's how Rebol syntax works
  • 54. Relative Expression-Based Object Language ● Thats's the main message ● That's how Rebol syntax works ● In Perl we call that context sensitive
  • 55. Relative Expression-Based Object Language read http://www.perl.org/learn.html read %info.txt
  • 56. 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' ) ;
  • 57. 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' ) ;
  • 58. welcome to the strange land
  • 60. , forget all you know no variables no hashes no precedence table (2 + 3 * 2 == 10) no builtins no Subroutinen sometimes scopes no name spaces (befor Rebol 3) no Regex (parse)
  • 62. You have to know 4 concepts
  • 63. 4 Terms words: data types: series: refinements:
  • 64. 4 Terms words: typeless data container data types: series: refinements:
  • 65. 4 Terms words: variables, routines, buildins data types: series: refinements:
  • 66. 4 Terms words: variables, routines, buildins data types: integer, string, char, tuple, pair, block, series: refinements:
  • 67. 4 Terms words: variables, routines, buildins data types: integer, string, char, tuple, pair, block, money, file, url, email, tag, binary, date, time, issue series: refinements:
  • 68. 4 Terms words: variables, routines, buildins data types: integer, string, char, tuple, pair, block, money, file, url, email, tag, binary, date, time, issue series: refinements:
  • 69. 4 Terms words: variables, routines, buildins data types: integer, string, char, tuple, pair, block, money, file, url, email, tag, binary, date, time, issue series: lists, hashes, code refinements:
  • 70. 4 Terms words: variables, routines, buildins data types: integer, string, char, tuple, pair, block, money, file, url, email, tag, binary, date, time, issue series: lists, hashes, code refinements: (@ / %) slices / return value
  • 71. 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
  • 72. Perl Rebol $a++ a: a + 1
  • 73. 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));
  • 74. Perl 6 Rebol loop => forever all, any none @a => all, any [] prompt => ask slurp => read no break in switch Pair als nativer Typ grammars, heavy usage of MMD
  • 75. Meta Data REBOL [ Title: Date: Version: ... ]
  • 76. Meta Data File: Author: Email: Web: Rights: Requires: Purpose: { }, Comment: { }, Notes: { } History: [0.1.1 12-Oct-2008 "add to ... path" Library: [ ...
  • 77. DSL for GUI view layout [ text :rise_time button "Quit" #"q" [quit] ]
  • 78. in Perl use Tkx; Tkx::button(".b", -text => "Hello, world", -command => sub { Tkx::destroy(".") }, ); Tkx::pack(".b"); Tkx::MainLoop();
  • 79. in Perl use 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;
  • 80. RebGUI view layout [ text :rise_time button "Quit" #"q" [quit] ]
  • 81. 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
  • 82. DSL for Regex parse read http://www.gaisma.com/en/location/halle.html [ thru <td class="sunshine"><i> copy rise_time to </i> ]
  • 83. Functional DSL does func function
  • 84. DSL for OOP make
  • 85. Rebol 3 Open Source Unicode Debug Hooks Better GUI Objects