SlideShare a Scribd company logo
28 APPLICATION DEVELOPMENT ADVISOR q www.appdevadvisor.com
D
EBATES on programming languages
are always sure to inspire more heat
than light. A previous article
looked at a number of languages
quantitatively as opposed to qualitatively,
concluding that once a language has made it
into the mainstream, it tends to be quite dif-
ficult to kill-off quickly or completely, and
that the industry is generally multilingual.1
As an industry it would be fair to describe
software development as being strongly
fashion-led. As with fashion, there is the per-
ception that whatever is at the shows and in
the magazines is what everyone is doing. As
with fashion this is not the case: people
still wear their old clothes and get on with
their lives. The call to “wake up and smell
the JavaBeans”2
because Java is the answer,
everyone is doing it, and C++ and all other
languages are in free fall is about as far
from reality as the view that Java is an
Internet language for a minority of pro-
grammers. From the other corner of the
debate, the fact that a language may be
better (whatever that means) than another
language has never stood in the way of it being
unsuccessful in the market place. The ele-
gant Eiffel is a classic example of this; the mar-
ket is a harsh antidote for idealism.The truth
is always a subtler blend of opposite views,
and tends to have less regard for fashion, logic
or conservatism.
Silent majority
It is easy to fall into a polarised view based
on one’s work environment.There are many
COBOL shops where the idea of GUIs
and curly bracket languages seem distant,
faddish, and irrelevant; there are vibrant ecom-
merce companies steeped in XML, Java
and Perl to the degree that there is almost
denial there has ever been another purpose
for software; there are Microsoft-only sites
where the idea that other viable operating
systems exist, and are measurably more
reliable, is at best hearsay; there are places
in academia where there is still a strong
belief that formal methods are viable con-
tenders for the mainstream; and so on.
The message is that software development
is more multicultural, in this respect, than
many individuals or consultancy groups
would like to admit—it is difficult to take
a position of extreme moderation and be
heard.
For many programming languages the con-
cept of the silent majority applies.There are
many languages that are definitely not fash-
ionable but are still quite widely used, away
from the glare of publicity. They are used in
the context of continued development of exist-
ing systems—euphemistically called main-
tenance by many, an unfortunate and
inappropriate term that software borrowed
from the physical engineering disciplines—
and, perhaps surprisingly, for the develop-
ment of new systems. With the year 2000
boundary condition out of the way, it is worth
taking stock of some of the better known.
Fortran
Fortran started life to prove a point: a
compiled language could produce machine
code with efficiency close to that of hand-
crafted assembler. John Backus led his
team at IBM in this endeavour between
1954 and 1957. He freely admits that
they made the syntax up as they went
along, preferring to focus on a close match
between the language and the features of
the underlying IBM 704 on which it was
originally developed. This certainly explains
something of the language’s syntax and
its frequent lack of consistency.
Although it has long since outgrown its
original acronym (FORmualTRANslation
because, at the time, its syntax had a vague
resemblance to mathematical notation) its
efficiency and ability to be first to market
for the numerate disciplines ensured that it
would win out of the more elegant ALGOL
58 and ALGOL 60.
Fortran has evolved radically through a
number of standards and extensions. Modern
Fortran is radically different to the FOR-
TRAN of the early 1960s (and not simply
because Fortran 90 sanctioned the lower case
spelling of the name). Programming using
exclusively modern Fortran features leads to
Enterprise Development Solutions
Now that the year 2000 crisis has subsided,
Kevlin Henney finds how legacy languages will fare
in the future, and charts their past development
MindYour
Language
differences comparable to the difference
between Java and classic C.
It was once said in the scientific pro-
gramming community that whatever language
they were using in the year 2000 it would
be called Fortran. It would appear that this
prophecy has been fulfilled. Fortran is still
taught on science and engineering courses
around the world, and is used extensively with-
in these communities. Although Fortran has
enjoyed popularity in commercial pro-
gramming domains, it has been largely dis-
placed leading to the mistaken perception
by many developers in the industry that it
has completely disappeared. The greatest
threats to Fortran’s position in its tradi-
tional market have come from C, C++ and
tools such as Mathematica.
COBOL
When people talk of legacy systems, COBOL
is without a doubt the language that most
often springs to mind. Along with Fortran
it is the language that one can most often
expect to find in the history of programmers
over the age of 30. It is not simply a mat-
ter of history, though. Y2K raised many peo-
ple’s awareness of how much COBOL was
out there. Although distinctly unfashionable,
COBOL code globally constitutes the most
code in any single language. Estimates vary,
but in terms of lines of code we are talking
international telephone numbers.
What we now know as COBOL started
life as an interim report (the final one was
never completed) resulting from a user
push for a business-oriented language under
the auspices of the US Department of
Defense and the newly formed Conference
on Data Systems Languages (CODASYL)
committee. Because of the perceived urgency,
the interim report was published as a stop-
gap measure in 1960 until the ‘real’ COBOL
could be completed. The final report never
happened.
Because of the vacuum for suitable busi-
ness languages, COBOL rapidly took hold
of this niche in the 1960s. Once there, it
proved difficult to displace regardless of
critique of its elegance, design, and other
attributes—“sticks and stones...”. Only
with significant changes in development plat-
form and software architecture has COBOL’s
dominance been challenged—PCs, client serv-
er, GUIs, object-orientation and theWeb have
all threatened it. However, in these cir-
cumstances COBOL has, through propri-
etary extensions, been extended to cope.
Although these have not led to anywhere near
the same market presence as the COBOL
mainframe association, they are still sig-
nificant. Through such adaptive extensions
and a splintering of mainframe dialects,
there are many COBOLs out there, and not
simply the ones defined through ANSI
standards.
What is COBOL’s future as the Y2K
teams wind down? Although some com-
panies have chosen to redevelop their sys-
tems to a new architecture and to a different
business model, there is less incentive to
throw it out of the many environments
where errant code has been fixed. The
language is still taught on many computing
courses, and has refused to be displaced
by more transient 4GLs, which have them-
selves caused upgrade problems. While the
demand for COBOL may drop a little, it is
unlikely to do so drastically.
PL/1
PL/1 (Programming Language 1) was orig-
inally touted as the last programming lan-
guage. As is often the case with such
ambitions, it certainly wasn’t, finding itself
in the company of thousands of other lan-
guages during the 1970s inflationary peri-
od of language growth.
It was conceived in the mid-1960s as a com-
plete general purpose programming lan-
guage, equally suited to scientific, business,
and systems programming. As such it used
the ALGOL, FORTRAN, and COBOL of
its times as starting points. A further criti-
cism often levelled at it was that because it
was many languages rather than one, it all
too easily allowed developers to program in
their original language’s idioms. It has been
said that one can program FORTRAN in
any language, and PL/1 certainly enabled this
to happen in a more complete sense than
most.
PL/1 was developed by IBM. Originally
named NPL (New Programming Language)
it was further developed at the company’s
Hursley labs in the UK, where it was felt that
the name might cause confusion with the
National Physical Laboratory.
SIMULA killer
The only other language at the time with sim-
ilar ambitions was Algol 68, which became
lost in complexity and committees. Usable
implementations of Algol 68 only began
appearing in the mid-1970s, long after the
original definition. It was competing with
PL/1, whose implementations were improv-
ing after a shaky start in the 1960s.The back-
ing of IBM and an ANSI/ECMA standard
in 1976 saw to it that in spite of its signif-
icant complexity, PL/1 stayed afloat while
Algol 68 persisted only in memory and
language design influence. PL/1’s com-
plexity led to the formation of subsets,
including PL/C and the official 1981 ANSI
standard PL/1 subset.
PL/1 was always poised for the big time,
to the point that it was used as the second
language in the classic Elements of
Programming Style (the other language in that
being FORTRAN 66).3
Its touted posi-
tion as the only programming language
one would ever need was responsible, in
Norway, for preventing major public fund-
ing of SIMULA, the first object-oriented lan-
guage. However, with the possible exception
of ALGOL, PL/1 did not displace those lan-
guages that it was intended to supersede. It
has been used typically for large systems, and
never fully broke away from living on main-
frames and minis. IBM sites were the most
likely to use it, and so its original status as
a vendor-created language was also never fully
shaken off. Its use has certainly declined in
favour of either newer or other old and
established languages, such as FORTRAN
and COBOL.
C
C is the progenitor of the curly bracket
family, which includes C++, Java, scripting
languages such as Perl, and interface definition
languages such as OMG IDL. It is descend-
ed from ALGOL 60, via the BCPL rather
than the Pascal lineage. Based on his expe-
rience of the Multics project, KenThompson
at AT&T experimented with a number of
languages, including BCPL, for developing
the kernel of what was to become Unix.
Dennis Ritchie developed C in 1972 as a
high-level systems programming language
for this purpose, rather than for the gener-
al purpose role in which it has since found
favour.
The fate of C and Unix were intertwined
in the early 1980s, but the uptake of C as
a general systems programming language
spread it far beyond the Unix environ-
ment, displacing assembler and other high-
level languages as the standard for systems
programming on many systems.The 1990s
saw C become accepted as general purpose
programming language, and it became a typ-
ical sight on developer CVs, either as the lan-
guage of choice or as a common second
language. C is a small language, with only
a handful of keywords and concepts.
However, some of these concepts and syn-
tax rules are tricky for the newcomer (and
even the experienced developer, as wit-
nessed by the International Obfuscated C
Coding Contest). This has often made it a
difficult language to move to for develop-
ers experienced in languages based on a
fundamentally different mindset, such as
COBOL.
The original de facto standard, the “White
Book”, came out in 1978.4
This is commonly
known as K&R C or Classic C. ANSI
JANUARY–FEBRUARY 2000 29
Enterprise Development Solutions
became involved in standardising the lan-
guage, leading to the C89 standard, and ISO
become involved soon after. A new standard,
C99, is about to hit the streets.The empha-
sis on portability has served to create a very
narrow dialect range for the language.
Compared to other languages, initial stan-
dardisation had little to do in the way of
accommodating radical differences between
compilers, and focused more on precise
exposition. Recent standardisation has
focused on extension, mostly in the areas of
internationalisation and numeric pro-
gramming. The former is a natural conse-
quence of the expansion of software markets
and the last follows from a sense of com-
petition with Fortran.
Classy C
The most successful divergence from regular
C is what was originally known as C with
Classes, and later renamed C++. This began
in the early 1980s and features in the lan-
guage influenced the standardisation of C.
C++ is largely compatible with C, which
helped it gain a foothold in the areas tra-
ditionally dominated by C; where C has led,
C++ has inevitably followed. For instance,
C has made inroads into the embedded
systems community, which traditionally
shunned higher-level languages, and C++ has
followed, leading to subset specifications such
as Embedded C++.5
Although C++, now an
ISO standard language, extended C in the
directions of safety, object-orientation, and
generic programming, it still retains its C her-
itage. It represents a challenging move to OO
for many non-C programmers.
However, C has not been completely
displaced by C++ or its more differentiat-
ed offspring, Java. Partly because of the mass
of existing code already written in C, and
partly because it holds a place as the low-
est common denominator most powerful
language available.The Open Source move-
ment of Linux, Perl, Apache, and others, and
the original free software movement, exem-
plified by GNU, is largely C-based. QA
Training’s experience of C is that the
demand for the language is still high,
although the profile of course delegates
has evolved during the last decade. Many
Visual Basic developers wish to get to grips
with C to better understand and interact with
the Windows API, and C++ developers
wish to find out more about the legacy
inherited from C.
In the The End of History and the Last
Programming Language, Richard Gabriel
forwards a theory for what makes a successful
programming language.6
C fulfils all of the
criteria; in one form or another it seems to
be here to stay as a living language.
Ada
Ada was a language born of committees, the
US Department of Defense, and Pascal. It
was a product of the 1970s and the endur-
ing belief that a final programming language
could still be created. Following a recog-
nition of the rising cost of embedded soft-
ware development, the DOD commissioned
a Higher Order Language Working Group
that was to identify requirements for DOD
languages and use them to evaluate the cur-
rent set of languages, which was large,
given the pre-Cambrian language explosion
of the 1970s. The result of the work was
that no existing language was entirely suit-
able, and work began on developing a
new one based on ALGOL 60, Algol 68,
Pascal and PL/1. Ada—after Augusta Ada
Byron, Lord Byron’s daughter and Charles
Babbage’s assistant, and allegedly the
world’s first programmer—became a stan-
dard in 1983, and a new standard was
approved in 1995.
Coming from the Pascal tradition, the syn-
tax of Ada is simple and readable. However,
Ada’s design tried to please all of the people
all of the time. The power of the features
crammed into its syntax often cause it to be
characterised as a complex language. It is very
easy to use a simple subset and be unaware
of the more advanced features, but in most
programming contexts simple features alone
are not enough.
Unfamilar model
Because Ada was created as a general pur-
pose language without having the benefit
of evolution to temper its features, some
of the concepts introduced in the first
round, Ada 83, were awkward to use or
insufficient. Ada 95 saw a host of new con-
cepts and features added to the language
to meet these perceived shortcomings,
some of which represented different lan-
guage models. For instance, although
object-based in its original incarnation, it
lacked many of the facilities, such as
inheritance or any form of dynamic pro-
cedure dispatch, which would qualify it as
object-oriented. Ada 95 introduced a
more complete object model, significantly
making Ada the first internationally stan-
dardised language to include OO fea-
tures. However, the model introduced
did not build on the existing task model
for concurrency, the newer protected type
features for monitor-like types, or the
common form for objects used in other sta-
tically typed languages. Although power-
ful, this makes Ada 95’s object model an
unfamiliar one to the majority of OO
developers.
Ada’s basis in defence work has ensured
that it still has a home there, but it is by no
means the exclusive choice for all such
software. The overhead associated with
many of its features and its runtime support
system has held it back from smaller embed-
ded systems use. Its reputation for safety has
led to its continued use in larger embedded
and safety-critical systems. Ironically, it
was Ada code that was used on Ariane 5’s
ill-fated maiden flight.7
Although this
expensive firework ultimately occurred
because of a failure to carry out appropri-
ate tests, there is a further irony that had the
system been written in C, the disaster
would probably never have happened! The
other significant market for Ada has been
in education, where it replaced Pascal in a
number of universities. However, the time
for even that market appears to be passing
with many universities favouring Java as a
first language.
Conclusion
Although not an exhaustive survey of old lan-
guages, this article has not been about find-
ing out whether or not a language is the right
fit for you, but how languages evolve and fill
niches, and how many programmers nav-
igate their own path between the Scylla
and Charybdis of fashion and pragmatism.
Certainly, when niches disappear we can
expect languages to follow, but although there
are always parts of industry undergoing
seismic shifts, it seems that there are also parts
of it that aren’t. s
Kevlin Henney is a Principal Technologist for QA
Training. He can be contacted at
khenney@qatraining.com
References
1. Henney, K. “Speaking in Tongues”,
Application Development Advisor,
2(1), Sept./Oct. 1998.
2. Guttman, M. Letters response to
“Java is an OO Language?”,
Application Development Advisor,
3(1), Sept./Oct. 1999.
3. Kernighan and Plauger. The Elements
of Programming Style, 2nd edition,
McGraw-Hill, 1979.
4. Kernighan and Ritchie. The C
Programming Language, Prentice
Hall, 1978.
5. The Embedded C++ home page,
www.caravan.net/ec2plus
6. Gabriel, Richard P. Patterns in
Software: Tales from the Software
Community, Oxford University Press,
1996.
7. The Full Report for Ariane 501,
www.esrin.esa.it/htdocs/tidc/Press/
Press96/ariane5rep.html
30 APPLICATION DEVELOPMENT ADVISOR q www.appdevadvisor.com
Enterprise Development Solutions

