<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sib">
	<id>https://sibwiki.org/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D0%B1%D0%B5%D1%80%D0%BE%D0%BD</id>
	<title>Оберон - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://sibwiki.org/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D0%B1%D0%B5%D1%80%D0%BE%D0%BD"/>
	<link rel="alternate" type="text/html" href="https://sibwiki.org/index.php?title=%D0%9E%D0%B1%D0%B5%D1%80%D0%BE%D0%BD&amp;action=history"/>
	<updated>2026-05-31T13:13:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://sibwiki.org/index.php?title=%D0%9E%D0%B1%D0%B5%D1%80%D0%BE%D0%BD&amp;diff=85942&amp;oldid=prev</id>
		<title>Yaroslav: Bot: Automated import of articles</title>
		<link rel="alternate" type="text/html" href="https://sibwiki.org/index.php?title=%D0%9E%D0%B1%D0%B5%D1%80%D0%BE%D0%BD&amp;diff=85942&amp;oldid=prev"/>
		<updated>2026-05-30T21:59:11Z</updated>

		<summary type="html">&lt;p&gt;Bot: Automated import of articles&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторонка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{YouTube|Lt0bARV26TQ|width=300|height=250}}&lt;br /&gt;
&lt;br /&gt;
Оберон (Oberon) — это высокоуровневый язык программирования общего назначения, разработанный в 1988 году швейцарским ученым Никлаусом Виртом в Швейцарской высшей технической школе Цюриха (ETH Zürich). Язык является прямым эволюционным продолжением языков Паскаль и Модула-2. Главной концептуальной целью создания Оберона было радикальное упрощение синтаксиса и архитектуры языка при одновременном сохранении его вычислительной мощности и надежности. Эпиграфом к официальному описанию языка Вирт выбрал знаменитое высказывание Альберта Эйнштейна: «Делай настолько просто, насколько возможно, но не проще этого».&lt;br /&gt;
&lt;br /&gt;
== История создания и экосистема ==&lt;br /&gt;
Разработка Оберона велась не просто как создание независимого компилятора, а как часть масштабного проекта по разработке одноименной операционной системы. Первая реализация языка, выпущенная в 1989 году, представляла собой базовый компонент операционной среды Oberon (позднее получившей развитие в виде систем Native Oberon и A2). Компилятор языка был глубоко интегрирован в операционную систему, из-под которой и запускались программы, написанные на Обероне. &lt;br /&gt;
&lt;br /&gt;
Исторически язык продолжает традицию алгоритмических языков, заложенную в Алгол-60. Разработчик языка, Никлаус Вирт, придерживался строгой академической философии, согласно которой чем меньше в языке заложено синтаксических конструкций и правил, тем более надежным и безошибочным будет программный код. Описание синтаксиса ранних версий Оберона занимало всего одну страницу, что делало его одним из самых лаконичных языков программирования в истории вычислительной техники.&lt;br /&gt;
&lt;br /&gt;
== Упрощение архитектуры и отличия от предшественников ==&lt;br /&gt;
При переходе от языка Модула-2 к Оберону была проведена масштабная ревизия функциональности. Вирт последовательно доказал избыточность многих элементов, массово применявшихся в Паскале и Модуле-2, и полностью исключил их из нового стандарта.&lt;br /&gt;
&lt;br /&gt;
Из языка были удалены следующие элементы:&lt;br /&gt;
* Записи с вариантами (вариантные записи).&lt;br /&gt;
* Перечислимые типы данных.&lt;br /&gt;
* Типы-диапазоны.&lt;br /&gt;
* Множества.&lt;br /&gt;
* Беззнаковый целый тип данных.&lt;br /&gt;
* Локальные модули и списки экспорта.&lt;br /&gt;
* Оператор присоединения (with).&lt;br /&gt;
* Структурная обработка исключений.&lt;br /&gt;
* Инструменты поддержки параллельного программирования (поскольку базовая операционная система проектировалась как однопользовательская).&lt;br /&gt;
* Цикл со счетчиком (for). Разработчик счел, что для решения любых алгоритмических задач достаточно базовых циклов с условием.&lt;br /&gt;
* Концепция «главной программы». В Обероне любая программа представляет собой набор равноправных модулей, один из которых инициирует выполнение.&lt;br /&gt;
&lt;br /&gt;
Важнейшим нововведением стало внедрение автоматического управления памятью (сборки мусора). В отличие от языков C и C++, где программист обязан вручную освобождать выделенную динамическую память, а также от Модулы-2, где среда исполнения возвращала неиспользуемую память через специальные операторы, в Обероне разработчик полностью освобожден от работы с утечками памяти. Это радикально повысило безопасность и стабильность программного обеспечения. Массивы были концептуально упрощены и приведены к формату, схожему с языком Си, а использование указателей было строго ограничено — они могут указывать только на массивы и записи.&lt;br /&gt;
&lt;br /&gt;
== Синтаксис и парадигмы программирования ==&lt;br /&gt;
Оберон поддерживает структурное, модульное и объектно-ориентированное программирование (ООП), однако реализация ООП в нем отличается крайним минимализмом и отсутствием привычной терминологии.&lt;br /&gt;
&lt;br /&gt;
Язык использует классический скобочный синтаксис (с использованием ключевых слов BEGIN и END). Поддерживается стандартный условный оператор ветвления, оператор множественного выбора CASE, а также три типа циклов: с предусловием, с постусловием и безусловный цикл. Список импорта упрощен: указывается только имя импортируемого модуля, из которого извлекаются внешние определения типов, процедур, переменных и констант. Создаваемые программистом пользовательские типы данных ограничены исключительно массивами, записями, процедурами и указателями.&lt;br /&gt;
&lt;br /&gt;
Объектно-ориентированная парадигма в классическом Обероне реализована без введения специального ключевого слова «класс». Объект трактуется исключительно как структура данных — указатель на запись. Методы реализуются посредством объявления в записи полей процедурного типа (указателей на процедуры). Таким образом, конкретная запись выступает в роли объекта, а ее описание — в роли класса. &lt;br /&gt;
&lt;br /&gt;
Инкапсуляция (сокрытие данных) в Обероне обеспечивается на уровне модуля. Все типы и переменные, объявленные внутри одного модуля, полностью прозрачны и доступны друг для друга. Механизм полиморфизма реализуется за счет вызова процедурных полей записи. Конструкторы объектов в классическом понимании отсутствуют: их роль выполняют обычные процедуры, возвращающие проинициализированный указатель на запись. Модули могут загружаться и выгружаться из оперативной памяти динамически во время работы программы.&lt;br /&gt;
&lt;br /&gt;
Концептуальный пример реализации объекта «Прямоугольник» и работы с ним на языке Оберон:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MODULE Main;&lt;br /&gt;
IMPORT Out;&lt;br /&gt;
&lt;br /&gt;
TYPE&lt;br /&gt;
  Rectangle = POINTER TO RectangleDesc;&lt;br /&gt;
  RectangleDesc = RECORD&lt;br /&gt;
    width, height: INTEGER;&lt;br /&gt;
  END;&lt;br /&gt;
