74198

Evolution of programming languages and tools

Лекция

Информатика, кибернетика и программирование

The earliest practical form of programming was probably done by Jaquard (1804, France). He designed a loom that performed predefined tasks through feeding punched cards into a reading contraption.

Английский

2014-12-29

56.5 KB

0 чел.

Lecture 2. Evolution of programming languages and tools2

It shouldn't be a big surprise that the creation or software also went in large but distinguishable steps. Compared with hardware there were fewer developments that went parallel or overlapping. In rare cases developments were reinvented sometimes because the development or invention was not published, even prohibited to be made public (war, secrecy acts etc.) or became known at the same time and after (legal) discussions the “other” party won the honors.

The earliest practical form of programming was probably done by Jaquard (1804, France). He designed a loom that performed predefined tasks through feeding punched cards into a reading contraption. This new technology allowed carpets and tissues to be manufactured with lower skills and even with fewer people. The little kid sitting under the loom changing rods and other things vanished. One single person could now handle a loom.

Figure 2.1 shows the manufacturing of punched cards for looms1.

Figure 2.1 - Manufacturing of punched cards for looms

The technology of punched cards will later be adapted by (IBM's) Recording and Tabulating Company to process data.

The situation was still a one on one game: a problem needed to be solved thus a machine was built. And when some sort of instruction was needed a sequence was designed or written and transferred to either cards or mechanical aids such as wires, gears, shafts actuators etc. To call that programming? Well, according to our definition yes it was.

First there was Ada Lovelace, writing a rudimentary program (1843) for the Analytical Machine, designed by Charles Babbage in 1827, but the machine never came into operation. Then there was George Boole (1815-1864), a British mathematician, who proved the relation between mathematics and logic with his algebra of logic (BOOLEAN algebra or binary logic) in 1847. This meant a breakthrough for mathematics. Boole was the first to prove that logic is part of mathematics and not of philosophy. But it will take one hundred years before this algebra of logic is put to work for computing.

John Von Neumann working at the Institute for Advanced Study developed in 1945 two important concepts that directly affected the path of computer programming languages:

1) The first concept became known as “shared-program technique”. This technique states that the actual computer hardware should be simple and not need to be hand-wired for each program. Instead, complex instructions should be used to control the simple hardware, allowing it to be reprogrammed much faster.

2) The second concept was also extremely important to the development of programming languages. Von Neumann called it “conditional control transfer”. This idea gave rise to the notion of subroutines, or small blocks of code that could be jumped to in any order, instead of a single set of chronologically ordered steps for the computer to take. The second part of the idea stated that computer code should be able to branch based on logical statements such as IF (expression) THEN, and looped such as with a FOR statement. “Conditional control transfer” gave rise to the idea of “libraries”, which are blocks of code that can be reused over and over.

It took Claude Shannon (1916-2001) who wrote a thesis (A Mathematical Theory of Communication in the Bell System Technical Journal -1948) on how binary logic could be used in computing to complete the software concept of modern computing.

In the beginning computers were programmed by “programming” direct instructions into it. This was done by setting switches or making connections to different logical units by wires (circuitry). Programming like this was nothing else but rewiring these huge machines in order to use all the options, possibilities and calculations. Reprogramming always meant rewiring. In that way calculations needed days of preparations, handling thousands of wires, resetting switches, plugs etc. (in the most extreme case that is). And the programmed calculation itself just took a few minutes. If the “programming” of wiring did not have a wrong connection, the word bug was not in used yet, for programming errors. The coding panels very much looked like that a few telephone switchboards hustled together, and in fact many parts actually came from switch boards.

With the invention of vacuum tubes, along with many other inventions, much of the rewiring belonged to the past. The tubes replaced the slow machines based on relays.

In 1949, a few years after Von Neumann's work, the language Short Code appeared. It was the first computer language for electronic devices and it required the programmer to change its statements into 0's and 1's by hand. Still, it was the first step towards the complex languages of today. In 1951, Grace Hopper wrote the first compiler, A-0. A compiler is a program that turns the language's statements into 0's and 1's for the computer to understand. This lead to faster programming, as the programmer no longer had to do the work by hand.

Programming the first binary computer was still not an easy task and much prone to mistakes. First programming was done by typing in 1's or 0's that were stored on different information carriers. Like paper tapes, punched hole cards, hydrogen delay lines (sound or electric pulse) and later magnetic drums and much later magnetic and optical discs.

