programming languages for pre-mechanical calculating tools · 2012. 11. 16. · calculating tools...

89
Introduction Abacus Counting-rods Conclusion Programming Languages for Pre-Mechanical Calculating Tools Baptiste Mélès Archives Henri Poincaré – Université de Lorraine (Nancy , France) “Cultures of Mathematics and Logic”, Guangzhou 广, China, November 2012 1/51 Baptiste Mélès Programming Languages for Calculating Tools

Upload: others

Post on 30-Jul-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Programming Languages

for Pre-Mechanical Calculating Tools

Baptiste Mélès 梅乐思

Archives Henri Poincaré – Université de Lorraine (Nancy 南锡, France)

“Cultures of Mathematics and Logic”,Guangzhou 广州, China, November 2012

1/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 2: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

“Man is an animal who thinks with his fingers”

“As for the algebra that Chinese developped by applying it first tothe resolution of elementary problems of geometry, it can not bedissociated from an ability to manipulations which is unequallycultivated in the different civilizations. As said Marcel Mauss,quoting Maurice Halbwachs: “Man is an animal who thinks with

his fingers” (« L’homme est un animal qui pense avec sesdoigts »), a beautiful maxim which warns us against toointellectualist approaches, and which Chinese mathematicians wouldprobably have approved. The history of a civilization implies atonce socio-political structures, notions, mental attitudes,behaviours, gestures, and everything that the ethnologists nametechniques of the body (« techniques du corps »).”— Jacques Gernet, L’Intelligence de la Chine, “Histoire sociale etintellectuelle”, p. 254.

2/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 3: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Question

Initial question: What functions can be computed withdifferent kinds of non-mechanical calculating tools?

Examples of calculating tools: abacus, Chinese counting-rods,logarithm tables, slide rule, counting on paper...

Examples of limitations:

logarithm tables, slide rule: no addition;abacus: no resolution of systems of n linear equations? nologarithm?

3/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 4: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Question

Initial question: What functions can be computed withdifferent kinds of non-mechanical calculating tools?

Examples of calculating tools: abacus, Chinese counting-rods,logarithm tables, slide rule, counting on paper...

Examples of limitations:

logarithm tables, slide rule: no addition;abacus: no resolution of systems of n linear equations? nologarithm?

3/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 5: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Question

Initial question: What functions can be computed withdifferent kinds of non-mechanical calculating tools?

Examples of calculating tools: abacus, Chinese counting-rods,logarithm tables, slide rule, counting on paper...

Examples of limitations:

logarithm tables, slide rule: no addition;abacus: no resolution of systems of n linear equations? nologarithm?

3/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 6: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Classical answers

Two possible answers:

A posteriori (history of mathematics): “just read your classics”.

Counting-rods: Sunzi 孫子 (ca. 300), Sunzi Suanjing 孫子算

經;Abacus: Cheng Dawei 程大位 (1533–1606), Suanfa Tongzong

算法統宗 (1592).

A priori (computer science): “just make a machine”.

Alan Turing (1912–1954), “On Computable Numbers” (1936):the definition of “Turing machines” begins with the behaviourof a human “computer” (i.e. the calculating man);Joachim Lambek (born 1922), “How to Program an InfiniteAbacus” (1961).

4/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 7: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Classical answers

Two possible answers:

A posteriori (history of mathematics): “just read your classics”.

Counting-rods: Sunzi 孫子 (ca. 300), Sunzi Suanjing 孫子算

經;Abacus: Cheng Dawei 程大位 (1533–1606), Suanfa Tongzong

算法統宗 (1592).

A priori (computer science): “just make a machine”.

Alan Turing (1912–1954), “On Computable Numbers” (1936):the definition of “Turing machines” begins with the behaviourof a human “computer” (i.e. the calculating man);Joachim Lambek (born 1922), “How to Program an InfiniteAbacus” (1961).

4/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 8: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Classical answers

Two possible answers:

A posteriori (history of mathematics): “just read your classics”.

Counting-rods: Sunzi 孫子 (ca. 300), Sunzi Suanjing 孫子算

經;Abacus: Cheng Dawei 程大位 (1533–1606), Suanfa Tongzong

算法統宗 (1592).

A priori (computer science): “just make a machine”.

Alan Turing (1912–1954), “On Computable Numbers” (1936):the definition of “Turing machines” begins with the behaviourof a human “computer” (i.e. the calculating man);Joachim Lambek (born 1922), “How to Program an InfiniteAbacus” (1961).

4/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 9: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Limits

A posteriori (history of mathematics): “just read your classics”.

But the classics only describe what has been done, notnecessarily what can be done.

A priori (computer science): “just make a machine”.

But we lose the anthropological side of the problem. Idealizedcomputers are not computing men. (And infinite abaci do notexist.)

5/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 10: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Structural anthropology and technology

To answer our question, we would need to mix those twoapproches — anthropology and a priori science. But is itpossible?

Yes, it seems to be! There is at least one example. The ideawould be to have something like that:

6/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 11: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

André Leroi-Gourhan (1911–1986), L’Homme et la matière (1943):

Percussions:

linear /dot-shaped /diffuse

perpendicular /oblique

put down /throwed / putdown with apercussion tool

7/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 12: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Formal and anthropological properties of calculating tools

Our hypothesis will be than one could do with non-mechanicalcalculating tools what Leroi-Gourhan did for percussion tools.

simple machines

percussion tools=

programming languages

calculating tools.

This would be a classification, not of calculating toolsthemselves (see Peter Moor, “Three Myths of ComputerScience”, 1978), but of their uses in algorithms.

In order to show it, let us examine and compare the formal andanthropological properties of two Chinese computing tools: theabacus and the counting-rods.

8/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 13: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Formal and anthropological properties of calculating tools

Our hypothesis will be than one could do with non-mechanicalcalculating tools what Leroi-Gourhan did for percussion tools.

simple machines

percussion tools=

programming languages

calculating tools.

This would be a classification, not of calculating toolsthemselves (see Peter Moor, “Three Myths of ComputerScience”, 1978), but of their uses in algorithms.

In order to show it, let us examine and compare the formal andanthropological properties of two Chinese computing tools: theabacus and the counting-rods.

8/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 14: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

Formal and anthropological properties of calculating tools

Our hypothesis will be than one could do with non-mechanicalcalculating tools what Leroi-Gourhan did for percussion tools.

simple machines

percussion tools=

programming languages

calculating tools.

This would be a classification, not of calculating toolsthemselves (see Peter Moor, “Three Myths of ComputerScience”, 1978), but of their uses in algorithms.

In order to show it, let us examine and compare the formal andanthropological properties of two Chinese computing tools: theabacus and the counting-rods.

8/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 15: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

1 Introduction“Man is an animal who thinks with his fingers”History of mathematics and computer scienceAn example of structural anthropology: percussion tools

2 AbacusData structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

3 Counting-rodsData structureProgramming styleCultural aspects

4 ConclusionConclusionLimits

9/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 16: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Abacus

10/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 17: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Data structures

First question: what are the data structures of the abacus?

11/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 18: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Data structures

There are three main kinds of abacus:1. Chinese suanpan 算盤:

12/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 19: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Data structures

There are three main kinds of abacus:2. Japanese soroban 算盤:

12/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 20: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Data structures

There are three main kinds of abacus:3. Russian schoty (счёты):

12/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 21: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Data structures

Examples with the suanpan.We can encode one number, for example 123 456 789, on the suan-pan:

13/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 22: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Data structures

Sometimes, it can be useful to write down two numbers, typicallyfor the greater common divisor (for instance of 49 and 91):

13/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 23: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Data structures

And sometimes even three numbers, as for “euclidian” division (di-visor, quotient, dividend or rest), as for 91 = 49 × 1 + 42:

13/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 24: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Data structures

Properties of the abacus

1 Data structure: one register containing a list of a fewnumbers.

13/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 25: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Programming style

Second question: what is the programming style of the abacus?

14/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 26: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Programming style

Let us calculate 12 + 81 with an suanpan.

1 Reset the abacus:

15/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 27: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Programming style

Let us calculate 12 + 81 with an suanpan.

2 Encode the first number:

15/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 28: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Programming style

