Автор Тема: Тезис про Oberon, C, CP и ObjC.  (Прочитано 42889 раз)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Тезис про Oberon, C, CP и ObjC.
« : Март 03, 2011, 01:37:05 pm »
Я тут, по работе, все больше глубже и сильнее погружаюсь в Objective-C. В процессе погружения возникают всякие разные мысли странные. Недавно вот родился следующий тезис:

"Относительно языка Оберон, язык Компонентный Паскаль с его средой исполненя это то же, что язык Objective-C, с его рантаймом, относительно языка Си."
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Comdiv

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #1 : Март 03, 2011, 03:57:41 pm »
У меня такого ощущения не возникло. С одной стороны в КП по сравнению с Обероном добавлено намного меньше, чем в Obj-C по сравнении с C, а с другой стороны КП не является надмножеством предка, а Obj-C - является.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #2 : Март 03, 2011, 04:12:51 pm »
У меня такого ощущения не возникло. С одной стороны в КП по сравнению с Обероном добавлено намного меньше, чем в Obj-C по сравнении с C, а с другой стороны КП не является надмножеством предка, а Obj-C - является.
Добавлено очень много по сравнению с Oberon'ом: например добавлена обязательная сборка мусора, добавлена метаинформация и возможности метапрограммирования. Добавлены методы у записей (виртуальные, да), добавлен общий предок для всех записей, добавлен контроль за расширябельностью записей и так далее.

У меня впечатление складывается, что ObjC добавил к Си меньше чем КП к Оберону. Но в ObjC добавлено было более аккуратно в том смысле, что обратную совместимость не сломали.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #3 : Март 03, 2011, 04:17:48 pm »
Да, правда даже КП не ввел в язык обязательную проверку переполнений и выхода за пределы массивов.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #4 : Март 03, 2011, 07:15:57 pm »
Что значит "не ввёл"?

Всё с точностью до наоборот - это если выход возможен, то это надо явно оговаривать: "при обращении по индексу за пределами размера массива поведение не определено".
Поскольку такого не сказано, подразумевается, что операция не имеет смысла. И будет проверяться.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #5 : Март 03, 2011, 07:45:20 pm »
Что значит "не ввёл"?

Всё с точностью до наоборот - это если выход возможен, то это надо явно оговаривать: "при обращении по индексу за пределами размера массива поведение не определено".
Поскольку такого не сказано, подразумевается, что операция не имеет смысла. И будет проверяться.
И что же произойдет если проверка покажет, что мы вышли за пределы массива? Где собственно в спеке указание на то, что в этом случае будет?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #6 : Март 03, 2011, 07:48:05 pm »
Поясню -- если в спеке не указано что в этом случае будет, это и есть undefined behaviour. Потому, что оно в разных случаях, в разных окружениях, будет (может быть) разным.

Поэтому в спеке на плюсы об этом честно пишут. А в спеке на КП об этом скромно умалчивают.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #7 : Март 04, 2011, 07:49:56 pm »
Я не буду с Вами спорить однозначно, но вопрос интересный.

Что понимать под behavior? Behavior - это всё-таки продолжение работы программы (хотя бы с некоторой вероятностью). А если behaviour, даже undefined-ный, на глупую операцию не задан, то подразумевается, что никакого behavior-а не будет, вычисления будут прерваны. Ведь не пишется же в стандарте языка, как именно ведёт себя компилятор при обнаружении синт. ошибки. Просто очевидно, что несоответствие синтаксису не ведёт ни к какому результату, компиляция оканчивается. А уж как там после ошибок восстанавливается каждый компилятор - не фиксировать же в стандарте.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #8 : Март 05, 2011, 04:03:06 am »
Я не буду с Вами спорить однозначно, но вопрос интересный.

Что понимать под behavior? Behavior - это всё-таки продолжение работы программы (хотя бы с некоторой вероятностью). А если behaviour, даже undefined-ный, на глупую операцию не задан, то подразумевается, что никакого behavior-а не будет, вычисления будут прерваны.

Ну да, можно пофилософствовать, что такое выполнение программы и что такое обрыв вычислений и т.д. Итог все равно один - undefined behavior это то, что вы точно не хотите в своей программе. И хорошо, если об этом undefined behavior говорится честно и во всех возможных местах, а не жертвуют, чтобы уложиться в 16 страниц. Ну и, конечно, существование undefined behavior однозначно говорит об изъяне в дизайне языка. Либо по причине сознательного компромисса с железкой, либо недодуманности, либо еще чего.

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #9 : Март 06, 2011, 07:46:02 pm »
И всё-таки конкретный жизненный вопрос: кому это жить помешало?

