53
The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs 1 Tuesday, November 2, 2010

The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

The Fitness Function For Programming

Languages:A Matter of Taste?

Gilad BrachaSAP Labs

1Tuesday, November 2, 2010

Page 2: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

There are two kinds of languages - those that everyone complains about and those that aren’t used- Bjarne Stroustrup

2Tuesday, November 2, 2010

Page 4: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

ExamplesC

C++

Java

C#

Visual Basic

Perl

PHP

Javascript4Tuesday, November 2, 2010

Page 5: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Counter-Examples

Lisp

APL

Prolog

Beta

Smalltalk

Self

5Tuesday, November 2, 2010

Page 6: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Today’s Market, or Tomorrow’s?

Faustian Bargain: Success in this life, Oblivion in the hereafter

6Tuesday, November 2, 2010

Page 7: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Academic Criteria

Theory

Implementation

Empirical studies

7Tuesday, November 2, 2010

Page 8: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

What if Smalltalk was Invented Today?

Jonathan Edwards:

Reviewer 1 comments: You propose three new language features: encapsulation, polymorphism, and inheritance. Even though your paper was the maximum 12 pages, it discussed each of these concepts only informally, and did not do any rigorous evaluation.

8Tuesday, November 2, 2010

Page 9: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

What if Smalltalk was Invented Today?

Reviewer 2 comments: You claim that object orientation is in some sense more natural and intuitive than procedural programming, but offer only anecdotes and hand-picked examples as justification.

9Tuesday, November 2, 2010

Page 10: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

So is it just Taste?

10Tuesday, November 2, 2010

Page 11: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

There is nothing so practical as a good theory- Philip Wadler

11Tuesday, November 2, 2010

Page 12: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Or so rare- Gilad Bracha

12Tuesday, November 2, 2010

Page 13: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How do we Judge a Theory?

Meta-theory?

Implementation?

Popularity?

13Tuesday, November 2, 2010

Page 14: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How do we Judge a Theory?

Consistency, Comprehensiveness

Beauty and elegance

Predictive value

14Tuesday, November 2, 2010

Page 15: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Language can be based on Theory

Relational algebra

Functional programming

Parser combinators

15Tuesday, November 2, 2010

Page 16: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

BNF

id = letter (letter | digit) *

Parser Combinators

16Tuesday, November 2, 2010

Page 17: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

BNF

id = letter (letter | digit) *

Newspeak

id = letter, (letter | digit) star.

Parser Combinators

17Tuesday, November 2, 2010

Page 18: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

BNF

id = letter (letter | digit) *

Newspeak

id = letter, (letter | digit) star.

Javanese

id = letter().seq(letter().or(digit()).star());

Parser Combinators

18Tuesday, November 2, 2010

Page 19: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

19Tuesday, November 2, 2010

Page 20: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

20Tuesday, November 2, 2010

Page 21: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

21Tuesday, November 2, 2010

Page 22: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

22Tuesday, November 2, 2010

Page 23: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter

23Tuesday, November 2, 2010

Page 24: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter

24Tuesday, November 2, 2010

Page 25: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter

25Tuesday, November 2, 2010

Page 26: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter

26Tuesday, November 2, 2010

Page 27: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter

27Tuesday, November 2, 2010

Page 28: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter

28Tuesday, November 2, 2010

Page 29: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter

letter

29Tuesday, November 2, 2010

Page 30: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter

letter

30Tuesday, November 2, 2010

Page 31: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter

digitletter

31Tuesday, November 2, 2010

Page 32: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter

|

digitletter

32Tuesday, November 2, 2010

Page 33: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter star

|

digitletter

33Tuesday, November 2, 2010

Page 34: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

How it Works id = letter, (letter | digit) star.

letter star

|

digitletter

,

34Tuesday, November 2, 2010

Page 35: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Why is this Pretty?

id = letter, (letter | digit) star.

35Tuesday, November 2, 2010

Page 36: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Why is this Ugly?

id = letter().seq(letter().or(digit()).star());

36Tuesday, November 2, 2010

Page 37: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Why is this Ugly?

id = letter().seq(letter().or(digit()).star());

vs.

id = letter (letter | digit) *

vs.

id = letter, (letter | digit) star.

37Tuesday, November 2, 2010

Page 38: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Why is this Ugly?

id = letter().seq(letter().or(digit()).star());

vs.

id = letter (letter | digit) *

vs.

id = letter, (letter | digit) star.

38Tuesday, November 2, 2010

Page 39: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Why is it Ugly?

A programming language is low level when its programs require attention to the irrelevant

- Alan Perlis

39Tuesday, November 2, 2010

Page 40: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Compositionality

Uniform space of values

Operators that map this space into itself

Small core is a basis for infinite space

40Tuesday, November 2, 2010

Page 41: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Pattern Matching

Joint work with Felix Geller and Robert Hirschfeld at HPI, University of Potsdam

41Tuesday, November 2, 2010

Page 42: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Pattern Literals

<1><ʻaʼ><_><num: n><multiply: left by: right>

42Tuesday, November 2, 2010

Page 43: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Pattern Combinators

p1 | p2p1 & p2p1 >> p2p => actionBlockp not

43Tuesday, November 2, 2010

Page 44: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Pattern Combinatorsin Action

fib: n = (n case: <1> | <2> => [^n-1] otherwise:[^(fib: n-2) + (fib: n-1)]

)

44Tuesday, November 2, 2010

Page 45: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Pattern Matching

class Term = ()() class Num of: n = Term ( | val = n. | ) ( match: pat = ( ^pat num: val. )) class Var named: n = Term ( | name = n. | ) ( match: pat = ( ^pat var: name. ) ) class Product of: n by: m = Term ( | left = n. right = m. | ) ( match: pat = ( ^pat multiply: left by: right. ) )

45Tuesday, November 2, 2010

Page 46: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Pattern Matching

simplify: expr = ( ^expr case: <multiply: ?x by: <num: 1>> => [x]

otherwise: [expr].)

46Tuesday, November 2, 2010

Page 47: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Higher Order Patterns in Action

simplify: expr = ( ^expr case: <multiply: ?x by: <num: 1>> => [x]

otherwise: [expr].)

47Tuesday, November 2, 2010

Page 48: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Language can be based on Theory

But, more importantly

48Tuesday, November 2, 2010

Page 49: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Language may be the Theory

APL: Vectors

Beta: Patterns

Smalltalk, Self : Objects

49Tuesday, November 2, 2010

Page 50: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Programs are Models; Languages are Theories for building Programs

50Tuesday, November 2, 2010

Page 51: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Judge Languages as Theories

Consistency

Comprehensiveness- does it model what I want? How easily and how accurately

Beautiful/Elegant (compositional)

Predictive value

Can easily can I tell

What a program does

How hard it is to build a program51Tuesday, November 2, 2010

Page 52: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

Good Aesthetics makes Good Software

52Tuesday, November 2, 2010

Page 53: The Fitness Function For Programming Languages - Victoria · The Fitness Function For Programming Languages: A Matter of Taste? Gilad Bracha SAP Labs Tuesday, November 2, 2010 1

This file is licensed under the Creative Commons Attribution ShareAlike 3.0 License. In short: you are free to share and make derivative works of the file under the conditions that you appropriately attribute it, and that you distribute it only under a license identical to this one. Official license.

The Newspeak eye used in the bullets, slide background etc. was designed by Victoria Bracha and is used by permission.

The image on slide 3 is by Turelio licensed under CC-BY-SA-2.5 and originates on wikimedia

53Tuesday, November 2, 2010