More Related Content

PDF
Speaking in Tongues
Kevlin Henney
 
PDF
Which programming language should you learn next?
Ganesh Samarthyam
 
PPTX
Top ten computer languages in 2018
RajKumar3899
 
PDF
Unveiling the Origins, Myths, Use and Benefits of Dynamic Languages
ActiveState
 
PDF
Can programming be liberated from the von neumman style
shady_10
 
PDF
Delphi Unicode Migration for Mere Mortals
Embarcadero Technologies
 
DOCX
all languages in computer programming
hamza239523
 
PDF
Delphi unicode-migration
zevin
 
Speaking in Tongues
Kevlin Henney
 
Which programming language should you learn next?
Ganesh Samarthyam
 
Top ten computer languages in 2018
RajKumar3899
 
Unveiling the Origins, Myths, Use and Benefits of Dynamic Languages
ActiveState
 
Can programming be liberated from the von neumman style
shady_10
 
Delphi Unicode Migration for Mere Mortals
Embarcadero Technologies
 
all languages in computer programming
hamza239523
 
Delphi unicode-migration
zevin
 

What's hot (16)

PPTX
Evolution of programming languages
Nitin Kumar Kashyap
 
PPTX
Principal of Programming Language
Satyendra Mohan
 
PPTX
Julia vs Python 2020
Devathon
 
