Introduction


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

Learning Outcomes

Our main goals are:

  • To learn about programming languages principles that may be applied to many programming languages, i.e., programming language families.
  • To learn how to learn new programming languages.
  • To learn some specific new programming languages chosen from different key categories.

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)

How Many Programming Languages Are Worth Learning?

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?

Motivators



- 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