0% found this document useful (0 votes)
31 views6 pages

Cit 301 Notes

Programming languages are essential for instructing computers and understanding their design enhances problem-solving skills and adaptability. They vary by application domain and are evaluated based on readability, writability, reliability, and cost. Structured programming improves code quality by promoting modularity and clarity, contrasting with unstructured approaches that can lead to chaotic code.

Uploaded by

keyalevis56
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)
31 views6 pages

Cit 301 Notes

Programming languages are essential for instructing computers and understanding their design enhances problem-solving skills and adaptability. They vary by application domain and are evaluated based on readability, writability, reliability, and cost. Structured programming improves code quality by promoting modularity and clarity, contrasting with unstructured approaches that can lead to chaotic code.

Uploaded by

keyalevis56
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

CONCEPT OF PROGRAMMING LANGUAGES

1.1 Introduction

Programming languages are the primary tools used to instruct computers to perform
specific tasks. Just as human beings communicate using natural languages, computers
require formal, well-defined languages to process instructions. Programming languages not
only provide a means of communication between humans and machines but also shape
the way we think about problem solving, algorithms, and software development.

Studying programming languages is not merely about learning their syntax. It involves
understanding the concepts, paradigms, and trade-offs that underlie language design and
usage. With hundreds of languages in existence and new ones being created every decade,
a solid grasp of programming languages equips a student or professional with flexibility
and adaptability.

1.2 Reasons for Studying Programming Languages

1. Improved Understanding of Programming as a Discipline


o Concepts such as abstraction, recursion, type systems, and control structures
transcend individual languages.
o By studying languages broadly, we learn to recognize the underlying
principles rather than memorizing syntax.
2. Ability to Choose the Right Tool for the Job
o Different application domains (e.g., business, AI, web development) favor
different languages.
o Example: Python is often used in AI, while C is preferred for embedded
systems.
3. Enhanced Problem-Solving Skills
o Exposure to multiple paradigms (functional, object-oriented, logic) expands
one’s mental toolkit.
o Thinking in recursion (Haskell) differs from thinking in loops (C).
4. Better Use of Existing Languages
o Understanding concepts like memory management or exception handling
makes you a more effective programmer, regardless of the language.
5. Preparation for New Languages
o Once you understand paradigms, learning new languages becomes easier.
For instance, learning Kotlin is smoother if you know Java.
6. Understanding Compilers, Interpreters, and Runtime Systems
o Enables programmers to write more efficient and reliable code.
o Example: Knowing how garbage collection works helps avoid memory
leaks.
7. Career Development
o Software development trends evolve rapidly. Adaptability ensures long-
term employability.

1.3 Programming Domains

Programming languages often arise to serve particular problem domains:

Domain Examples Characteristics


Scientific FORTRAN, Focus on mathematical computation,
Computing MATLAB, R precision, numerical methods.
Business COBOL, SQL, Emphasis on data processing, file handling,
Applications Java reliability.
Systems C, Rust, Assembly Efficiency, hardware interaction, resource
Programming management.
Artificial Lisp, Prolog, Symbolic reasoning, pattern matching,
Intelligence Python flexibility.
Web Applications JavaScript, PHP, Rapid development, integration with
Ruby browsers/servers.
Mobile Kotlin, Swift GUI focus, energy efficiency, platform-specific
Applications libraries.

1.4 Language Evaluation Criteria

When evaluating programming languages, four major criteria are used:

1. Readability
o Simplicity and consistency of syntax.
o Example: Python’s indentation vs C’s use of curly braces.
2. Writability
o How easily a programmer can express algorithms.
o Example: Java is verbose, while Python is concise.
3. Reliability
o Error detection, type safety, exception handling.
o Example: Strong typing in Java reduces runtime errors compared to weak
typing in JavaScript.
4. Cost
o Includes training, implementation, execution, and maintenance.
o Example: Open-source languages (Python, PHP) reduce software licensing
costs.
PROGRAMMING LANGUAGE EVOLUTION AND PARADIGMS

2.1 Historical Influences on Language Design

 Mechanical Computing Era


o Charles Babbage’s Analytical Engine and Ada Lovelace’s early algorithm
concepts.
 First-Generation Languages
