SlideShare ist ein Scribd-Unternehmen logo
1 von 86
Downloaden Sie, um offline zu lesen
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

Weitere Àhnliche Inhalte

Was ist angesagt?

Programming in Computational Biology
Programming in Computational BiologyProgramming in Computational Biology
Programming in Computational Biology
AtreyiB
 
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
Matt Harrison
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1
Lin Yo-An
 
Unix command-line tools
Unix command-line toolsUnix command-line tools
Unix command-line tools
Eric Wilson
 

Was ist angesagt? (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
 

Ähnlich wie What we can learn from Rebol?

TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
Eelco Visser
 

Ähnlich wie 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
 

Mehr von lichtkind

Bettereditors
BettereditorsBettereditors
Bettereditors
lichtkind
 
Neuperl6
Neuperl6Neuperl6
Neuperl6
lichtkind
 

Mehr von 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
 

KĂŒrzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

KĂŒrzlich hochgeladen (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

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