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

Reason for studying concepts of programming language

The document discusses the importance of studying programming languages, highlighting their expressive power, suitability for tasks, and the ability to learn new languages. It outlines various application domains such as scientific, data processing, and artificial intelligence, as well as criteria for language evaluation including expressivity and efficiency. Additionally, it covers influences on language design, programming paradigms, trade-offs in language design, and implementation methods like compilation and interpretation.

Uploaded by

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

Reason for studying concepts of programming language

The document discusses the importance of studying programming languages, highlighting their expressive power, suitability for tasks, and the ability to learn new languages. It outlines various application domains such as scientific, data processing, and artificial intelligence, as well as criteria for language evaluation including expressivity and efficiency. Additionally, it covers influences on language design, programming paradigms, trade-offs in language design, and implementation methods like compilation and interpretation.

Uploaded by

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

Reason for studying concepts of programming language, Application domains, critical for

language evaluation, influences on language design, language paradigms, language


design trade-offs, implementation methods.
REASONS FOR STUDYING CONCEPTS OF PROGRAMMING LANGUAGES
1. Increased ability to express ideas/algorithms
In Natural language, the depth at which people think is influenced by the expressive
power of the language they use. In programming language, the complexity of the
algorithms that people
Implement is influenced by the set of constructs available in the programming language
2. Improved background for choosing appropriate Languages
Many programmers use the language with which they are most familiar, even though
poorly suited for their new project. It is ideal to use the most appropriate language.
3. Increased ability to learn new languages
For instance, knowing the concept s of object oriented programming OOP makes
learning Java significantly easier and also, knowing the grammar of one’s native
language makes it easier to learn another language.
4. Better Understanding of Significance of implementation

5. Better use of languages that are already known

6. The overall advancement of computing

APPLICATION DOMAINS
1. Scientific Applications
2. Data processing Applications
3. Text processing Applications
4. Artificial intelligence Applications
5. Systems Programming Applications
6. Web software
SCIENTIFIC APPLICATIONS can be characterized as those which predominantly
manipulate numbers and arrays of numbers, using mathematical and statistical principles as a
basis for the algorithms. These algorithms encompass such problem as statistical significance
test, linear programming, regression analysis and numerical approximations for the
solution of differential and integral equations. FORTRAN, Pascal, Meth lab are
programming languages that can be used here.
DATA PROCESSING APPLICATIONS can be characterized as those programming
problems whose predominant interest is in the creation, maintenance, extraction and
summarization of data in records and files. COBOL is a programming language that can
be used for data processing applications.
TEXT PROCESSING APPLICATIONS are characterized as those whose principal
activity involves the manipulation of natural language text, rather than numbers as their
data. SNOBOL and C language have strong text processing capabilities
ARTIFICIAL INTELLIGENCE APPLICATIONS are characterized as those
programs which are designed principally to emulate intelligent behavior. They include
game playing algorithms such as chess, natural language understanding programs,
computer vision, robotics and expert systems. LISP has been the predominant AI
programming language, and also PROLOG using the principle of ‘’Logic programming’’
Lately AI applications are written in Java, c++ and python.
SYSTEMS PROGRAMMING APPLICATIONS involve developing those programs
that interface the c omputer system ( the hardware) with the programmer and the
operator. These programs include compilers, assembles, interpreters, input-output
routines, program management facilities and schedules for utilizing and serving the
various resources that comprise the system. Ada and Modula – 2 are examples of
programming languages used here. Also is C.
WEB SOFTWARE
Edectio collection of languages which include:
- Markup (e.g. XHTML)
- Scripting for dynamic content under which we have the
o Client side, using scripts embedded in the XHTML documents e.g.
Javascript, PHP
o Server side, using the commonGateway interface e.g. JSP, ASP, PHP
- General- purpose, executed on the web server through cGI e.g. Java, C++.
CRITERIA FOR LANGUAGE EVALUATION AND COMPARISION
1. Expressivity
2. Well – Definedness
3. Data types and structures
4. Modularity
5. Input-Output facilities
6. Portability
7. Efficiency
8. Pedagogy
9. Generality
Expressivity means the ability of a language to clearly reflect the meaning intended
by the algorithm designer (the programmer). Thus an “expressive” language permits an
utterance to be compactly stated, and encourages the use of statement forms associated
with structured programming (usually “while “loops and “if – then – else” statements).
By “well-definiteness”, we mean that the language’s syntax and semantics are free of
ambiguity, are internally consistent and complete. Thus the implementer of a well-
defined language should have, within its definition a complete specification of all the
language’s expressive forms and their meanings. The programmer, by the same virtue
should be able to predict exactly the behavior of each expression before it is actually
executed.
By “Data types and Structures”, we mean the ability of a language to support a variety of
data values (integers, real, strings, pointers etc.) and non elementary collect ions of these.
Modularity has two aspects: the language’s support for sub-programming and the
language’s extensibility in the sense of allowing programmer – defined operators and
data types. By sub programming, we mean the ability to define independent procedures
and functions (subprograms), and communicate via parameters or global variables with
the invoking program.
In evaluating a language’s “Input-Output facilities” we are looking at its support for
sequential, indexed, and random access files, as well as its support for database and
information retrieval functions.
A language which has “portability” is one which is implemented on a variety of
computers. That is, its design is relatively”machine – independent”. Languages which are
well- defined tend to be more portable than others.
An “efficient” language is one which permits fast compilation and execution on the
machines where it is implemented. Traditionally, FORTRAN and COBOL have been
relatively efficient languages in their respective application areas.
Some languages have better “pedagogy” than others. That is, they are intrinsically
easier to teach and to learn, they have better textbooks; they are implemented in a
better program development environment, they are widely known and used by the best
programmers in an application area.
Generality: Means that a language is useful in a wide range of programming
applications. For instance, APL has been used in mathematical applications involving
matrix algebra and in business applications as well.
INFLUENCES ON LANGUAGE DESIGN
1. Computer Architecture: Languages are developed around the prevalent computer
architure, known as the Von Neumann architecture (the most prevalent computer
architecture).
Fig; Von Neumann Architecture