PDF
Industrial Translation
mshikano
 
PDF
Programming names
Basavaraj Hampali
 
PDF
Two Way Language Translator Patent Application
Bizpreneur
 
PPT
Programming language
Ayesha Waheed
 
PDF
A Research Study of Data Collection and Analysis of Semantics of Programming ...
IRJET Journal
 
PPTX
Evolution of programming language
Sameer Saini
 
DOC
Machine language to artificial intelligence
Suneel Dogra
 
PPTX
So you want to be a programmer
Busayo Oyebisi
 
PPT
Comparative Study of programming Languages
Ishan Monga
 
PPT
Grade 10 introduction and history of programming
Rafael Balderosa
 
DOCX
Generations of programming language
JAIDEVPAUL
 
PDF
How to build language technology resources for the next 100 years
Guy De Pauw
 
PPTX
Programming language
Shuja Qais
 
Evolution of programming languages
Nitin Kumar Kashyap
 
Principal of Programming Language
Satyendra Mohan
 
Julia vs Python 2020
Devathon
 
Industrial Translation
mshikano
 
Programming names
Basavaraj Hampali
 
Two Way Language Translator Patent Application
Bizpreneur
 
Programming language
Ayesha Waheed
 
A Research Study of Data Collection and Analysis of Semantics of Programming ...
IRJET Journal
 
