Первые языки объектно-ориентированного программирования (ООП) на сайте Игоря Гаршина

Первые языки объектно-ориентированного программирования (ООП)

Главная > Информатика > Языки программирования > Пионеры ООП

Языки передачи, хранения, обработки и представления информации

В  объектно-ориентированных языках программирования переменные и функции группируются в так называемые классы (шаблоны). Благодаря этому достигается более высокий уровень структуризации программы. Объекты, порождённые от классов вызывают методы (функции или процедуры) друг друга и меняют таким образом состояние свойств (переменных). С формально-математической стороны объектно ориентированный способ написания программ базируется на процедурной модели программирования, но с содержательной стороны ООП базируется не на функции, а на объекте, как целостной системе, имеющей стандартный автоматический межобъектный интерфейс.

Практически сразу после появления языков третьего поколения (1967 г.) ведущие специалисты в области программирования выдвинули идею преобразования постулата фон Неймана: «данные и программы неразличимы в памяти машины». Их цель заключалась в максимальном сближении данных и программы. Были разработаны три основополагающих принципа того, что потом стало называться объектно-ориентированным программированием (ООП):

  1. наследование;
  2. инкапсуляция;
  3. полиморфизм.

Первым языком программирования, в котором были предложены основные понятия, впоследствии сложившиеся в парадигму, была Simula-1, но термин «объектная ориентированность» не использовался в контексте использования этого языка. В момент его появления в 1967 году в нём были предложены революционные идеи: объекты, классы, виртуальные методы и др., однако это всё не было воспринято современниками как нечто грандиозное. Фактически, Симула была «Алголом с классами», упрощающим выражение в процедурном программировании многих сложных концепций. Понятие класса в Симуле может быть полностью определено через композицию конструкций Алгола (то есть класс в Симуле — это нечто сложное, описываемое посредством примитивов). При этом класс можно использовать в качестве префикса к другим классам, которые становятся в этом случае подклассами первого. Впоследствии Симула-1 был обобщен, и появился первый универсальный ООП-ориентированный язык программирования – Simula-67.

Взгляд на программирование «под новым углом» (отличным от процедурного) предложили Алан Кэй и Дэн Ингаллс в языке Smalltalk. Здесь понятие класса стало основообразующей идеей для всех остальных конструкций языка (то есть класс в Смолтоке является примитивом, посредством которого описаны более сложные конструкции). Именно он стал первым широко распространённым объектно-ориентированным языком программирования.

Как выяснилось, ООП оказалось пригодным не только для моделирования (Simula) и разработки графических приложений (SmallTalk), но и для создания большинства других приложений, а его приближенность к человеческому мышлению и возможность многократного использования кода сделали его одной из наиболее бурно используемых концепций в программировании.

