Guest 6
Lecture 20 - February 28th, 2017
Guest Lecture
By Daniel German
Programming Languages
What is programming:
- SQL:
select * from books
- HTML:
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello!</h1>
</body>
</html>
- Prolog:
playsAirGuitar(jody).
?- playsAirGuitar(jody).
Are some programming languages better than others?
- ArnoldC
- Based on Arnold quotes
Two Criteria:
- Can our language allow us to program the computer to do anything our computer can do?
- Can ou computer do anything that our program can express?
Turing Machine
- Entscheidungsproblem
- Does there exist an algorithm for deciding wether or not a specific mathematical assertion does or does not have a proof?
- Church-Turing Thesis
- A function on the natural numbers is computable in an informal sense if and only if it is computable...
- Lambda-Calculus = Turing Machine = Pencil and Paper
Turing Complete
- A programming language that can used to simulate a turing machine
- Any turing machine can be simulated with a program in such language
- Any program in such language can be converted to a turing machine
BrainFuck
- http://www.muppetlabs.com/~breadbox/bf/
- Language is Turing Complete
Therefore not all TC languages are very useful.
What is a good programming language?
Answer: The one that gets you a job?
How to learn how to program
Answer: Not in your CS courses!
"Quote" - Alan Perlis
The five features you must learn
- The Syntax
- The Semantics
- The Libraries
- The Idioms
- The Tools
Additional Reading: What makes a great software engineer? By Oaul Luo Li, Andrew J. Ko, and Jiamin Zhu
Skills of a good programmer
- Curious
- Hardworking
My recommendations?
- Be great at
- one programming language
- Be good at
- one statically typed language
- one dynamincally type language
- one functional language
-
Master:
- Typing
- Debugging
- One Programming Environment
- Version Control
- A Configuration Management Tool (cmake)
- Testing
-
Select your jobs carefully
- Do side-projects
- And keep learning