0% found this document useful (0 votes)
68 views

Programming Languages: Slide 1

This document provides an overview of the topics that will be covered in a programming languages course, including: - The course will survey fundamental concepts underlying modern programming languages like procedural, functional, object-oriented, and concurrent paradigms. - Some goals of the course are to understand how languages provide frameworks for problem-solving, appreciate the history and diversity of programming language ideas, and recognize tradeoffs in language and implementation designs. - The course will examine popular languages like C, C++, Java as well as concepts currently being explored for new languages and tools.

Uploaded by

Douglas Chibiku
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views

Programming Languages: Slide 1

This document provides an overview of the topics that will be covered in a programming languages course, including: - The course will survey fundamental concepts underlying modern programming languages like procedural, functional, object-oriented, and concurrent paradigms. - Some goals of the course are to understand how languages provide frameworks for problem-solving, appreciate the history and diversity of programming language ideas, and recognize tradeoffs in language and implementation designs. - The course will examine popular languages like C, C++, Java as well as concepts currently being explored for new languages and tools.

Uploaded by

Douglas Chibiku
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 15

Programming Languages

slide 1
Course Materials
 Textbook:
Mitchell. “Concepts in Programming Languages.”
• Attend lectures! Lectures will cover some material that
is not in the textbook – and you will be tested on it!
 Harbison, Steele. “C: A Reference Manual.”
(5th edition)
 Occasional assigned readings

slide 2
Other Helpful Books
 Bison Manual
 Dybvig. “The Scheme Programming Language.”
 Harper. “Programming in Standard ML.”
 All of these are available for free online
• See links on the course website

slide 3
Syllabus
 Survey of fundamental concepts underlying
modern programming languages
• Goal: understand paradigms, not vocational training
in any given language
• Examples drawn from ANSI C, C++, Java, Scheme,
ML, JavaScript …
 Procedural / imperative
 Functional / applicative
 Object-oriented
 Concurrent
slide 4
Some Course Goals
 Language as a framework for problem-solving
• Understand the languages you use, by comparison
• Appreciate history, diversity of ideas in programming
• Be prepared for new methods, paradigms, tools
 Critical thought
• Identify properties of language, not syntax or sales pitch
 Language and implementation tradeoffs
• Every convenience has its cost
– Recognize the cost of presenting an abstract view of machine
– Understand tradeoffs in programming language design

slide 5
Dijkstra on Language Design
 “The use of COBOL cripples the mind; its teaching
should, therefore, be regarded as a criminal offence.”
 “APL is a mistake, carried through to perfection.
It is the language of the future for the programming
techniques of the past: it creates a new generation
of coding bums.”
 “FORTRAN, 'the infantile disorder’ … is hopelessly inadequate for
whatever computer application you have in mind today: it is now
too clumsy, too risky, and too expensive to use.”
 “It is practically impossible to teach good programming to students
that have had a prior exposure to BASIC: as potential
programmers they are mentally mutilated beyond hope of
regeneration.”

slide 6
What’s Worth Studying?
 Dominant languages and paradigms
• C, C++, Java… JavaScript?
• Imperative and object-oriented languages
 Important implementation ideas
 Performance challenges
• Concurrency
 Design tradeoffs
 Concepts that research community is exploring
for new programming languages and tools

slide 7
Languages in Common Use
[F. Labelle]

Based on open-source projects at SourceForge


slide 8
Flon’s Axiom

“There is not now, nor has there ever been,


nor will there ever be,
any programming language in which
it is the least bit difficult to write bad code.”
- Lawrence Flon

slide 9
Latest Trends
 Commercial trends
• Increasing use of type-safe languages: Java, C#, …
• Scripting and other languages for Web applications
 Teaching trends: Java replacing C
 Research and development trends
• Modularity
• Program analysis
– Automated error detection, programming environments,
compilation
• Isolation and security
– Sandboxing, language-based security, …
slide 10
Support for Abstraction
 Data
• Programmer-defined types and classes
• Class libraries
 Procedural
• Programmer-defined functions
• Standard function libraries

slide 11
Reliability
 Program behavior is the same on different
platforms
• E.g., early versions of Fortran
 Type errors are detected
• E.g., C vs. ML
 Semantic errors are properly trapped
• E.g., C vs. C++
 Memory leaks are prevented
• E.g., C vs. Java

slide 12
What Does This C Statement Mean?

modifies *p

*p++ = *q++
increments p increments q

Does this mean… … or … or


*p = *q; *p = *q; tp = p;
++p; ++q; ++p;
++q; ++p; tq = q;
++q;
*tp = *tq;
slide 13
Orthogonality
 A language is orthogonal if its features are built
upon a small, mutually independent set of
primitive operations.
 Fewer exceptional rules = conceptual simplicity
• E.g., restricting types of arguments to a function
 Tradeoffs with efficiency

slide 14
Efficient Implementation
 Embedded systems
• Real-time responsiveness (e.g., navigation)
• Failures of early Ada implementations
 Web applications
• Responsiveness to users (e.g., Google search)
 Corporate database applications
• Efficient search and updating
 AI applications
• Modeling human behaviors

slide 15

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy