Technical factors -
Application requirements: Languages tend to be suited to particular applications. For example, C is widely used for operating system development (UNIX, Linux, and Windows, to name a few), while Perl is useful for text processing, HTTP server CGI programs, and system administration work.
-
Platform requirements: The platform on which an application is to be executed may have a limited choice of language implementations available.
-
Development time: How quickly could the application be developed in a particular language? (The technical side of this question depends on how understandable the language is, and how easily an application's design can be coded in it; the political side of this question depends on the knowledge of programming staff, training available, or whether programmers with experience in the language can be hired.)
-
Portability: Execution platforms for programs tend to change over time (e.g., from DOS to Windows to Windows NT, just to trace the ''Wintel'' lineage). Is the language closely tied to a particular machine, or is the language clearly portable (e.g., Java's clear independence of any particular machine's quirks or implementation)?
Political factors -
Popularity of the language: Popularity, in terms of the size of the marketplace and number of programmers using a language, clearly affects the choice of a language. The choice of a well-known, popular language, such as C, or a lesser-used language, such as Ada, will influence hiring and/or training requirements.
-
Economic: Which language tends to be cheapest or most cost effective in previous, similar development efforts? Is the language well-supported by commercial organizations or freeware development communities (i.e., will the language's compilers and development environment be available for the foreseeable future)?
Language vs Compiler for the Language
There are sometimes distinctions between a language and the compilers that implement the language. One compiler made by a given vendor may add extra features to the language they implement that another vendor may not include.
The quality of a language's compilers can also influence the decision. If a language's existing compilers do not produce correctly executing or highly-optimized machine code, the language may not be a good choice for a development effort. We also need to consider what new language features the compiler supports. For example, in C++, the compiler should support the latest additions to the Standard Template Library.
Tool Support and Documentation
Tool support tends to be a critical factor in a language choice. Development tools that help organize a project, quickly locate on-line documentation and examples, and debug programs are extremely useful in the coding and debugging stages of programs. Also, tools that generate code from high-level specifications (such as user interface development or lexical analyzer tools) and tools that verify code or find common mistakes are useful, in our experience. Editors that can parse and format the language syntax are useful as well. Good tools and documentation seem to be driven by popularity, e.g. Visual C++ has good tool support and documentation.
Criteria for Comparing Programming Languages
We have previously discussed many criteria important to comparing or evaluating general purpose programming languages. We will summarize them here:
-
Simplicity of language constructs, which relates to ease of programming
-
Readability, which relates to maintainability, an important factor as many programs greatly outlive their expected lifetimes (witness the Y2K software crisis)
-
How tuned a language's features are for a particular application (e.g., Perl relates well to text processing)
-
Compilation speed
-
Runtime efficiency, in terms of speed and machine resources
-
Library support
-
Debugging help
-
Language safety
-
Longevity of language and compiler tools
-
Portability across platforms and machine architectures
The criteria are equally important because they affect the development cost and effort required over the lifetime of the program, and also affect the usefulness and quality of the developed program.
Our experience indicates that these criteria (or the subset which is applicable) also apply to other components that support program development, including object-oriented class libraries and designs for abstract data types. The use of appropriate, useful components external to the language, and the use of designs that result in higher quality, more generalized code improve readability, maintainability, and quality of the product while improving development speed.
Task 4. Look back at the text to find out if the following statements are true (T) or false (F) according to the information in the text.
-
Each language should be suitable for a particular application.
-
Perl relates well to operating system development.
-
Execution platforms for programs are changing all the time.
-
The more popular the language is the more often it is used.
-
You can have problems if a compiler and a language were made by different vendors.
-
When choosing a compiler, it is important to know what new language features it supports.
-
It is not necessary for C++ to support the latest additions to the standard template library.
-
Tool support is the most crucial factor in a language choice.
-
Editors that can parse and format the language syntax are the most useful in our experience.
-
The criteria are fairly even since they affect the development cost and effort required over the lifetime of the program, and also affect the usefulness and quality of the developed program.
Task 5. Choose the correct word to complete each sentence. You may have to change some words slightly.
-
application, apply, applicable, applied, applicability
-
It is known that some translators have tried to __________ commercial PC-based software to their needs.
-
Languages tend to be suited to particular __________.
-
The new approach had wide __________ to all sorts of different problems.
-
The process is based on some very basic scientific principles __________ in an exceptionally innovative way.
-
requirement, require, required, requisite
-
The criteria are equally important because they affect the development cost and effort __________ over the lifetime of the program.
-
Hardware control always __________ some kind of special-purpose system.
-
Each independent computer in the system can have software specifically tailored to fit its user’s exact needs and __________.
-
She lacks the __________ experience for the job
-
develop, development, developer, developmental
-
If a language's existing compilers do not produce correctly executing or highly-optimized machine code, the language may not be a good choice for a __________ effort.
-
The company __________ and markets new software.
-
How quickly could the application be __________ in a particular language?
-
The iterative approach allows __________ to progressively identify components and decide which ones to develop, which ones to reuse, and which ones to buy.
-
The product is still at a __________ stage.
-
technical, technically, technician, technicality, technique
-
A knowledge engineer is a computer scientist who knows how to design and implement programs that incorporate artificial intelligence __________.
-
In those days recording sound was not __________ possible.
-
He described the process in broad terms without going into the __________.
-
We offer free __________ support for those buying our software.
-
It is true that robots can cause unemployment by replacing human workers but robots also create jobs: robot __________, salesmen, engineers, programmers and supervisors.
Language work
Compound Nouns
|
The language of computing in English contains an ever-increasing number of compound nouns, that is, a group of two or more nouns which act as a single noun. For example:
language syntax
machine architecture
development cost
program development
The first noun is like an adjective – it tells us what the second noun is made of, what it is for, or what it is part of. For example:
|
machine architecture – the architecture of a machine
development cost – cost of developing
Often the first words end in –ing. The –ing form usually says what function the following noun has. For example:
operating system
programming languages
programming staff
debugging help
|
Sometimes there are more than two nouns together. For example:
user interface development
system administration work
freeware development community
Sometimes a noun+noun is not appropriate and instead we use noun+’s+noun. For example:
a language’s feature
a language’s compiler
an application’s design
a machine’s quirks
|
It is important to be able to recognize how such compounds are formed in order to understand what they mean.
The exact relationship between the words depends on the particular expression, but all these expressions have one thing in common: the last word in chain says what the thing is, while the preceding word or group of words describes the thing. So when we read compound nouns, we have to start with the last word and work backwards.
|
Task 6. Use one word from each box to make a compound noun.
Box A
|
|
Box B
|
machine application’s analyzer program tool development language’s language application
|
design requirement support implementation tools effort support features development
|
Task 7. What do you call...?
-
The act or process of translating text from one natural language into another using a computer.
-
The boundary between a user and a computer or program.
-
A book of instructions for the user that explains how to use a computer or a computer program.
-
A computer system that allows useful information to be recorded, stored and used by managers without the help of a computer specialist.
-
The process of designing, installing and perhaps testing a computer system.
-
A language that can be used for writing instructions that a computer can process and execute.
-
Rules followed by computer programmers who are working in a team so that their work can be understood by other programmers.
-
A person who writes applications program.
-
A programming technique that allows the creation of ‘objects’ which can be reused, or used as the foundation of others.
-
The study of computers and their use.
Task 8. Michael Warren is at an interview for a job in a film production company. He has been asked why he wants the job, and this is part of his answer. Suggest compound nouns to fill in the spaces in this text. One of the parts of the compound is given in brackets. Choose the other part from the –ing forms below.
advertising answering breathing cutting losing mailing making recording selling turning waiting
|
Just after I left university, I met an old friend who offered me the opportunity to join his company, Phono, selling a new type of mobile phone. I organized a(n) (1) advertising campaign (campaign) and set up a(n) (2) ………. (list) with the names and addresses of people who might be interested in it. The main (3) ………. (point) of the phone was that it included a(n) (4) ………. (machine), and was the only one of its kind on the market at the time. At first the demand was so great that there was a(n) (5) ………. (list) of people wanting to buy one. Unfortunately, a year later Sonex brought out its new video phone, and this was the (6) ………. (point) for Phono. Demand for our phone plummeted. We did a lot of (7) ………. (cost) to try to save money, but it wasn’t long before we knew we were fighting a(n) (8) ………. (battle) and decided to close the company. I’ve been out of work for a few months now. But this has given me the (9) ………. (space) to decide what I want to do next. When I worked for Phono, I helped produce a(n) (10) ………(video) to advertise the product. I enjoyed this a lot, and that’s why I’d now like to get into (11) ………. (film).
Listening
Task 9. Listen to the song and write down the names of all programming languages you hear about.
-
___________________
-
___________________
-
___________________
-
___________________
-
___________________
Task 10. Listen to the song again and fill in the gaps below.
Write in C
When I find my 1) ________
in tons of trouble
Friends and colleagues come to me,
Speaking words of 2) ________…
“Write in C”
And as the 3) ________ fast approaches,
And 4) ________ are all that I can see
Somewhere 5) ________ whispers:
“Write in C”
Write in C, write in C,
Write in C, oh, write in C,
6) ________ dead and buried,
Write in C
I used to write a lot of 7) ________
For 8) ________ it worked flawlessly
Try using it for 9) ________!
Write in C!
And if you’ve just spent nearly
10) ________
Debugging some 11) ________
Soon you will be glad to
Write in C
Write in C, write in C,
Write in C, oh, write in C,
12) ________ not the 13) ________,
Write in C
Write in C, write in C,
Write in C, oh, write in C,
14) ________ won’t quite cut it,
Write in C!
Speaking
Task 11. Look at the picture above. Then work in pairs or in small groups and discuss why C-like languages are so popular nowadays. Make a list of reasons.
Task 12. Read the statements below. Which do you agree with more? Why?
‘Learning a programming language is like learning any natural language. The only difference is that you are communicating with a machine instead of another person.’
‘I get annoyed when I hear people comparing programming languages with natural languages. They have almost nothing in common.’
Writing
Task 13. Write an essay (120 – 180 words) summarizing all your ideas in Task 12.
Unit 5. Structured Programming
Warm-up
Task 1. Answer the following questions:
-
What is structured programming?
-
What structured programming languages do you know?
-
What are the main rules of structured programming?
Reading
Task 2. Read the text below to find answers to the following questions:
|
| -
What was the approach to writing software in the early days of programming?
-
Where does the term ‘spaghetti code’ come from?
-
What are the five tenets of structured programming?
-
What is the role of the control structure?
-
What control structures are necessary to write programs?
-
What does the sequence refer to?
-
What levels of selection does C++ provide?
-
What loop structures does C++ provide?
-
What control structures are the most flexible and powerful for problem-solving?
-
What control structures are the most common in C++ code?
Structured Programming
Up to this point in your study of computer science and C++, you have created programs which used only sequential execution. So far function main() consisted of a sequence of lines which are executed once, line-by-line. As we add the power of loops and selection, we need to use these tools in a disciplined manner.
In the early days of programming (1960's), the approach to writing software was relatively primitive and ineffective. Much of the code was written with goto statements which transferred program control to another part of the code. Tracing this type of code was an exercise in jumping from one spot to another, leaving behind a trail of lines similar to spaghetti. The term "spaghetti code" comes from trying to trace code linked together with goto statements.
The research of Bohm and Jacopini has led to the rules of structured programming. Here are five tenets of structured programming.
-
No goto statements are to be used in writing code.
-
All programs can be written in terms of three control structures: sequence, selection, and iteration.
-
Each control structure has one entrance point and one exit point. We will sometimes allow for multiple exit points from a control structure using the break statement.
-
Control structures may be stacked (sequenced) one after the other.
-
Control structures may be nested inside other control structures.
The control structures of C++ encourage structured programming. Staying within the guidelines of structured programming has led to great productivity gains in the field of software engineering.
There are only three necessary control structures needed to write programs: sequence, selection, and iteration.
Sequence refers to the line-by-line execution as used in your programs so far. The program enters the sequence, does each step, and exits the sequence.
Selection is the control structure allowing choice among different directions. C++ provides different levels of selection:
• One-way selection with an if structure
• Two-way selection with an if-else structure
• Multiple selection with a switch structure.
Iteration refers to looping. C++ provides three loop structures:
• while loops
• do-while loops
• for loops
Of the seven control structures, the if-else and while loop are the most flexible and powerful for problem-solving. The other control structures have their place, but if-else and while are the most common control structures used in C++ code.
Task 3. Complete the following text using the list of words below:
Back in the 1960s, computer programs were difficult to read. The 1) …… languages (FORTRAN and often even assembly languages) frequently used if and 2) …… statements, resulting in "spaghetti-like" 3) …… . Programs were essentially networks of statements, where the execution could 4) …… freely from one statement to another, using 5) …… or unconditional jump statements. This situation led the entire industry to use flow charts. The flow chart was a 6) …… which represented the program as a directed graph that connected 7) …… sections of the code. The execution could branch at the if statements, or could jump to any other 8) …… of the code, using the goto 9) ……. Flow charts helped programmers understand the 10) …… of their code.
statement
conditional
|
primitive
sequential
|
code
goto
|
diagram
section
|
logic
jump
|
Task 4. Work in pairs and decipher this limerick:
A programmer started to cuss
Because getting to sleep was a fuss
As he lay there in bed
Looping 'round in his head
was: while(!asleep()) sheep++;
Now prepare a similar program for one of the activities in the morning using the following structures: while loops, until loops, if-else, etc.
Language work
Relative clauses with a participle
|
Relative clauses with a participle are often used in technical descriptions. They allow you to provide a lot of information about a noun using as few words as possible.
We often use –ing and –ed clauses after there is/ there are. For example:
There are only three necessary control structures needed to write programs: sequence, selection, and iteration.
A clause is a part of a sentence. Some clauses begin with –ing or –ed.
Study these examples from the text:
-
Function main() consisted of a sequence of lines
-
The most common control structures used in C++ code
-
A control structure using the break statement
-
The control structure allowing choice among different directions
|
We can use the passive participle as in examples 1 and 2.
-
Function main() consisted of a sequence of lines
= function which is consisted
-
The most common control structures used in C++ code
= control structures which are used
We can use the active participle as in examples 3 and 4.
-
A control structure using the break statement
= structure which uses the break statement
-
The control structure allowing choice among different directions
= structure which allows choice among different directions
|
Task 5. Complete these definitions with the correct participle of the verb given in brackets.
-
Software engineering is the processes (involve) in writing computer software such as designing, coding and testing programs.
-
Programming standards are rules (follow) by computer programmers who are working in a team so that their work can be understood by other programmers.
-
Iteration is the process of a computer (execute) a command or statement again and again until a result is obtained.
-
GOTO instruction is a high-level programming language instruction (cause) a jump to another place in the program.
-
While loop is a block of statements in a computer programming language (execute) again and again if a test at the start of the block shows that the execution should happen.
-
Control structure is one or more statements in a programming language (control) how the program is executed.
Task 6. Link these statements using a relative clause with a participle.
-
The software company sent me a brochure. The brochure contained all the information I needed.
-
High-level languages are more efficient. High-level languages allow the programmer to express with one statement what would take several commands in machine language.
-
External documentation is the printed set of instructions. They describe how to operate the program.
-
Most computer installations have a standard language. It is used by their programmers.
-
In addition to the traditional languages, organizations may choose to generate programs. The organizations use data base management systems. The programs use the query language of the DBMS.
-
Many organizations have a substantial number of computers in operation. Computers are located far apart.
-
Expert systems are software packages. They are designed to assist humans in situations in which an expert in a specific area is required.
-
Expert systems will be able to infer answers from sets of data. They emulate humanlike thought processes.
-
Graphics was an esoteric specialty. It involves expensive display hardware, substantial computer resources, and idiosyncratic software.
-
The letters are stored in a subdirectory. This subdirectory is called ‘correspondence’ on the C drive.
Translation
Task 7. Match the terms with the correct definition or explanation:
-
Structured programming
-
Implementation
-
Algorithm
-
Description
-
Pseudocode
-
Subdirectory
-
Computer program
-
Code
| -
a set of unambiguous rules to solve a problem in a definite number of steps
-
code that contains a combination of a programming language such as C, and natural language such as English
-
a directory that is inside another directory
-
the act of starting to use a plan or computer system
-
a general term for computer programming instructions
-
a statement that explains what something looks like, or how it behaves
-
a method of designing a computer program so that it is easy to understand, change and maintain
-
a set of instructions that can be understood by a computer and perform a certain task or function
|
Task 8. Translate the following text into Russian. Check the meaning of any unfamiliar technical words in the dictionary.
Share with your friends: |