o Machine languages: binary instructions directly executed by CPUs.
 Second-Generation Languages
o Assembly languages: symbolic representation of machine instructions.
 Third-Generation Languages (1950s–1960s)
o High-level languages: FORTRAN, COBOL, ALGOL.
 Structured Programming (1970s)
o C, Pascal promoted modular, readable programs.
 Object-Oriented Programming (1980s–1990s)
o Smalltalk, C++, Java introduced encapsulation, inheritance, and
polymorphism.
 Functional Programming Revival
o Lisp, Haskell, Scala emphasize immutability and recursion.
 Scripting and Internet Era (1990s–2000s)
o JavaScript, PHP, Python popular for rapid development.
 Modern Trends
o Multi-paradigm languages (Python, Rust, Kotlin) blending paradigms for
flexibility.

2.2 Language Categories

1. Imperative Languages (C, Pascal) – explicit sequence of instructions.


2. Functional Languages (Haskell, Lisp) – mathematical functions, immutability.
3. Logic-Based Languages (Prolog) – rules, facts, and logical inference.
4. Object-Oriented Languages (Java, Python, C++) – objects, classes, encapsulation.
5. Scripting Languages (JavaScript, Perl) – lightweight, interpreted, quick prototyping.

2.3 Overview of Programming Paradigms

 Procedural – step-by-step instructions, modular (C, Pascal).


 Object-Oriented – encapsulates data and methods into objects (Java, Python).
 Functional – emphasizes immutability and pure functions (Haskell).
 Declarative – describes what to solve, not how (SQL, Prolog).
 Event-Driven – responds to external triggers (JavaScript in browsers).
2.4 Language Implementation Methods

 Compilation
o Translates entire program into machine code before execution.
o Fast execution but longer compilation time. Example: C, Rust.
 Interpretation
o Executes program line by line.
o Slower execution but flexible and interactive. Example: Python.
 Hybrid Models
o Compilation into intermediate code, then interpretation.
o Example: Java → bytecode executed by JVM.

STRUCTURED VS. UNSTRUCTURED PROGRAMMING

3.1 Programming Environments

A programming environment includes all the tools required for writing, testing, and
debugging programs:

 Editors/IDEs: Eclipse, Visual Studio Code, PyCharm.


 Compilers/Interpreters: Convert code into machine instructions.
 Debuggers: Help identify and fix errors.
 Version Control Systems: Git, SVN for collaboration.

3.2 Core Constructs

 Data Types
o Primitive: int, float, char.
o Composite: arrays, structs, objects.
 Functions/Procedures
o Promote modularity and code reuse.
o Example (C):
o int add(int a, int b) {
o return a + b;
o }
 Arrays
o Fixed-size collections of elements.
o Example (Python):
o nums = [1, 2, 3, 4]
 Random Numbers
o Used in simulations, games, security.
o Example (Python):
o import random
o print(random.randint(1, 10))
 String Handling
o Concatenation, slicing, searching.
o Example (Python):
o name = "Alice"
o print(name[0:3]) # Ali

3.3 Structured Programming Concepts

Structured programming arose in response to the chaos of “spaghetti code” caused by


excessive use of goto.

Key features:

1. Sequence – instructions executed in order.


2. Selection – conditional branching (if, switch).
3. Iteration – loops (for, while).
4. Modularity – divide program into smaller components.

Example of Unstructured Code (with goto in C):

#include <stdio.h>
int main() {
int i = 0;
start:
if (i < 5) {
printf("%d\n", i);
i++;
goto start;
}
return 0;
}

Structured Version (using a loop):

#include <stdio.h>
int main() {
for (int i = 0; i < 5; i++) {
printf("%d\n", i);
}
return 0;
}
3.4 Assignment I

Task:

1. Compare structured vs. unstructured code using the above examples.


2. Implement a simple calculator in both structured and unstructured programming
style.
3. Write a short report (2–3 pages) on the advantages of structured programming in
modern software development.

Summary (Weeks 1–3)

 Programming languages provide a structured way to communicate with


computers.
 Different languages serve different domains and paradigms.
 Language design is influenced by history, domain needs, and paradigms.
 Structured programming improves readability, reliability, and maintainability
compared to unstructured approaches.

You might also like