Vous êtes sur la page 1sur 6

What Is Computer Programming?

INTRODUCTION
Today, most people don't need to know how a computer works. Most people can simply turn on a
computer or a mobile phone and point at some little graphical object on the display, click a button or
swipe a finger or two, and the computer does something. An example would be to get weather
information from the net and display it. How to interact with a computer program is all the average
person needs to know.
But, since you are going to learn how to write computer programs, you need to know a little bit about
how a computer works. Your job will be to instruct the computer to do things.

proc-ess / Noun:
A series of actions or steps taken to achieve an end.
pro-ce-dure / Noun:
A series of actions conducted in a certain order.
al-go-rithm / Noun:
An ordered set of steps to solve a problem.

Basically, writing software (computer programs) involves describing processes, procedures; it


involves the authoring of algorithms. Computer programming involves developing lists of
instructions - the source code representation of software The stuff that these instructions
manipulate are different types of objects, e.g., numbers, words, images, sounds, etc... Creating a
computer program can be like composing music, like designing a house, like creating lots of stuff. It
has been argued that in its current state it is an art, not engineering.
An important reason to consider learning about how to program a computer is that the concepts
underlying this will be valuable to you, regardless of whether or not you go on to make a career out
of it. One thing that you will learn quickly is that a computer is very dumb, but obedient. It does
exactly what you tell it to do, which is not necessarily what you wanted. Programming will help you
learn the importance of clarity of expression.

A deep understanding of programming, in particular the


notions of successive decomposition as a mode of analysis
and debugging of trial solutions, results in significant
educational benefits in many domains of discourse,
including those unrelated to computers and information
technology per se.
(Seymour Papert, in "Mindstorms")

It has often been said that a person does not really


understand something until he teaches it to someone else.
Actually a person does not really understand something
until after teaching it to a computer, i.e., express it
as an algorithm."
(Donald Knuth, in "American Mathematical Monthly," 81)

Computers have proven immensely effective as aids to clear


thinking.

Muddled and half-baked ideas have sometimes

survived for centuries because luminaries have deluded


themselves as much as their followers or because lesser
lights, fearing ridicule, couldn't summon up the nerve to
admit that they didn't know what the Master was talking
about. A test as near foolproof as one could get of whether
you understand something as well as you think is to express
it as a computer program and then see if the program does
what it is supposed to. Computers are not sycophants and
won't make enthusiastic noises to ensure their promotion
or camouflage what they don't know.

What you get is what

you said.
(James P. Hogan in "Mind Matters")

But, most of all, it can be lots of fun! An associate once said to me "I can't believe I'm paid so well
for something I love to do."
Just what do instructions a computer understands look like? And, what kinds of objects do the
instructions manipulate? By the end of this lesson you will be able to answer these questions. But
first let's try to write a program in the English language.

PROGRAMMING USING THE ENGLISH LANGUAGE


Remember what I said in the Introduction to this lesson?

Writing software, computer programs, is a lot like


writing down the steps it takes to do something.

Before we see what a computer programming language looks like, let's use the English language to
describe how to do something as a series of steps. A common exercise that really gets you thinking
about what computer programming can be like is to describe a process you are familiar with.
Describe how to make a peanut butter and jelly sandwich.

Rather than write my own version of this exercise, I searched the Internet for the words "computer
programming sandwich" using Google. One of the hits returned
was http://teachers.net/lessons/posts/2166.html. At the link, Deb Sweeney (Tamaqua Area
Middle School, Tamaqua, PA) described the problem as:

Objective: Students will write specific and sequential steps


on how to make a peanut butter and jelly sandwich.
Procedure: Students will write a very detailed and step-by-step
paragraph on how to make a peanut butter and jelly
sandwich for homework. The next day, the students will
then input (read) their instructions to the computer
(teacher). The teacher will then "make" the programs,
being sure to do exactly what the students said...

When this exercise is directed by an experienced teacher or mentor it is excellent for demonstrating
how careful you need to be, how detailed you need to be, when writing a computer program. A
demonstration of this exercise is available on YouTube.
Programming in a natural language, say the full scope of the English language, seems like a very
difficult task. But, before moving on to languages we can write programs in today, I want to leave on
a high note. Click here to read about how Stephen Wolfram sees programming in a natural
language happening.