Evolution of programming language
Sameer Saini
 
Machine language to artificial intelligence
Suneel Dogra
 
So you want to be a programmer
Busayo Oyebisi
 
Comparative Study of programming Languages
Ishan Monga
 
Grade 10 introduction and history of programming
Rafael Balderosa
 
Generations of programming language
JAIDEVPAUL
 
How to build language technology resources for the next 100 years
Guy De Pauw
 
Programming language
Shuja Qais
 
Ad

Viewers also liked (7)

PPTX
Prefixos de lloc i de negació
josemanuelcremades
 
PDF
ertification to rinl
Thangarasu A
 
PPT
Personalitydevelopmentbest2015
pailaravisankar044
 
PDF
Det händer innan jul av Ingemar Pongratz
Ingemar Pongratz; Fenix Scientific AB
 
PPT
Android bankosy malware iicybersecurity
David Thomas
 
PPTX
INNOVATIVE PRODUCT- MULTY VITAMIN TABLET
SAM KURIAN
 
DOCX
leg day
Claude Maphosa
 
Prefixos de lloc i de negació
josemanuelcremades
 
ertification to rinl
Thangarasu A
 
Personalitydevelopmentbest2015
pailaravisankar044
 
Det händer innan jul av Ingemar Pongratz
Ingemar Pongratz; Fenix Scientific AB
 
Android bankosy malware iicybersecurity
David Thomas
 
INNOVATIVE PRODUCT- MULTY VITAMIN TABLET
SAM KURIAN
 
Ad

Similar to Mind Your Language (20)

PPTX
Programming And Programming languages.pptx
Rohan Basnet
 
PPTX
Introduction to programming
Gwyneth Calica
 
PPT
Computer history krishna
Krishna Chandra Singh
 
PPT
PPL unit 1 syntax and semantics- evolution of programming language lexical an...
SARANYAM124686
 
PPT
01 intro
Nirai Mathi
 
PDF
Evolution of Programming Languages.pdf
Madurai Kamaraj University Madurai Tamil Nadu India
 
PDF
Evolution of Programming Languages.pdf
Madurai Kamaraj University Madurai Tamil Nadu India
 
PDF
2 evolution of the major programming languages
jigeno
 
PPTX
PYTHON FUNDAMENTALS OF COMP.pptx
shalini s
 
PPTX
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
Prof. Wim Van Criekinge
 
PDF
A History of Computer Programming Languages.pdf
Sohaib Roomi
 
PPTX
Chapter 2 : Theory of programming languages
LaraibSaeed4
 
PPTX
Evolution of Computer Languages
Electro Computer Warehouse
 
PPTX
P1 2018 python
Prof. Wim Van Criekinge
 
PDF
Java As A Programming Language
Jennifer Wright
 
PPT
Evalution about programming language part 2
Synapseindiappsdevelopment
 
DOCX
Unit ii oo design 9
kiruthikamurugesan2628
 
PDF
2. Evolution of the Major Programming Languages.pdf
HILALJAMIRUDDINABDUL
 
PPTX
Programming landuages
NataliaVasjuka
 
Programming And Programming languages.pptx
Rohan Basnet
 
