Programming Languages
Download
Report
Transcript Programming Languages
Programming Languages:
History & Traditional Concepts
CSC 2001
Solution development
Three main tasks (all very important):
Understanding the problem
unambiguous, complete description
verification/testing
Solution planning
pseudocode
algorithmic design
verification/testing
Implementation
expressing solution in a manner that a computer can execute
“programming,” but being a computer programmer is more than this!!
verification/testing
Implementation
Historical perspective
Traditional programming concepts
Procedural units
Language implementation
Programming language paradigms
imperative programming
object-oriented programming
Others
Alice
Programming Lego Mindstorm Robots with Drizzle
History
Machines can execute instructions in
machine language.
4056
Problems?
machine dependent
hard to read, write, and fix (debug)
Assembly language
In 1940’s, programmers developed a
mnemonic notational system to help.
4056 became something like…
MOV R5, R6
had to build assemblers to translate to machine
language
Pros?
more readable, easier to write
Cons?
still very low level and machine dependent
Remaining challenges
Machine independent language
Ability to express instructions in larger
increments
Why are these good goals?
What additional tools need to be built to
make it work?
Can you foresee any major obstacles with
this?
Two early successes
FORTRAN
FORmula TRANslator
focused on scientific applications
COBOL
Common Business-Oriented Language
developed by US Navy for business
applications
Supporting tools
compilers
translated from higher level language
stores result of translation for later
execution
interpreters
execute while translating
Language “generations”
First generation
machine language
Second generation
assembly language
needs assemblers
Third generation
higher level languages
needs compilers or interpreters
High level language goals
revisited
Did the third generation languages
achieve their goals of machine
independence and larger instruction
increments?
Larger instruction increments?
Yes
Machine independent solutions?
In theory
What do I mean?
We traded machine dependence for
compiler dependence.
If all compilers define the language
exactly the same way, we have machine
independence.
This is often not the case!
Standards
Languages typically have a “standard” formal
definition.
Compiler developers can choose to extend
the language if they want to.
Using these non-standard extensions can lock
you into a particular machine and compiler
because no one else recognizes those
extensions.
Why might a compiler developer do that?
Case study
Java
Developed by SUN with specific goal of
machine independence.
Microsoft’s Java implementation violated
standard.
Microsoft was told they couldn’t call it Java.
Still, you can’t assume “Java is Java.”
Lines are often more blurry with other
languages.
Best to usually stick with standard unless there is
a very good reason to deviate!
Programming language
concepts
A program consists of an ordered set of
statements expressed (typically) in
some high level programming language.
Statement types
Declarative statements
Imperative statements
Comments
Declarative statements
“define customized terminology that is
used later in the program”
associates names (variables) with locations
in main memory
declares the “data type” of each variable
tells computer how to interpret the bits in
memory
Why is this important?
Data types
Common primitive data types
integers (int)
real (double)
character (char)
Boolean
Example declarations (notations may differ!)
int x, y, amount;
double average;
char grade;
Data structures
an organization or collection of primitive data
types
provides more intuitive ways to manage data
Lists (1 dimensional) or tables (multidimensional)
arrays
Homogeneous (same type)
enables working with them as a single unit
Example declarations (notations may differ!)
char name[12]; (character string)
float scores[120][20];
Custom data structures
Example: managing student info
Option 1:
Have one array for each of the following:
last name, first name, SSN, email address, final
average, final grade
Problems?
changing sort order?
Custom data structures
Example: managing student info
Option 2:
Create a custom student data structure that
holds a student’s first and last names, SSN,
email address, and final average and grade.
Have a single array of “students”
Custom data structure
We can declare that a “student” data
structure looks as follows: (notations may
differ!)
typedef struct {
char lastName[20], firstName[20];
int SSN;
char email[40];
float average;
char grade;
} student;
What does that mean?
Is Option 2 better than Option 1? Why or why
not?
Data structures
Just like with primitive data types, data
structures tell the computer how to
interpret the bits in the memory
locations associated with the variable
name!
Variables, constants, and
literals
Values of variables often change during
program execution.
Values of constants and literals don’t.
Literals: explicit numbers (3.1415, 17)
Constants: descriptive names for
numbers (PI)
Literals v. constants
Example:
Program to compute sales price:
has array of items with prices
has to include sales tax (10 %)
.10
Can use literals everywhere
Problems
Readability (what does that .1 represent?)
Maintainability (need to change value of sales tax without
changing the price of things costing a dime)
Use a constant called SALES_TAX (good practice)
To do…
Read chapter 6