Let us calculate 12 + 81 with an suanpan.

2 Encode the first number:

15/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 29: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Programming style

Let us calculate 12 + 81 with an suanpan.

3 Add the second number:

15/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 30: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Programming style

Let us calculate 12 + 81 with an suanpan.

3 Add the second number:

15/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 31: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Programming style

Let us calculate 12 + 81 with an suanpan.

4 Read the result:

Theorem

12 + 81 = 93.

15/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 32: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

“Curryfication”

What about the programming style?

Operations are curryfied.

Definition

Curryfication (Schönfinkel, Curry) = transformation of an n-aryfunction into a composition of unary functions (provided that theirrespective “values” can themselves be functions).

16/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 33: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

“Curryfication”

What about the programming style?

Operations are curryfied.

Definition

Curryfication (Schönfinkel, Curry) = transformation of an n-aryfunction into a composition of unary functions (provided that theirrespective “values” can themselves be functions).

16/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 34: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

“Curryfication”

Definition

Curryfication (Schönfinkel, Curry) = transformation of an n-aryfunction into a composition of unary functions (provided that theirrespective “values” can themselves be functions).

Example

Without curryfication After curryfication

12

##GGG

GGGG

GG

(12, 81)+

// 93

81

;;wwwwwwwww

81

+′

��12

+81// 93

17/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 35: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

“Curryfication”

What is the difference?

The asymmetrical roles of the operands: 12 is passive (object),whereas 81 is active (belongs to an act).

Then the result does not occupy a distinct place.

Then there is no variable assignment!

18/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 36: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

“Curryfication”

What is the difference?

The asymmetrical roles of the operands: 12 is passive (object),whereas 81 is active (belongs to an act).

Then the result does not occupy a distinct place.

Then there is no variable assignment!

18/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 37: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

“Curryfication”

What is the difference?

The asymmetrical roles of the operands: 12 is passive (object),whereas 81 is active (belongs to an act).

Then the result does not occupy a distinct place.

Then there is no variable assignment!

18/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 38: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Functional programming style

The programming style of the abacus is purely functional.

Definition

Functional programming (John Backus, “Can programming beliberated from the von Neumann style?: a functional style and itsalgebra of programs”, 1978):

no variable assignment;

algorithm = composition (vs. sequence) of functions.

Examples

Functional programming languages: pure Lisp, Haskell...

19/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 39: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Parallelism

The abacus can even support parallelism! But functionalparallelism.

Example

The greater common divisor:

both numbers alternatively act on each other.

but the programming style remains functional.

20/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 40: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Properties of the abacus

Properties of the abacus

1 Data structure: one register.

2 Programming style: functional.

21/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 41: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

What does it change?

Addition is not so commutative...1 A priori: comparison between 14 + 7 and 7 + 14;2 A posteriori: Fibonacci’s and Cheng Dawei’s “addition” tables.

22/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 42: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

What does it change?

Addition is not so commutative...1 A priori: comparison between 14 + 7 and 7 + 14;2 A posteriori: Fibonacci’s and Cheng Dawei’s “addition” tables.

22/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 43: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

What does it change?

Addition is not so commutative...1 A priori: comparison between 14 + 7 and 7 + 14;2 A posteriori: Fibonacci’s and Cheng Dawei’s “addition” tables.

22/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 44: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Is addition commutative?

Let us compare 14 + 7 and 7 + 14.

14 + 7: 7 + 14:Reset the abacus: Reset the abacus:

23/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 45: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Is addition commutative?

Let us compare 14 + 7 and 7 + 14.

14 + 7: 7 + 14:Encode the first number: Encode the first number:

23/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 46: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Is addition commutative?

Let us compare 14 + 7 and 7 + 14.

14 + 7: 7 + 14:Encode the first number: Encode the first number:

23/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 47: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Is addition commutative?

Let us compare 14 + 7 and 7 + 14.

14 + 7: 7 + 14:Add the second number: Add the second number:

23/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 48: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Is addition commutative?

Let us compare 14 + 7 and 7 + 14.

14 + 7: 7 + 14:Add the second number: Add the second number:

23/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 49: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Is addition commutative?

