COMPUTER PROGRAMMING(DIT 111) ASSIGNMENT
UNIVERSITY OF SIERRA LEONE
INSTITUTE OF PUBLIC ADMINISTRATION AND MANAGEMENT
NAME: MOHAMED ALPHA KAMARA
ID: I - 24 - 64179
LEVEL: YEAR ONE
COURSE: B. SC. INFORMATION TECHNOLOGY
MODULE: COMPUTER PROGRAMMING (DIT 111)
1. THE MILESTONE OF COMPUTING AND PROGRAMMING LANGAUGES.
INTRODUCTION
ü Any digital device we use in our everyday life, depends on an algorithm developed through a computer programming language. This is simply how computers communicate with each other.
ü Ever wondered how many computer programming languages are currently in existence? Varying estimates place the total number of programming languages anywhere between 250 and 9000.
Whether coding in a client’s language of choice, or their own, today’s software and web developers benefit from an abundance of available programming languages for any application. Software developers, a profession in constant evolution.
In this article, we will explore the gradual evolution of some of the world’s most important programming languages, as well as discover some of today’s most crucial programming trends.
Programming Language?
programming language as a computer language used by programmers or software developers in order to communicate with computers and other digital devices.
It is essentially a series of instructions, or algorithms, written within a specific language environment like Python or C, with a primary goal of performing a wide range of specific tasks.
Types of Programming Languages
Generally, all computer programming languages, whether brand new or old, can be divided into two main categories:
Low Level Languages
Low level languages are used for writing computer instructions in binary code, that is machine code made up of the numbers 0 and 1. Examples of low level languages include machine language and assembly language. Machine language is the first generation of computer programming using instructions in binary form that can be directly interpreted by a CPU without a need for translation. Assembly language is the second generation of low level computer programming. This type of language allows programmers to write computer instructions through the use of symbolic code instead of binary code made up of just 0s and 1s.
High Level Languages
High level languages are programming languages that enable software developers to write computer instructions by using commands that are written in human languages like English. Every high level language has its own set of rules and grammar for writing instructions to program any digital device. These unique sets of rules are generally referred to as the ‘syntax’ of a particular programming language. In contrast to low level languages, before running a program written in a high level language, the coding instructions must first be translated into machine code. Every high level programming language uses its own built-in translation program.
The history of programming languages spans from documentation of early mechanical computers to modern tools for software development. Early programming languages were highly specialized, relying on mathematical notation and similarly obscure syntax. Throughout the 20th century, research in compiler theory led to the creation of high-level programming languages, which use a more accessible syntax to communicate instructions.
The first high-level programming language was Plankalkül, created by Konrad Zuse between 1942 and 1945.The first high-level language to have an associated compiler was created by Corrado Böhm in 1951, for his PhD thesis. The first commercially available language was FORTRAN (FORmula TRANslation), developed in 1956 (first manual appeared in 1956, but first developed in 1954) by a team led by John Backus at IBM.
Early history
During 1842–1849, Ada Lovelace translated the memoir of Italian mathematician Luigi Menabrea about Charles Babbage's newest proposed machine: the Analytical Engine; she supplemented the memoir with notes that specified in detail a method for calculating Bernoulli numbers with the engine, recognized by most of historians as the world's first published computer program.
Jacquard Looms and Charles Babbage's Difference Engine both were designed to utilize punched cards, which would describe the sequence of operations that their programmable machines should perform.
The first computer codes were specialized for their applications: e.g., Alonzo Church was able to express the lambda calculus in a formulaic way and the Turing machine was an abstraction of the operation of a tape-marking machine.
First programming languages
In the 1940s, the first recognizably modern electrically powered computers were created. The limited speed and memory capacity forced programmers to write hand-tuned assembly language programs. It was eventually realized that programming in assembly language required a great deal of intellectual effort.
An early proposal for a high-level programming language was Plankalkül, developed by Konrad Zuse for his Z1 computer between 1942 and 1945 but not implemented at the time.
The first functioning programming languages designed to communicate instructions to a computer were written in the early 1950s. John Mauchly's Short Code, proposed in 1949, was one of the first high-level languages ever developed for an electronic computer. Unlike machine code, Short Code statements represented mathematical expressions in understandable form. However, the program had to be interpreted into machine code every time it ran, making the process much slower than running the equivalent machine code.
In the early 1950s, Alick Glennie developed Autocode, possibly the first compiled programming language, at the University of Manchester.
In 1954, a second iteration of the language, known as the "Mark 1 Autocode", was developed for the Mark 1 by R. A. Brooker. Brooker, with the University of Manchester, also developed an autocode for the Ferranti Mercury in the 1950s.
The version for the EDSAC 2 was devised by Douglas Hartree of University of Cambridge Mathematical Laboratory in 1961. Known as EDSAC 2 Autocode, it was a straight development from Mercury Autocode adapted for local circumstances and was noted for its object code optimization and source-language diagnostics which were advanced for the time. A contemporary but separate thread of development, Atlas Autocode was developed for the University of Manchester Atlas 1 machine.
In 1954, FORTRAN was invented at IBM by a team led by John Backus; it was the first widely used high-level general purpose language to have a functional implementation, in contrast to only a design on paper. When FORTRAN was first introduced, it was viewed with skepticism due to bugs, delays in development, and the comparative efficiency of "hand-coded" programs written in assembly. However, in a hardware market that was rapidly evolving, the language eventually became known for its efficiency. It is still a popular language for high-performance computing and is used for programs that benchmark and rank the world's TOP500 fastest supercomputers.
Another early programming language was devised by Grace Hopper in the US, named FLOW-MATIC. It was developed for the UNIVAC I at Remington Rand during the period from 1955 until 1959. Hopper found that business data processing customers were uncomfortable with mathematical notation, and in early 1955, she and her team wrote a specification for an English language programming language and implemented a prototype.
The FLOW-MATIC compiler became publicly available in early 1958 and was substantially complete in 1959. Flow-Matic was a major influence in the design of COBOL, since only it and its direct descendant AIMACO were in use at the time.
Other languages still in use today include LISP (1958), invented by John McCarthy and COBOL (1959), created by the Short Range Committee. Another milestone in the late 1950s was the publication, by a committee of American and European computer scientists, of "a new language for algorithms"; the ALGOL 60 Report (the "ALGOrithmic Language"). This report consolidated many ideas circulating at the time and featured three key language innovations:
- Nested block structure: code sequences and associated declarations could be grouped into blocks without having to be turned into separate, explicitly named procedures;
- lexical scoping: a block could have its own private variables, procedures and functions, invisible to code outside that block, that is, information hiding.
ALGOL 60 was particularly influential in the design of later languages, some of which soon became more popular. The Burroughs large systems were designed to be programmed in an extended subset of ALGOL.
ALGOL's key ideas were continued, producing ALGOL 68:
- syntax and semantics became even more orthogonal, with anonymous routines, a recursive typing system with higher-order functions, etc.;
- not only the context-free part, but the full language syntax and semantics were defined formally, in terms of Van Wijngaarden grammar, a formalism designed specifically for this purpose.
ALGOL 68's many little-used language features (for example, concurrent and parallel blocks) and its complex system of syntactic shortcuts and automatic type coercions made it unpopular with implementers and gained it a reputation of being difficult. Niklaus Wirth actually walked out of the design committee to create the simpler Pascal language.
The Evolution of Computer Programming LANGUAGES: In our digital age where almost anything is instantly possible with a few clicks, it’s easy to forget how far we have traveled on a journey of incredible technological advancement. Let’s have a look at some key evolutionary milestones of computer programming languages:
1843 – Ada Lovelace programs for Charles Babbage’s analytical engine
ADA 1980s |
Named after Ada Lovelace, the computing pioneer, ADA was designed by Jean Ichbiah’s team at CUU Honeywell Bull. Ada is a high-level programming language, extended from other popular programming languages such as Pascal. ADA is used for air-traffic control in various European countries and space programs.
Considered by some to be the ‘father of the computer’, in 1837, Charles Babbage proposed the analytical engine, a mechanical general-purpose computer. By 1843, Ada Lovelace, the world’s first computer programmer, was the first to recognise that the analytical engine could do much more than just calculations, and she published the first algorithm that was intended to run on it.
1949 – Assembly becomes first widely-used programming language type
As mentioned above, this type of low level programming language is significant because it was the first to enable programmers to write code by using symbols instead of binary code. Even today, the same type of computer programming is used in real-time software like simulation flight navigation systems and medical monitoring equipment, or for creating computer viruses.
1952 – Autocode becomes first compiled computer programming language
First developed by Alick Glennie for the Mark 1 computer, Autocode is a term used for a family of ‘simplified coding systems’ – later renamed to programming languages – which eventually came to include examples like Cobol and Fortran. Even if Fortran is not widely used in industry today, it is still used by NASA and it is still popular with science and engineering applications.
1957 – Fortran is designed for numeric computation and scientific computing
Developed by John Backus and IBM, Fortran is considered the first high level language, designed to be relatively easy to learn and widely applicable. Most importantly, Fortran allowed programmers to develop software 500% faster than when writing code in Assembly or machine language. The software that ran NASA’s Voyager 1 and 2 spacecraft was written in Fortran 5.
1959 – Cobol established as Common Business-Oriented Language
Becoming the top-choice for business applications, and owing much of its popularity to IBM, by 1997, 80% of the world’s business was running on Cobol. As recently as 2020, the US internal revenue service scrambled its path to a Cobol-based IMF (individual master file), in order to support citizens and companies as part of the coronavirus pandemic aid and relief package.
1964 – BASIC (Beginners’ All-Purpose Symbolic Instruction Code)
Designed by John G. Kennedy and Thomas E. Kurtz, the BASIC programming language was intended to be as accessible as possible, and it is not surprising that it eventually came to dominate the home computer market that emerged in the 1970’s. By 1991, Microsoft had developed Visual Basic by combining an updated version of BASIC with a visual forms builder.
1972 – C begins to shape the future of the personal computer
1990s: the Internet age
The rapid growth of the Internet in the mid-1990s was the next major historic event in programming languages. By opening up a radically new platform for computer systems, the Internet created an opportunity for new languages to be adopted. In particular, the JavaScript programming language rose to popularity because of its early integration with the Netscape Navigator web browser. Various other scripting languages achieved widespread use in developing customized applications for web servers such as PHP. The 1990s saw no fundamental novelty in imperative languages, but much recombination and maturation of old ideas. This era began the spread of functional languages. A big driving philosophy was programmer productivity. Many rapid application development (RAD) languages emerged, which usually came with an integrated development environment (IDE), garbage collection, and were descendants of older languages. All such languages were object-oriented. These included Object Pascal, Objective Caml (renamed OCaml), Visual Basic, and Java. Java in particular received much attention.
More radical and innovative than the RAD languages were the new scripting languages. These did not directly descend from other languages and featured new syntaxes and more liberal incorporation of features. Many consider these scripting languages to be more productive than even the RAD languages, but often because of choices that make small programs simpler but large programs more difficult to write and maintain.
Nevertheless, scripting languages came to be the most prominent ones used in connection with the Web.
Some programming languages included other languages in their distribution to save the development time. for example both of Python and Ruby included Tcl to support GUI programming through libraries like Tkinter.
Some notable languages that were developed in this period include:
· 1991 – Python
· 1991 – Visual Basic
· 1995 – Java
· 1995 – JavaScript
· 1995 – PHP
Programming language evolution continues, and more programming paradigms are used in production.
Some of the trends have included:
· Increasing support for functional programming in mainstream languages used commercially, including purely functional programming for making code easier to reason about and to parallelize (at both micro- and macro- levels)
· Constructs to support concurrent and distributed programming.
· Mechanisms for adding security and reliability verification to the language: extended static checking, dependent typing, information flow control, static thread safety.
· Alternative mechanisms for composability and modularity: mixins, traits, typeclasses, delegates, aspects.
· Component-oriented software development.
· More interest in visual programming languages like Scratch, LabVIEW, and PWCT
· Metaprogramming, reflective programming (reflection), or access to the abstract syntax tree
· Aspect-oriented programming (AOP) allowing developers to insert code in another module or class at "join points"
· Domain-specific languages and code generation
Big Tech companies introduced multiple new programming languages that are designed to serve their needs. for example:
· Microsoft introduced C# and F#
2010s: the Mobile age
Programming language evolution continues with the rise of new programming domains.
· Increased interest in distribution and mobility.
· Integration with databases, including XML and relational databases.
· Open source as a developmental philosophy for languages, including the GNU Compiler Collection and languages such as PHP, Python, Ruby, and Scala.
· Massively parallel languages for GPU graphics processing units and supercomputer arrays, including OpenCL
· Early research into quantum computing programming languages (see list)
· Early research in applying artificial intelligence (AI) methods to generate code using AI like using GPT-3 and Gemini.[18][19]
· Multiple new programming languages tried to provide a modern replacement for the C programming language.
· Many new programming languages are influenced by the popular dynamic languages and promised adding type safety without decreasing the productivity.
· Many new programming languages uses LLVM in their implementation.
Many Big Tech companies continued introducing new programming languages that are designed to serve their needs and provides first-class support for their platforms. for example:
· Microsoft introduced TypeScript, Q# and Bosque
Other new programming languages include Elm, Ballerina, Red, Crystal, V (Vlang), Reason.
2020s: Current trends
The development of new programming languages continues, and some new languages appears with focus on providing a replacement for current languages. These new languages try to provide the advantages of a known language like C++ (versatile and fast) while adding safety or reducing complexity. Other new languages try to bring ease of use as provided by Python while adding performance as a priority. Also, the growing of Machine Learning and AI tools still plays a big rule behind these languages' development, where some visual languages focus on integrating these AI tools while other textual languages focus on providing more suitable support for developing them.
Some notable new programming languages include:
· 2021 – Power Fx
· 2022 – Carbon
· 2023 – Mojo
References
1. ^ Knuth, Donald E.; Pardo, Luis Trabb. "Early development of programming languages". Encyclopedia of Computer Science and Technology. 7. Marcel Dekker: 419–493
2. Fuegi, J.; Francis, J. (October–December 2003), "Lovelace & Babbage and the creation of the 1843 'notes'", Annals of the History of Computing, 25 (4): 16–26, doi:10.1109/MAHC.2003.1253887
3. ^ Bales, Rebecca (24 July 2023). "Charles Babbage Analytical Engine Explained". history-computer.com.
4.^ Swade, Doron. "The Engines". computerhistory.org. Retrieved 23 February 2024.
5. ^ Sebesta, W.S. (2006). Concepts of Programming Languages. p. 44. ISBN 978-0-321-33025-3.
6. ^ "CSC-302 99S : Class 02: A Brief History of Programming Languages". Math.grin.edu. Archived from the original on 2010-07-15. Retrieved 2010-04-25.
7. ^ Gordon, Michael J. C. (1996). "From LCF to HOL: a short history" (PDF). p. 3. Retrieved 2015-05-04. Edinburgh LCF, including the ML interpreter, was implemented in Lisp..
8. ^ "TIOBE Index, Top 100 programming languages according to TIOBE Index". www.tiobe.com. TIOBE index. 22 February 2024.
9. ^ https://www.microsoft.com/en-us/power-platform/blog/power-apps/introducing-the-new-copilot-features-for-power-fx/
10. ^ Rojas, Raúl; Hashagen, Ulf (2002). The First Computers: History and Architectures. MIT Press. p. 292. ISBN 978-0262681377. Retrieved October 25, 2013.
2. SOFTWARE DEVELOPMENT PARADIGMS
Software is a set of instructions, data or programs used to operate computers and execute specific tasks. It is the opposite of hardware, which describes the physical aspects of a computer.PREPARED BY:
MOHAMED ALPHA KAMARA
I - 24 - 64179
Comments
Post a Comment