Первые шаги автоматизации программирования. Программы для первых ЭВМ программисты писали на языках машинных команд, которые были ориентированы на конкретные машины и конкретных пользователей. Первыми «инструментами», которые экономили труд программистов, стали подпрограммы.
В августе 1944 года для релейной машины Марк-I под руководством Грейс Хоппер (женщина-программист, морской офицер ВМФ США) была написана первая подпрограмма для вычисления SIN (X). В 1949 году Джон Моучли (один из создателей ЭВМ ENIAC) разработал систему Short Code, которую можно считать предшественницей языков программирования высокого уровня.
Программист записывал решаемую задачу в виде математических формул, преобразовывал формулы в двухбуквенные коды. В дальнейшем специальная программа переводила эти коды в двоичный машинный код. Таким образом, Дж. Моучли разработал один из первых примитивных интерпретаторов. А в 1951 году Г. Хоппер создала первый компилятор А-0.
Ею же впервые был введен этот термин.
Первая программа на языке программирования Python.
Первые языки высокого уровня – языки процедурного программирования. Разработчики языка программирования (под руководством Г.Хоппер) поставили цель создать такой новый язык, который позволил бы программировать на языке, близком к обычному английскому.
Необходимость таких языков, приближенных к разговорному, Г. Хоппер связывала с тем, что область применения ЭВМ будет расширяться, в связи с чем будет расти и круг пользователей. По словам Г. Хоппер, следует оставить попытки «превратить их всех в математиков».
В 1959 году был разработан язык COBOL (Common Business Oriented Language) (Кобол) – язык программирования высокого уровня для решения задач бизнеса. Консультантом при создании языка COBOL вновь выступила Г. Хоппер. В 1954 году публикуется сообщение о создании языка FORTRAN (FORmula TRANslation) (Фортран). Местом рождения языка стала штаб-квартира фирмы IBM в Нью-Йорке.
Одним из главных разработчиков является Джон Бэкус. Он же стал автором НФБ (нормальная форма Бэкуса), которая используется для описания синтаксиса многих языков программирования.
В тот же период в европейских странах и в СССР популярным становится язык ALGOL (algorithmic language). Как и FORTRAN, он ориентировался на математические задачи. В нем была реализована передовая для того времени технология программирования – структурное программирование.
В 60-е – 70-е годы прошлого столетия стало появляться большое количество новых языков программирования, но не все из них выдержали испытание временем. К языкам-долгожителям следует отнести язык BASIC, разработанный в Дартмутском университете в 1964 году под руководством Джона Кемени и Томаса Курца. Наибольшее распространение BASIC получил на микро-ЭВМ и персональных компьютерах. В 1991 году появилась первая версия языка VISUAL BASIC.
Для первых языков программирования характерной чертой была предметная ориентация. В эпоху ЭВМ третьего поколения большое распространение получил язык PL/1 (Program Language/1), разработанный фирмой IBM. Это был первый язык, претендовавший на универсальность, т. е. на возможность решать любые задачи: вычислительные, обработки текстов, накопления и поиска информации.
Как я стал программистом с нуля. Моя первая программа.
PL/1 оказался слишком сложным языком. Транслятор с него недостаточно оптимальный, содержащий ряд не выявленных ошибок. По этой причине этот язык не получил распространения. Однако линия на универсализацию языков была продолжена. Старые языки были модернизированы в универсальные варианты.
Примером тому стал FORTRAN 77 программирования.
Языки структурного программирования. Значительным событием в истории языков программирования стало создание в 1971 году языка PASCAL. Его автором является Николаус Вирт, профессор из Швейцарии. Вирт назвал этот язык в честь французского математика и физика Блеза Паскаля, который в 1642 году сконструировал вычислительный механизм.
Первоначально PASCAL создавался как язык для обучения. В нем ярко выражена структурная линия программирования. Широкое практическое применение язык получил с появлением персональных компьютеров в версии Turbo PASCAL. Язык программирования С (Си) был задуман как инструментальный язык для разработки операционных систем. Он создавался одновременно с операционной системой UNIX.
Авторами этого языка и ОС UNIX являются американские программисты Денис Ричи и Кеннет Томпсон. Первоначально К. Томпсон начал писать ОС UNIX на языке FORTRAN. В дальнейшем был создан язык Си, и в 1973 году ядро операционной системы вместе с программами-утилитами было переписано на Си. Этот язык – структурный язык высокого уровня. В настоящее время он применяется для разработки не только операционных систем, но и трансляторов, системных и прикладных программ.
Языки объектно-ориентированного и визуального программирования. В последнее время одним из основных направлений в развитии программного обеспечения компьютера стал объектно-ориентированный подход. Под словом «объект» понимается структура, объединяющая в единое целое данные н программную реализацию алгоритмов их обработки. Используются объектно-ориентированные операционные системы (например, Windows), прикладные программы, а также системы объектно-ориентированного программирования (ООП).
Первым языком с элементами ООП был язык Симула-67. В Turbo PASCAL, начиная с версии 5.5, появились средства ООП. Итогом развития Turbo PASCAL в этом направлении стало создание фирмой Borland системы программирования DELPHI (Делфи). Использование этой системы, в частности, дает возможность легко и быстро программировать сложный графический интерфейс.
Начиная с пятой версии (1997 год) язык VISUAL BASIC стал полностью объектно-ориентированным. По данным на конец 90-х годов прошлого столетия количество программистов, использующих для своих разработок VISUAL BASIC, не уступает числу сторонников DELPHI и VISUAL C++.
В 1985 году лабораторией Bell Labs (США) был разработан язык программирования C++ (СИ++). Этот язык является сегодня наиболее популярным среди языков объектно-ориентированного программирования. С его помощью возможно создание программных приложений, ориентированных на любые машины – от персональных до суперкомпьютеров. Создатель языка – Бьорн Страуструп.
К языкам объектно-ориентированного программирования относится и язык JAVA, созданный в 1995году под руководством Джеймса Гослинга группой инженеров компании Sun Microsystems. При его разработке была поставлена цель – создать простой язык, не требующий специального изучения. Язык JAVA был разработан так, чтобы быть максимально похожим на C++. JAVA является идеальным инструментом при создании приложений для Интернета.
Объектно-ориентированное программирование представляет собой метод программирования, который весьма близко напоминает наше поведение и является естественной эволюцией более ранних нововведений в разработке языков программирования. Объектно-ориентированное программирование более структурное, чем все предыдущие разработки, касающиеся структурного программирования. Оно также является более модульным и более абстрактным, чем предыдущие попытки абстрагирования данных и переноса деталей программирования на внутренний уровень. Объектно-ориентированный язык программирования базируется на трех принципах:
1. Инкапсуляция – объединение в единой синтаксической конструкции данных и программной реализации алгоритмов их обработки, формируя таким образом новый тип данных – объект.
2. Наследование – определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов.
3. Полиморфизм – присваивание данным или действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим.
Языки искусственного интеллекта. В 90-х годах прошлого столетия планировалось появление компьютеров пятого поколения, называемых машинами «искусственного интеллекта». В качестве основных языков программирования в этом, пока неосуществленном, проекте предполагалось использование языков искусственного интеллекта LISP и PROLOG.
Создателем языка LISP (1956–1959 гг.) является Джон Маккарти, которого называют отцом искусственного интеллекта. Именно он первым ввел термин «искусственный интеллект». Основное в языке LISP – понятие рекурсивно определенных функций. Доказано, что любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций.
Основные идеи этого языка были позже использованы в языке программирования для детей LOGO, разработанном в 70-е годы в Массачусетском технологическом институте под руководством Сэймура Пейперта. Подмножество языка LOGO, включающее команды для Черепашки, применяется при раннем обучении программированию.
Язык PROLOG разработан во Франции в 1972 году также для решения проблем искусственного интеллекта. PROLOG позволяет в формальном виде описывать различные утверждения, логику рассуждений, позволяя вести диалог с компьютером, получая ответы на заданные вопросы.
Основные парадигмы программирования:
• процедурное программирование (Fortran, Basic, Cobol, Algol, Pascal, Ada, С, Logo, FoxPro);
• структурное программирование (Pascal, С);
• объектно-ориентированное программирование (Simula, Smalltalk, Object Pascal, C++, Java, C#);
• визуально-событийное программирование (Visual Basic, Delphi, Visual C++, Visual Java, Visual FoxPro);
• функциональное программирование (Lisp);
• логическое программирование (Prolog).
Рис. 3.4 Развитие технологии программирования
Отличия языков программирования ЭВМ V поколения:
• отказ от традиционных алгоритмических языков программирования (Фортран, Алгол и т. п.) в пользу декларативных;
• ориентация на задачи искусственного интеллекта с автоматическим поиском решения на основе логического вывода.
Развитие технологий программирования показано на рисунке 4.2.
Источник: infopedia.su
История возникновения языков программирования
Языки программирования восходят почти к изобретению цифрового компьютера в 1940-х годах. Первые сборочные языки появились в конце 1950-х годов с внедрением коммерческих компьютеров.
Первые процедурные языки были разработаны в конце 1950-х – начале 1960-х годов: Fortran (Формула перевода), созданный Джоном Бэкусом, а затем COBOL (Общий, ориентированный на бизнес, Язык), созданный Грейс Хоппер.
Первым функциональным языком был LISP (обработка списка), написанный Джоном Маккарти в конце 1950-х годов. Несмотря на значительные обновления, все три языка по-прежнему широко используются сегодня.
В конце 1960-х годов появились первые объектно-ориентированные языки, такие как SIMULA. Логические языки стали известны в середине 1970-х с введением PROLOG, языка, используемого для программирования программного обеспечения искусственного интеллекта. В течение 1970-х годов процедурные языки продолжали развиваться вместе с ALGOL, BASIC, PASCAL, C и Ada.
SMALLTALK был очень влиятельным объектно-ориентированным языком, который привел к слиянию объектно-ориентированных и процедурных языков в C++ и совсем недавно в JAVA. Хотя чистые логические языки снизились в популярности, вариации стали жизненно важными в виде реляционных языков для современных баз данных, таких как SQL (Язык структурированных запросов).
Алгоритмический язык
Язык программирования в информатике – искусственный язык, используемый для написания последовательности инструкций (компьютерной программы), которые могут выполняться компьютером.
Подобно естественным языкам, таким как английский, языки программирования имеют словарный запас, грамматику и синтаксис. Но, естественные языки не подходят для программирования компьютеров, потому что слова в них, словосочетания и выражения имеют разное значения (неоднозначны) и их словарный запас, и грамматическая структура могут быть интерпретированы несколькими способами, а тогда машина их попросту не сможет понять и выполнить непонятные поставленные задачи.
Языки, используемые для программирования компьютеров, должны иметь простые, понятные для машины, команды, точно передавать логические структуры, соблюдать правила грамматики, орфографии и пунктуации.
Языки программирования сильно различаются по своей сложности и степени универсальности. Некоторые языки программирования написаны для решения определенного вида вычислительной проблемы или для использования на конкретной модели компьютерной системы. Например, языки программирования, такие как Fortran и COBOL, были написаны для решения некоторых общих типов задач программирования—Fortran для научных приложений и COBOL для бизнес-приложений.
Хотя эти языки были разработаны для решения конкретных категорий компьютерных проблем, они очень портативны, а это означает, что они могут быть использованы для программирования многих типов компьютеров. Другие языки, такие как языки машины, конструированы быть использованным одной специфической моделью компьютерной системы, или даже одним специфическим компьютером в некоторых применениях исследования. Наиболее часто используемые языки программирования очень портативны и могут быть использованы для эффективного решения различных типов вычислительных задач. Такие языки как C, PASCAL и BASIC попадают в эту категорию.
Типы языков программирования
Языки программирования можно классифицировать как языки низкого уровня или языки высокого уровня . Низкоуровневые языки программирования (языки машины) – это самый основной тип языков программирования и могут быть поняты сразу компьютером. Языки машин различаются в зависимости от производителя и модели компьютера.
Языки высокого уровня – это языки программирования, которые сначала должны быть переведены на машинный язык специальными программами – компиляторами, а затем они будут поняты и обработаны компьютером.
Примерами языков высокого уровня являются Фортран, Си, Си++, Си#, Java, JavaScript, PHP.
Языки сборки являются промежуточными языками, которые очень близки к машинному языку, и не имеют уровня языковой сложности, проявляемой другими языками высокого уровня, но все же они тоже должны быть скомпилированы, то есть переведены на машинный язык.
Иногда сборка может быть быстрее, чем скомпилированный язык или, напротив, скомпилированный язык часто быстрее сборки, так как программисты, пишущие компиляторы грамотно владеют архитектурой ЦП, намного шире, чем обычные программисты.
Профессиональный программист по сборке может написать очень эффективный и более емкий код сборки (меньше инструкций, больше функциональных инструкций, simd), чем автоматически генерирующий компилятор.
Машинные языки
В машинных языках инструкции записываются как последовательности 1s и 0s, называемые битами, которые компьютер может понять непосредственно.
Инструкция на машинном языке обычно указывает компьютеру четыре вещи:
- где найти одно или два числа, или просто куски данных в основной памяти компьютера (ОЗУ);
- простая операция в исполнении, например, добавить два числа вместе;
- где в основной памяти поставить ответ в результате этой нехитрой операции;
- где искать инструкции для выполнения следующих команд или задач.
В то время как все исполняемые программы в конечном итоге считываются компьютером на машинном языке, они не все запрограммированы только лишь на машинном языке. Очень долго и трудно писать код на чистом машинном языке, потому что инструкции представляют собой последовательности только 1s и 0s, программы получаются огромными, громоздкими. Типичная инструкция на машинном языке может читать 10010 1100 1011 и означать добавление содержимого регистра хранения А к содержимому регистра хранения B.
Языки высокого уровня
Языки высокого уровня представляют собой относительно сложные наборы заявлений, использующих слова и синтаксис человеческого языка. Они более похожи на обычные человеческие языки, чем языки сборки или машинные языки, и поэтому их легче использовать для написания сложных программ. Эти языки программирования позволяют быстрее разрабатывать более крупные и более сложные программы.
Однако языки высокого уровня должны быть переведены на машинный язык другой программой, называемой компилятором, прежде чем компьютер сможет их понять. По этой причине программы, написанные на языке высокого уровня, могут занимать больше времени для выполнения и использования большего объема памяти, чем программы, написанные на языке сборки.
Ассемблер
Компьютерные программисты используют языки сборки, чтобы упростить написание программ на машинном языке. В языке сборки каждый оператор соответствует примерно одной инструкции машинного языка. Оператор языка сборки состоит из системы команд. Команда – “добавить содержимое хранилища”; “зарегистрировать”; “содержимое хранилища регистр А добавить В” и др.
Языки сборки совместно используют определенные функции с машинными языками. Например, можно управлять определенными битами как на языке сборки, так и на машинном языке.
Программисты используют языки сборки, когда важно минимизировать время, необходимое для запуска программы, потому что перевод с языка сборки на машинный язык относительно прост. Языки сборки также используются, когда некоторая часть компьютера должна управляться непосредственно, например, отдельные точки на мониторе или поток отдельных символов на принтер.
Классификация языков высокого уровня
Языки высокого уровня обычно классифицируются как процедурно ориентированные , функциональные , объектно-ориентированные или логические языки . Наиболее распространенными языками высокого уровня на сегодняшний день являются процедурно ориентированные языки. В этих языках, один или больше связанных блоков с заявлениями, которые выполняют некоторые полные функции, группируются в программу модуля или процедуры, и дают имя, такое как «процедура А».
Если же некая последовательность операций необходимые в любом месте программы, то может использоваться простое заявление, чтобы обратиться к процедуре. По сути, процедура – это просто мини программа. Большая программа может быть построена путем объединения процедур, которые выполняют различные задачи. Процедурные языки позволяют программам быть короче и легче для чтения компьютером, но они требуют, чтобы программист конструировал каждую процедуру для достаточного использования в различных ситуациях.
Функциональные языки относятся к процедурам – математическим функциям, и позволяют их обрабатывать, как и любые другие данные в программе. Это более высокий и более неукоснительный уровень конструкции программы.
Функциональные языки также позволяют переменным символам для данных определять и изменяться пользователем. Во время работы программ значения можно поменять один раз, не прибегая к этому постоянно. Это упрощает программирование, уменьшая необходимость быть связанным с точным порядком выполнения оператора, так как переменная не должна быть переопределена или пересчитана, каждый раз, когда она используется в программном операторе.
Большинство идей функциональных языков стали ключевыми частями многих современных процедурных языков.
Объектно-ориентированные языки произошли из функциональных языков.
В объектно-ориентированных языках код, используемый для записи программы, и данные, обрабатываемые программой, сгруппированы в единицы, называемые объектами.
Далее объекты группируются в классы, определяющие атрибуты, которые должны иметь объекты. Бывают новые и короткие объекты класса.
Объекты также имеют определенные связанные с ними функции, называемые методами. Компьютер обращается к объекту с помощью одного из методов объекта. Метод выполняет определенные действия с данными в объекте и возвращает это значение в компьютер.
Классы объектов также можно группировать в иерархии, в которых объекты одного класса могут наследовать методы другого класса. Структура, представленная в объектно-ориентированных языках, делает их очень полезными для сложных задач программирования.
Логические языки используют логику в качестве своей математической базы. Логическая программа состоит из наборов фактов и правил if-then, которые определяют, как один набор фактов может быть выведен из других, например:
Если высказывание X истинно, то утверждение Y является ложным.
При выполнении такой программы оператор ввода может логически выводиться из других операторов в программе. Многие программы искусственного интеллекта написаны на таких языках.
Языковая структура и компоненты
Языки программирования используют определенные типы инструкций или инструкций для обеспечения функциональной структуры программы. Заявление в программе является основным предложением, которое выражает простую идею – его цель состоит в том, чтобы дать компьютеру базовую инструкцию. Инструкции определяют типы разрешенных данных, порядок обработки данных и способы работы процедур и функций. Программисты используют операторов для управления общими компонентами языков программирования, такими как переменные и макросы (мини программы в программе).
Операторы, известные как объявления данных, дают имена и свойства элементам программы, называемой переменными. Переменным могут быть присвоены различные значения внутри программы. Переменные каких-либо свойств могут иметь типы, и они включают возможные значения, которые могут быть сохранены в переменных, сколько числовой точности будет использоваться в значениях и как одна переменная может представлять коллекцию более простых значений организованным образом, например, таблицу или массив. Во многих языках программирования ключевым типом данных является указатель.
Переменные указатели сами по себе не имеют значения; они имеют информацию о том, что компьютер могут использовать для поиска какой-то другой переменной, то есть они указывают на другую переменную.
Выражение является частью инструкции, описывающую серию вычислений для выполнения на некоторых переменных или частью программ, таких как X + Y / Z, в котором переменные X, Y и Z и вычисления сложения и деления. Инструкция присваивания: присваивает переменной значение производное от некоторого выражения, а условные операторы указывают выражения для тестирования и использования дальнейших действий и выбора нужных операторов.
Инструкции Procedure и function выполняют определенные блоки кода как процедуры или функции, которые затем могут быть возвращены позже в программе. Эти операторы также определяют типы переменных, параметров, и тип значения, которые программист может выбрать. А код их возвращает, когда выражение обращается к процедуре или функции.
Многие языки программирования также позволяют программы minitranslation, называемые макросами. Макросы переводят сегменты кода, написанные программистом в определенной языковой структуре в операторы, которых понимает язык программирования.
Источник: bezopasnik.info
Эволюция языков программирования
Язык программирования действительно является фундаментальной единицей современного мира технологий. Они рассматриваются как наборы команд и инструкций, которые мы даем машинам для выполнения определенной задачи. Например, если вы дадите набор инструкций для сложения двух чисел, машина сделает это за вас и соответственно сообщит вам правильный ответ. Но знаете ли вы, что языки программирования имеют долгую и богатую историю своего развития? В этой статье мы как раз рассмотрим эволюцию языков программирования за весь период с момента их появления по сегодняшний день.
В компьютерном мире у существует более 500 языков программирования со своим синтаксисом и функциями. И если вы спросите, кто является отцом компьютера, то поисковая система покажет вам результат, как Чарльза Бэббиджа, но отец компьютера не написал первый код. Это была Ада Лавлейс, которая написала первый в мире язык компьютерного программирования, и это был 1883 год.
1883: Начало
- Вначале Чарльз Бэббидж создал устройство, но он не понимал, как давать инструкции машине, а затем Ада Лавлейс написала инструкции для аналитической машины.
- Устройство было сделано Чарльзом Бэббиджем, а код был написан Адой Лавлейс для вычисления числа Бернулли.
- Впервые в истории была проведена оценка возможностей компьютерных устройств.
1949: Язык Assembly
- Это разновидность низкоуровневого языка.
- В основном он состоит из инструкций (своего рода символов), которые может понять только машины.
- В настоящее время ассемблер также используется в программах реального времени, таких как системы имитации полета, навигационные системы и медицинское оборудование, например, системы Fly-by-wire (FBW).
- Он также используется для создания компьютерных вирусов.
1952: Autocode
- Разработано Аликом Гленни.
- Первый скомпилированный язык компьютерного программирования.
- COBOL и FORTRAN — это языки, называемые Autocode.
1957: FORTRAN
- Разработчики — Джон Бэкус и IBM.
- Он был разработан для числовых и научных вычислений.
- Программное обеспечение для зондов НАСА «Вояджер-1» (космический зонд) и «Вояджер-2» (космический зонд) изначально было написано на FORTRAN 5.
1958: ALGOL
- ALGOL произошло от алгоритмических языков.
- Начальная фаза самых популярных языков программирования C, C ++ и JAVA.
- Это был также первый язык, реализующий вложенную функцию и имеющий более простой синтаксис, чем FORTRAN.
- Первый язык программирования, имеющий блок кода, например «начало», который указывает, что ваша программа запущена, а «конец» означает, что вы завершили свой код.
1959: COBOL
- Название произошло от сокращения общий бизнес-ориентированный язык (Common Business-Oriented Language).
- В 1997 году 80% мирового бизнеса работало на Cobol.
- Служба внутренних доходов США пробилась к МВФ на основе COBOL (индивидуальный мастер-файл), чтобы выплатить десятки миллионов платежей, требуемых в рамках помощи в связи с коронавирусом, помощи и экономической безопасности.
1964: BASIC
- Название расшифровывается как начинающий универсальный символьный код инструкции (beginners All-purpose symbolic instruction code).
- В 1991 году Microsoft выпустила Visual Basic, обновленную версию Basic.
- Первая микрокомпьютерная версия Basic была написана в соавторстве с Биллом Гейтсом, Полом Алленом и Монте Давидофф для их тогда только созданной компании Microsoft.
1972: C
- Это универсальный процедурный язык программирования и самый популярный язык программирования до сих пор.
- Весь код, который ранее был написан на языке ассемблер, заменяется языком C, под замену попали такие программы как операционная система, ядро и многие другие.
- Его можно использовать при внедрении операционной системы, встроенной системы, а также на веб-сайте с помощью Common Gateway Interface (CGI).
- C является прородителем почти всех языков программирования более высокого уровня, таких как C#, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Python и оболочки Unix.
Ниже мы примевели таблицу с другими языками программирования, популярные среди программистов, годом их появления и краткой информацией.
C++ — самый быстрый язык программирования высокого уровня.
Ранее Apple Inc использовала Objective-C для создания приложений.
JAVA можно ипользовать везде. Этот язык не имеет привязки в определенной платформе.
PHP — это язык сценариев, который в основном используется в веб-программировании и для подключения к базам данных.
JavaScript позволяет создавать интерактивные веб-страницы. JS — самый популярный язык программирования на front-end. JS известен тем, что создает динамику и делает нашу страницу интерактивной.
Источник: progler.ru