Whoami. whoami Tobias FROGGS Slangs sub languages.

Slides:



Advertisements
Ähnliche Präsentationen
Klassen - Verkettete Liste -
Advertisements

Strukturierter Text.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Funktion defined Die Funktion defined testet, ob eine Variable einen anderen Wert als undef enthält. Ist der Wert undef, so wird falsch zurückgegeben,
IF-ELSE-IF-Ketten Weiter mit PP..
DO...WHILE Anweisung.
Die Skriptsprache Perl (7)
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
Higher Order Perl Martin Busik Vortrag über das Buch von Marc Jason Dominus.
Infinitiv mit “zu”.
Don`t make me think! A Common Sense Approach to Web Usability
Dienstag, den Hausaufgabe für Mittwoch den IA 10.4 and printout LB 10.4 A-C Guten Tag!
Proseminar Programmiersprachen Python
Informatik 1 Übung 4.
Wortschatz der Schulhof the playground die Aula the hall
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Style Guidelines für Java und .NET
Grundlagen wissenschaftlichen Arbeitens An Overview of C++ Ali CICEK
Talking about yourself
Purga - Scriptengine Ein Einblick.
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Deutsch Zwei
Einführung in PHP.
Einführung in PHP 5.
MODULA-2.
Starten der Entwicklungsumgebung (IDE)
Vorlesung 3. if else Anweisung if (Ausdruck) Anweisung1 else Anweisung2 Ausdruck hat einen von 0 verschiedenen Wert, so wird Anweisung 1 ausgeführt. Bei.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
PI Burgenland Java und JavaScript 1. Teil
Programmiervorkurs WS 2014/15 Methoden
1 Tagesüberblick 3 Lösung Hausaufgabe/Fragen Zeilenweises Lesen von Dateien Schleifenausbrüche Die Variable $_ Textfunktionen.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Compact Survey Language Dokumentation: csl-survey.de/doku.pdf Team: Kasimir Blust, Laura Seidler.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Lösung Hausaufgabe 4-1 #!perl -w $infile = "daten4-1.txt"; $count1 = $count2 = 0; open (IN,$infile) || die "Oeffnen: $infile $!"; while ( ){ $count2 +=
1 Lösung Hausaufgabe 5-1 Seite 1 #!perl -w # Datei Oeffnen und Variablen initialisieren $infile = "daten5-3.txt"; $im=$iw=$sm=$sw=0; open (IN,$infile)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback.
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
The Programming Language Pascal
Studentenstreik 2009, 2010 in Deutschland Part 1: Studiengebühren.
Studentenstreik 2009, 2010 in Deutschland Part 1: Studiengebühren.
Unterwegs.
Montag den 8. Juni Lernziel:- To launch a project and receive results.
Was machst du gern?.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
Netzwerk - Programmierung
Deutscher Perl Workshop 2014 PORF Practice
Namensliste Teil der semantischen Aktionen
Netzwerk - Programmierung
you: ihr ( familiar plural ) you: du ( familiar singular)
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
you: ihr ( familiar plural ) you: du ( familiar singular)
Netzwerk - Programmierung
Syntax: while ( BEDINGUNG ) { // Anweisungen die so lange immer wieder ausgeführt // werden, wie die Bedingung zutrifft } for (INITIALISIERUNG; BEDINGUNG;
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
Ich - Projekt Due Monday, September 19..
 Präsentation transkript:

whoami

Tobias

FROGGS

Slangs

sub languages

syntax?

dialect Ein Dialekt (also eine Mundart) ist eine lokale oder regionale Sprachvarietät. Er kann sich von anderen Dialekten wie auch von der Standardsprache in allen Sprachbereichen wie Lautebene (Phonologie), Wortbeugung (Morphologie), Wortschatz (Lexik), Satzbau (Syntax) und Idiomatik – unterscheiden.

phonology

phonology

morphology

<foo bar baz>.join

morphology

lexic

use Foo;

lexic ✓

syntax

say do for ^10 -> $x { -$x } say map { -$_ } 0..9 say map { -$_ }, ^10 say (^10).map: -* say do for ^10 -> $x { -$x }

syntax ✓

idiomatic

sub foo { my %opt = @_ } sub foo( *%opt ) { ... } <?php ... ?>

idiomatic ✓

phonology morphology lexic ✓ syntax ✓ idiomatic ✓

I FORGOT HOW TO SLANG

@x = (1, 2, 3); say foo(@x); # „1“ sub foo($) { shift }; say foo 1, 2, 3; # „123“ say foo @x; # „3“

sub postfix:<!>($n) { [+] 1...$n } say 3! # „6“

use v6; $*ERR.say: $*OS; { use v5; say STDERR $^O; }

use v6; $*ERR.say: $*OS; { use v5; say STDERR $^O; }

use v5;

shift =~ m=^(((ht|f)tp(s?))\://)? (www.|[a-zA-Z].) use v5; sub is_valid { shift =~ m=^(((ht|f)tp(s?))\://)? (www.|[a-zA-Z].) [a-zA-Z0-9\-\.]+\.(com)(\:[0-9]+)* (/($|[a-zA-Z0- 9\.\,\;\?\'\\\+&%\ $#\~_\-]+))*$=i } { use 6.0.0; say ?is_valid( “http://github.com“ ) - großes bestehendes Projekt - kleine Snippets die ungern neu geschrieben werden wollen

sub decode-json( $json_text ) { use v5; use JSON; $json = JSON->new->allow_nonref; $json->decode( $json_text ); } - CPAN-Module mit ganz bestimmten Eigenschaften punktuell nutzen

use v6; use JSON:from<Perl5>; JSON.new.encode({a => 1})

sub decode-json( $json_text ) { use v5; use JSON; $json = JSON->new->allow_nonref; $json->decode( $json_text ); } - CPAN-Module mit ganz bestimmten Eigenschaften punktuell nutzen

sub decode-json( $json_text ) { use v5; use JSON; $json = JSON->new->allow_nonref; $json->decode( $json_text ); } - CPAN-Module mit ganz bestimmten Eigenschaften punktuell nutzen

sub decode-json( $json_text ) { use v5; use JSON; $json = JSON->new->allow_nonref; $json->decode( $json_text ); } - CPAN-Module mit ganz bestimmten Eigenschaften punktuell nutzen

sub decode-json( $json_text ) { use v5; use JSON; $json = JSON->new->allow_nonref; $json->decode( $json_text ); } - CPAN-Module mit ganz bestimmten Eigenschaften punktuell nutzen

token comp_unit { :my $*MAIN := “MAIN“; } token statement_control:sym<use> { :my $OLD_MAIN := ~$*MAIN; <sym> <.ws> [ || <version> || <module_name> <version>? ] [ <?{ $*MAIN ne $OLD_MAIN }> <statementlist=.LANG($*MAIN, 'statementlist')> ]?

token comp_unit { :my $*MAIN := “MAIN“; } token statement_control:sym<use> { :my $OLD_MAIN := ~$*MAIN; <sym> <.ws> [ || <version> || <module_name> <version>? ] [ <?{ $*MAIN ne $OLD_MAIN }> <statementlist=.LANG($*MAIN, 'statementlist')> ]?

grammar P5::Grammar { token statementlist { <statement>* } } class P5::Actions { method statementlist($/) { for $<statement> { [...] } sub EXPORT(*@a) { %*LANG<Perl5> := P5::Grammar; %*LANG<Perl5-actions> := P5::Actions; $*MAIN := “Perl5“;

grammar P5::Grammar { token statementlist { <statement>* } } class P5::Actions { method statementlist($/) { for $<statement> { [...] } sub EXPORT(*@a) { %*LANG<Perl5> := P5::Grammar; %*LANG<Perl5-actions> := P5::Actions; $*MAIN := “Perl5“;

sub decode-json( $json_text ) { use v5; use JSON; $json = JSON->new->allow_nonref; $json->decode( $json_text ); } - CPAN-Module mit ganz bestimmten Eigenschaften punktuell nutzen

Parser?

→ * + 3 $a $b

↓ grammar P5::Grammar { token statementlist { <statement>* } class P5::Actions { method statementlist($/) { for $<statement> { make .ast } ↓

→ * + 3 $a $b

$a + $b * 3

Parrot

Parrot JVM

Parrot JVM MoarVM

?

JavaScript

→ * + 3 $a $b

call &say &slurp „hello“ $^O ...

use v6; my Int $a; say $a; { use v5; }

use v6; my Int $a; say $a; # „(Int)“ { use v5; say $a; }

use v6; my Int $a; say $a.gist; # „(Int)“ { use v5; say $a; }

use v6; my Int $a; say $a.gist; # „(Int)“ { use v5; say $a; # „“ say $a; }

use v6; my Int $a; say $a.gist; # „(Int)“ { use v5; &P5say $a; # „“ say $a; }

use v6; my Int $a; say $a.gist; # „(Int)“ { use v5; &P5say $a; # „“ say $a; # „(Int)“ }

multi P5Str(Mu:U) { P5warn(:cat<uninitialized>, 'Use of uninitialized value in string'); '' } multi P5Str(Bool:D \s) { s ?? 1 !! '' } multi P5Str(Int:D \s) { s.Int } multi P5Str(Num:D \s) { s.Num } multi P5Str(Parcel:D \s) { s.Int } multi P5Str(Sub:D \s) { 'CODE(' ~ s.WHERE.fmt('0x%X').lc ~ ')'

multi P5Str(Mu:U) { P5warn(:cat<uninitialized>, 'Use of uninitialized value in string'); '' } multi P5Str(Bool:D \s) { s ?? 1 !! '' } multi P5Str(Int:D \s) { s.Int } multi P5Str(Num:D \s) { s.Num } multi P5Str(Parcel:D \s) { s.Int } multi P5Str(Sub:D \s) { 'CODE(' ~ s.WHERE.fmt('0x%X').lc ~ ')'

CORE.setting

20799

my role Positional { ... } my role Associative { ... } my role Callable { ... } my $!; my $/; my $_; proto infix:<&&>(|) { * } multi infix:<&&>(Mu $x = Bool::True) { $x } multi infix:<&&>(Mu \a, Mu \b) { a && b }

Perl5::Terms

1459

1459..*

?

conditions

if (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK

unless (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK

EXPR if EXPR EXPR unless EXPR

loops

LABEL while (EXPR) BLOCK continue BLOCK LABEL until (EXPR) BLOCK continue BLOCK

LABEL for (EXPR; EXPR; EXPR) BLOCK LABEL for VAR (LIST) BLOCK continue BLOCK LABEL foreach VAR (LIST) BLOCK continue BLOCK

LABEL BLOCK continue BLOCK

BEGIN BLOCK

use require

chdir chr close each int not open ord pack pop pos print push rand ref say shift splice split substr time unlink unpack unshift

* / % x + - . << >> < > <= >= lt gt le ge ++ -- ** ! ~ \ + - =~ !~ * / % x + - . << >> < > <= >= lt gt le ge == != <=> eq ne cmp ~~ & | ^ && || // .. ... ?: = += -= *= etc. , => not and xor

use overlord!

use overload;

use overload '""' => sub {'('.ref(shift).')'}

sub foo($) { }

my $bar; sub foo :lvalue { $bar }

use vars qw(%foo);

use warnings qw(uninitialized);

use strict;

use Config; use English;

use if ($] >= 5.01), strict => 'subs';

sub bar { goto &foo; }

$str =~ s/ä/ae/g

open FH '>', 'foo'

new SDL::Rect

:o(

next LABEL last LABEL redo LABEL

goto LABEL

say 1, two, 3 # 1two3

AnyDBM_File Benchmark Carp

never?

XS

tests

8093

42906

>92000

FROGGS usev5.wordpress.com freenode/#perl6 FROGGS@cpan.org github.com/FROGGS