20
A Project Approach to Programming Language Theory Joan Krone Denison University

A Project Approach to Programming Language Theory Joan Krone Denison University

Embed Size (px)

Citation preview

A Project Approach to Programming Language Theory

Joan Krone

Denison University

2

Many Languages

• Natural 6,912 Millennia to develop

• Programming 2,500 (U. of Kansas) 8,500 (Diarmuid Piggott) all within 50 years

• One language per week since Fortran based on the 2,500

3

Where Have All the Languages Gone?

• Assembler• Fortran• Basic• Pascal• PL1• Modula2• Ada• C• C++• Lisp/Scheme

• ML• Clu• Prolog• Smalltalk• Eiffel• Python• Perl• Java• PHP• HTML

4

Recent Article

Ryder, Soffa, Burnett, “The Impact of Software Engineering Research on Modern Programming Languages,” ACM TOSEM, 2005.

5

Paradigms

• Logic

• Structured

• Procedural

• OO

• Use of Abstraction (java interfaces)

6

7

Why Johnny Can’t Code

• David Brin

• Language for novices?

8

The Problem

• Maybe Basic

• Probably java

• Lack of student experience

9

Two Levels of Programming Language Courses

• Sophomore Level: survey

• Senior Level: capstone

10

A Two Pronged Approach

• Semester Project

• Daily assignments – Same questions– Different languages for different students

11

Project Choices

1. Become a guru.2. Do a comparative analysis of 2 languages in

the same category.• C++ and Java• Perl and HTML

3. Do a comparative analysis of 2 languages in the different categories.

• Java and Scheme• Haskell and Python

12

4. Write a translator for a simple language.

5. Design a new language.

13

14

To Be a Guru

• Classify

• History

• Scoping

• Type Checking

• Support for Abstraction

• Concurrency

• Type Conversion

15

• Write documentation• Choose at least 3 features unique to your

language and explain how those features can be used advantageously by a programmer to perform some task in your language more efficiently than it could be done in another language without those features.

• Be prepared to give a talk and a demonstration which illustrate how your language facilitates the implementation of solutions to problems.

16

Daily Requirement

• Choose a language

• Discover how that language handles a particular topic, such as scoping.

• Prepare a demo to illustrate the discovery

17

Class Size

• Small class - - individual investigations

• Large class - - groups of 2, 3, or 4

18

Programming Languages are Like Cars

Assembler: A formula I race car. Very fast but difficult to drive and maintain.

FORTRAN II: A Model T Ford. Once it was the king of the road.FORTRAN IV: A Model A Ford.FORTRAN 77: a six-cylinder Ford Fairlane with standard transmission

and no seat belts.COBOL: A delivery van. It's bulky and ugly but it does the work.BASIC: A second-hand Rambler with a rebuilt engine and patched

upholstery. Your dad bought it for you to learn to drive. You'll ditch it as soon as you can afford a new one.

PL/I: A Cadillac convertible with automatic transmission, a two-tone paint job, white-wall tires, chrome exhaust pipes, and fuzzy dice hanging in the windshield.

19

• Pascal: A Volkswagon Beetle. It's small but sturdy. Was once popular with intellectual types.

• LISP: An electric car. It's simple but slow. Seat belts are not available.• PROLOG/LUCID: Prototype concept cars.• FORTH: A go-cart.• LOGO: A kiddie's replica of a Rolls Royce. Comes with a real engine and a

working horn.• APL: A double-decker bus. It takes rows and columns of passengers to the

same place all at the same time but it drives only in reverse and is instrumented in Greek.

• Ada: An army-green Mercedes-Benz staff car. Power steering, power brakes, and automatic transmission are standard. No other colors or options are available. If it's good enough for generals, it's good enough for you.

• C++: A black Firebird, the all macho car. Comes with optional seatbelt (lint) and optional fuzz buster (escape to assembler).

• Java: All-terrain very slow vehicle.

20

Our Future

• C++ and Java forever?

• Probably Not

• Our students may be the designers of the next important language

• Hopefully, they will learn from history