Novice Programmer

MAKING HAND DIRTY BY WRITING CODES

Full width home advertisement

Learn C

Novice Programmer

Post Page Advertisement [Top]

Reasons for Studying Concepts of Programming Languages
 
It is natural for students to wonder how they will benefit from the study of programming language concepts. After all, many other topics in computer science are worthy of serious study. The following is what we believe to be a compelling list of potential benefits of studying concepts of programming languages:

• Increased capacity to express ideas.

It is widely believed that the depth at which people can think is influenced by the expressive power of the language inwhich they communicate their thoughts. Those with only a weak understanding of natural language are limited in the complexity of their thoughts, particularly in depth of abstraction. In other words, it is difficult for people to conceptualize structures they cannot describe, verbally or in writing.

Programmers, in the process of developing software, are similarly constrained. The language in which they develop software places limits on the kinds of control structures, data structures, and abstractions they can use; thus, the forms of algorithms they can construct are likewise limited.


Awareness of a wider variety of programming language features can reduce such limitations in software development. Programmers can increase the range of their software development thought processes by learning new language constructs.

• Improved background for choosing appropriate languages.


Some professional programmers have had little formal education in computer science; rather, they have developed their programming skills independently or through in- house training programs. Such training programs often limit instruction to one or two languages that are directly relevant to the current projects of the organization. Other programmers received their formal training years ago. The languages they learned then are no longer used, and many features now available in programming languages were not widely known at the time. The result is that many programmers, when given a choice of languages for a new project, use the language with which they are most
familiar, even if it is poorly suited for the project at hand. If these programmers were familiar with a wider range of languages and language constructs, they would be better able to choose the language with the features that best address the problem.

Some of the features of one language often can be simulated in another language. However, it is preferable to use a feature whose design has been integrated into a language than to use a simulation of that feature, which is often less elegant, more cumbersome, and less safe.

• Increased ability to learn new languages.
Computer programming is still a relatively young discipline, and design methodologies, software development tools, and programming languages are still in a state of continuous evolution. This makes software development an exciting profession, but it also means that continuous learning is essential. The process of learning a new programming language can be lengthy and difficult, especially for someone who is comfortable with only one or two languages and has never examined
programming language concepts in general. Once a thorough understanding of the fundamental concepts of languages is acquired, it becomes far easier to see how these concepts are incorporated into the design of the language being learned.

For example, programmers who understand the concepts of object- oriented programming will have a much easier time learning Ruby (Thomas et al., 2013) than those who have never used those concepts.

• Better understanding of the significance of implementation.
In learning the con-
cepts of programming languages, it is both interesting and necessary to touch
on the implementation issues that affect those concepts. In some cases, an
understanding of implementation issues leads to an understanding of why
languages are designed the way they are. In turn, this knowledge leads to
the ability to use a language more intelligently, as it was designed to be used.
We can become better programmers by understanding the choices among
programming language constructs and the consequences of those choices.
Certain kinds of program bugs can be found and fixed only by a pro-
grammer who knows some related implementation details. Another benefit
of understanding implementation issues is that it allows us to visualize
how a computer executes various language constructs. In some cases, some
knowledge of implementation issues provides hints about the relative effi-
ciency of alternative constructs that may be chosen for a program. For
example, programmers who know little about the complexity of the imple-
mentation of subprogram calls often do not realize that a small subprogram
that is frequently called can be a highly inefficient design choice.
Because this book touches on only a few of the issues of implementa-
tion, the previous two paragraphs also serve well as rationale for studying
compiler design.
• Better use of languages that are already known. Most contemporary program-
ming languages are large and complex. Accordingly, it is uncommon for a
programmer to be familiar with and use all of the features of a language
he or she uses. By studying the concepts of programming languages, pro-
grammers can learn about previously unknown and unused parts of the
languages they already use and begin to use those features.
• Overall advancement of computing. Finally, there is a global view of comput-
ing that can justify the study of programming language concepts. Although
it is usually possible to determine why a particular programming language
became popular, many believe, at least in retrospect, that the most popu-
lar languages are not always the best available. In some cases, it might be
concluded that a language became widely used, at least in part, because
those in positions to choose languages were not sufficiently familiar with
programming language concepts.
For example, many people believe it would have been better if ALGOL
60 (Backus et al., 1963) had displaced Fortran (McCracken, 1961) in the
1.2 Programming Domains 29
early 1960s, because it was more elegant and had much better control state-
ments, among other reasons. That it did not, is due partly to the program-
mers and software development managers of that time, many of whom did
not clearly understand the conceptual design of ALGOL 60. They found its
description difficult to read (which it was) and even more difficult to under-
stand. They did not appreciate the benefits of block structure, recursion,
and well- structured control statements, so they failed to see the benefits of
ALGOL 60 over Fortran.
Of course, many other factors contributed to the lack of acceptance of
ALGOL 60, as we will see in Chapter 2. However, the fact that computer users
were generally unaware of the benefits of the language played a significant role.
In general, if those who choose languages were well informed, perhaps
better languages would eventually squeeze out poorer ones.

No comments:

Post a Comment

Bottom Ad [Post Page]

| Designed by Colorlib