Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf ·...
Transcript of Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf ·...
![Page 1: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/1.jpg)
http://www.inf.ed.ac.uk/teaching/courses/apl
TH
E
U N I V E RS
IT
Y
OF
ED I N B U
RG
H
Advances in Programming LanguagesAPL1: What’s so important about language?
Ian Stark
School of InformaticsThe University of Edinburgh
Tuesday 16 September 2014Semester 1 Week 1
![Page 2: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/2.jpg)
Vital Statistics
Course: Advances in Programming Languages
Lecturer: Ian Stark
Level: Undergraduate year 4, year 5 and MSc students(10 credit points at level 11)
When: 1510–1600 Tuesday & Friday
Where: 7 Bristo Square Lecture Theatre 5
Web: http://www.inf.ed.ac.uk/teaching/courses/apl
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 3: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/3.jpg)
What it is about computers?
ScaleNanometres, terabytes, gigahertz, megabits/second; the internet,lifebits and data smelters.
Digitization
Analogue paper, images, film, music, sound; printers, cameras,telephones, copiers; all now just bits.
Programmability
The computer is protean, capable of assuming many forms.
All three are significant, but are mutually dependent for their effectiveness.
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 4: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/4.jpg)
What it is about computers?
ScaleNanometres, terabytes, gigahertz, megabits/second; the internet,lifebits and data smelters.
Digitization
Analogue paper, images, film, music, sound; printers, cameras,telephones, copiers; all now just bits.
Programmability
The computer is protean, capable of assuming many forms.
All three are significant, but are mutually dependent for their effectiveness.
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 5: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/5.jpg)
What it is about computers?
ScaleNanometres, terabytes, gigahertz, megabits/second; the internet,lifebits and data smelters.
Digitization
Analogue paper, images, film, music, sound; printers, cameras,telephones, copiers; all now just bits.
Programmability
The computer is protean, capable of assuming many forms.
All three are significant, but are mutually dependent for their effectiveness.
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 6: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/6.jpg)
What it is about computers?
ScaleNanometres, terabytes, gigahertz, megabits/second; the internet,lifebits and data smelters.
Digitization
Analogue paper, images, film, music, sound; printers, cameras,telephones, copiers; all now just bits.
Programmability
The computer is protean, capable of assuming many forms.
All three are significant, but are mutually dependent for their effectiveness.
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 7: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/7.jpg)
![Page 8: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/8.jpg)
![Page 9: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/9.jpg)
![Page 10: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/10.jpg)
Exercises
1 Write down three programming languages.
2 Write down three language paradigms or characteristics.
3 Write down three reasons to choose a particular language.
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 11: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/11.jpg)
What matters in a programming language?
We might like a language that is:
Easy to learn, quick to write, expressive, concise, powerful, supported,well-provided with libraries, cheap, popular, . . .
It might help us to write programs that are:
Readable, correct, fast, reliable, predictable, maintainable, secure,robust, portable, testable, verifiable, composable, . . .
It might help us address challenges in:
Multicore architectures, distributed computing, warehouse-scalecomputation, programming the web, quantum computing, . . .
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 12: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/12.jpg)
Shaping the conceivable
Languages frame the way we think, and the programs we can imagine.
Sapir-Whorf HypothesisWe dissect nature along lines laid down by our native language
This claim is not without controversy; both in its original domain of linguis-tics, and as more recently applied to programming languages.
Wittgenstein: The limits of my language mean the limits of my world[Tractatus Logico-Philosophicus, 1922]
Orwell: The purpose of Newspeak was not only to provide a medium ofexpression for the world-view and mental habits proper to the devotees ofIngsoc, but to make all other modes of thought impossible [1984, 1949]
Perlis: A language that doesn’t affect the way you think aboutprogramming, is not worth knowing [Epigrams on Programming, 1982]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 13: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/13.jpg)
Shaping the conceivable
Languages frame the way we think, and the programs we can imagine.
Sapir-Whorf HypothesisWe dissect nature along lines laid down by our native language
Boole: Language is an instrument of human reason, not merely a mediumfor the expression of thought [An Investigation of the Laws of Thought, 1854]
Wittgenstein: The limits of my language mean the limits of my world[Tractatus Logico-Philosophicus, 1922]
Orwell: The purpose of Newspeak was not only to provide a medium ofexpression for the world-view and mental habits proper to the devotees ofIngsoc, but to make all other modes of thought impossible [1984, 1949]
Perlis: A language that doesn’t affect the way you think aboutprogramming, is not worth knowing [Epigrams on Programming, 1982]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 14: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/14.jpg)
Shaping the conceivable
Languages frame the way we think, and the programs we can imagine.
Sapir-Whorf HypothesisWe dissect nature along lines laid down by our native language
Boole: Language is an instrument of human reason, not merely a mediumfor the expression of thought [An Investigation of the Laws of Thought, 1854]
Wittgenstein: The limits of my language mean the limits of my world[Tractatus Logico-Philosophicus, 1922]
Orwell: The purpose of Newspeak was not only to provide a medium ofexpression for the world-view and mental habits proper to the devotees ofIngsoc, but to make all other modes of thought impossible [1984, 1949]
Perlis: A language that doesn’t affect the way you think aboutprogramming, is not worth knowing [Epigrams on Programming, 1982]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 15: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/15.jpg)
Shaping the conceivable
Languages frame the way we think, and the programs we can imagine.
Sapir-Whorf HypothesisWe dissect nature along lines laid down by our native language
Boole: Language is an instrument of human reason, not merely a mediumfor the expression of thought [An Investigation of the Laws of Thought, 1854]
Wittgenstein: The limits of my language mean the limits of my world[Tractatus Logico-Philosophicus, 1922]
Orwell: The purpose of Newspeak was not only to provide a medium ofexpression for the world-view and mental habits proper to the devotees ofIngsoc, but to make all other modes of thought impossible [1984, 1949]
Perlis: A language that doesn’t affect the way you think aboutprogramming, is not worth knowing [Epigrams on Programming, 1982]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 16: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/16.jpg)
Shaping the conceivable
Languages frame the way we think, and the programs we can imagine.
Sapir-Whorf HypothesisWe dissect nature along lines laid down by our native language
Boole: Language is an instrument of human reason, not merely a mediumfor the expression of thought [An Investigation of the Laws of Thought, 1854]
Wittgenstein: The limits of my language mean the limits of my world[Tractatus Logico-Philosophicus, 1922]
Orwell: The purpose of Newspeak was not only to provide a medium ofexpression for the world-view and mental habits proper to the devotees ofIngsoc, but to make all other modes of thought impossible [1984, 1949]
Perlis: A language that doesn’t affect the way you think aboutprogramming, is not worth knowing [Epigrams on Programming, 1982]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 17: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/17.jpg)
That’s a bit philosophical
Does this really happen? Can programming languages help us write newkinds of program? Or even manage to stop us from writing bad ones?
LISP S-expressions, metaprogramming, treating code as data.
Higher-order functions. For example, parser combinators:expr = (expr ‘then‘ opn ‘then‘ expr) ‘or‘ termopn = (char ’+’) ‘or‘ (char ’-’)term = ...
Objects: packaging private state with methods to act on it.
Laziness for infinite datastructures:odds = 3 : map (+2) oddsfibs = 1 : 1 : [ a+b | (a,b) <- zip fibs (tail fibs) ]
[Your suggestion here. . . ]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 18: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/18.jpg)
That’s a bit philosophical
Does this really happen? Maybe.
LISP S-expressions, metaprogramming, treating code as data.
Higher-order functions. For example, parser combinators:expr = (expr ‘then‘ opn ‘then‘ expr) ‘or‘ termopn = (char ’+’) ‘or‘ (char ’-’)term = ...
Objects: packaging private state with methods to act on it.
Laziness for infinite datastructures:odds = 3 : map (+2) oddsfibs = 1 : 1 : [ a+b | (a,b) <- zip fibs (tail fibs) ]
[Your suggestion here. . . ]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 19: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/19.jpg)
Properties
One of the defining feature of computers is that they are programmable.
Programmability means that computers can always do more. Best of all,you can program new ways to program.
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 20: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/20.jpg)
Quiz
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 21: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/21.jpg)
![Page 22: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/22.jpg)
Properties
One of the defining feature of computers is that they are programmable.
Programmability means that computers can always do more. Best of all,you can program new ways to program.
Turing writing about the Automatic Computing Engine ACE:
Instruction tables will have to be made up by mathematicians withcomputing experience and perhaps a certain puzzle-solving ability.There will probably be a good deal of work of this kind to be done, ...This process of constructing instruction tables should be veryfascinating. There need be no real danger of it ever becoming adrudge, for any processes that are quite mechanical may be turned overto the machine itself.
[Proposed Electronic Calculator, 1945]That is:
If you don’t like the computer you have, you can create a better one
[Miller, LtU, 2009-05-11]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 23: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/23.jpg)
Properties
One of the defining feature of computers is that they are programmable.
Programmability means that computers can always do more. Best of all,you can program new ways to program.
Turing writing about the Automatic Computing Engine ACE:
Instruction tables will have to be made up by mathematicians withcomputing experience and perhaps a certain puzzle-solving ability.There will probably be a good deal of work of this kind to be done, ...
This process of constructing instruction tables should be veryfascinating. There need be no real danger of it ever becoming adrudge, for any processes that are quite mechanical may be turned overto the machine itself.
[Proposed Electronic Calculator, 1945]That is:
If you don’t like the computer you have, you can create a better one
[Miller, LtU, 2009-05-11]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 24: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/24.jpg)
Properties
One of the defining feature of computers is that they are programmable.
Programmability means that computers can always do more. Best of all,you can program new ways to program.
Turing writing about the Automatic Computing Engine ACE:
Instruction tables will have to be made up by mathematicians withcomputing experience and perhaps a certain puzzle-solving ability.There will probably be a good deal of work of this kind to be done, ...This process of constructing instruction tables should be veryfascinating. There need be no real danger of it ever becoming adrudge, for any processes that are quite mechanical may be turned overto the machine itself.
[Proposed Electronic Calculator, 1945]
That is:If you don’t like the computer you have, you can create a better one
[Miller, LtU, 2009-05-11]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 25: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/25.jpg)
Properties
One of the defining feature of computers is that they are programmable.
Programmability means that computers can always do more. Best of all,you can program new ways to program.
Turing writing about the Automatic Computing Engine ACE:
Instruction tables will have to be made up by mathematicians withcomputing experience and perhaps a certain puzzle-solving ability.There will probably be a good deal of work of this kind to be done, ...This process of constructing instruction tables should be veryfascinating. There need be no real danger of it ever becoming adrudge, for any processes that are quite mechanical may be turned overto the machine itself.
[Proposed Electronic Calculator, 1945]That is:
If you don’t like the computer you have, you can create a better one
[Miller, LtU, 2009-05-11]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 26: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/26.jpg)
Abstraction
The concept of abstraction adds significant power to programmability.
Abstractions build upon each other: bytes, strings, arrays, matrices
, lists,maps, trees, pointers, files, sockets, objects, databases, instructions,procedures, functions, threads, agents, behaviours, . . .
Abstraction frees up you to think about other things, and you should. Letthe machine get on with its job.
Whitehead: Civilization advances by extending the number of importantoperations which we can perform without thinking about them.Operations of thought are like cavalry charges in a battle — they arestrictly limited in number, they require fresh horses, and must only bemade at decisive moments. [Introduction to Mathematics, 1911]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 27: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/27.jpg)
Abstraction
The concept of abstraction adds significant power to programmability.
Abstractions build upon each other: bytes, strings, arrays, matrices, lists,maps, trees
, pointers, files, sockets, objects, databases, instructions,procedures, functions, threads, agents, behaviours, . . .
Abstraction frees up you to think about other things, and you should. Letthe machine get on with its job.
Whitehead: Civilization advances by extending the number of importantoperations which we can perform without thinking about them.Operations of thought are like cavalry charges in a battle — they arestrictly limited in number, they require fresh horses, and must only bemade at decisive moments. [Introduction to Mathematics, 1911]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 28: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/28.jpg)
Abstraction
The concept of abstraction adds significant power to programmability.
Abstractions build upon each other: bytes, strings, arrays, matrices, lists,maps, trees, pointers, files, sockets, objects, databases
, instructions,procedures, functions, threads, agents, behaviours, . . .
Abstraction frees up you to think about other things, and you should. Letthe machine get on with its job.
Whitehead: Civilization advances by extending the number of importantoperations which we can perform without thinking about them.Operations of thought are like cavalry charges in a battle — they arestrictly limited in number, they require fresh horses, and must only bemade at decisive moments. [Introduction to Mathematics, 1911]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 29: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/29.jpg)
Abstraction
The concept of abstraction adds significant power to programmability.
Abstractions build upon each other: bytes, strings, arrays, matrices, lists,maps, trees, pointers, files, sockets, objects, databases, instructions,procedures, functions, threads, agents, behaviours, . . .
Abstraction frees up you to think about other things, and you should. Letthe machine get on with its job.
Whitehead: Civilization advances by extending the number of importantoperations which we can perform without thinking about them.Operations of thought are like cavalry charges in a battle — they arestrictly limited in number, they require fresh horses, and must only bemade at decisive moments. [Introduction to Mathematics, 1911]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 30: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/30.jpg)
Abstraction
The concept of abstraction adds significant power to programmability.
Abstractions build upon each other: bytes, strings, arrays, matrices, lists,maps, trees, pointers, files, sockets, objects, databases, instructions,procedures, functions, threads, agents, behaviours, . . .
Abstraction frees up you to think about other things, and you should. Letthe machine get on with its job.
Whitehead: Civilization advances by extending the number of importantoperations which we can perform without thinking about them.Operations of thought are like cavalry charges in a battle — they arestrictly limited in number, they require fresh horses, and must only bemade at decisive moments. [Introduction to Mathematics, 1911]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 31: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/31.jpg)
Abstraction
The concept of abstraction adds significant power to programmability.
Abstractions build upon each other: bytes, strings, arrays, matrices, lists,maps, trees, pointers, files, sockets, objects, databases, instructions,procedures, functions, threads, agents, behaviours, . . .
Abstraction frees up you to think about other things, and you should. Letthe machine get on with its job.
Whitehead: Civilization advances by extending the number of importantoperations which we can perform without thinking about them.
Operations of thought are like cavalry charges in a battle — they arestrictly limited in number, they require fresh horses, and must only bemade at decisive moments. [Introduction to Mathematics, 1911]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 32: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/32.jpg)
Abstraction
The concept of abstraction adds significant power to programmability.
Abstractions build upon each other: bytes, strings, arrays, matrices, lists,maps, trees, pointers, files, sockets, objects, databases, instructions,procedures, functions, threads, agents, behaviours, . . .
Abstraction frees up you to think about other things, and you should. Letthe machine get on with its job.
Whitehead: Civilization advances by extending the number of importantoperations which we can perform without thinking about them.Operations of thought are like cavalry charges in a battle — they arestrictly limited in number, they require fresh horses, and must only bemade at decisive moments. [Introduction to Mathematics, 1911]
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 33: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/33.jpg)
What’s in the course?
The lectures will cover four sample areas of “advances in programminglanguages”:
Programming for concurrent codeDependent typesLINQ and cross-language integration in .NETAugmented languages for correctness and certification
Lectures also specify reading and exercises on the topics covered. Thishomework is not assessed, but it is essential in order to fully participate inthe course.
There is substantial piece of written coursework which contributes 20% ofyour course grade. This requires investigation of a topic in programminglanguages and writing a 10-page report with example code.
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 34: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/34.jpg)
Communication
Web http://www.inf.ed.ac.uk/teaching/courses/apl/
The APL web page gives detailed information about the course. Throughthe semester it will carry copies of the lecture slides, course blog,coursework assignments and past exam papers.
LecturerThe most effective way to contact the lecturer is by personal email, fromyour University email address. However, many questions are even betterasked by posting to the course mailing list.The mailing list [email protected] reaches all APL students andstaff. Check http://lists.inf.ed.ac.uk/mailman/listinfo/apl-students to seethat you are listed correctly.
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 35: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/35.jpg)
Crystal ball gazing
Some areas to watch, and possible drivers of future language design:
MulticoreWeak memory modelsGeneral-purpose computing on GPUs, FPGAsWarehouse-scale computing and upwards{Cloud,mobile,web} computingDynamic languagesTrustworthy codeQuantum computing
Don’t take this too seriously: some of these have been on the “soon to behot” list for decades. What would you put on your list?
What’s next?
e.g., the Biological Computation group at Microsoft Research UKwork on programming languages for living cells and their DNA
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 36: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/36.jpg)
Crystal ball gazing
Some areas to watch, and possible drivers of future language design:
MulticoreWeak memory modelsGeneral-purpose computing on GPUs, FPGAsWarehouse-scale computing and upwards{Cloud,mobile,web} computingDynamic languagesTrustworthy codeQuantum computing
Don’t take this too seriously: some of these have been on the “soon to behot” list for decades. What would you put on your list? What’s next?
e.g., the Biological Computation group at Microsoft Research UKwork on programming languages for living cells and their DNA
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 37: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/37.jpg)
Summary
Abstraction: Lift the level of operations you can describe
Programmability: Build a new computer from the one you have
Expression: Broaden your thoughts and the programs you can imagine
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 38: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/38.jpg)
Homework
The next lecture will be at 1510 on Friday. It’s about programming forconcurrency. Before then:
1 Read the Wikipedia article on History of programming languages.(If you find it’s missing something, fix that.)
2 Pick a programming language, and find out what support (if any) itoffers for concurrency.
3 Write a brief email to the mailing list describing what you have foundout. Or send to me and I’ll forward it
Try to avoid duplication — and no more than one language each,leave some for others.
4 Find out about the Blub Paradox.
Ian Stark APL1 / APL1: What’s so important about language? 2014-09-16
![Page 39: Advances in Programming Languagesblog.inf.ed.ac.uk/apl14/files/2014/09/apl1.pdf · programming,isnotworthknowing [Epigrams on Programming, 1982] ... Multicore Weakmemorymodels General-purposecomputingonGPUs,FPGAs](https://reader036.fdocuments.us/reader036/viewer/2022081522/5fb678936b73070659573736/html5/thumbnails/39.jpg)
The Secret Agenda of the Functional IlluminatiAll advances in the design of mainstream programming languages
shall arise from existing functional languages.Everything necessary can be found by contemplation of Haskell or ML.
The exceptionally adept may already discern all these in LISP.
3 Automatic memory management (everywhere these days)3 Exceptions (ditto)3 Parametric polymorphism (see Java/C# generics)3 Implicit pointers (any OO language)3 First-class functions (C# delegates)3 Immutable values (see Java string, F# values)3 Closures (lambdas in C#, Visual Basic 9, C++ 11, Java\7 8)? Algebraic datatypes (still trying, but see Scala case classes)? First-class continuations (. . . )