Let us compare 14 + 7 and 7 + 14.

14 + 7: 7 + 14:Add the second number: Add the second number:

Theorem

14 + 7 = 21 and 7 + 14 = 21 (but not for the same reasons).

23/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 50: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Is addition commutative?

Addition on an abacus is:

denotationally commutative (the result is the same),

but operationally not commutative (the operations aredifferent).

0+14

~~}}}}

}}}}

+7

��???

????

?

operational semantics 14

+7 @

@@@@

@@@ 7

+14����

����

��

denotational semantics 21

24/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 51: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Historical evidence

This surprising fact becomes obvious when one comparesFibonacci’s and Cheng Dawei’s “addition tables”:

Fibonacci Cheng DaweiCommutative addition “Not so commutative” addition

(triangular addition table) (square addition table)

+ 1 2 3 · · ·

1 22 3 43 4 5 6...

......

.... . .

+ 一 二 三 · · ·

一 上一 上二 上三 · · ·

二 上一 上二 下下下五五五除除除二二二 · · ·

三 上一 下下下五五五除除除三三三 下五除二 · · ·

......

......

. . .

denotational table operational table

25/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 52: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Fibonacci, Liber abaci: triangular addition table

26/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 53: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Cheng Dawei, Suanfa Tongzong: square “addition table” (1)

27/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 54: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Cheng Dawei, Suanfa Tongzong: square “addition table” (2)

28/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 55: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Pedagogical strategies

The anthropological aspect of the problem can not be avoided:the user has to learn tables.

This pedagogical aspect is cultural, not technical.

29/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 56: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Pedagogical strategies

There are pedagogical strategies:

tables to learn: multiplication table instead of long additions(Takashi Kojima, Advanced Abacus: Theory and Practice);tables to forget!: Cheng Dawei’s table of divisions until the1930s (Takashi Kojima, The Japanese Abacus: its Use and

Theory).

30/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 57: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Pedagogical strategies

There are pedagogical strategies:

tables to learn: multiplication table instead of long additions(Takashi Kojima, Advanced Abacus: Theory and Practice);tables to forget!: Cheng Dawei’s table of divisions until the1930s (Takashi Kojima, The Japanese Abacus: its Use and

Theory).

30/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 58: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Cheng Dawei, Suanfa Tongzong: division table (1)

31/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 59: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Cheng Dawei, Suanfa Tongzong: division table (2)

32/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 60: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Conclusion on the abacus

Properties of the abacus

1 data structure: one register;

2 programming style: functional;

3 a given set of tables (addition, multiplication, substraction,division...), with pedagogical strategies (learning orforgetting).

Those properties mix formal and anthropological data.

33/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 61: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Conclusion on the abacus

Properties of the abacus

1 data structure: one register;

2 programming style: functional;

3 a given set of tables (addition, multiplication, substraction,division...), with pedagogical strategies (learning orforgetting).

Those properties mix formal and anthropological data.

33/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 62: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Conclusion on the abacus

Properties of the abacus

1 data structure: one register;

2 programming style: functional;

3 a given set of tables (addition, multiplication, substraction,division...), with pedagogical strategies (learning orforgetting).

Those properties mix formal and anthropological data.

33/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 63: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Conclusion on the abacus

Properties of the abacus

1 data structure: one register;

2 programming style: functional;

3 a given set of tables (addition, multiplication, substraction,division...), with pedagogical strategies (learning orforgetting).

Those properties mix formal and anthropological data.

33/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 64: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming stylePrimitive functions: tables and pedagogical strategiesConclusion

Generalization of the method

Let us use those properties, not to describe, but to compare.

Examples

Comparisons between different cultures: the roman abacus isisomorphic with the Chinese suanpan:

34/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 65: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Are the counting-rods isomorphic with the abacus?

Within the “same” culture: are the Ancient Chinese counting-rodsisomorphic with the modern Chinese abacus?

35/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 66: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Are the counting-rods isomorphic with the abacus?

For a full description:

Karine Chemla and Guo Shuchun, Les Neuf Chapitres 九章算術, 2004.