Introduction to programming
Gwyneth Calica
 
Computer history krishna
Krishna Chandra Singh
 
PPL unit 1 syntax and semantics- evolution of programming language lexical an...
SARANYAM124686
 
01 intro
Nirai Mathi
 
Evolution of Programming Languages.pdf
Madurai Kamaraj University Madurai Tamil Nadu India
 
Evolution of Programming Languages.pdf
Madurai Kamaraj University Madurai Tamil Nadu India
 
2 evolution of the major programming languages
jigeno
 
PYTHON FUNDAMENTALS OF COMP.pptx
shalini s
 
2015 bioinformatics python_introduction_wim_vancriekinge_vfinal
Prof. Wim Van Criekinge
 
A History of Computer Programming Languages.pdf
Sohaib Roomi
 
Chapter 2 : Theory of programming languages
LaraibSaeed4
 
Evolution of Computer Languages
Electro Computer Warehouse
 
P1 2018 python
Prof. Wim Van Criekinge
 
Java As A Programming Language
Jennifer Wright
 
Evalution about programming language part 2
Synapseindiappsdevelopment
 
Unit ii oo design 9
kiruthikamurugesan2628
 
2. Evolution of the Major Programming Languages.pdf
HILALJAMIRUDDINABDUL
 
Programming landuages
NataliaVasjuka
 

More from Kevlin Henney (20)

PDF
Program with GUTs
Kevlin Henney
 
PDF
The Case for Technical Excellence
Kevlin Henney
 
PDF
Empirical Development
Kevlin Henney
 
PDF
Lambda? You Keep Using that Letter
Kevlin Henney
 
PDF
Lambda? You Keep Using that Letter
Kevlin Henney
 
PDF
Solid Deconstruction
Kevlin Henney
 
PDF
Get Kata
Kevlin Henney
 
PDF
Procedural Programming: It’s Back? It Never Went Away
Kevlin Henney
 
PDF
Structure and Interpretation of Test Cases
Kevlin Henney
 
PDF
Agility ≠ Speed
Kevlin Henney
 
PDF
Refactoring to Immutability
Kevlin Henney
 
PDF
Old Is the New New
Kevlin Henney
 
PDF
Turning Development Outside-In
Kevlin Henney
 
PDF
Giving Code a Good Name
Kevlin Henney
 
PDF
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Kevlin Henney
 
PDF
Thinking Outside the Synchronisation Quadrant
Kevlin Henney
 
PDF
Code as Risk
Kevlin Henney
 
PDF
Software Is Details
Kevlin Henney
 
PDF
Game of Sprints
Kevlin Henney
 
PDF
Good Code
Kevlin Henney
 
Program with GUTs
Kevlin Henney
 
The Case for Technical Excellence
Kevlin Henney
 
Empirical Development
Kevlin Henney
 
Lambda? You Keep Using that Letter
Kevlin Henney
 
Lambda? You Keep Using that Letter
Kevlin Henney
 
Solid Deconstruction
Kevlin Henney
 
Get Kata
Kevlin Henney
 
Procedural Programming: It’s Back? It Never Went Away
Kevlin Henney
 
Structure and Interpretation of Test Cases
Kevlin Henney
 
Agility ≠ Speed
Kevlin Henney
 
Refactoring to Immutability
Kevlin Henney
 
Old Is the New New
Kevlin Henney
 
Turning Development Outside-In
Kevlin Henney
 
Giving Code a Good Name
Kevlin Henney
 
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Kevlin Henney
 
Thinking Outside the Synchronisation Quadrant
Kevlin Henney
 
Code as Risk
Kevlin Henney
 
Software Is Details
Kevlin Henney
 
Game of Sprints
Kevlin Henney
 
Good Code
Kevlin Henney
 

Recently uploaded (20)

PDF
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
PPTX
Role Of Python In Programing Language.pptx
jaykoshti048
 
PPTX
GALILEO CRS SYSTEM | GALILEO TRAVEL SOFTWARE
philipnathen82
 
PDF
Download iTop VPN Free 6.1.0.5882 Crack Full Activated Pre Latest 2025
imang66g
 
PDF
10 posting ideas for community engagement with AI prompts
Pankaj Taneja
 
DOCX
Can You Build Dashboards Using Open Source Visualization Tool.docx
Varsha Nayak
 
PPTX
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
PDF
Applitools Platform Pulse: What's New and What's Coming - July 2025
Applitools
 
PPTX
classification of computer and basic part of digital computer
ravisinghrajpurohit3
 
PPTX
Can You Build Dashboards Using Open Source Visualization Tool.pptx
Varsha Nayak
 
PPTX
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
PPTX
TRAVEL APIs | WHITE LABEL TRAVEL API | TOP TRAVEL APIs
philipnathen82
 
PDF
Balancing Resource Capacity and Workloads with OnePlan – Avoid Overloading Te...
OnePlan Solutions
 
PPTX
Explanation about Structures in C language.pptx
Veeral Rathod
 
PPTX
Presentation about Database and Database Administrator
abhishekchauhan86963
 
PDF
Summary Of Odoo 18.1 to 18.4 : The Way For Odoo 19
CandidRoot Solutions Private Limited
 
PDF
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
PDF
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
PDF
Adobe Illustrator Crack Full Download (Latest Version 2025) Pre-Activated
imang66g
 
PPTX
Visualising Data with Scatterplots in IBM SPSS Statistics.pptx
Version 1 Analytics
 
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
Role Of Python In Programing Language.pptx
jaykoshti048
 
