This is the last seminar and might be the most insightful one that we have ever had for the whole semester as it shows us the scene behind programming language. In other words, we usually focus on how to master a programming language but seldom think about how to design a programming language.
Firstly, Prof Martin talked about what is programming language and the function of programming language. Basically speaking the Language are designed for human/computer to instruct computer.
Then he went on to give us some principles of designing a programming language and some interesting examples which make them easy to understand.
--Brevity
Just like the language we use to communicate, programming language also requires brevity. In English, POS can represent “parents over shoulders” which can be quite useful while children inform their friends online about the presence of their parents. In programming language, we also have these abbreviations like for, while, define and so on.
But the problem is that hackers also like brevity. “Hackers are lazy, in the same way that mathematicians and modernist architects are lazy: they hate anything extraneous. It would not be far from the truth to say that a hacker about to write a program decides what language to use, at least subconsciously, based on the total number of characters he’ll have to type.”(Deane ,2005)
--Expressivity
It can be defined as capability of a programming language to express the solution of a problem in:
a) the closest way to the original problem formulation,
b) a clear, natural, intuitive, and concise way,
c) in terms of other solved (sub)problems.
--Minimality
Can we have one argument for a function instead of two or more? Can we have a programming language that contains no conditionals and no arguments which can make the programming codes short and easier to understand?
With these, Pro talked about the difference between a theoretician’s programming language and a programmer’s one.
A theoretician’s programming language which is related to lambda calculus has only function definition and function application. No numbers, no loops, no conditionals and no multiple arguments. Is this possible? For example, we can substitute Boolean with
Ture: function takes in two arguments return the first one
False: function takes in two arguments and return the second one
Besides, we can also do recursion like factorial without the trouble of naming the function. It sounds fantastic. Why not try it out yourself.
A programmer’s version of programming language, as we all are familiar with, is much different from the one of theoreticians. Then I happened to realize that the language that I have been learning for the whole semester- Scheme is more like the one of theoreticians. It is painful to do programming with theoreticians’ programming language but it helps a lot to build the power of your logic.
That’s all for the round-up. I enjoyed this seminar though I could not finish it due to my exam. Hope my friends in the class enjoyed more than I did.
Liu Liu
Reference
http://gadgetopia.com/post/4023
LIGHT A FIRE!
Friday, November 6, 2009
Subscribe to:
Post Comments (Atom)
Followers
Blog Archive
-
▼
2009
(76)
-
▼
November
(31)
- how search engines work
- on-line novel? how can that make money??
- the history of c language
- Cloud Computing in Web Services – Next Generation ...
- Amazon, the virtual Bookstore(and more!)
- Maya-the Most Prestigious 3D Comupter Graphics Sof...
- Game Hacking
- The most useful programming language
- Computer Vision & Interface: Making today’s vision...
- Visual Computer Seminar Round Up
- History of JavaScript
- Pre-reading of Scheme for Friday’s presentation
- Round-up for Amazon seminar
- I love FMC1202
- What Graphic Cards Actually Cards Do!
- Legal issue around Visual Computing
- Write-up for Weird Math Behind Javascript Programming
- Lamda-Calculus session round-up
- Round-up of Weird Math behind JavaScript Programming
- More Java Script: Object Oriented Programming in J...
- China's B2B legend-Alibaba
- Computer Vision : Some different applications and ...
- Write-up for Visual Computing
- Night Vision Devices
- Computer Vision
- Visual computing roundup
- MapReduce, from a developer's perspective.
- Write-up for Amazon Dynamo & Google MapReduce
- Defence Of The Ancients(DOTA)
- Round-up for the third presentation
-
▼
November
(31)
No comments:
Post a Comment