Я планировал вдумчивую серию статей на хабре про то откуда взялся оберон (начиная с Оберон ОС), как развивался и на что годится сейчас. С его плюсами и минусами. Объективная такая серия статей, без фанатизма. Это серия статей обсуждалась и готовилась на нашем форуме. А этот вот товарищ, автор данной статьи, увидел идею публикации и быстренько накатал вот это, сильно смахивающее на рекламную брошюру обильно сдобренную ссылками на свой собственный форум, видимо в рассчете на приток новых участников на оный.
Так что мне приходится отдуваться пока в комментах.
Ну это ж красота — штука весьма субъективная. Равно как и минимализм (где тот порог, где уже не минималистичность, а примитивизм?). Кому то и С++ красиый минималистичный язык :-)
В паскале все же не было наследования у RECORD'ов, да и сборщика мусора не водилось. Кроме того, в Оберонах принято (хотя это и не обязательно) также в рантайме иметь некую метаинформацию о модулях, переменных и прочем — то есть есть рефлексия. Часто также есть возможность динамической загрузки и выгрузки отдельного модуля.
Вообще, отличным инструментом для обучения является тот инструмент, на котором обучаемый (ну, например ребенок) может (возможно с помощью учителя) быстро сделать что-то интересное (интересное для него) и наглядное. Это дико мотивирует продолжать обучаться дальше.
Так вот, у Оберонов с этим вроде бы как раз все хорошо:
BlackBox CB (Component Pascal) позволяет наглядно (через те самые составные документы) делать интерактивные живые графические штуки, не парясь особо о формах, и прочем. Сделать виртуального робота ездящего по полю и для него же тут рядом сделать пультр управления — да легко!
Astrobe (Oberon-07/11) позволяет запрограммировать микроконтроллер. И тут уже можно ездить реальным роботом, управлять реальными физическими объектами. Причем алгоритмический код у Компонентного Паскаля и Оберона-07, вообще говоря может быть один и тот же (есть некое базовое подмножество statement'ов, где они совместимы). Скажем программа управления роботом может как управлять им в BlackBox'е так и работать в микроконтроллере и управлять реальной железной штукой.
На обероне в основном идут исследовательские проекты. То есть миру он примерно затем же зачем и Haskell. Оберон каждый год новый. См. Active Oberon & A2.
Нет, не запутался. Если человек не научится работать с типами сразу, то есть четко понимать что такое тип и зачем он нужен. Понимать зачем типы проверять до запуска приложения, то потом это привить будет очень сложно, и такое банальным кодинг-стайлом не лечится.
Ой, давай не будем сейчас тут очередной флейм на тему динамическая VS статическая типизация устраивать. А то ведь всё как раз к тому идет, ибо я считаю что питон не годится для начального обучения именно в силу динамической типизации.
И да, я обучал таких людей которые не могли сами цикл написать (да и не особо программированием интересовались). И вот с чем-чем, а с типами проблем не было (и да, я не на Обероне учил). Там были смешнее проблемы — народ по привычке текст программы воспринимал как нечто декларативное (видимо по аналогии с математикой), и никак не мог понять, что вот до этой строчки комп еще не дошел, и про нее пока не знает и ничего не исполнял что там написано. Как ни странно, тут очень сильно помог пошаговый отладчик (столь упоенно чмыримый апологетами Оберона), который позволил наглядно показать как же оно на самом деле там работает.
Ну, народ бросается в какие-то конторы прямо во время универа. И это правильно.
Основам именно что алгоритмики можно вполне и на Обероне. Вот правда-правда можно. Там ничего лишнего (угу, те самые 16 страниц описания языка) и всего хватает для таких задач. Не даром же его в Оксфорде в качестве одного из первых изучаемых ЯП преподают.
Потом на Обероне (как уже на подопытном ЯП) же отлично отрабатывать теорию и практику компиляторостроения и методов трансляции. Ну и по ОС тоже Оберон может пригодиться, у Вирта аж целая книжка по ОС Оберон написана. Подробно, компактно и ясно. То есть в плане обучалова Оберон штука в принципе годная, если с умом подходить. Ну и для некоторых научных изысканий тоже штука годная (в качестве объекта изучения).
Другое дело, что не стоит Оберон тащить во все промышленные задачи, как некоторые ярые пропагандисты делают. У простоты есть своя цена в конце концов, как, впрочем, и у сложности.
Но это опять таки, вторично. Ибо просто синтаксис. Это скучно. И это банально лечится единым coding style на контору.
А вот семантические заморочки, проблемы с типизацией — вот они лечатся туго. Так что нет, никаких питонов в начальном обучении. Впрочем, на счет Оберона тоже сомнения у меня некоторые имеются.
Этот BB CB он сам себе среда и операционка. Расширяется легко и непринужденно. Собственно в том скриншоте модуль — это уже модуль самой среды по сути. Там нет четкой границы между средой разработки и программы разрабатываемой. Соответственно и инструментарий народ себе потихоньку делает. Diff там по крайней мере есть.
(но опять таки — не нужно это все переносить на язык Оберон — он бывает и в виде традиционных компиляторов с обычными текстовыми исходниками)
С git'ом народ выкручивается (если видит смысл выкручиваться) по разному. Например кто-то экспортирует исходники в обычные текстовые файлы.
Понятно что этот самый BB CB не есть серебряная пуля для всего на свете. На ряд решаемых задач такой подход ложится очень хорошо, и те преимущества которые оно дает перевешивает те недостатки которые оно же и привносит. На других же задачах в точности наоборот — недостатки играют сильнее чем достоинства.
Оберонов их как собак не резанныхмного. Ты про какой именно читал? В Компонентном Паскале например вполне есть абстрактные RECORD'ы. Но вот множественного наследования интерфейсов там действительно нет. На эту тему на одном из форумов было многостраничное обсуждение: forum.oberoncore.ru/viewtopic.php?f=29&t=3640
Ну, а например в Zonnon'e с интерфейсами вообще все отлично — есть искаропки.
Оригинальный же Оберон и Оберон-07… Ну, собственно там даже в общем то нет функций связанных с типом. То есть, банально методов как таковых. Наприсать obj.foo() нельзя. Там все это несколько иначе делается.
Сейчас бегло глянул что это за XDev такой — насколько я понимаю, XDev это BlackBox CB с какими-то накрученными сверху модулями для сборки через ofront чего-то там под Z80.
Так вот, BlackBox Component Builder оперирует не просто исходными текстами, а так называемыми составными документами. То есть в одном таком документе может быть и исходник (причем расцвеченный во все цвета радуги программистом) и дока к нему с картинками, и что-нибудь интерактивное. Это позволяет изобразить нечто наподобие literate programming'a.
Выглядит это примерно так.
Обрати внимание — тут в коде имя процедуры Do выделено жирным шрифтом — это выделил так программист, это не автоподсветка. Восклицательный знак в черном круге — это иконка клик на которую запустит процедуру Do модуля ObxHello1 (то есть ObxHello1.Do запустит). На а текст вокруг — эдакий мегакоммент-дока для данного модуля.
В результате имеем составной интерактивный документ.
Плюсы у такого подхода очевидны, очевидны и минусы же — проблемы с системами контроля версий + смотреть/редактировать исходники в таком виде можно только в BB.
Надеюсь понятно описал :-) Если интересно, то могу попробовать написать статью о том, откуда есть всё это взялось вообще. То есть по ОС Оберон.
Так что мне приходится отдуваться пока в комментах.
Все это не слишком похоже на Паскаль.
Так вот, у Оберонов с этим вроде бы как раз все хорошо:
Но выводить свойства языка из его синтаксиса — так себе идейка.
И да, я обучал таких людей которые не могли сами цикл написать (да и не особо программированием интересовались). И вот с чем-чем, а с типами проблем не было (и да, я не на Обероне учил). Там были смешнее проблемы — народ по привычке текст программы воспринимал как нечто декларативное (видимо по аналогии с математикой), и никак не мог понять, что вот до этой строчки комп еще не дошел, и про нее пока не знает и ничего не исполнял что там написано. Как ни странно, тут очень сильно помог пошаговый отладчик (столь упоенно чмыримый апологетами Оберона), который позволил наглядно показать как же оно на самом деле там работает.
Основам именно что алгоритмики можно вполне и на Обероне. Вот правда-правда можно. Там ничего лишнего (угу, те самые 16 страниц описания языка) и всего хватает для таких задач. Не даром же его в Оксфорде в качестве одного из первых изучаемых ЯП преподают.
Потом на Обероне (как уже на подопытном ЯП) же отлично отрабатывать теорию и практику компиляторостроения и методов трансляции. Ну и по ОС тоже Оберон может пригодиться, у Вирта аж целая книжка по ОС Оберон написана. Подробно, компактно и ясно. То есть в плане обучалова Оберон штука в принципе годная, если с умом подходить. Ну и для некоторых научных изысканий тоже штука годная (в качестве объекта изучения).
Другое дело, что не стоит Оберон тащить во все промышленные задачи, как некоторые ярые пропагандисты делают. У простоты есть своя цена в конце концов, как, впрочем, и у сложности.
Но это опять таки, вторично. Ибо просто синтаксис. Это скучно. И это банально лечится единым coding style на контору.
А вот семантические заморочки, проблемы с типизацией — вот они лечатся туго. Так что нет, никаких питонов в начальном обучении. Впрочем, на счет Оберона тоже сомнения у меня некоторые имеются.
Ну, например руками делаем конструкторы: forum.oberoncore.ru/viewtopic.php?f=23&t=4326&p=79442
И исключения: forum.oberoncore.ru/viewtopic.php?f=26&t=808&p=11934&#p11933
Изобретаем беззнаковое целое: oberspace.dyndns.org/index.php/topic,398.0.html
Боремся с byte-stream: oberspace.dyndns.org/index.php/topic,399.0.html
Этот BB CB он сам себе среда и операционка. Расширяется легко и непринужденно. Собственно в том скриншоте модуль — это уже модуль самой среды по сути. Там нет четкой границы между средой разработки и программы разрабатываемой. Соответственно и инструментарий народ себе потихоньку делает. Diff там по крайней мере есть.
(но опять таки — не нужно это все переносить на язык Оберон — он бывает и в виде традиционных компиляторов с обычными текстовыми исходниками)
С git'ом народ выкручивается (если видит смысл выкручиваться) по разному. Например кто-то экспортирует исходники в обычные текстовые файлы.
Понятно что этот самый BB CB не есть серебряная пуля для всего на свете. На ряд решаемых задач такой подход ложится очень хорошо, и те преимущества которые оно дает перевешивает те недостатки которые оно же и привносит. На других же задачах в точности наоборот — недостатки играют сильнее чем достоинства.
как собак не резанныхмного. Ты про какой именно читал? В Компонентном Паскале например вполне есть абстрактные RECORD'ы. Но вот множественного наследования интерфейсов там действительно нет. На эту тему на одном из форумов было многостраничное обсуждение: forum.oberoncore.ru/viewtopic.php?f=29&t=3640Ну, а например в Zonnon'e с интерфейсами вообще все отлично — есть искаропки.
Оригинальный же Оберон и Оберон-07… Ну, собственно там даже в общем то нет функций связанных с типом. То есть, банально методов как таковых. Наприсать obj.foo() нельзя. Там все это несколько иначе делается.
Так вот, BlackBox Component Builder оперирует не просто исходными текстами, а так называемыми составными документами. То есть в одном таком документе может быть и исходник (причем расцвеченный во все цвета радуги программистом) и дока к нему с картинками, и что-нибудь интерактивное. Это позволяет изобразить нечто наподобие literate programming'a.
Обрати внимание — тут в коде имя процедуры Do выделено жирным шрифтом — это выделил так программист, это не автоподсветка. Восклицательный знак в черном круге — это иконка клик на которую запустит процедуру Do модуля ObxHello1 (то есть ObxHello1.Do запустит). На а текст вокруг — эдакий мегакоммент-дока для данного модуля.
В результате имеем составной интерактивный документ.
Плюсы у такого подхода очевидны, очевидны и минусы же — проблемы с системами контроля версий + смотреть/редактировать исходники в таком виде можно только в BB.
Надеюсь понятно описал :-) Если интересно, то могу попробовать написать статью о том, откуда есть всё это взялось вообще. То есть по ОС Оберон.