GALILEO CRS SYSTEM | GALILEO TRAVEL SOFTWARE
philipnathen82
 
Download iTop VPN Free 6.1.0.5882 Crack Full Activated Pre Latest 2025
imang66g
 
10 posting ideas for community engagement with AI prompts
Pankaj Taneja
 
Can You Build Dashboards Using Open Source Visualization Tool.docx
Varsha Nayak
 
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
Applitools Platform Pulse: What's New and What's Coming - July 2025
Applitools
 
classification of computer and basic part of digital computer
ravisinghrajpurohit3
 
Can You Build Dashboards Using Open Source Visualization Tool.pptx
Varsha Nayak
 
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
TRAVEL APIs | WHITE LABEL TRAVEL API | TOP TRAVEL APIs
philipnathen82
 
Balancing Resource Capacity and Workloads with OnePlan – Avoid Overloading Te...
OnePlan Solutions
 
Explanation about Structures in C language.pptx
Veeral Rathod
 
Presentation about Database and Database Administrator
abhishekchauhan86963
 
Summary Of Odoo 18.1 to 18.4 : The Way For Odoo 19
CandidRoot Solutions Private Limited
 
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
Adobe Illustrator Crack Full Download (Latest Version 2025) Pre-Activated
imang66g
 
Visualising Data with Scatterplots in IBM SPSS Statistics.pptx
Version 1 Analytics
 