Karine Chemla, “Le jeu d’opérations opposées maiscomplémentaires dans les textes mathématiques chinoisanciens”, 1996.

Karine Chemla and Michael Lackner, “Des pratiques de laposition en Chine”, 1996.

Karine Chemla, “Positions et changements en mathématiques”,1996.

Karine Chemla, “Should they read FORTRAN as if it wereEnglish?”, 1987.

36/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 67: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Data structure

First question: what are the data structures of thecounting-board?

37/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 68: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Data structure

Vertical disposition of numbers. Sunzi Suanjing (I.16) for themultiplication:

8 1

6 5 6 1

8 1

Horizontal disposition of numbers. Nine Chapters (VIII.1) for asystem of linear equations:

1 2 3

2 3 2

3 1 1

2 6 3 4 3 9

Positions are moved (see Karine Chemla).

38/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 69: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Data structure

Vertical disposition of numbers. Sunzi Suanjing (I.16) for themultiplication:

8 1

6 5 6 1

8 1

Horizontal disposition of numbers. Nine Chapters (VIII.1) for asystem of linear equations:

1 2 3

2 3 2

3 1 1

2 6 3 4 3 9

Positions are moved (see Karine Chemla).

38/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 70: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Data structure

Vertical disposition of numbers. Sunzi Suanjing (I.16) for themultiplication:

8 1

6 5 6 1

8 1

Horizontal disposition of numbers. Nine Chapters (VIII.1) for asystem of linear equations:

1 2 3

2 3 2

3 1 1

2 6 3 4 3 9

Positions are moved (see Karine Chemla).

38/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 71: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Formal properties

Formal properties of the counting-rods

1 Data structure: a two-dimensional array of numbers.

39/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 72: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Data structures

Comparative consequences of the data structures:

every algorithm working for the abacus works for thecounting-rods,

but the converse is not true.

Example

Algorithms for solving systems of linear equations:

A simple algorithm for 2 linear equations works for the abacusas well as for the counting-rods;

a general algorithm for n linear equations (like in the NineChapters, VIII: fangcheng 方程) works for the counting-rods,but not for the abacus.

40/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 73: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Data structures

Comparative consequences of the data structures:

every algorithm working for the abacus works for thecounting-rods,

but the converse is not true.

Example

Algorithms for solving systems of linear equations:

A simple algorithm for 2 linear equations works for the abacusas well as for the counting-rods;

a general algorithm for n linear equations (like in the NineChapters, VIII: fangcheng 方程) works for the counting-rods,but not for the abacus.

40/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 74: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Programming style

Second question: what is the programming style of thecounting-rods?

41/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 75: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Programming style

Is it functional?

It can be: all algorithms working with the abacus work withthe counting-rods.

42/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 76: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Programming style

Is it functional?

It can be: all algorithms working with the abacus work withthe counting-rods.

42/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 77: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Programming style

But the programming style must not be functional.(1) The result of an operation does not necessarily rise from thedata themselves.

Example: Sunzi’s multiplication algorithm

The result (output) is put in a new place, distinct from the inputdata’s places:

8 1

6 5 6 1

8 1

43/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 78: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Programming style

(2) Sometimes, values are put “aside” (副 fu, «en auxiliaire»).

Example: the Nine Chapters’ square root algorithm

(Karine Chemla and Guo Shuchun, Les Neuf Chapitres, p. 325)

2 quotient1 5 2 2 5 dividend

4 divisor1 auxiliary (副 fu)

Consequence: there is variable assignment. (See Karine Chemla,Les Neuf Chapitres, p. 25.)

44/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 79: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Programming style

The programming is imperative.

Definition

Imperative programming:

variable assignment;

algorithm = sequence (vs. composition) of instructions.

Examples

Imperative programming languages: MIX machine (Donald Knuth,The Art of computer programming), assembly, C...

45/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 80: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Formal properties

Formal properties of the counting-rods

1 Data structure: a two-dimensional array of numbers.

2 Programming style: imperative.

46/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 81: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Cultural aspects

Do such structural facts have cultural echoes?

One can think so:

