Oberon space
General Category => Общий раздел => Тема начата: Kemet от Октябрь 26, 2013, 01:28:48 pm
-
Таки свершилось.
Скачать pdf (http://www.inf.ethz.ch/personal/wirth/Articles/Oberon/Oberon07.Report.pdf)
-
17 страниц! Семнадцать!
-
17 страниц! Семнадцать!
О нет! Это ужасно! )))
-
Ох уж эти мейнстримщики: самое пристальное внимание уделяют самым незначительным деталям, а самое главное обходят стороной. : )
-
Отличия бы от предыдущей ревизии.
-
Ох уж эти мейнстримщики: самое пристальное внимание уделяют самым незначительным деталям, а самое главное обходят стороной. : )
Мудаки они ;)
-
Ох уж эти мейнстримщики: самое пристальное внимание уделяют самым незначительным деталям, а самое главное обходят стороной. : )
Мудаки они ;)
кто бы говорил )))
-
кто бы говорил )))
Нахуй иди, хаскельблядь.
-
Добавили тип BYTE в список ключевых слов, и ещё SYSTEM.COPY
-
второй параметр в INC, DEC, INCL, EXCL теперь может быть выражением.
Вспоминается задачка про азбуку Морзе
-
кто бы говорил )))
Нахуй иди, хаскельблядь.
Всё таки надо, надо добавить функцию минусования кармы как на нормальных форумах. Только так можно избавиться от дебилов, не прибегая к банхаммерам и модерации.
-
Отличия бы от предыдущей ревизии.
4. Declarations and scope rules
Зарезервированные идентификаторы:
Убраны:
COPY, LONG, LONGREAL, SHORT
Добавлены:
BYTE
6.1. Basic types
Убраны:
LONGREAL real numbers
The type LONGREAL is intended to represent real numbers with a higher number of digits than REAL. However, the two types may be identical.
Добавлены:
BYTE the integers between 0 and 255
The type BYTE is compatible with the type INTEGER, and vice-versa.
10.2. Predefined procedures
Уточнён тип второго операнда зарезервированных процедур:
Name Argument type Result type Function
LSL(x, n) x, n: INTEGER INTEGER logical shift left, x * 2n
ASR(x, n) x, n: INTEGER INTEGER signed shift right, x DIV 2n
ROR(x, n) x, n: INTEGER INTEGER x rotated right by n bits
Убраны зарезервированные процедуры:
LONG(x)
SHORT(x)
COPY(x, v)
ASSERT(b, n) (Оставлен только вариант ASSERT(b))
11.1 The Module SYSTEM
Добавлены зарезервированные процедуры:
COPY(src, dst, n) all INTEGER copy n consecutive words from src to dst
Процедура COPY изменена и перенесена из языка в псевдомодуль SYSTEM
-
второй параметр в INC, DEC, INCL, EXCL теперь может быть выражением.
А ещё убрано упоминание о том, что бы глобальные объекты не видны в процедурах, если в них определены объекты с такими же именами.
Правда, не указано, что это значит -- то ли к ним можно как-то получить доступ (например, квалифицировав их имена каким-то способом), то ли нельзя называть локальные переменные так же, как глобальные...
-
наличие BYTE очень радует. Также радует отсутствие двух разных REAL'ов - это еще сильнее приближает Оберон к жабаскрипту.
-
кто бы говорил )))
Нахуй иди, хаскельблядь.
Всё таки надо, надо добавить функцию минусования кармы как на нормальных форумах. Только так можно избавиться от дебилов, не прибегая к банхаммерам и модерации.
А пока терпи, уёбок.
-
наличие BYTE очень радует. Также радует отсутствие двух разных REAL'ов - это еще сильнее приближает Оберон к жабаскрипту.
Слово LONGREAL в тексте встречается. Также, в приложении в РБНФ есть косвенный признак его присутствия.
P.S. Пинг дошёл?
-
наличие BYTE очень радует. Также радует отсутствие двух разных REAL'ов - это еще сильнее приближает Оберон к жабаскрипту.
Слово LONGREAL в тексте встречается. Также, в приложении в РБНФ есть косвенный признак его присутствия.
Оно встречается исключительно в случае литералов. (кстати, не ясно теперь как трактовать - литералов теперь два типа, а переменные то одного только типа)
PS. Дошел.
-
второй параметр в INC, DEC, INCL, EXCL теперь может быть выражением.
А ещё убрано упоминание о том, что бы глобальные объекты не видны в процедурах, если в них определены объекты с такими же именами.
Правда, не указано, что это значит -- то ли к ним можно как-то получить доступ (например, квалифицировав их имена каким-то способом), то ли нельзя называть локальные переменные так же, как глобальные...
Ну, по идее это должна быть ошибка компиляции. Если следовать генеральной линии партии - убирание всего неявного. (На крайний случай можно что-то чуть более интеллектуальное придумать - например ошибку вадавать при первом обращении к переменной. Но это во-первых сложнее, во-вторых не сделает жизнь лучше)
Способа квалификации имен там ведь нет.
-
Geniepro, спасибо за развёрнутый ответ.
-
наличие BYTE очень радует. Также радует отсутствие двух разных REAL'ов - это еще сильнее приближает Оберон к жабаскрипту.
Слово LONGREAL в тексте встречается. Также, в приложении в РБНФ есть косвенный признак его присутствия.
Мда, выпиливал Вирт LONGREAL из языка, выпиливал да не довыпилил:
A real number is of type REAL, unless it contains a scale factor with the letter D, in which case it is of type LONGREAL.
-
Способа квалификации имен там ведь нет.
Почему нет? ModuleName.ObjectName -- вот таким вот qualident'ом, например...
-
The type BYTE is compatible with the type INTEGER, and vice-versa.
Интересная формулировка. Т.е., различие только в размере. При этом можно писать как "int := byte" так и "byte := int". Ну и как тут не вспомнить Arian-5? ;)
Процедура COPY изменена и перенесена из языка в псевдомодуль SYSTEM
Да, к этой процедуре у меня были пртетензии. В таком виде она имеет смысл.
-
кто бы говорил )))
Нахуй иди, хаскельблядь.
Всё таки надо, надо добавить функцию минусования кармы как на нормальных форумах. Только так можно избавиться от дебилов, не прибегая к банхаммерам и модерации.
А пока терпи, уёбок.
Петруха, полнолуние давно прошло, ты чего тормозишь? о_О
-
Всё же я не понимаю, зачем в языке общего назначения, каковым Вирт позиционирует свой Оберон, нужны процедуры PACK|UNPK? В жизни никогда ими не пользовался. Впрочем, множествами тоже, их тоже бы выпилить из языка нужно...
-
кто бы говорил )))
Нахуй иди, хаскельблядь.
Всё таки надо, надо добавить функцию минусования кармы как на нормальных форумах. Только так можно избавиться от дебилов, не прибегая к банхаммерам и модерации.
А пока терпи, уёбок.
Петруха, полнолуние давно прошло, ты чего тормозишь? о_О
Петруха на стреме... :D типа интересы коровцев защищает....
-
Петруха на стреме... :D типа интересы коровцев защищает....
А какие там интересы у коровцев к Оберону? Они же Компонентным Паскалем пользуются, а не Обероном. У них от Оберона только название сайта и больше ничего общего...
-
Петруха на стреме... :D типа интересы коровцев защищает....
А какие там интересы у коровцев к Оберону? Они же Компонентным Паскалем пользуются, а не Обероном. У них от Оберона только название сайта и больше ничего общего...
Жень, вам слово "святотатство" что то говорит?
-
Петруха на стреме... :D типа интересы коровцев защищает....
А какие там интересы у коровцев к Оберону? Они же Компонентным Паскалем пользуются, а не Обероном. У них от Оберона только название сайта и больше ничего общего...
Жень, вам слово "святотатство" что то говорит?
Эм... А к чему это Вы?
Давно известно, что Компонентный Паскаль не является Обероном, во всяком случае не намного ближе к Оберону чем Зоннон, который блекбоксёры открыто презирают...
-
Эм... А к чему это Вы?
Давно известно, что Компонентный Паскаль не является Обероном, во всяком случае не намного ближе к Оберону чем Зоннон, который блекбоксёры открыто презирают...
к тому... понял.. - не говорит, вопросов больше не имею :)
-
Экспертная оценка от экспертов дноберспейца.
-
Экспертная оценка от экспертов дноберспейца.
в каком месте? :)
-
The type BYTE is compatible with the type INTEGER, and vice-versa.
Интересная формулировка. Т.е., различие только в размере. При этом можно писать как "int := byte" так и "byte := int". Ну и как тут не вспомнить Arian-5? ;)
Если так подумать, то подобное непроверяемое и не безопасное присваивание не новость в Обероне.
Скажем в 07/11 всегда можно было char := CHR(100500); -- это вполне может дать непредсказуемый результат. Ну и INCL/EXCL тоже могли положить свинью, если учесть что INTEGER, в отличае от SET'a гвоздями к 32битам не прибит. То есть в нем могут быть значения которые не отображаются на SET.
Ну, кроме того BYTE тут беззнаковый, то есть модулярный тип, а для него переход через границы вполне нормальное, разрешенное действие даже в Аде (в отличие от знакового INTEGER'a, который может легко переполниться при умножении скажем).
Так что я тут не вижу особой проблемы.
-
Всё же я не понимаю, зачем в языке общего назначения, каковым Вирт позиционирует свой Оберон, нужны процедуры PACK|UNPK? В жизни никогда ими не пользовался.
Согласен. Можно быле ее смело в SYSTEM, даже если она сильно нужна была Вирту.
Впрочем, множествами тоже, их тоже бы выпилить из языка нужно...
Ну... множества это попытка поднять уровень битовых операций. Пока я для себя еще не определил - получилось у Вирта или нет.
-
А какие там интересы у коровцев к Оберону? Они же Компонентным Паскалем пользуются, а не Обероном. У них от Оберона только название сайта и больше ничего общего...
Не-не. info21 держится за оберон крепко именно как за некий почти недостижимый идеал, даже в свете последних экстравагантностей (выкидывания WITH, динамических массивов). Во всяком случае он крайне резко возражал против моей идеи, что оберон это всего лишь язык под (виртовскую) частную задачу (в которой не нужны были WITH и далее по списку).
-
Отличия бы от предыдущей ревизии.
Кстати, обычный текстовый diff двух ревизий вполне информативный - рекомендую. Там действительно ничего принципиального не поменялось. И, к сожалению, не дополнилось.
P.S. В том промежуточном черновике больше было всяких странных изменений.
-
наличие BYTE очень радует. Также радует отсутствие двух разных REAL'ов - это еще сильнее приближает Оберон к жабаскрипту.
Пока не очень представляю, что делать с BYTE в жабаскриптовой реализации компилятора. Прямого отображения в жабаскрипт нет, а эмуляция сведет на нет всю идею эффективного приближения к железу...
-
Не-не. info21 держится за оберон крепко именно как за некий почти недостижимый идеал, даже в свете последних экстравагантностей (выкидывания WITH, динамических массивов). Во всяком случае он крайне резко возражал против моей идеи, что оберон это всего лишь язык под (виртовскую) частную задачу (в которой не нужны были WITH и далее по списку).
Ну и что же он им не пользуется ни в работе, ни в обучении?
-
наличие BYTE очень радует. Также радует отсутствие двух разных REAL'ов - это еще сильнее приближает Оберон к жабаскрипту.
Пока не очень представляю, что делать с BYTE в жабаскриптовой реализации компилятора. Прямого отображения в жабаскрипт нет, а эмуляция сведет на нет всю идею эффективного приближения к железу...
А вот как раз в современном жабаскрипте уже есть, и я голову ломал как это в обероне эффективно.
-
наличие BYTE очень радует. Также радует отсутствие двух разных REAL'ов - это еще сильнее приближает Оберон к жабаскрипту.
Слово LONGREAL в тексте встречается. Также, в приложении в РБНФ есть косвенный признак его присутствия.
Мда, выпиливал Вирт LONGREAL из языка, выпиливал да не довыпилил:
A real number is of type REAL, unless it contains a scale factor with the letter D, in which case it is of type LONGREAL.
Интересно, каков смысл игнорировать присутствие различной точности у вещественных чисел?
Мне кажется, что создатели языка Ада подошли к этому вопросу более практично, чем Вирт.
-
кстати, файл репорта называется Oberon07.Report.pdf
Т.е. название Oberon07 пошло от Вирта
-
кстати, файл репорта называется Oberon07.Report.pdf
Т.е. название Oberon07 пошло от Вирта
Я не уверен что это чисто Виртовское. Это мог pdf printer так назвать :-) Ну или выкладывальщики.
-
Петруха, полнолуние давно прошло, ты чего тормозишь? о_О
Луна не виновата. Это осеннее обострение...
-
По поводу BYTE:
var array = new Uint8Array(100);
Это будет массив именно что байт. Это не массив динамически типизированных объектов js. То есть в каждую ячейку положить что-либо кроме числа от 0 до 255 невозможно.
И эта штука сейчас применяется все шире. И, по моему, прекрасно отображается на ARRAY 100 OF BYTE.
А вообще же, в js есть такие массивы:
Int8Array 1 8-bit twos complement signed integer signed char
Uint8Array 1 8-bit unsigned integer unsigned char
Int16Array 2 16-bit twos complement signed integer short
Uint16Array 2 16-bit unsigned integer unsigned short
Int32Array 4 32-bit twos complement signed integer int
Uint32Array 4 32-bit unsigned integer unsigned int
Float32Array 4 32-bit IEEE floating point number float
Float64Array 8 64-bit IEEE floating point number double
https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView?redirectlocale=en-US&redirectslug=Web%2FJavaScript%2FTyped_arrays%2FArrayBufferView#Typed_array_subclasses
-
Петруха, полнолуние давно прошло, ты чего тормозишь? о_О
Луна не виновата. Это осеннее обострение...
На этот раз это виновата видеовстреча грядущая: http://forum.oberoncore.ru/viewtopic.php?p=83206#p83206
Ну и возможно геомагнитная обстановка (там опять возмущенное магнитное поле).
-
По поводу BYTE:
var array = new Uint8Array(100);
Да, про массивы я в курсе. Даже проверял как работает с одним элементом a[0] - все как надо. Только не уверен, что жабаскриптовые движки буду оптимизить такой случай. Можно попробовать сделать и прогнать еще раз ту задачку на blur. А заодно сделать целочисленные массивы через соответствующие типизированные жабаскриптовые аналоги.
-
кстати, файл репорта называется Oberon07.Report.pdf
Т.е. название Oberon07 пошло от Вирта
Я не уверен что это чисто Виртовское. Это мог pdf printer так назвать :-) Ну или выкладывальщики.
Всякие разные Delphi под разными номерами и буквами, не всегда совместимы друг с другом, но Delphi от этого они быть не перестают, собственно как и Объектным Паскалем, и не отменяют предыдущие версии, Вирт понапридумывал много разных Оберонов, под конкретные, решаемые им, задачи, Эти Обероны также, имеют в своём названии различные аббревиатуры, также не совместимы друг с другом, но Оберонами остаются. Понятно, что Оберон07 это очередная множественная реинкарнация Оберона, под очередную конкретную задачу, но предыдущие реализации этот вариант также не может отменить.
-
Привел oberonjs в соответствие с новейшим репортом (больше всего с BYTE пришлось повозиться).
-
Глянув на список работ (http://www.inf.ethz.ch/personal/wirth/Oberon/index.html) на страничке Вирта, венее, на названия этих работ:
The Programming Language Oberon-07 (Revised Oberon)
Difference between Oberon-07 and Oberon
Porting the Oberon Compiler from Oberon to Oberon-07
можно сделать однозначный вывод о названии обсуждаемого языка, и это - Oberon-07
-
Глянув на список работ (http://www.inf.ethz.ch/personal/wirth/Oberon/index.html) на страничке Вирта, венее, на названия этих работ:
The Programming Language Oberon-07 (Revised Oberon)
Difference between Oberon-07 and Oberon
Porting the Oberon Compiler from Oberon to Oberon-07
можно сделать однозначный вывод о названии обсуждаемого языка, и это - Oberon-07
Название языка четко написано в самом репорте - это Oberon.
На страничке же Вирту нужно было различить тот, оригинальный Оберон, который получился во время той самой исследовательской работы, и новую версию. Вот и все.
В точности также в обиходе используется сейчас C++11 название, Ada-95, Ada-12, Ada-83, C++-98 и так далее. Но языки то - Ada и C++.
-
А еще, у Страуструпа (автора С++) на страничке тоже есть C++, а есть С++11 ! Вот даже по нему FAQ имеется!!11 http://www.stroustrup.com/C++11FAQ.html
:-D
Явно же другой язык! Не С++!
-
C++11 совместим с предыдущими версиями?
-
C++11 совместим с предыдущими версиями?
Комитет по C++ не может себе позволить делать ломающие изменения в языке. В отличие от Вирта...
-
C++11 совместим с предыдущими версиями?
Комитет по C++ не может себе позволить делать ломающие изменения в языке. В отличие от Вирта...
Интересно отличие подхода с++'ников от подхода Вирта:
Какими конкретными целями руководствовался комитет по стандартизации?
...
Однако, ниже представлен набор критериев, которыми пользовались при обсуждении того, какие возможности и библиотеки подходят для С++11:
* Поддержка стабильности и обратной совместимости; не ломать старый код, а если без этого не обойтись, то не делать это втихую.
...
Вот Вирт как раз втихую и изменил семантику оператора CASE...
-
Это немного не так - новая семантика case никак не пересекается со старой. То есть будет просто ошибка компиляции вместо некорректной программы. То есть это не втихую.
-
Это немного не так - новая семантика case никак не пересекается со старой. То есть будет просто ошибка компиляции вместо некорректной программы. То есть это не втихую.
"Втихую" означает -- никому не сказав об этом.
Ну сломается компиляция программы -- а почему? А по качану! Не написано об этом в описании языка...
-
Это немного не так - новая семантика case никак не пересекается со старой. То есть будет просто ошибка компиляции вместо некорректной программы. То есть это не втихую.
"Втихую" означает -- никому не сказав об этом.
Ну сломается компиляция программы -- а почему? А по качану! Не написано об этом в описании языка...
Не торопись - еще ведь и описания языка то нет :-)
-
Не торопись - еще ведь и описания языка то нет :-)
Дык есть уже давно -- сколько ревизий. По крайней мере, наверняка изменение с CASE'ом Вирт сделал до того, как выкатил новую (последнюю) ревизию, которой посвящена эта тема. А ведь в этой ревизии ничего о новом CASE не сказано...
-
Не торопись - еще ведь и описания языка то нет :-)
Дык есть уже давно -- сколько ревизий. По крайней мере, наверняка изменение с CASE'ом Вирт сделал до того, как выкатил новую (последнюю) ревизию, которой посвящена эта тема. А ведь в этой ревизии ничего о новом CASE не сказано...
Я бы подождал еще минимум месяц. Ведь Project Oberon пока опубликован не полностью.
-
Кстати, вот свежий документик (20 ноября) http://www.inf.ethz.ch/personal/wirth/Oberon/OberonAtAGlance.pdf
CASE там имеет старую семантику... Что-то странное Вирт творит.
-
Оказывается еще вот этот мануал: http://www.inf.ethz.ch/personal/wirth/Oberon/PIO.pdf
скорректирован в соответствии с описанием Oberon-07 (правда правки 2011 года)
-
Кстати, вот свежий документик (20 ноября) http://www.inf.ethz.ch/personal/wirth/Oberon/OberonAtAGlance.pdf
CASE там имеет старую семантику... Что-то странное Вирт творит.
С одной стороны кое-что проясняется по языку, например LONGREAL, LONGINT, SHORTINT просто отсутствуют в целевой машине, с другой - этот непонятный CASE. То ли торчат уши от разных экспериментов, то ли мало ли что - человеку 79 лет, а он verilog освоил (может быть).