Memory (Stores both instructions and


data)

Results of Operations Instructions and data

Arithmetic and Control Unit


input and Output
Logic unit
Devices

The connection speed between a computer’s memory and its processor determines the
speed of that computer. Program instructions often can be executed much faster than
the speed of the connection; the connection speed thus, results in a bottleneck (Von
Neumann bottleneck). It is the primary limiting factor in the speed of computers.
2. Programming Methodologies: New software development
methodologies (e.g. object Oriented Software Development) led to new paradigms in
programming and by extension, to new programming languages.
LANGUAGE PARADIGMS (Developments in Programming Methodology)
1. Imperative
This is designed around the Von Neumann architecture. Computation is performed
through statements that change a program’s state. Central features are variables,
assignment statements and ileration, sequency of commands, explicit state update via
assignment. Examples of such languages are Fortran, Algol, Pascal, e/c++, Java, Perl,
Javascript, Visual BASIC.NET.
2. Functional
Here, the main means of making computations is by applying functions to parameters.
Examples are LISP, Scheme, ML, Haskell. It may also include OO (Object Oriented)
concepts.
3. Logic
This is Rule-based (rules are specified in no particular order). Computations here are
made through a logical inference process. Examples are PROLOG and CLIPS. This may
also include OO concepts.
TRADE-OFFS IN LANGUAGE DESIGN
1. Reliability Vs. Cost of Execution: For example, Java demands that all
references to array elements be checked for proper indexing, which leads to increased
execution costs.
2. Readability vs. Writability: - APL provides many powerful operators land a large
number of new symbols), allowing complex computations to be written in a compact
program but at the cost of poor readability.
3. Writability (Flexibility) vs. reliability: The pointers in c++ for instance are powerful
and very flexible but are unreliable.

IMPLEMENTATION METHODS
1. Compilation – Programs are translated into machine Language & System calls
2. Interpretation – Programs are interpreted by another program (an interpreter)
3. Hybrid – Programs translated into an intermediate language for easy
interpretation
4. Just –in-time – Hybrid implementation, then compile sub programs code the first time
they are called.
COMPILATION
- Translated high level program (source language) into machine code (machine
language)
- Slow translation, fast execution
- Compilation process has several phases
o Lexical analysis converts characters in the source program into lexical units (e.g.
identifiers, operators, keywords).
o Syntactic analysis: transforms lexical units into parse trees which represent the syntactic
structure of the program.
o Semantics analysis check for errors hard to detect during syntactic analysis; generate
intermediate code.
o Code generation – Machine code is generated
- INTERPRETATION
- - Easier implementation of programs (run-time errors can easily and
immediately be displayed).
- Slower execution (10 to 100 times slower than compiled programs)
- Often requires more memory space and is now rare3 for traditional high- level
languages.
- Significant comeback with some Web scripting languages like PHP and JavaScript.
- Interpreters usually implement as a read-eval-print loop:
o Read expression in the input language (usually translating it in some internal form)
o Evaluates the internal forms of the expression
o Print the result of the evaluation
o Loops and reads the next input expression until exit
- Interpreters act as a virtual machine for the source language:
o Fetch execute cycle replaced by the read-eval-print loop
o Usually has a core component, called the interpreter “run-time” that is a compile
program running on the native machine.
HYBRID IMPLEMENTAITON
- This involves a compromise between compilers and pure interpreters. A high level program
is translated to an intermediate language that allows easy interpretation.
- Hybrid implementation is faster than pure interpretation. Examples of the implementation
occur in Perl and Java.
o Perl programs are partially compiled to detect errors before interpretation.
o Initial implementat6ions of Java were hybrid. The intermediate form, byte code, provides
portability to any machine that has a byte code interpreter and a run time system (together,
these are called Java Virtual Machine).
JUST-IN-TIME IMPLEMENTATION
This implementation initially translates programs to an intermediate language then compile
the intermediate language of the subprograms into machine code when they are called.
- Machine code version is kept for subsequent calls. Just-in-time systems are widely used
for Java programs. Also .NET languages are implemented with a JIT system.

You might also like