В настоящее время количество прикладных языков программирования, реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. Наиболее распространённые в промышленности языки (С++, Delphi, C#, Java и др.) воплощают объектную модель Симулы. Примерами языков, опирающихся на модель Смолтока, являются Python, Ruby.

Разделы страницы о первых языках объектно-ориентированного программирования:


Simula (Си́мула - "объектный Алгол") - 1967 г.

Simula (Си́мула) — язык программирования общего назначения для моделирования сложных систем. Он разработан в конце 60-х сотрудниками Норвежского Вычислительного Центра (Осло) Кристеном Нюгордом и Оле-Йоханом Далем и был представлен как Simula-67. Симула традиционно считается первым в мире объектно-ориентированным языком, но создатель языка Smalltalk Алан Кэй утверждает, что именно он изобрёл термин «ООП». Симулу 67 можно охарактеризовать как объектное расширение Алгола 60.

Simula 67 явилась первым языком с встроенной поддержкой основных механизмов ООП. Этот язык в значительной степени опередил своё время. Его современники (программисты 60-х годов) оказались не готовы воспринять его ценности, и он не выдержал конкуренции с другими языками программирования (прежде всего, с Фортраном). Прохладному отношению к языку способствовала и его весьма неэффективная реализация (в т.ч. из-за сборки мусора). Тем не менее, этот язык активно использовался в образовательном процессе в высших учебных заведениях, особенно в Скандинавии. Более всего в Simula 67 поражает сходство с современными языками: пожалуй, единственными существенными пробелами по сравнению с Java являются отсутствие интерфейсов и невозможность для объекта иметь более одного конструктора.

Язык абстрактных данных Клу (Clu) - 1974 г.

Клу (Clu, CLU) — объектно-ориентированный [?!] язык программирования, одним из первых реализовавший концепцию абстрактных типов данных и парадигму обобщённого программирования. Создан группой учёных Массачусетского технологического института под руководством Барбары Лисков в 1974 году. Язык широкого применения не нашёл, однако многие конструкции и находки использованы при создании таких языков как Ада, C++, Java, Sather, Python, C#.

SmallTalk (Смо́лток) - 1980 г.

Smalltalk (Смо́лток) — объектно-ориентированный язык программирования с динамической типизацией, разработанный в Xerox PARC Аланом Кэйем, Дэном Ингаллсом, Тедом Кэглером, Адель Голдберг и др. в 1970-х годах. Язык был представлен как Smalltalk-80. Smalltalk продолжает активно развиваться и собирает вокруг себя сообщество пользователей.

Smalltalk оказал большое влияние на развитие многих других языков, таких как: Objective-C, Actor, Java, Erlang, Groovy и Ruby. Многие идеи 1980-х и 1990-х по написанию программ появились в сообществе Smalltalk. К ним можно отнести рефакторинг, шаблоны проектирования (применительно к ПО), карты «класс — обязанности — взаимодействие» и экстремальное программирование в целом. Основатель концепции Wiki Уорд Каннингем также входит в сообщество Smalltalk.

Объектный язык системного программирования C++ ("Си с классами") - 1980-е г.г.

А почему вы используете С++ вместо языка программирования? (из Башорга)

Язык C++ появился в начале 80-х годов. Созданный Бьерном Страуструпом с первоначальной целью избавить себя и своих друзей от программирования на ассемблере, Си или различных других языках высокого уровня. По мнению автора языка, различие между идеологией Си и Си ++ заключается в следующем: программа на C отражает “способ мышления” процессора, а C++ - способ мышления программиста. Язык С++ объединил в себе черты объектно-ориентированного и системного программирования.

Отвечая требованиям современного программирования, C++ делает акцент на разработке новых типов данных наиболее полно соответствующих концепциям выбранной области знаний и задачам приложения. Класс является ключевым понятием C++. Описание класса содержит описание данных, требующихся для представления объектов этого типа и набор операций для работы с подобными объектами.

Таким образом, Си++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей Си++ является надмножеством языка программирования Си. Помимо возможностей, которые дает Си, Си++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части (абстракция данных). Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

Язык контрактного программирования Eifel

Эйфель (Eiffel) — объектно-ориентированный язык программирования с алголоподобным синтаксисом (но без использования сепаратора) и сильным влиянием Симулы (Simula). Он разработан президентом компании Interactive Software Engineering (ISE) Бертраном Мейером в 1987 году. В этом языке впервые был реализован метод контрактного программирования, что является самым характерным его свойством: встроенные утверждения создают принудительный контракт между вызывающим оператором и вызываемым кодом подпрограмм.

Eiffel имеет несколько важных черт, поддерживающих более жесткий стиль программирования, в том числе параметризованные классы, утверждения и исключения. Неотъемлемой частью языка являются пред- и постусловия - утверждения, которые должны выполняться при входе в метод и выходе из него. Нарушение утверждения вызывает исключительную ситуацию, которую можно перехватить, обработать и попробовать вызвать тот же метод еще раз. Предусловия, постусловия и инварианты называются «контрактами». Его приверженцы считают Eiffel более полным, надежным, универсальным и удобным языком программирования, чем Java.

Язык программирования Go (Golang) - оптимальный?

Думаете, универсального языка для разработки backend не существует? Можно взять объектно-ориентированный и эффективный C, но придётся мириться с многочисленными ограничениями. Или Python — тогда процесс будет быстрым, но сам код — медленным. Или Erlang — с ним вы создадите высокораспараллеленные распределённые приложения, но он впишется далеко не во все проекты. Или энтерпрайзный Java, но он тяжеловат.

Однако есть язык, который с успехом нивелирует все эти «но». Go (Golang) — идеальный вариант, если нужно написать что-то производительное и одновременно лёгкое в поддержке. Согласно опросу Stack Overflow, он входит в тройку самых востребованных языков в 2020 году.


Главная

Языки программирования: 1GL и 2GL | 3GL (Яву) | Пионеры ООП | 4GL и RAD | Визуально-объектные | Сценарные (скриптовые) | Ява-подобные Парадигмы информатики

Алгоритмы | Бизнес-анализ | Жизненный цикл программ | Интернет | IT-стандарты | ОС | СУБД | Искусственный интеллект и 5GL

ИТ-менеджмент | Электроника | Математика | Эвристика | Компьютерные игры

На правах рекламы (см. условия): [an error occurred while processing this directive]    


© «Сайт Игоря Гаршина», 2002, 2005. Автор и владелец - Игорь Константинович Гаршин (см. резюме). Пишите письма (Письмо И.Гаршину).
Страница обновлена 22.03.2024
Яндекс.Метрика