Код первых языков программирования был достаточно громоздким и сложным для понимания, к тому же, программы, написанные на этих языках, нельзя было переносить с компьютера на компьютер. Поэтому программисты всеми силами пытались изобрести язык программирования, который по своей структуре будет схож с человеческим языком (читай – легок в понимании). Так появились языки программирования С, BASIC, Pascal, COBOL, FORTRAN и др. Эти языки обладали более простым кодом, поэтому создавать программы на них было легче и быстрее.
Первопроходцем этого семейства «простых» языков программирования можно назвать FORTRAN (1954 год), название которого получилось от слияния словосочетания Formula Translator (Формульный транслятор). Главная задача FORTRAN – выполнение разнообразных математических расчетов. Примерно в это же время был создан другой высокоуровневый язык программирования – COBOL, его главной целью была обработка коммерческой информации. Как вы видите, каждый из этих языков программирования был создан для выполнения определенных задач, что с одной стороны делало язык удобным, но с другой лишало его универсальности. Иными словами, программисты не могли, используя, к примеру, COBOL написать видео игру, операционную систему или приложение для работы с текстом.
Языки программирования. Данные. Языки высокого уровня. Урок 32
Новички, приступая к изучению программирования, зачастую берут за основу язык С. Но этот язык обладает достаточно сложным синтаксисом, поэтому многие начинающие программисты теряет веру в свои силы, или еще хуже – забрасывают обучение. Как это не обидно признавать, но программирование все еще является сложным в понимании для большинства людей. Осознавая эту проблему, компьютерные гении придумали языки программирования BASIC и Pascal, которые не так сложны в понимании, а потому могут с легкостью быть использованы при обучении.
Собственно поэтому как BASIC, так и Pascal часто еще называют учебными языками. Код программы написанной на Pascal очень легко понять, так как он хорошо структурирован. Таким образом, в будущем вы всегда можете возвратиться к нему (коду) и внести определенные корректировки.
Язык BASIC менее структурирован, что позволяет тратить меньше времени на создание программы по сравнению с Pascal. Однако из-за плохой структурированности, понять написанный код в последствии будет очень трудно, в особенности, если идет речь о больших программах.
Что выбирать для обучения – это личное дело каждого. Я лишь могу посоветовать, руководствоваться при выборе языка задачами создаваемой программы, а также временем, отведенным на ее создание.
P.S: Владельцам сайтов, интернет магазинов или блогов обязательно нужно продвигать свой проект в сети интернет. В этом вам поможет команда сайта shopmakers.com, которая предоставляет услугу — SEO для сайта. Кроме того, там же вы можете заказать услугу создания сайта.
Дата: 23.08.2012
Поделиться:
Вы должны войти, чтобы оставить комментарий.
Структуры данных, лекция-3: программы на языках высокого уровня
Источник: cppstudio.com
Первый язык программирования высокого уровня — Планкалкюль
Планкалкюль (Plankalkül) — первый в мире язык программирования высокого уровня, разработанный немецким инженером Конрадом Цузе между
1942 и 1946 годами для его компьютера «Z4» (компьютер на снимке ниже, фото взято из «Википедии»).
Шла Вторая Мировая Война, Цузе работал в отрыве от учёных других стран, совершенно самостоятельно. За это время он создал не только язык программирования,
но и написал на нём 49 страниц программ для оценки шахматных позиций. Полностью его работа была опубликована много позже, в 1972.
Рискну рассказать об этом языке программирования, в качестве археологического изыскания. Тем более, что на русском языке об этом языке сказано очень мало.
Только в 1957 году (работы были начаты в 1954) появился Фортран — язык, который большинство считает первым языком высокого уровня.
«Z4» был электро-механическим, поэтому компилятора или интерпретатора Планкалкюля не существовало, но в 2000 году в Свободном
универсистете Берлина (Freie Universität Berlin) был создан интерпретатор его
диалекта (запускается в виде Ява-аплета в браузере).
Диалект, который реализуется, назван Plankalkül-2000 и отличается от оригинала различными упрощениями.
Например, упрощена форма записи, Цузе использовал двухмерную запись —
первой строкой записывалось само выражение, а ниже некоторые его аргументы (тип переменной, индексы и так далее). Кроме того, были упрощены и значки самих операций,
приведены к более привычному нам с вами виду.
Язык довольно богатый, на мой взгляд, для сороковых годов-то: есть условные конструкции, два вида циклов (аналог while и for), есть массивы и кортежи,
можно описывать и вызывать подпрограммы (но рекурсии нет).
- «Variablen» (Входные переменные) — это входные переменные подпрограмм, доступны только для чтения начинаются с буквы «V» и номера.
- «Zwischenwert» (Значения промежуточные), доступны для чтения и записи, предназначены для хранения промежуточных вычисляемых значения, начинаются с «Z» и номера.
- «Resultatwerte» (Результат) — в этих переменных возвращается результат вычисления, начинаются с «R» и номера.
- «Indizes» (Индексы) — переменные цикла (аналога for), начинаются с «i», дальше может быть номер, номер необходим для организации вложенных циклов.
- Для целого неотрицательного указывается размерность в битах. Есть две формы записи «0» — один бит, «n.0» — «n» бит, например, 8.0 — один байт (8 бит).
- Кортеж указывается в скобках, например (3.0, 4.0) — это две переменные в три и четыре бита, кортеж должен иметь более одного элемента.
- Массив записывается через точку, к примеру: 4.5.0 — массив из четырёх элементов по пять бит в каждом, 32.(0, 8.0, 16.0) — 32 кортежа, в каждом из которых три переменных: один бит, восемь и
шестнадцать.
Одна из них вычисляет указанное (по порядку) число Фибоначчи:
P0 FactEvgenyStepanischev (V0[:4.0]) => (R0[:10.0]) (0, 1) => (Z0[:10.0], Z1[:10.0]) W1 (V0[:4.0]) [ i > 0 -> (Z0[:10.0] + Z1[:10.0], Z1[:10.0] — Z0[:10.0]) => (Z1[:10.0], Z0[:10.0]) ] Z1[:10.0] => R0[:10.0] END
Запускать следует так: открываете страницу с интерпретатором, копируете в окно мою программу, нажимаете «Compile», открывается отдельное
окно с Ява-аплетом (требует, чтобы на компьютере была установлена Ява), в открывшемся окне мышкой побитно набираете начальное значение V0 (нажимать надо на зелёные кружки́),
потом в окне браузера нажимаете «Run», в красной строчке (R0) увидите получившееся значение.
Подпрограммы в языке начинаются с символа «P» и уникального номера, дальше идёт имя, по которому её можно будет вызвать, у меня подпрограмма называется «FactEvgenyStepanischev», заканчивается
подпрограмма ключевым словом «END» (в оригинальном Планкалкюле его не было).
У подпрограммы описываются принимаемые и возвращаемые значения, у меня используется одна переменная на вход, размерностью 4 бита и одна на выход, размерность в 10. Первой строкой
присваиваются значения «ноль» и «один» промежуточным переменным Z0 и Z1. Тип переменных приходится указывать при каждом их использовании, преобразовать переменную в другой
тип нельзя.
Ниже идёт цикл «for» (W1), поскольку номер переменной цикла я не указал (указывается в первых квадратных скобках, которые тут опущены), используется переменная цикла «i», без номера.
В круглых скобках указывается количество повторений, а в последующих квадратных — тело цикла. Подробности можно
найти в описании.
Операция «стрелка» („->“) — условная конструкция, часть справа будет выполнена, если выражение слева истинно. В диалекте работают только самые простые выражения, например
цикл туда подставить можно, но кнопка «Run» в аплете у меня не появилась, поэтому я ограничился присваиванием внутри цикла.
Я тут использовал комплексное присваивание, которое хорошо знакомо тем, кто использует Перл, Пайтон или ПХП, но работает оно иначе — присваивания выполняются
последовательно, слева направо, поэтому я не могу ограничиться «(Z0[:10.0] + Z1[:10.0], Z1[:10.0]) => (Z1[:10.0], Z0[:10.0])», результат будет не тот, который ожидается.
В конце я присваиваю промежуточное значение результирующему значению подпрограммы.
Кроме этого в языке почти ничего и нет. Обращение к элементам массива, вызов функции и цикл «while» описывать отдельно смысла не имеет, они выглядят достаточно естественно в рамках этого синтаксиса.
Все операции, поддерживаемые языком (их немного — логические операции, битовые операции и четыре арифметические действия) выглядят привычно.
- планкалкюль
- языки программирования
Источник: habr.com
Plankalkül: злой язык для вундерваффе
О первом в мире высокоуровневом языке программирования, а также о хитром переплетении людских судеб и идей в нацистской Германии и послевоенном мире.
Иллюстрация: Denis Apel / Huhu Uet / Kinsme / Sammlung der Medien und Wissenschaft / Morris J D C (Sgt) / Wikimedia Commons / Edan Cohen / Unsplash / Дима Руденок для Skillbox Media
Константин Зотов
Журналист, редактор. Фанат виртуальности во всех её видах — потому о ней и пишет.
Современным разработчикам, живущим в мире Open Source, глобального рынка, открытых границ и свободного обмена идеями, наверное, трудно представить, что всего век назад всё было иначе.
Кибернетики (так раньше называли айтишников) работали не просто в полной изоляции друг от друга — они буквально участвовали в войне на выживание. Что, впрочем, не мешало им совершать удивительные открытия, которые заложили основы нынешних IT.
Об одном из них, Алане Тьюринге, мы много писали в предыдущих статьях. Сегодня поговорим о представителе противоположного лагеря, чьи достижения, пожалуй, не менее глобальны, но, к сожалению, гораздо менее известны. О создателе первого в мире языка программирования высокого уровня — Plankalkül (читается как «планкалкюль»).
Конрад Цузе и его университеты
Если бы Цузе родился в другое время и в другом месте, его имя, скорее всего, было бы известно не только в узкопрофессиональной среде — оно гремело бы на весь мир. Однако судьбе было угодно иначе.
Наш герой родился в 1910 году в Берлине. С раннего возраста он проявлял огромные способности к изобретательству. Например, ещё школьником сконструировал действующий аппарат по размену мелочи (для сравнения, советские инженеры введут нечто подобное в массовый оборот только через полвека) и спроектировал город с населением 37 млн человек (это, на минутку, полтора современных Пекина, три Москвы или четыре Нью-Йорка). В 1935 году Цузе окончил Берлинскую высшую техническую школу — культовый по тем временам вуз.
Помимо авторитетной научной базы Школа славилась толерантным отношением к объектам студенческих исследований. Один из моих университетских преподавателей, которому посчастливилось учиться в Берлине примерно в те же годы поглядывал на наши лабораторные работы снисходительно, время от времени вздыхая: «Вот у нас были лабы так лабы: получение героина ацетилированием морфина, синтез цианидов из карбидов…»
Это неудивительно, если учесть, что химфак Школы в разное время окончили, например, Антон Кёлиш, придумавший MDMA, более известный как «экстази» (это была его дипломная работа), и Фриц Габер — нобелевский лауреат, подаривший миру азотные удобрения и «Циклон Б» .
Вообще, знаменитостей в Берлине училось немало. Из одних только обладателей Нобелевки можно составить несколько футбольных команд.
Остановимся, однако, на однокашниках Цузе, с которыми так или иначе будет связана вся его работа с окончания Школы и вплоть до 1945 года:
- Альберт Шпеер — архитектор и по совместительству министр вооружений в Третьем рейхе, автор идеи принудительного выселения евреев, куратор проекта концентрационных лагерей;
- Вернер фон Браун — ракетостроитель, создатель первых в мире баллистических ракет;
- Гельмут Греттруп — инженер-ракетчик, ближайший сподвижник фон Брауна;
- Вальтер Дорнбергер — администратор, генерал-майор вермахта, непосредственный руководитель Греттрупа и фон Брауна, подчинённый Шпеера.
Тройка последних с конца 1930-х составляла костяк ракетного исследовательского центра в Пенемюнде, где и были придуманы все немецкие вундерваффе — от летающей бомбы V-1 до первой в мире БРДД ФАУ-2.
«Ни одно частное лицо или государственное учреждение не могло позволить себе трату миллионов марок на создание больших ракет, если это ограничивалось бы исключительно интересами чистой науки. Перед нами человечеством, согласным на любые затраты, была поставлена задача решить великую цель и сделать в этом отношении первый практический шаг. И мы открыли дверь в будущее…»
Вальтер Дорнбергер,
«Выстрел в космос», 1952 год
Как мы видим, недостатка в средствах, мотивации и конструкторских идеях у немецких ракетостроителей не было. Однако любой ракетой нужно как-то управлять. Кроме того, для проектирования требуются сложнейшие расчёты, которые под силу только ЭВМ. Настало время вернуться к нашему главному герою.
ЭВМ на букву Z
Идея сделать машину для рутинных расчётов пришла к Цузе ещё в студенческие годы. Причём она настолько его охватила, что юный изобретатель, проработав на авиазаводе всего год после получения диплома, перешёл на полставки и вплотную занялся её осуществлением.
Через три года была готова первая модель, которую Цузе назвал по первой букве своей фамилии (Zuse) — Z1. Устройство весило полтонны и было собрано буквально из подручных средств. Работало оно на моторе от старого пылесоса, данные вводились с помощью клавиатуры от печатной машинки, а переключателями служили 20 000 металлических пластин, которые Цузе с друзьями вручную выпилили лобзиками.
Несмотря на такую монструозность, Z1 обладала памятью на 64 слова по 22 бита и умела складывать числа за пять секунд и перемножать за 10.
Вдохновлённый первым успехом, Цузе тут же взялся за более совершенную модель Z2. После двух лет поисков он, наконец, нашёл заинтересованных инвесторов — ими как раз и стали геноссен из Пенемюнде.
Проекты Цузе и Дорнбергера — Греттрупа — фон Брауна плотно переплелись до самого конца Второй мировой. За Z2 последовал первый в мире работоспособный программируемый компьютер Z3, на котором рассчитывались параметры ФАУ. А позже — единственный на тот момент в Европе цифровой компьютер Z4.
Z4, по сути, был прототипом современных ПК. Чтобы он нормально функционировал, одного умения выпиливать лобзиком было недостаточно. Цузе приступил к созданию собственного языка программирования.
К этой работе, как и ко всему остальному, инженер подошёл фундаментально. Он исходил из того, что новый язык должен быть готов к применению не только на Z4, но и на любом другом компьютере. Кроме того, Цузе изначально строил логическую систему числовых и символьных обозначений, пригодную для решения какой угодно задачи.
Его концепция программирования понятна уже из названия, которое он придумал для своего языка, — Plankalkül (в переводе с немецкого — «запланированные вычисления»).
Цузе предложил разделить работу компьютера на две составляющие: программу, то есть план работы вычислительного устройства, и собственно вычисления, которые это устройство будет производить. Таким образом, он предвосхитил современные понятия hardware и software.
«Plankalkül родился исключительно как результат теоретической работы, без всякой связи с тем, появятся или нет в обозримом будущем машины, подходящие к программам на Plankalkül».
Конрад Цузе о своих изначальных предпосылках.
Источник: Язык компьютера / пер. с англ. К. Г. Батаева, под ред. и с предисл. В. М. Курочкина. М.: Мир, 1990. 240 с.
Результат был ошеломляющим: немецкий кибернетик опередил конкурентов на десятки лет. И вот почему.
Язык для modern talking
Plankalkül стал первым в мире высокоуровневым языком программирования с собственной символьной лексикой (термина «алгоритмический язык» ещё не существовало) и техникой трансляции адресов.
Переменные записывались сочетанием «буква-число», где буква обозначала их вид. Например:
- V — параметр ввода;
- Z — промежуточное значение;
- R — результирующее значение;
- C — константа.
Цузе придумал оператор присваивания , аналогичный сегодняшнему => или, в американской раскладке, : =. Приведём типичный пример его использования для сравнения переменных V1 и V2. Если они равны, в результат R1 заносится значение TRUE, в противном случае — FALSE. Записывалось это так:
Для числовых переменных использовалась запись S1.n, где n — размерность в битах (значение n = 0 соответствовало размерности в 1 бит).
Кортеж указывался в скобках — допустим, запись (2.0, 5.0) обозначала кортеж из двух переменных в 2 и 5 битов соответственно.
Аналогично, структура из трёх компонентов записывалась как (A2, S1.4, A3), где A2 и A3 — объекты, определённые в программе.
В Plankalkül было впервые введено понятие объекта. Он мог быть примитивным, то есть основанным на двоичных числах произвольной длины. Логическая единица обозначалась символом L — например, двоичное число 101101 записывалось как L0LL0L. Или составным — к таким объектам относились массивы, структуры и так далее.
В строчке выше нет опечатки — язык действительно позволял работать с массивами. Массив размерности [n] x [m] обозначался как n.m.S0 (индексация всегда начиналась с 0). К примеру, запись 4.5.0 обозначала массив из четырёх элементов по 5 бит в каждом. А запись 32. (0, 8.0, 16.0) — массив из 32 кортежей, в каждом из которых по три переменных размерностью 1, 8 и 16 бит.
Предусматривались и операции с многомерными массивами: например, трёхмерный массив V [i] [j] [k] указывался матрицей V [i] и вектором V [j] [k].
Программы и подпрограммы в Plankalkül считались переменными и обозначались префиксом P. Скажем, запись P3.7 означала вызов седьмой программы третьей программной группы.
Синтаксис, изобретённый Цузе, для современных разработчиков выглядит странновато. Все записи были многомерными: в верхней строке записывалось само выражение, а в нижних — его аргументы (индексы, типы переменных и так далее). В соответствующей статье «Википедии» приведён пример с присваиванием на языке Plankalkül:
V в данном случае — это строка для индексов, S — строка для задания типов данных, 1.n — целое число размером n бит. Как предполагают многие исследователи, такие архитектурные излишества были связаны с необходимостью переводить всё на перфокарты и перфоленты, бывшие тогда чуть ли единственным способом хранения информации для ЭВМ.
Как это работало
Исторически сложилось, что Plankalkül разрабатывался для электромеханических устройств, а потому не предполагал компилятора. В 2000 году инженеры Свободного университета Берлина восполнили этот пробел и создали интерпретатор Plankalkül-2000 — по сути, модернизированный и слегка упрощённый диалект оригинала.
Таким образом, любой желающий мог почувствовать дух той эпохи, скачав интерпретатор на свой компьютер, и поупражняться в написании программ.
К сожалению, на данный момент ссылка выдаёт ошибку 404, но кое-какие примеры в Сети всё-таки остались. Например, та же статья в «Википедии» содержит код программы для вычисления максимума трёх переменных с помощью программы max3 и подпрограммы max:
P1 max3 (V0[:8.0],V1[:8.0],V2[:8.0]) => R0[:8.0]
Как мы видим, все программы и подпрограммы записываются с помощью символа P, уникального номера и имени, по которому они вызываются. Их конец обозначается командой END — как вы понимаете, это уже придумка наших современников, в изначальном языке Цузе её не было и быть не могло.
В каждой подпрограмме описываются входные и результирующие значения. В нашем случае это три входных переменных V0, V1 и V2 размерностью 8 бит каждая и одна выходная R0, тоже на 8 бит.
Подпрограмма max находит максимум из переменных V0 и V1. Вначале за максимум берётся V0, значение которой присваивается вспомогательной переменной Z1. Потом Z1 сравнивают с V1. Если последняя оказывается больше, то переменной Z1 присваивают её значение и найденный таким образом максимум присваивается результирующей R0.
Затем программа max3 ищет максимум из переменных Z1 и V2 посредством вызова подпрограммы max.
Что было дальше
Plankalkül мог стать настоящим прорывом в 1940–1950-е годы. Нигде больше не было условных конструкций, двух видов циклов (аналогов современных while и for), массивов и кортежей, возможности описывать и вызывать подпрограммы (правда, справедливости ради надо сказать, что рекурсии в Plankalkül не было).
По мощности он приближался к Algol 68, разработанному почти четверть века спустя, и при этом существенно превосходил его в надёжности.
Но, к сожалению, хитом он не стал. Компьютер Z4 был окончательно готов лишь к декабрю 1944 года, когда войска союзников уже воевали на территории Германии и дальнейшие разработки утратили для Третьего рейха всякий смысл.
Гитлер, до этого относившийся к ракетной программе скептически, осознал свою ошибку, но было, к счастью для человечества, поздно. Появись ФАУ-2 на вооружении у вермахта, например, году в 1942-м — неизвестно, сколько бы ещё продлилась Вторая мировая.
«За всю свою жизнь мне пришлось извиняться только перед двумя людьми. Первым был фельдмаршал фон Браухич. Я не слушал его, когда он снова и снова повторял мне, насколько важны ваши исследования. Второй человек — это вы. Я никогда не верил, что ваша работа будет успешной».
Адольф Гитлер,
официальные извинения перед Вальтером Дорнбергером, 8 июля 1944 года
Более того: Z4 едва не был уничтожен в результате бомбардировок Берлина. В марте 1945-го Цузе был вынужден разобрать его и вывезти в глухую альпийскую деревушку, где и хранил три года.
После войны судьба его коллег сложилась по-разному. Шпеера признали военным преступником. Нюрнбергский трибунал осудил его на 20 лет тюремного заключения. Выйдя на свободу, он кормился мемуарами.
Дорнбергер был арестован американскими войсками в мае 1945 года. Получил два года тюрьмы за использование рабского труда при производстве ФАУ-2. После освобождения работал советником министра обороны США, стал одним из основателей американской ПРО и программы космических челноков. Выйдя на пенсию, жил в Мексике, потом перебрался в Германию, где и оставался до самой смерти.
Вернер фон Браун, арестованный вместе с Дорнбергером, почти сразу был переправлен в США. Он считается одним из отцов американской космической программы.
Греттруп оказался в зоне советской оккупации. С 1946 года — руководитель группы немецких специалистов по баллистическим и управляемым ракетам в «шарашке» на острове Городомля, озеро Селигер. После возвращения в ГДР в 1953 году занялся вычислительной техникой и стал одним из авторов современных смарт-карт.
Цузе к ответственности не привлекался и даже остался в ФРГ. В 1950 году он восстановил свой Z4, работавший с частотой 30 Гц и обрабатывавший числа с плавающей точкой. ЭВМ умела выполнять арифметические действия, извлекать квадратный корень и обрабатывать исключения. Но всё это, по большому счёту, интересовало уже только немцев. Z4 использовали для вычислений до 1960 года.
Сегодня он находится в Немецком музее в Мюнхене.
Руководство по Plankalkül опубликовали лишь в 1972 году, когда уже были и Fortran, и Lisp, и COBOL, и две версии Algol (1960 и 1968 годов). Язык остался на обочине мировой кибернетики, вызвав некоторое любопытство лишь у небольшой группы профессионалов.
Тем не менее карьера Цузе сложилась успешно. В 1946 году он основал компанию по производству компьютеров Zuse-Ingenieurbüro Hopferau. Ещё через три года — фирму Zuse KG. За 17 лет она поставила 251 компьютер бренда Z на сумму около 100 млн дойчмарок — последней моделью была Z31. С 1967 года, продав свой бизнес Siemens AG, Цузе работал в ней консультантом, а также занимался наукой.
Он был почётным доктором и профессором многих университетов Европы. В 1999 году его имя внесли в Книгу славы калифорнийского Музея компьютерной истории, а в 2003-м даже признали величайшим из немцев за всю историю по результатам опроса на общенациональном телеканале ZDF.
К своей работе на Третий рейх Цузе относился философски:
«Слишком часто изобретатель становится фаустовским идеалистом, который мечтает улучшить мир, но проигрывает суровой реальности. Если он хочет воплотить идеи в жизнь, то должен взаимодействовать с силами, чьи взгляды выражены резко и категорично. В наше время эти силы — в основном армия и государственный управленческий аппарат».
Конрад Цузе,
из воспоминаний
После ухода на пенсию Цузе посвятил себя любимому хобби — живописи. Умер в возрасте 85 лет. Его именем названы улицы и здания, а также школа в Хюнфельде.
Что интересно, Цузе всю жизнь был убеждённым социалистом и даже стремился поставить ЭВМ на службу идеям всеобщего равенства, справедливости и плановой экономики. В частности, он много лет работал над проектом «компьютерного социализма», в котором все мировые проекты будут управляться объединённой сетью мощнейших ЭВМ.
Кто знает — возможно, когда-нибудь и эта его идея будет успешно реализована? Пусть, как и все его предыдущие проекты, с некоторым опозданием.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!
Источник: skillbox.ru