PROGRAMMING LANGUAGES - HIGH-LEVEL LANGUAGES


Almost all of the computer programming these days is done with high-level programming languages.
There are lots of them and some are quite old. COBOL, FORTRAN, and Lisp were devised in the
1950s!!! As you will see, high-level languages make it easier to describe the pieces of the program
you are creating. They help by letting you concentrate on what you are trying to do rather than on
how you represent it in a specific computer architecture. They abstract away the specifics of the
microprocessor in your computer. And, all high-level languages come with large sets of common
stuff you need to do, called libraries.
In this introduction, you will work with two computer programming languages: Logo and Java. Logo
comes from Bolt, Beranek & Newman (BBN) and Massachusetts Institute of Technology
(MIT). Seymour Papert, a scientist at MIT's Artificial Intelligence Laboratory, and co-workers
championed this computer programming language in the 1970s. More research of its use in
educational settings exists than for any other programming language. In fact, the fairly new Scratch
Programming Environment (also from MIT) consists of a modern graphical user interface on top of
Logo-like functionality.
Java is a fairly recent programming language. It appeared in 1995 just as the Internet was starting to
get lots of attention. Java was invented by James Gosling, working at Sun Microsystems. It's sort-of
a medium-level language. One of the big advantages of learning Java is that there is a lot of
software already written ( see: Java Class Library) which will help you write programs with
elaborate graphical user interfaces that communicate over the the Internet. You get to take
advantage of software that thousands of programmers have already written. Java is used in a
variety of applications, from mobile phones to massive Internet data manipulation. You get to work
with window objects, Internet connection objects, database access objects and thousands of others.
Java is the language used to write Android apps.
So, why do these lessons start with the Logo programming language? No other language has the
depth of research based on its use in educational settings. Hundreds of books and research papers
have been written regarding its use in the classroom. Cynthia Solomon, who started MIT's Logo
Group with Dr. Papert, has put together a comprehensive website on
Logo: logothings.wikispaces.com.
I like using the Logo language to teach introductory programming because it is very easy to learn.
The faster you get to write interesting computer programs the more fun you will have. And... having
fun is important! But do not let Logo's simplicity fool you into thinking it is just atoy programming
language. Logo is a derivative of the Lisp programming language, a very powerful language still
used today to tackle some of the most advanced research being performed. Brian Harvey shows

the power of Logo in his Computer Science Logo Style series of books. Volume 3: Beyond
Programming covers six college-level computer science topics with Logo.
Both Logo and Java have the same sort of stuff needed to write computer programs. Each has the
ability to manipulate objects (for example, arithmetic functions for working with numbers). Each lets
you compare objects and do a variety of things depending on the outcome of the comparison. Most
importantly, they let you define named procedures. Named procedures are lists of built-in
instructions and other named procedures. The abstraction of naming stuff lets you write programs in
a language you yourself define. This is the stuff that programming is really all about, as you will see.
Just to give you a feel for what programming is like in a high-level language, here's a program that
greets us, pretending to know English.

print [Hello world!]

This is one of the simplest programs that can be written in most high-level languages. PRINT is
a command in Logo When it is performed, it takes whatever follows it and displays it. The "Hello
world" program is famous; checkout its description on Wikipedia by clicking here.
In addition to commands, Logo has operators that output some sort of result. Although it's a bit
contrived, here is a program that displays the product of a constant number (ten) and a random
number in the range of zero through fourteen.

print product 10 (random 15)

In this source code, the PRINT command's input is the output of


the PRODUCT operator. PRODUCT multiplies whatever follows it by whatever follows that and
outputs the result. So, PRODUCT needs two inputs. RANDOM is an operator that outputs a
number that is greater than or equal to zero (0) and less than the number following it.
So, PRODUCT gets its second input from the output of RANDOM.
Confusing?
Figure 1.1 shows a plumbing diagram, a graphical representation of how all these procedures fit
together.

Vous aimerez peut-être aussi