Agenda:
- Welcome
- Bio
- Q0
- Course Organization and Green Sheet Review
- Q and A
- Intro
Green sheet
- emphasize text, grading criteria, importance of keeping pace with readings
Intro
Key Points
Our main goals are:
You should gain an understanding of programming languages principles by studying the programming languages paradigms from selected representatives from key language categories.
You should develop strategies for approaching learning a new programming language. With each next progr. lang., the learning gets a little easier. So that the learning is easier when you encounter another programming language, except when changing paradigms or key categories.
You should become familiar with imperative, string- and regex-based, object-oriented, functional, declarative, template-based paradigms that we'll cover.
You should learn how to read programming language manuals, and learn to navigate through the technical presation found in compact language definitions by learning the theoretical basis for these definitions. Specifically you will learn about lexical, keywords, regular expressions, syntaxgrammars, BNF, EBNF, syntax charts, semantic formalisms including axiomatic and other semantics systems, short and concise descriptions/meta descriptions, informal notations (by understanding how things - e.g. namespaces - work)
In 1972, there were 13 programming languages that experts considered "significant". As of 2006 that number has probably increased by an order of magnitude. In 2006, Bill Kennersley maintained and published an online catalog of approximately 2,500 programming languages. http://www.people.ku.edu/~nkinners/LangList/Extras/langlist.htm According to Jean Sammet, over 200 programming languages were developed between 1952 and 1972, but she considered only about 13 of them to be significant, which is 6.5%.[2] By interpolation 6.5% of 2,500 is about 162 programming language. Learning 162 programming languages of these would take more than a lifetime.
So, which programming languages are useful to learn? Are there any lasting concepts that can be gained from studying some selected programming languages?
- Knowing for sure, instead of guessing makes you a better programmer
- better than experimenting
- can't judge a lang implementation without knowing the spec.
- e.g., Java
- Q: Who has taken the Cert. Exam?
- Q: Who has read Java Language Specification? Entire document?
- after this course, should be easier to read, understand
- Financial Motivator:
- the career "sweet spot" in time with language adoption
- note, Java sweet spot of $150-$200/day may be over
- First 1-2 years a language becomes popular
- few others truly know (for sure) the correct thing about the lang.
- pay is "higherest" during first few years
- Other reasons, motivators:
- makes you a better programmer
- helps you to advocate for particular lang.
- and know which one to use (e.g., most expressive)
- the more languages you know
- "little" languages (minilang's)
* this needs to become an ongoing practice: learning new languages
learning more about the ones we know.
Further study, i.e., after this course
- compilers, interpreters
- natural languages -- computational linguistics
- formal languages - theoretical semantics, automata, etc.
- social science aspects - e.g., software eng. issues
Misc...
- some classic defn's
data + algorithms = programs
data + behavior = objects
garbage in; garbage out