Если в подробно стандартизированных языках вещей, "жить мешающих", пруд пруди, а тут при ряде второстепенных опущений никому ещё это не помешало, то чего огород городить.

Усилия надо инвестировать разумно и экономно. Это если много лишней энергии, которую некуда девать, то можно сидеть и строчить подробные, большие тома :) В том числе для самоудовлетворения.

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #10 : Март 06, 2011, 07:52:03 pm »
Это тоже та ещё "замануха": лидеры-гиганты строчат внушительные такие тома, стандарты, на реализацию которых уйдёт не один год, и как бы приглашают "делайте так же, если хотите, чтобы вас воспринимали всерьёз".
И народ даже из академической среды, из open-source и т.п. начинает втягиваться в эту гонку - "чтоб всё было солидно".
Тратит несколько лет жизни на какой-нибудь ОДИН такой "чинный и солидный" проект. И, разумеется, о какой-то конкуренции можно просто забыть.

Вместо того, чтобы развязать руки от второстепенных мелочей и пройти по грани "необходимого и достаточного", решив за то же время целый ряд задач. Как Вирт с ПК, ОС и прикладными пакетами, или новосибирцы с Кроносом. Да и многие коллективы, сталкивающиеся с "особыми задачами", таким же путём идут. У них выбора нет просто. Как у многих наших оборонных контор, которые разрабатывают свои CASE-решения.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #11 : Март 07, 2011, 01:15:33 pm »
Вместо того, чтобы развязать руки от второстепенных мелочей и пройти по грани "необходимого и достаточного", решив за то же время целый ряд задач.
Нет. Мелочи важны. Особенно в языках программирования.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #12 : Март 07, 2011, 04:03:53 pm »
И всё-таки конкретный жизненный вопрос: кому это жить помешало?

Да любому, кому приходилось иметь дело с более чем одной аппаратной платформой и более чем одной реализацией ЯП. Например мне ;)

Если в подробно стандартизированных языках вещей, "жить мешающих", пруд пруди, а тут при ряде второстепенных опущений никому ещё это не помешало, то чего огород городить.

Ну вот представьте, что вам досталось портировать на ББ код с "оберон платформы", в которой обращение к несуществующему элементу массива возвращало 0, а запись туда игнорировалась. Да, разработчики "того" рантайма сделали не очень умно (но по спеке, хе-хе). А писатели, использующие тот компилятор, посчитали такое поведение "само собой разумеющимся" и вовсю использовали эту особенности при разработке софта. Ну и что вы будете делать? Ну допилите ББ'ый рантайм до такого же поведения, да. Будет ощущение, что сделали какашку, ну что ж поделаешь, если оно какашка и его надо заставить работать. А потом вам надо будет взять код еще с одной платформы, где более умные разработчики рантайма делают ASSERT при обращении к несуществующему элементу. Но вот такие же неумные писатели софта обрабатывают такой ASSERT и строят на этом какую-то логику. Ну да, вы и эту проблему обойдете, не сомневаюсь. Однако "опущения" в описании языка вам уже не будут казаться настолько второстепенными.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #13 : Март 07, 2011, 04:11:57 pm »
Вместо того, чтобы развязать руки от второстепенных мелочей и пройти по грани "необходимого и достаточного", решив за то же время целый ряд задач.

Я очень хорошо понимаю ваше желание "сэкономить" и недовольство большими спеками. Никто их не любит, все хотят быстро, качественно и дешево. Проблема в том, что это не работает "в большом" - в больших системах, с большим количеством разработчиков, с большим временем жизни.

Как Вирт с ПК, ОС и прикладными пакетами, или новосибирцы с Кроносом.

И опыт Вирта с его оберон-ОС'ом лишнее тому подтверждение. Где эта оберон-ОС? Кто ее будет тащить на новое железо? Не, напишут с нуля новую, еще более правильную. Но такую же невостребованную.

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Тезис про Oberon, C, CP и ObjC.
« Ответ #14 : Март 07, 2011, 08:26:12 pm »
Вот тут большое недопонимание касательно невостребованности.

Это иллюзия.

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

И жизнь это подтверждает - в той же пром. автоматизации народ, помыкавшись со стандартными решениями, принятыми для бизнес-автоматизации, плюет часто на это дело и делает свои CASE-системы "под задачу", примеров масса. Кстати, и Дельфа дольше всего выживала именно в этой сфере.