By storing these 0's and 1's on a carrier it was possible to have the computer read the data on any later time. But mistyping a single zero or one meant a disaster because all coding (instructions) should absolutely be on the right place and in the right order in memory. This technology was called absolute addressing.

An example:

1010010101110101011

If this is a sequence for switches it means switch one on, switch two off etc. etc.

In simple language:

Panel  1  function:  enter house

Switch 0  1   open the door

Switch 1  1   put the lights on

Switch 2  0   close the door (please)

In fact the protocols for programming the machines in this way looked very much like that.

In the early 50's programmers started to let the machines do a part of the job. This was called automatic coding and made live a lot easier for the early programmers.

Soon the next step was to have the program to select the proper memory address instead of using absolute addressing. Absolute addressing: the programmer instructs the machine at what location of the memory (valve, relay, and transistor) to store a value.

The next development was to combine groups of instruction into so called words and abbreviations were thought up called: opcodes (Hopper 1948).

Machine Language

Opcode works like a shorthand and represents as said a group of machine instructions. The opcode is translated by another program into zero's and one's, something a machine could translate into instructions.

But the relation is still one to one: one code to one single instruction. However very basically this is already a programming language. It was called: assembly language.

Assembly language instructions consist of an opcode mnemonic followed by a list of data, arguments or parameters. These are translated by an assembler into machine language instructions that can be loaded into memory and executed

Example: in x86/IA-32 processor - move an immediate 8-bit value into a register. The following machine code loads the AL register with the data 01100001:

10110 - the binary code for this instruction

000 - the identifier for the AL register

Machine code: 1011000001100001

This binary computer code expressed in hexadecimal (more human-readable): B0 61. B0 means “Move a copy of the following value into AL”. 61 is a hexadecimal representation of  01100001 (97 in decimal).

Assembly language provides the mnemonic MOV for instructions such as this

MOV AL, 61h       ; Load AL with 97 decimal (61 hex)

Subroutines

Soon after developing machine languages and the first crude programming languages began to appear the danger of inextricable and thus unreadable coding became apparent. Later this messy programming was called: “spaghetti code”.

One important step in unraveling or preventing spaghetti code was the development of subroutines. And it needed Maurice Wilkes, when realizing that “a good part of the remainder of his life was going to be spent in finding errors in ... programs”, to develop the concept of subroutines in programs to create reusable modules. Together with Stanley Gill and David Wheeler he produced the first textbook on “The Preparation of Programs for an Electronic Digital Computer”.

The formalized concept of software development (not named so for another decade) had its beginning in 1951.

Below is an example of how subroutines would work.

Start of program

the main "menu"

 

 

 

first subroutine

 

back to the main menu

second subroutine

with a parameter (contents of what to print)

 


back to procedure: main

Begin program;

Main;

Printf ("Hello World");
DoSomethingElse()
Printf ("Hello World");

(end of program)

Function DoSomethingElse;

Add two numbers;

Return OK

Function Printf(what_to_print)

Open channel to printer interface;
Initialize printer;
Send "what_to_print" to printer;
Send page feed to printer;
Close printer interface;

Return OK

This program would print “Hello World” twice on two different pages. By re-using the Printf subroutine a possible error in this routine would show up only once. An enormous advantage when looking for errors. Off course the Open, Initialize, Send, and Close “commands” in this Printf function are also subroutines.

1  Material for this lecture was taken from http://www.thocp.net/software/software_reference/introduction_to_software_history.htm


 

А также другие работы, которые могут Вас заинтересовать

46103. СОДЕРЖАНИЕ И МЕТОДЫ ЛОГОПЕДИЧЕСКОЙ РАБОТЫ С ДЕТЬМИ, ИМЕЮЩИМИ ДЕТСКИЙ ЦЕРЕБРАЛЬНЫЙ ПАРАЛИЧ В КОМПЛЕКСЕ МЕДИКО-ПЕДАГОГИЧЕСКОГО ВОЗДЕЙСТВИЯ 29.5 KB
  Особое место в клинике ДЦП занимают расстройства речи 80 случаев. Особенности нарушений речи и степень их выраженности зависят в первую очередь от локализации и тяжести поражения мозга. Ошибки в речи могут быть связаны с ограничением представлений об окружающем мире недостаточностью предметнопрактической деятельности и социальных контактов ошибки воспитания. Нарушение артикуляционной моторики при ДЦП не только затрудняют формирование произносительной речи но и вторично вызывают нарушение фонематического восприятия.