Jacques Gernet: Chinese mathematics are correlated withcalculating tools;Jean-Claude Martzloff, A History of Chinese Mathematics,p. 20: “The abacus, a calculating instrument used bymerchants, slowly supplanted the counting-rods used in theerudite practice of computation, and mathematics wasrestricted to commercial arithmetic.”

47/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 82: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

Data structureProgramming styleCultural aspects

Cultural aspects

Do such structural facts have cultural echoes?

One can think so:

Jacques Gernet: Chinese mathematics are correlated withcalculating tools;Jean-Claude Martzloff, A History of Chinese Mathematics,p. 20: “The abacus, a calculating instrument used bymerchants, slowly supplanted the counting-rods used in theerudite practice of computation, and mathematics wasrestricted to commercial arithmetic.”

47/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 83: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

ConclusionLimits

Conclusions

1 Cultures and calculating tools:

internally, calculating tools have a cultural kernel (pedagogicalstrategies);externally, they might be correlated with cultural facts (kindsof mathematics, social function...).

2 A classification of calculating tools should at least take intoaccount:

the data structures;the programming style (functional or imperative);the set of memorized tables.

3 The very idea of a classification suggests that various culturesexplore various areas of an unique and eternal frame of humancomputing (like Leroi-Gourhan’s table).

48/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 84: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

ConclusionLimits

Conclusions

1 Cultures and calculating tools:

internally, calculating tools have a cultural kernel (pedagogicalstrategies);externally, they might be correlated with cultural facts (kindsof mathematics, social function...).

2 A classification of calculating tools should at least take intoaccount:

the data structures;the programming style (functional or imperative);the set of memorized tables.

3 The very idea of a classification suggests that various culturesexplore various areas of an unique and eternal frame of humancomputing (like Leroi-Gourhan’s table).

48/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 85: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

ConclusionLimits

Conclusions

1 Cultures and calculating tools:

internally, calculating tools have a cultural kernel (pedagogicalstrategies);externally, they might be correlated with cultural facts (kindsof mathematics, social function...).

2 A classification of calculating tools should at least take intoaccount:

the data structures;the programming style (functional or imperative);the set of memorized tables.

3 The very idea of a classification suggests that various culturesexplore various areas of an unique and eternal frame of humancomputing (like Leroi-Gourhan’s table).

48/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 86: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

ConclusionLimits

Conclusions

1 Cultures and calculating tools:

internally, calculating tools have a cultural kernel (pedagogicalstrategies);externally, they might be correlated with cultural facts (kindsof mathematics, social function...).

2 A classification of calculating tools should at least take intoaccount:

the data structures;the programming style (functional or imperative);the set of memorized tables.

3 The very idea of a classification suggests that various culturesexplore various areas of an unique and eternal frame of humancomputing (like Leroi-Gourhan’s table).

48/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 87: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

ConclusionLimits

Limits

For a really a priori classification, we would need a satisfyingclassification of programming languages (an exhaustive list of thecriteria). It still does not exist.

49/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 88: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

ConclusionLimits

Thanks

Many thanks to Chen Yifu 陳怡夫 and Xie Jing 谢晶!

50/51 Baptiste Mélès Programming Languages for Calculating Tools

Page 89: Programming Languages for Pre-Mechanical Calculating Tools · 2012. 11. 16. · calculating tools what Leroi-Gourhan did for percussion tools. simple machines percussion tools = programming

IntroductionAbacus

Counting-rodsConclusion

ConclusionLimits

Bibliography

Sunzi 孫子, Sunzi Suanjing 孫子算經, ca. 300.

Cheng Dawei 程大位, Suanfa Tongzong 算法統宗, 1592.

John Backus, “Can programming be liberated from the vonNeumann style?: a functional style and its algebra ofprograms”, 1978.

Karine Chemla and Guo Shuchun, Les Neuf Chapitres, 2004.

Kojima Takashi, The Japanese Abacus: its Use and Theory,1954; Advanced Abacus: Theory and Practice, 1963.

Joachim Lambek, “How to Program an Infinite Abacus”, 1961.

Peter Moor, “Three Myths of Computer Science”, 1978.

Alain Schärlig, Compter avec des cailloux, 2001.

51/51 Baptiste Mélès Programming Languages for Calculating Tools