&lt;br /&gt;
PROCEDURE CreateRectangle(w, h: INTEGER): Rectangle;&lt;br /&gt;
  VAR r: Rectangle;&lt;br /&gt;
BEGIN&lt;br /&gt;
  NEW(r);&lt;br /&gt;
  r.width := w;&lt;br /&gt;
  r.height := h;&lt;br /&gt;
  RETURN r&lt;br /&gt;
END CreateRectangle;&lt;br /&gt;
&lt;br /&gt;
PROCEDURE Area(r: Rectangle): INTEGER;&lt;br /&gt;
BEGIN&lt;br /&gt;
  RETURN r.width * r.height&lt;br /&gt;
END Area;&lt;br /&gt;
&lt;br /&gt;
VAR&lt;br /&gt;
  rect: Rectangle;&lt;br /&gt;
&lt;br /&gt;
BEGIN&lt;br /&gt;
  rect := CreateRectangle(5, 10);&lt;br /&gt;
  Out.Int(Area(rect), 0);&lt;br /&gt;
END Main.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
В приведенном примере модуль содержит описание типа-записи `RectangleDesc` и указателя на него `Rectangle`. Процедура `CreateRectangle` берет на себя роль конструктора: выделяет память под объект с помощью системной функции `NEW`, инициализирует поля ширины и высоты, после чего возвращает указатель. В исполняемом блоке (после ключевого слова BEGIN) происходит создание прямоугольника с размерами 5 на 10 и вывод его вычисленной площади.&lt;br /&gt;
&lt;br /&gt;
== Критика и развитие стандарта ==&lt;br /&gt;
Язык Оберон неоднократно подвергался профессиональной критике со стороны разработчиков индустриального программного обеспечения. Основные претензии касаются его чрезмерного минимализма. Отсутствие богатого набора встроенных синтаксических конструкций и обширных стандартных библиотек приводит к тому, что при реализации сложных коммерческих проектов базовые алгоритмы и структуры данных программистам приходится писать с нуля.&lt;br /&gt;
&lt;br /&gt;
Подход к реализации объектно-ориентированного программирования также вызвал дискуссии. Сведение классов к обычным записям с процедурными полями критиковалось как неполноценное и менее удобное по сравнению с архитектурой языков Java, C# или C++. Кроме того, среда исполнения Оберона требует наличия сложного динамического загрузчика и специфического окружения, что усложняет переносимость программ.&lt;br /&gt;
&lt;br /&gt;
Отвечая на критику, Никлаус Вирт и его коллеги разработали ряд модифицированных версий языка. В 1992 году был представлен Оберон-2, в который были добавлены средства прямого определения методов (связанных процедур), что приблизило язык к классическому ООП. В дальнейшем появились стандарты Oberon SA и Oberon-07, в которых разработчик частично отступил от первоначальной аскетичности, вернув некоторые удаленные ранее конструкции. Концепции Оберона послужили фундаментом для создания таких языков, как Component Pascal, Active Oberon и Zonnon.&lt;br /&gt;
&lt;br /&gt;
В академической среде существует мнение, высказанное самим Никлаусом Виртом, что создатели языка Java глубоко изучили исходные коды Оберона, заимствовали из него строгую типизацию, автоматическую сборку мусора и компонентную модульность, после чего переписали синтаксис в стиле языка C. Тем не менее, сам Оберон так и остался преимущественно объектом академических исследований и упражнений в области проектирования компиляторов, не получив широкого распространения в массовой коммерческой разработке, хотя трансляторы этого языка существуют для множества современных платформ (включая виртуальную машину Java).&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
[[PL/I]]&lt;br /&gt;
[[Паскаль (язык программирования)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Языки программирования]]&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=Lt0bARV26TQ Смотреть видео]&lt;/div&gt;</summary>
		<author><name>Yaroslav</name></author>
	</entry>
</feed>