46104. Характеристика системы специальных учреждений для детей с нарушениями речи 42 KB
  Характеристика системы специальных учреждений для детей с нарушениями речи. дошкольные учреждения для детей с нарушениями речи. Первоначально в д с открывали группы для детей только с легкими нарушениями речи затем организованы группы для детей с более сложными заикание ОНР. Д с яслисады для детей с нарушениями речи и соответствующие дошкольные группы при детских садах и ясляхсадах общего типа комплектуются непосредственно теми отделами народного образования в ведении которых находятся указанные дошкольные учреждения.
46105. Обучение и воспитание детей с фонетико-фонематическим недоразвитием 21.5 KB
  Признаком фонематического недоразвития является незаконченность процесса формирования звуков отличающихся тонкими артикуляционными или акустическими признаками. Состояние фонематического развития детей влияет на овладение звуковым анализом. При первичном нарушении фонематического восприятия предпосылки к овладению звуковым анализом и уровень сформированности действия звукового анализа ниже чем при вторичном. Недостатки звукопроизношения могут быть сведены к следующим характерным проявлениям: замена звуков более простыми по...
46106. Общее недоразвитие речи у детей. Характеристика уровней речевого недоразвития 30 KB
  Общее недоразвитие речи у детей. Общее недоразвитие речи ОНР различные сложные речевые расстройства при которых у детей нарушено формирование всех компонентов речевой системы относящихся к ее звуковой и смысловой стороне при нормальном слухе и интеллекте.Левиной была разработана периодизация проявлений ОНР: от полного отсутствия средств общения до развернутых форм связной речи с элементами фонетикофонематического и лексикограмматического недоразвития. Переход с одного уровня на другой определяется появлением новых языковых...
46107. Обучение и воспитание детей с общим недоразвитие речи 32.5 KB
  Обучение и воспитание детей с общим недоразвитие речи. Предусматривает: развитие понимания речи; развитие самостоятельной речи на основе подражательной деятельности; формирование двусоставного простого предложения на основе усвоения элементарных словообразований. Логопедические занятия с безречевыми детьми проводятся небольшими подгруппами в форме игровых ситуаций что помогает постепенно формировать мотивационную основу речи. Задачи: вызвать подражательную речевую деятельность детей в форме любых звуковых проявлений; расширение объема...
46108. Предупреждение речевых нарушений. Формы и методы профилактического воздействия в системе общегосударственных мероприятий 25 KB
  Одним из важных направлений развития логопедической помощи населению является предупреждение речевых нарушений и последствий речевой патологии. Своевременное генетическое консультирование будущих родителей с целью предупреждения развития тех или иных отклонений в нервопсихическом и в частности речевом развитии ребенка. Для своевременного развития речи мать и другие лица окружающие ребенка должны постоянно общаться с ним стремясь вызвать ответную реакцию. Стимуляция формирования речевой функции имеет большое значение для развития...
46109. Анализ условий нормального речевого развития ребенка. Этапы нормального речевого онтогенеза 17.5 KB
  Речь ребенка формируется под влиянием речи взрослого и в огромной степени зависит от достаточной речевой практики от нормального окружения и от воспитания и обучения которое начинается с первых дней его жизни. Этапы становления речи детей Леонтьев. В это же время путем подражания ребенок постепенно перенимает элементы звучащей речи.Преддошкольный от 1года до 3 лет Характеристика: этап становления активной речи.
46110. Теоретические основы логопсихологии. Психологическая характеристика детей с нарушениями речи 20.5 KB
  Психологическая характеристика детей с нарушениями речи. Объект – психика лиц с патологией речи. Психологическая характеристика детей с нарушениями речи. Ранний возраст 13 года Этот возраст является сензитивным чувствительным периодом становления речи.
46111. Характеристика педагогических систем воспитания детей с речевыми нарушениями. Проблемы интеграции детей дошкольного возраста с речевыми нарушениями 23.5 KB
  Характеристика педагогических систем воспитания детей с речевыми нарушениями. Проблемы интеграции детей дошкольного возраста с речевыми нарушениями.подготовка к обучению грамоте и овладение элементами грамоты Системы логопедического и педагогического обследования детей дошкольного возраста с речевыми нарушениями В целом проводится комплексное психологопедагогическое обследование психолог педагоги логопед Цель: выявить отклонения направить ребенка в соответствующее образовательное учреждение Задачи обследования: 1....