История языков программирования. 1980-е
Когда-то давно в программировании не существовало понятия «объекты», а сегодня уже трудно представить достаточно мощный язык, хотя бы частично не использующий принципы ООП. И хотя объектное программирование зародились ещё в 1960-х, именно 1980-е стали тем временем, когда оно стало мейнстримом.
Но начать следует с аппаратной части. В 1979 году свет увидел легендарный процессор Intel 8088, который дал мощный толчок развитию персональных компьютеров. Так как IBM PC уже по сути стал стандартом, то отныне все машины поддерживали любые языки программирования без необходимости их урезать и адаптировать.
Философия программирования
Несмотря на то, что формально программирование перестало зависеть от машин ещё в 1950-х, лишь теперь это обрело реальный смысл. Разработчики наконец избавились от необходимости задумываться об особенностях языка на том или ином компьютере, что в конечном счёте привело к развитию идей структурного, неимперативного и объектно-ориентированного программирования.
Simula
Вне всяких сомнений, самой большой революцией 80-х годов стало появление объектно-ориентированных языков. Однако первопроходцем принято считать язык Simula, разработанный в 1967 году в Норвежском Вычислительном Центре тремя учёными – Оле-Йоханом Далем, Бьорном Мирхаугом и Кристен Нигаард.
Однако, как мы помним, это было время комитетов в программировании. Более того, так как язык был разработан в небольшом скандинавском университете тремя людьми без соответствующего опыта, шансы получить мировое признание у Simula 67 были нулевые.
Язык был развитием Algol 60 и на первый взгляд не содержал ничего нового. Реальная же важность Simula 67 заключалась в философии разделения самой программы и её экземпляра. До этого большинство программистов не разделяло эти понятия. Даль и Нюгор, напротив, были озадачены именно созданием симуляций (отсюда и название языка).
Чтобы понять отличие, рассмотрим пример, пусть будет автомобиль. В традиционных языках (Fortran, Algol, BASIC или Cobol) вам необходимо писать подпрограмму или модуль для каждого автомобиля, хотя все они будут более или менее одинаковыми. В Simula 67 был реализован иной подход – вы создаёте лишь один модуль, определяющий автомобиль как набор переменных, процедур и функций, а затем просто создаёте экземпляры с частными параметрами.
С этой простой идеи начала развиваться философия объектно-ориентированного программирования. Это сегодня мы говорим о классах, объектах, экземплярах и наследовании, но всё это появилось ещё в Симуле, просто потребовалось время для совершенствования идей и массового внедрения в программирование.
Smalltalk
Следующим важным шагом в развитии объектно-ориентированных языков стал Smalltalk.
Алан Кей жил на западном побережье США в эпицентре аппаратной революции. Главным его стремлением было создать компьютер, с которым мог работать даже ребёнок. Устроившись на работу в Xerox Palo Alto, Кей создал специальную исследовательскую группу. С компьютером не получилось, зато на свет появились Smalltalk 72 и 76, заимствовавшие идеи Simula. Об этом странном норвежском языке Кей прочитал в одном из научных журналов, идея ему понравилось и он положил её в основу своих разработок. Однако в 1981 году Кей покинул проект, после чего акценты Smalltalk изменились.
Отныне группа получила название «группа концепций программного обеспечения», а Smalltalk 80 позиционировался как «серьезный язык». Большой вклад в это внесли Адель Голдберг, Дэвид Робинсон, Ларри Теслер, Дэн Ингаллс и Питер Деат.
Smalltalk стал первым полноценным объектно-ориентированным языком и задал тренд на долгие годы. Кроме того, со Smalltalk связано ещё одно эпохальное событие. На этом языке был написана первая графическая среда. Однажды в Xerox Palo Alto зашёл Стив Джобс, восхитился этой разработкой и завербовал Ларри Теслера для создания LISA – предшественника первого Macintosh. Окна, иконки, мышь – всё это берёт начало здесь.
Объекты и другие языки
Объектно-ориентированный подход стал настолько популярен в конце 80-х годов, что многие традиционные языки стали включать в себя этот подход. Бьёрн Страуструп из компании AT&T расширил возможности языка C и создал C++. Были и другие расширения, даже более удачные, но Страуструп обладал соответствующими полномочиями, потому именно его вклад в программирование оказался историческим.
Главная особенность C++ – это полноценное расширение для C. Вам даже не нужен был компилятор, потому что это было реализовано в виде препроцессора, который преобразовал С++ в C. Каждая машина, поддерживающая родительский язык, могла поддерживать и новый объектно-ориентированный.
Таким образом, к концу 1980-х годов практически каждый программист был знаком либо с Basic, либо с C++.
Неимперативное программирование
Сегодня кажется, что объекты – суть всех популярных языков программирования, но в 1980-х годах не было однозначного мнения о лучшем подходе. Поэтому каждая новая идея была зафиксирована и считалась важным прорывом.
Стандартные языки программирования создавали программы, которые при выполнении могли быть куда сложнее, чем они описаны в коде. Например, цикл может выглядеть так, как будто это всего лишь несколько строк инструкций. Но при запуске это приводило к тысячам инструкций и динамической интерпретации. Это различие между статическим текстом и фактической реализацией программы использовалось в объектно-ориентированных языках, позволяя запущенному коду приводить к появлению любого количества экземпляров.
В неимперативном программировании есть чёткое различие между статическим и динамическим текстом программы. Есть два различных способа, с помощью которых это может быть достигнуто: функциональные и логические языки программирования.
Функциональные языки, такие как Lisp, FP и Hope, желали покончить с императивным программированием, настаивая, что применение частных случаев неэффективно по сравнению с обобщающими математическими функциями. К примеру, в императивном программировании выражение:
означает, что каждый раз, когда выполняется эта часть программы, А меняет значение, то есть фактически не имеет ни одного значения. Функциональные языки используют рекурсию для создания новых переменных и поэтому А не использует значения до момента запроса. Рекурсия также используется для замены циклов, поэтому время выполнения кода соизмеримо с полным временем выполнения программы. Единственная проблема заключается в том, что многие программисты находят рекурсию сложной. Тем не менее, самый известный функциональный язык, LISP, разработанный Джоном МакКарти из Массачусетского технологического института в 1959 году, по-прежнему имеет своих поклонников. И он по-прежнему является основным языком для ИИ в той или иной форме.
Логическое программирование
Самый успешный из логических языков — Prolog. Он основан на идее написания программ как набора логических операторов и использования перебора для автоматического определения результатов.
Формально этот подход освобождает программиста от беспокойства о том, как получается результат – в программу включаются только факты и их анализ. Сложность в Prolog заключается в том, что ему необходимы фундаментальные прорывы в логике, точнее, в автоматических процедурах проверки. Без этого Prolog не слишком функциональный и производительный язык.
Самой важной частью истории Prolog является его принятие японцами в 1981 году в рамках проекта десятилетия. Это стимулировало многих программистов в США, чтобы пересмотреть их использование Lisp в качестве первого выбора для программирования ИИ.
Турбо-языки
Было бы несправедливо обойти программирование 80-е годов, не упомянув семейство турбо-диалектов от Borland.
Turbo Pascal был первым из высокопроизводительных компиляторов нового поколения с простой средой разработки. Его создатель Андерс Хейлсберг (который, кстати, продолжил разработку C# для Microsoft) стал еще одним примером скандинавского влияния на вычисления.
Turbo Pascal прошёл путь от медленного и трудного в использовании интерпретатора до быстрого, интерактивного, адаптированного для всех машин компилятора, который приглянулся многим программистам.
После успеха Turbo Pascal появились интегрированные среды Turbo C, Turbo BASIC и Turbo Prolog.
Вдали от мейнстрима
Modula 2 был предложением Никлауса Вирта в качестве замены Pascal. По сути, это было обновление, включающее в себя идеи параллельного программирования. В 1980 году появилось Modula 2, более универсальное расширение, которое включало функции объектно-ориентированного программирования.
Это была первая реализация того, как один модуль может «видеть» данные, только используя интерфейс между ними, что позволяет программисту сосредоточиться на том, что делает модуль, а не на том, как он это делает. Эта простая идея описывает возможность скрытия и инкапсуляции данных, которые являются одной из основ объектно-ориентированного метода.
Modula 2 наследовала слишком много алгольных идей, поэтому мировой славы не получила. С другой стороны, на свет появилась Ada – пожалуй, последний из суперязыков. Она была создана очередным комитетом по заказу Министерства Обороны США и является возвратом к идеям Algol/Сobol. Ada – универсальный язык, который включает в себя невероятный диапазон функций. По этой причине его можно использовать для создания хоть объектно-ориентированной, хоть функциональной программы. Короче говоря, для всего.
В СССР
Однако комитетские языки тоже не теряли влияние. В Советском Союзе был выпущены ГОСТы на Алгол-68 и Фортран. Также в образовании стали закрепляться Basic и Pascal, которые стали для нескольких поколений фундаментом в мире программирования.
Именно так зарождался новый виток программирования – универсальных языков, понятных даже ребёнку, способных решать даже самые сложные задачи.
Если Вам понравилась статья, ставьте лайк и подписывайтесь на канал! Будет много интересного!
10 важнейших языков программирования: 50 лет развития (инфографика)
Издание V3 подготовило видеообзор важнейших языков программирования и краткой истории их появления.
История программирования началась на заре 19 века с появлением ткацких станков Жаккарда, которые позволяли автоматизировать нанесение узоров на ткань с помощью специальных перфорированных пластин. Активное развитие языков программирования началось во второй половине 20 века, и именно эта часть истории развития разработки описана ниже.
1957 — Fortran
Язык, название которого получено от сокращения «Formular Translation». Это самый старый язык программирования, использование которого продожается и в наше время. Первоначально его создали для обработки статистических вычислений, и по-прежнему применяют в некоторых правительственных системах США и аэрокосмической индустрии.
1959 — COBOL
Cobol (Common business-oriented language) по-прежнему широко используют в индустрии финансов (например, для обработки платежей с помощью кредитных карт), а также для обработки мобильных звонков и в автоматизированных системах дорожных сигналов.
1964 — Basic
Beginners All-Purpose Symbolic Instruction Code специально разработали для того, чтобы его мог без проблем выучить любой обыватель, не связанный с компьютерной техникой. Сооснователи Microsoft Билл Гейтс и Пол Аллен продали доработанную версию языка Массачуссетскому технологическому институту, это и стало первым проектом молодой и ещё никому не известной компании.
1969 — С
Язык разработан для использования в Unix-системах и являлся усовершенствованным вариантом языка программирования B, чем и объясняется его название. Благодрая мощности и производительности, значительную часть ядра Unix постепенно переписали на C, что обеспечило его последующую популярность.
1983 — С++
Модифицированная версия С стала, по некоторым отзывам, самым популярным языком программирования всех времён. Этот язык используют в многом известном ПО. Так, на нём написаны Microsoft Office, Adobe Acrobat и браузер Firefox.
1987 — Perl
Perl появился после того, как разработчик Ларри Уолл не смог извлечь нужные данные из интересовавшего его отчёта с помощью Unix-системы. Название языка расшифровывается как Practical Extraction Report Language, или прикладной язык извлечения отчётов. Его активно использовали для создания веб-сайтов, некоторые из которых существуют и сегодня. Так, perl используется в крупнейшей доске объявлений Craiglist и сервисе бронирования жилья Booking.com.
1991 — Python
Названный в честь британского комедийного шоу Монти Пайтон, Python известен своей простотой — по этому параметру его считают вторым после Basic. Python используют в работе поисковой системы Google, YouTube, проектах Nasa и многих других областях.
1995 — PHP
Созданный специально для создания веб-страниц (Personal Home Page) на смену Perl, язык быстро завоевал популярность. По информации V3, на php написано 244 млн веб-сайтов, включая Facebook, а количество веб-серверов с установленным php превышает 2,1 млн.
1995 — Java
Язык программирования создала команда Sun Microsystems, и первоначальной задачей проекта было управление приставками для интерактивного ТВ. Сегодня на Java программирует более 9 млн разработчиков, а спектр его использования весьма широк. К примеру, последняя миссия марсохода США была запрограммирована именно на Java.
1995 — JavaScript
Несмотря на название, разработанный программистом из Netscape язык не имеет никакого отношения к Java. При использовании в веб-браузерах, JavaScript позволяет скриптам, работающим на стороне пользователя, контролировать приложения, взаимодействовать с пользователем и влиять на отображаемый контент. Язык часто используют при серверном программировании, геймдеве и создании десктоп-приложений.
Ни один язык не может быть использован для решения всех существующих проблем. С активизацией появления новых технологий в последнее десятилетие активно развиваются и новые, более подходящие к современным задачам языки программирования. Показательным примером является Kotlin, созданный российской компанией JetBrains и недавно принятый Google в качестве второго основного языка для создания Android-приложений.
Читайте также: Вечно молодой: мировые финансы зависят от языка программирования, созданного в 1959 году
Устаревшие языки программирования
Есть много ЯП, которые уже отжили свое, но их все равно продолжают изучать. В этой статье мы расскажем про 5 языков, которые уже точно не стоит изучать, хотя многие до сих пор делают это.
Отдельные языки программирования постепенно выходят из категории лучших и теряют актуальность, они передают эстафету первенства более современным и функциональным вариантам. Язык полностью не отмирает, но теряет большую часть своих пользователей. Порой отследить тенденции на рынке бывает нелегко, так как для этого нужно иметь статистические данные, получение которых может быть затруднительной задачей.
Если вы не являетесь хорошим специалистом в угасающей сфере, то держаться за неё нет никакого смысла, а спустя 10 лет о Cobol вовсе забудут, как и о программистах, работающих с ним. При решении углублённо изучать угасающие языки, высок риск провести карьеру на непрестижной, низкооплачиваемой вакансии в глуши.
Влиятельный рейтинг TIOBE отмечает отток аудитории от Perl на протяжении не первого года. Тенденция спада скорее всего будет продлеваться. Ещё 30 лет назад многие программисты оставляли другие языки, чтобы пользоваться простым синтаксисом и мощным кодом Perl. Влюблённость хакеров в язык была проявлена в выражении « швейцарская пила для серверов ». Достаточно было 5 минут манипуляций для проникновения в код машины и форматирования файлов.
Причина гибели Perl заключается в неправильном выборе направления развития. Вместо ожидаемого увеличения функциональности, силы были переброшены на создание «сахара» для имеющихся команд.
Ситуация ещё более усугубилась после выхода Python, который имеет крайне простые скрипты, даже дети способны разобраться в его структуре. Внимание с Perl было резко переключено на набирающий популярность Python. Новый язык постепенно дополнялся библиотеками и эффективными инструментами, теперь единственной причиной выбора Perl является ностальгия.
Objective-C
К сожалению, востребованность не смогла перекрыть явные и существенные недочёты языка. Apple некоторое время была вынуждена мириться с изъянами, но при появлении необходимости выхода приложений в свободном доступе, компанию застали врасплох и пришлось переходить на другой язык.
Swift привела в действие приговор в отношении Objective-C. Популярность, востребованность и все остальные параметры настолько же резко заняли низкую позицию.
Язык ассемблера
Язык ассемблера «умер от старости», так как не выдержал естественное развитие программирования. Всего пару лет назад для создания высоконагруженных и производительных программ язык ассемблера был основой и без него не обходился никто, особенно в игровой индустрии. Сложность программирования и повышенная внимательность привела к большим затратам труда, ведь в системе нет никаких подсказок для дебага.
Сегодня разработчики достаточно востребованы и высокооплачиваемы, соответственно, скорость работы и надёжность кода – это экономия средств для заказчиков. Большинство компаний предпочитают производительность и снижение сроков на разработку.
Высоконагруженные сервера никуда не делить, а наоборот стали ещё доступнее и экономичнее. Для выполнения задач по программированию высоконагруженных программ теперь используются другие современные языки высокого уровня. Они отличаются низкими затратами времени и могут обрабатывать огромные потоки информации.
Делать прогнозы, что язык ассемблера полностью выйдет из обихода мы не отважимся, но в скором будущем на нём будут только профессионалы и отдельные гики.
Язык Си
Причина падения интереса к C обусловлена теми же причинами, его до сих пор принято изучать в лучших учебных учреждениях планеты, но надежды в отношении развития на C полагать можно только по одной причине. Сегодня ждут и делают акцент на наращивание потенциала в IoT. В любом случае приток программистов в C резко падает, всё больше акцент ставится на JavaScript, Java, Python и остальные.
При рассмотрении C и языка ассемблера не стоит полагать, что в ближайшем будущем языки полностью исчезнут из приложений. Можно предположить, что их будут использовать в качестве дополнительных модулей, которые будут обрабатывать данные в местах высоких нагрузок. Все основные задачи и большая часть функций будет возложена на другие высокоуровневые языки.
Проще всего определить, что происходит отток кадров и востребованности перечисленных языков на основании любой большой биржи труда. На рынке можно встретить лишь единичные предложения, где обязательно нужно знание C и ассемблера.
ActionScript
Flash проигрыватель от компании Adobe часто провоцировал обнаружение уязвимостей. Хакеры постоянно открывали всё новые способы взлома конечных пользователей, захвата контроля над компьютером или распространения вирусов.
Сегодня большая доля компаний в сфере IT практически полностью отказались от использования Flash, сделав его опцией, для альтернативы HTML 5. Планируется, что в 2020 году поддержка ActionScript будет прекращена и компанией Adobe, тогда он окажется полностью бесполезен и просто «канет в Лете».
Мы рассмотрели тенденции развития, но они не имеют никакой роли, если изучением языка не планируется построение карьеры или получение высокого заработка. Для удовольствия можно изучать любой из языков, здесь тренды окажутся бессильными.
Если статья была для вас полезной, просим поставить лайк и подписаться на наш канал . Также посетите наш сайт и наш YouTube канал , чтобы увидеть больше подобного контента.