Mind Your Language

  • 1. 28 APPLICATION DEVELOPMENT ADVISOR q www.appdevadvisor.com D EBATES on programming languages are always sure to inspire more heat than light. A previous article looked at a number of languages quantitatively as opposed to qualitatively, concluding that once a language has made it into the mainstream, it tends to be quite dif- ficult to kill-off quickly or completely, and that the industry is generally multilingual.1 As an industry it would be fair to describe software development as being strongly fashion-led. As with fashion, there is the per- ception that whatever is at the shows and in the magazines is what everyone is doing. As with fashion this is not the case: people still wear their old clothes and get on with their lives. The call to “wake up and smell the JavaBeans”2 because Java is the answer, everyone is doing it, and C++ and all other languages are in free fall is about as far from reality as the view that Java is an Internet language for a minority of pro- grammers. From the other corner of the debate, the fact that a language may be better (whatever that means) than another language has never stood in the way of it being unsuccessful in the market place. The ele- gant Eiffel is a classic example of this; the mar- ket is a harsh antidote for idealism.The truth is always a subtler blend of opposite views, and tends to have less regard for fashion, logic or conservatism. Silent majority It is easy to fall into a polarised view based on one’s work environment.There are many COBOL shops where the idea of GUIs and curly bracket languages seem distant, faddish, and irrelevant; there are vibrant ecom- merce companies steeped in XML, Java and Perl to the degree that there is almost denial there has ever been another purpose for software; there are Microsoft-only sites where the idea that other viable operating systems exist, and are measurably more reliable, is at best hearsay; there are places in academia where there is still a strong belief that formal methods are viable con- tenders for the mainstream; and so on. The message is that software development is more multicultural, in this respect, than many individuals or consultancy groups would like to admit—it is difficult to take a position of extreme moderation and be heard. For many programming languages the con- cept of the silent majority applies.There are many languages that are definitely not fash- ionable but are still quite widely used, away from the glare of publicity. They are used in the context of continued development of exist- ing systems—euphemistically called main- tenance by many, an unfortunate and inappropriate term that software borrowed from the physical engineering disciplines— and, perhaps surprisingly, for the develop- ment of new systems. With the year 2000 boundary condition out of the way, it is worth taking stock of some of the better known. Fortran Fortran started life to prove a point: a compiled language could produce machine code with efficiency close to that of hand- crafted assembler. John Backus led his team at IBM in this endeavour between 1954 and 1957. He freely admits that they made the syntax up as they went along, preferring to focus on a close match between the language and the features of the underlying IBM 704 on which it was originally developed. This certainly explains something of the language’s syntax and its frequent lack of consistency. Although it has long since outgrown its original acronym (FORmualTRANslation because, at the time, its syntax had a vague resemblance to mathematical notation) its efficiency and ability to be first to market for the numerate disciplines ensured that it would win out of the more elegant ALGOL 58 and ALGOL 60. Fortran has evolved radically through a number of standards and extensions. Modern Fortran is radically different to the FOR- TRAN of the early 1960s (and not simply because Fortran 90 sanctioned the lower case spelling of the name). Programming using exclusively modern Fortran features leads to Enterprise Development Solutions Now that the year 2000 crisis has subsided, Kevlin Henney finds how legacy languages will fare in the future, and charts their past development MindYour Language
  • 2. differences comparable to the difference between Java and classic C. It was once said in the scientific pro- gramming community that whatever language they were using in the year 2000 it would be called Fortran. It would appear that this prophecy has been fulfilled. Fortran is still taught on science and engineering courses around the world, and is used extensively with- in these communities. Although Fortran has enjoyed popularity in commercial pro- gramming domains, it has been largely dis- placed leading to the mistaken perception by many developers in the industry that it has completely disappeared. The greatest threats to Fortran’s position in its tradi- tional market have come from C, C++ and tools such as Mathematica. COBOL When people talk of legacy systems, COBOL is without a doubt the language that most often springs to mind. Along with Fortran it is the language that one can most often expect to find in the history of programmers over the age of 30. It is not simply a mat- ter of history, though. Y2K raised many peo- ple’s awareness of how much COBOL was out there. Although distinctly unfashionable, COBOL code globally constitutes the most code in any single language. Estimates vary, but in terms of lines of code we are talking international telephone numbers. What we now know as COBOL started life as an interim report (the final one was never completed) resulting from a user push for a business-oriented language under the auspices of the US Department of Defense and the newly formed Conference on Data Systems Languages (CODASYL) committee. Because of the perceived urgency, the interim report was published as a stop- gap measure in 1960 until the ‘real’ COBOL could be completed. The final report never happened. Because of the vacuum for suitable busi- ness languages, COBOL rapidly took hold of this niche in the 1960s. Once there, it proved difficult to displace regardless of critique of its elegance, design, and other attributes—“sticks and stones...”. Only with significant changes in development plat- form and software architecture has COBOL’s dominance been challenged—PCs, client serv- er, GUIs, object-orientation and theWeb have all threatened it. However, in these cir- cumstances COBOL has, through propri- etary extensions, been extended to cope. Although these have not led to anywhere near the same market presence as the COBOL mainframe association, they are still sig- nificant. Through such adaptive extensions and a splintering of mainframe dialects, there are many COBOLs out there, and not simply the ones defined through ANSI standards. What is COBOL’s future as the Y2K teams wind down? Although some com- panies have chosen to redevelop their sys- tems to a new architecture and to a different business model, there is less incentive to throw it out of the many environments where errant code has been fixed. The language is still taught on many computing courses, and has refused to be displaced by more transient 4GLs, which have them- selves caused upgrade problems. While the demand for COBOL may drop a little, it is unlikely to do so drastically. PL/1 PL/1 (Programming Language 1) was orig- inally touted as the last programming lan- guage. As is often the case with such ambitions, it certainly wasn’t, finding itself in the company of thousands of other lan- guages during the 1970s inflationary peri- od of language growth. It was conceived in the mid-1960s as a com- plete general purpose programming lan- guage, equally suited to scientific, business, and systems programming. As such it used the ALGOL, FORTRAN, and COBOL of its times as starting points. A further criti- cism often levelled at it was that because it was many languages rather than one, it all too easily allowed developers to program in their original language’s idioms. It has been said that one can program FORTRAN in any language, and PL/1 certainly enabled this to happen in a more complete sense than most. PL/1 was developed by IBM. Originally named NPL (New Programming Language) it was further developed at the company’s Hursley labs in the UK, where it was felt that the name might cause confusion with the National Physical Laboratory. SIMULA killer The only other language at the time with sim- ilar ambitions was Algol 68, which became lost in complexity and committees. Usable implementations of Algol 68 only began appearing in the mid-1970s, long after the original definition. It was competing with PL/1, whose implementations were improv- ing after a shaky start in the 1960s.The back- ing of IBM and an ANSI/ECMA standard in 1976 saw to it that in spite of its signif- icant complexity, PL/1 stayed afloat while Algol 68 persisted only in memory and language design influence. PL/1’s com- plexity led to the formation of subsets, including PL/C and the official 1981 ANSI standard PL/1 subset. PL/1 was always poised for the big time, to the point that it was used as the second language in the classic Elements of Programming Style (the other language in that being FORTRAN 66).3 Its touted posi- tion as the only programming language one would ever need was responsible, in Norway, for preventing major public fund- ing of SIMULA, the first object-oriented lan- guage. However, with the possible exception of ALGOL, PL/1 did not displace those lan- guages that it was intended to supersede. It has been used typically for large systems, and never fully broke away from living on main- frames and minis. IBM sites were the most likely to use it, and so its original status as a vendor-created language was also never fully shaken off. Its use has certainly declined in favour of either newer or other old and established languages, such as FORTRAN and COBOL. C C is the progenitor of the curly bracket family, which includes C++, Java, scripting languages such as Perl, and interface definition languages such as OMG IDL. It is descend- ed from ALGOL 60, via the BCPL rather than the Pascal lineage. Based on his expe- rience of the Multics project, KenThompson at AT&T experimented with a number of languages, including BCPL, for developing the kernel of what was to become Unix. Dennis Ritchie developed C in 1972 as a high-level systems programming language for this purpose, rather than for the gener- al purpose role in which it has since found favour. The fate of C and Unix were intertwined in the early 1980s, but the uptake of C as a general systems programming language spread it far beyond the Unix environ- ment, displacing assembler and other high- level languages as the standard for systems programming on many systems.The 1990s saw C become accepted as general purpose programming language, and it became a typ- ical sight on developer CVs, either as the lan- guage of choice or as a common second language. C is a small language, with only a handful of keywords and concepts. However, some of these concepts and syn- tax rules are tricky for the newcomer (and even the experienced developer, as wit- nessed by the International Obfuscated C Coding Contest). This has often made it a difficult language to move to for develop- ers experienced in languages based on a fundamentally different mindset, such as COBOL. The original de facto standard, the “White Book”, came out in 1978.4 This is commonly known as K&R C or Classic C. ANSI JANUARY–FEBRUARY 2000 29 Enterprise Development Solutions
  • 3. became involved in standardising the lan- guage, leading to the C89 standard, and ISO become involved soon after. A new standard, C99, is about to hit the streets.The empha- sis on portability has served to create a very narrow dialect range for the language. Compared to other languages, initial stan- dardisation had little to do in the way of accommodating radical differences between compilers, and focused more on precise exposition. Recent standardisation has focused on extension, mostly in the areas of internationalisation and numeric pro- gramming. The former is a natural conse- quence of the expansion of software markets and the last follows from a sense of com- petition with Fortran. Classy C The most successful divergence from regular C is what was originally known as C with Classes, and later renamed C++. This began in the early 1980s and features in the lan- guage influenced the standardisation of C. C++ is largely compatible with C, which helped it gain a foothold in the areas tra- ditionally dominated by C; where C has led, C++ has inevitably followed. For instance, C has made inroads into the embedded systems community, which traditionally shunned higher-level languages, and C++ has followed, leading to subset specifications such as Embedded C++.5 Although C++, now an ISO standard language, extended C in the directions of safety, object-orientation, and generic programming, it still retains its C her- itage. It represents a challenging move to OO for many non-C programmers. However, C has not been completely displaced by C++ or its more differentiat- ed offspring, Java. Partly because of the mass of existing code already written in C, and partly because it holds a place as the low- est common denominator most powerful language available.The Open Source move- ment of Linux, Perl, Apache, and others, and the original free software movement, exem- plified by GNU, is largely C-based. QA Training’s experience of C is that the demand for the language is still high, although the profile of course delegates has evolved during the last decade. Many Visual Basic developers wish to get to grips with C to better understand and interact with the Windows API, and C++ developers wish to find out more about the legacy inherited from C. In the The End of History and the Last Programming Language, Richard Gabriel forwards a theory for what makes a successful programming language.6 C fulfils all of the criteria; in one form or another it seems to be here to stay as a living language. Ada Ada was a language born of committees, the US Department of Defense, and Pascal. It was a product of the 1970s and the endur- ing belief that a final programming language could still be created. Following a recog- nition of the rising cost of embedded soft- ware development, the DOD commissioned a Higher Order Language Working Group that was to identify requirements for DOD languages and use them to evaluate the cur- rent set of languages, which was large, given the pre-Cambrian language explosion of the 1970s. The result of the work was that no existing language was entirely suit- able, and work began on developing a new one based on ALGOL 60, Algol 68, Pascal and PL/1. Ada—after Augusta Ada Byron, Lord Byron’s daughter and Charles Babbage’s assistant, and allegedly the world’s first programmer—became a stan- dard in 1983, and a new standard was approved in 1995. Coming from the Pascal tradition, the syn- tax of Ada is simple and readable. However, Ada’s design tried to please all of the people all of the time. The power of the features crammed into its syntax often cause it to be characterised as a complex language. It is very easy to use a simple subset and be unaware of the more advanced features, but in most programming contexts simple features alone are not enough. Unfamilar model Because Ada was created as a general pur- pose language without having the benefit of evolution to temper its features, some of the concepts introduced in the first round, Ada 83, were awkward to use or insufficient. Ada 95 saw a host of new con- cepts and features added to the language to meet these perceived shortcomings, some of which represented different lan- guage models. For instance, although object-based in its original incarnation, it lacked many of the facilities, such as inheritance or any form of dynamic pro- cedure dispatch, which would qualify it as object-oriented. Ada 95 introduced a more complete object model, significantly making Ada the first internationally stan- dardised language to include OO fea- tures. However, the model introduced did not build on the existing task model for concurrency, the newer protected type features for monitor-like types, or the common form for objects used in other sta- tically typed languages. Although power- ful, this makes Ada 95’s object model an unfamiliar one to the majority of OO developers. Ada’s basis in defence work has ensured that it still has a home there, but it is by no means the exclusive choice for all such software. The overhead associated with many of its features and its runtime support system has held it back from smaller embed- ded systems use. Its reputation for safety has led to its continued use in larger embedded and safety-critical systems. Ironically, it was Ada code that was used on Ariane 5’s ill-fated maiden flight.7 Although this expensive firework ultimately occurred because of a failure to carry out appropri- ate tests, there is a further irony that had the system been written in C, the disaster would probably never have happened! The other significant market for Ada has been in education, where it replaced Pascal in a number of universities. However, the time for even that market appears to be passing with many universities favouring Java as a first language. Conclusion Although not an exhaustive survey of old lan- guages, this article has not been about find- ing out whether or not a language is the right fit for you, but how languages evolve and fill niches, and how many programmers nav- igate their own path between the Scylla and Charybdis of fashion and pragmatism. Certainly, when niches disappear we can expect languages to follow, but although there are always parts of industry undergoing seismic shifts, it seems that there are also parts of it that aren’t. s Kevlin Henney is a Principal Technologist for QA Training. He can be contacted at [email protected] References 1. Henney, K. “Speaking in Tongues”, Application Development Advisor, 2(1), Sept./Oct. 1998. 2. Guttman, M. Letters response to “Java is an OO Language?”, Application Development Advisor, 3(1), Sept./Oct. 1999. 3. Kernighan and Plauger. The Elements of Programming Style, 2nd edition, McGraw-Hill, 1979. 4. Kernighan and Ritchie. The C Programming Language, Prentice Hall, 1978. 5. The Embedded C++ home page, www.caravan.net/ec2plus 6. Gabriel, Richard P. Patterns in Software: Tales from the Software Community, Oxford University Press, 1996. 7. The Full Report for Ariane 501, www.esrin.esa.it/htdocs/tidc/Press/ Press96/ariane5rep.html 30 APPLICATION DEVELOPMENT ADVISOR q www.appdevadvisor.com Enterprise Development Solutions