Когда-то мы писали, что попасть в геймдев можно без умения кодить. Это так, но обойтись без программистов игровая индустрия все же не может. А чем они должны владеть? Языками программирования, конечно. Именно на них и пишется код. Давайте запустим машину времени, вернемся к истокам и узнаем, на чем писали задолго до C++ и Python.
Основы и немного истории
Определимся с терминами. Программа - это набор инструкций для конкретного исполнителя (механизма, устройства и т.д.), а язык программирования - знаковая система, предназначенная для записи программ.
Строго говоря, первые программисты появляются задолго до компьютеров, с которыми они у нас обычно ассоциируются. Автомат-гуманоид Аль-Джазари (1206 год), ткацкий станок Жаккара (1804), “Аналитическая машина” Бэббиджа (1843) были программируемыми устройствами. Автомату алгоритм действий задавался с помощью кулачков и зажимов, станку и “разностной машине” - с помощью перфокарт. Ада Августа Лавлейс, дочь самого Байрона, даже написала для устройства Бэбиджа (которое он так и не собрал) программу, решавшую уравнение Бернулли.
1940-50-е годы: от Ассемблера к Fortran и AGOL
Электронно-вычислительные машины (ЭВМ) работают с командами, состоящими из нулей и единиц (машинным кодом). Однако такой язык получается громоздким и неудобным. Поэтому специалисты задумались над автоматизацией машинного кода. В конце сороковых - начале пятидесятых стал применяться Ассемблер - в нем для обозначения объектов и команд использовались буквы или укороченные слова (например, add вместо 000010). Это был язык низкого уровня, то есть созданный для конкретного типа процессора. Он значительно упростил труд программистов.
Вслед за Ассемблером появились так называемые языки высокого уровня (или машинонезависимые). В отличие от предшественников, они не были привязаны к конкретным устройствам. Для них создавались компиляторы - “переводчики” программ, созданных на языках высокого уровня, на “низкоуровневые”. Первым из них стал Shortcode (1949) В 1950 Уильям Шмитт адаптировал его для компьютера UNIVAC.
C 1954 по 1957 в IBM под руководством Джона Бэкуса (1924-2007) разрабатывался знаменитый Fortran (сокращение от formula translator). Он использовался для технических расчетов и научных задач. Fortran стал первым относительно массовым языком программирования - к 1963 году существовало уже 40 компиляторов для различных машин.
Fortran попал и в Советский союз, благодаря общению советских физиков с коллегами, работавшими в CERN. В 1967 году был создан компилятор для ЭВМ “Минск-2”, в 1968 - для БЭСМ-6. Язык используется до сих пор и, в основном, применяется для сложных вычислений.
Успех “Фортрана” заставил действовать конкурентов. Немецкое Общество прикладной математики и механики создало собственный комитет, перед которым поставили задачу создания нового универсального языка программирования. То же самое сделала американская Ассоциация вычислительной техники. Однако вместо противостояния получилось сотрудничество (если не считать спора из-за того, какой знак использовать для десятичных дробей - точку или запятую) - комитеты объединились и создали ALGOL (1958), “дедушку” Java, Pascal и C++.
Как и Fortran, ALGOL получил значительное распространение, но в Европе и СССР был встречен гораздо теплее, чем в США. Язык отличался блочной структурой, что для того времени было прогрессивным, а затем стало стандартом.
Другие современники Fortran и ALGOL - это LISP (1958) и COBOL (1959). Первый построен на обработке списков (отсюда название - list processing) и до сих пор в ходу (например, в Boeing). Второй создавался для экономических процессов (кредитные карты, банкоматы), он тоже по-прежнему “в строю” и применяется в банковских системах.
1960-70-е: от структурного программирования к объектно-ориентированному
В конце 1960-х формируется так называемое структурное программирование, основанное на представлении о программе как системы блоков. “Отцом” методологии считают Эдсгера Дейкстру (1930-2002), автора письма “Оператор Goto считается вредным”. Новая парадигма позволила оптимизировать код и сделать его более компактным благодаря внедрению функций и процедур.
Следующим большим достижением стало появление классов - структур, содержащих как переменные, так и работающие с ними функции. В семидесятых - начале восьмидесятых “на сцену” вышло объектно-ориентированное программирование (ООП). Оно сочетало в себе наработки структурного программирования с нововведениями вроде полиморфизма подтипов.
Первые ООП-языки - это Simula (1967) и основанный на нем Smalltalk (1972). Последний привнес в программирование множество идей и концептов, актуальных по сей день: взаимодействие между элементами через сообщения, возможность редактировать код “на ходу” и динамическая типизация. Logitech и ряд других компаний и сейчас используют Smalltalk для отдельных операций.
В 1972 появились С и SQL (первоначально назывался SEQUEL). C (прародитель C Sharp, Java, Python и других), был создан Деннисом Ричи, сотрудником Bell Telephone Laboratories для работы с Unix. SQL - детище специалистов IBM Бойса и Чемберлена, ориентирован на работу с информацией из баз данных. Оба до сих пор используются.
Продолжение - во второй части статьи!
#языки программирования #програмирование