LINUX.ORG.RU

Component Pascal и Oberon


0

2

Собственно, сабж. Был ли у кого опыт программирования и каковы впечатления. Нужно ли это знать как разработчику?

★★★★★

Последнее исправление: LongLiveUbuntu (всего исправлений: 1)

>Был ли у кого опыт программирования и каковы впечатления.

Про опыт и впечатления почитай на форуме.

>Нужно ли это знать как разработчику?

Небесполезно:) Я иногда использую Component Pascal в виде BlackBox Component Builder для быстрой разработки небольших программ с гуем.

Наиболее свежий Оберон-07 больше подходит для встраиваемых программ. Например его австралийский вариант с ИДЕ Astrobe.

quickquest ★★★★★
()

Сабж представляет собой оторванное от реальности теоретическое построение, не пригодное для создания комплексных программ. Имхо, не нужен.

geekless ★★
()
Ответ на: комментарий от quickquest

>Наиболее свежий Оберон-07 больше подходит для встраиваемых программ.

А Си чем не подходит? Ну или Ада.

geekless ★★
()
Ответ на: комментарий от geekless

>Сабж представляет собой оторванное от реальности теоретическое построение, не пригодное для создания комплексных программ.

«А мужики-то не знают!..» (с) Применения.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

> «А мужики-то не знают!..» (с) Применения.

бортовое ПО российских спутников связи, проект ГЛОНАС

то-то они спутники недавно потеряли

korvin_ ★★★★★
()
Ответ на: комментарий от quickquest

«А мужики-то не знают!..» (с) Применения.

Там wfrr, случаем, не предводитель?

baverman ★★★
()
Ответ на: комментарий от geekless

Да нет, это просто общий долбоебизм, нарастающий в стране...

LongLiveUbuntu ★★★★★
() автор топика
Ответ на: комментарий от korvin_

>то-то они спутники недавно потеряли

По официальной версии спутники потеряли из-за неправильно написанной формулы в технической документации на заправку разгонного блока ДМ-03.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Так какие достоинства у языка-то?

У него две фичи: 1. Примитивный, урезанный до уровня «моя твой понимай» синтаксис, способствующий появлению ошибок в алгоритме из-за невозможности компактно выразить мысль. 2. Такой же урезанный рантайм, к которому прикручена сборка мусора.

geekless ★★
()
Ответ на: комментарий от geekless

>Так какие достоинства у языка-то?

Достоинтва любого языка - это абстракция. Они проявляются только в связке «задача+язык».

Цитата для Ъ: Компонентный каркас BlackBox Framework абстрагирует разработчика от платформы, предоставляя высокоуровневые абстракции для построения сложных программных систем с длительным периодом эволюции и высокими требованиями к надёжности.

Среда поддерживает модель графического интерфейса, основанную на составных документах, что даёт высокую гибкость для задач научной и деловой графики. На BlackBox легко разрабатываются сложные объекты-контейнеры, различным образом комбинирующие в себе иерархию других графических объектов.

Это актуально для обширной категории программистов-«непрофессионалов» — инженеров и ученых всевозможных специальностей и др. у которых нет времени на освоение языков и инструментов профессиональных программистов, но есть необходимость быстро и правильно решать текущие задачи.

P.S. Я использую BlackBox как раз для быстрого решения «сиюминутных_задач» :)

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

>Они проявляются только в связке «задача+язык».
Покажите эти задачи.
Сформулирую вопрос более конкретно: в каких задачах Оберон показывает свои преимущества. (И какие они у него, таки, эти преимущества.)

Компонентный каркас BlackBox Framework абстрагирует разработчика от платформы, предоставляя высокоуровневые абстракции для построения сложных программных систем с длительным периодом эволюции и высокими требованиями к надёжности.


Найдите 10 отличий:

Java абстрагирует разработчика от платформы, предоставляя высокоуровневые абстракции для построения сложных программных систем с длительным периодом эволюции и высокими требованиями к надёжности.


.NET абстрагирует разработчика от платформы, предоставляя высокоуровневые абстракции для построения сложных программных систем с длительным периодом эволюции и высокими требованиями к надёжности.


D абстрагирует разработчика от платформы, предоставляя высокоуровневые абстракции для построения сложных программных систем с длительным периодом эволюции и высокими требованиями к надёжности.


Haskell абстрагирует разработчика от платформы, предоставляя высокоуровневые абстракции для построения сложных программных систем с длительным периодом эволюции и высокими требованиями к надёжности.


Common Lisp абстрагирует разработчика от платформы, предоставляя высокоуровневые абстракции для построения сложных программных систем с длительным периодом эволюции и высокими требованиями к надёжности.


Но не будем про Лисп, недопаскаль с Лиспом сравнивать как-то даже грустно. Но напоминаю, что Java и .NET уже изобрели. Изобретать их еще раз совершенно не нужно.


Среда поддерживает модель графического интерфейса, основанную на составных документах, что даёт высокую гибкость для задач научной и деловой графики. На BlackBox легко разрабатываются сложные объекты-контейнеры, различным образом комбинирующие в себе иерархию других графических объектов.


Т.е. это явления одного порядка: ActiveX, Visual Basic, .NET, BlackBox.

актуально для обширной категории программистов-«непрофессионалов»...

программистов-«непрофессионалов»...


«непрофессионалов»...


обширной категории...



Закапывайте.
Историй про программирующих домохозяек мы уже наслушались полтора десятилетия назад. Просто кое-кому в отделе маркетинга надо меньше курить.

P.S. Я использую BlackBox как раз для быстрого решения «сиюминутных_задач»


Я для решения сиюминутных задач использую bash и Ruby. Использовать компилируемый, статически типизированый язык, да еще и с урезанным синтаксисом для «сиюминутных задач»... Даже не знаю, что тут сказать.

Давайте не будем обсуждать тут шедевры пиарщиков-«непрофессионалов»(с), а поговорим таки за реальные свойства, достоинства и недостатки языка.

geekless ★★
()
Ответ на: комментарий от geekless

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

LongLiveUbuntu ★★★★★
() автор топика
Ответ на: комментарий от geekless

>Покажите эти задачи.

Например, прикладной софт на корабельных компьютерах, на которых нет инета, компиляторов, сред разработки... короче нет ничего. У меня на карманной флешке (2ГБ) помещается [Puppy Linux + wine + BlackBox] и эта связка успешно раборает в командировках, когда задачи заранее не всегда известны, а решать их надо.

Найдите 10 отличий: Java,.NET,D,Haskell,Common Lisp...

«Элементарно Ватсон!» (с) Компактность - главное преимущество BlackBox. 50 МиБ в распакованном виде мало кто может предложить.

Я для решения сиюминутных задач использую bash и Ruby.

Время освоения «непрофессионалами» bash и Ruby и число ошибок, создаваемых ими много больше, чем в BlackBox.

Давайте не будем обсуждать ... «непрофессионалов»(с)

А что можно им предложить взамен? Они тоже люди, хотят и работать и кушать :)

quickquest ★★★★★
()
Ответ на: комментарий от geekless

> 2. Такой же урезанный рантайм, к которому прикручена сборка мусора.
А вот я не понимаю, как может сочетаться что-то встраиваемое со сборкой мусора. Например, как сделать алгоритм АЦП - ведь сборка мусора гарантирует пунктирный характер выполнения программы. Или я чего-то не знаю о новых технологиях?

den73 ★★★★★
()
Ответ на: комментарий от quickquest

Компактность - главное преимущество BlackBox

Вы не в состоянии отличить язык от среды разработки? «Опыт программирования в Delphi и в MSVC», ага.

50 МиБ в распакованном виде мало кто может предложить

$ LANG=C pacman -Qi gcc binutils|grep Size
Installed Size : 58252.00 K
Installed Size : 11008.00 K
$ LANG=C pacman -Qi ruby|grep Size
Installed Size : 17940.00 K
$ LANG=C pacman -Qi tcl tk|grep Size
Installed Size : 5804.00 K
Installed Size : 5200.00 K

Ну и т.п.

Время освоения «непрофессионалами» bash и Ruby и число ошибок, создаваемых ими много больше, чем в BlackBox.

Следовало написать:

4.2 — Время освоения «непрофессионалами» bash и Ruby и число ошибок, создаваемых ими много больше, чем в BlackBox.

Во-первых, любой код на любом языке программирования одинаково не понятен любому «непрофессионалу». Т.е. понятен чуть менее, чем никак.

Во-вторых, вы всерьёз полагаете что для программиста это нагромождение написанных капсом IF-ов, PROCEDURE, BEGIN-ов и т.п. понятнее и удобочитаемее, чем четкая и лаконичная программа на Ruby или Python, где алгоритм находит прямое и ясно прослеживаемое отражение в коде? о_О Простите, вы вообще Ruby видели? Вы хотя бы про Python слышали?

Ну давайте посмотрим на этот язык, в котором «время освоения и число создаваемых ошибок много меньше». Внезапно, ну очень readable код:

MODULE Trees; (* экспорт: Tree, Node, Insert, Search, Write, Init *) 
     IMPORT Texts, Oberon; (* экспорт только для чтения: Node.name *)

     TYPE 
          Tree* = POINTER TO Node; 
          Node* = RECORD 
               name-: POINTER TO ARRAY OF CHAR; 
               left, right: Tree 
          END;

     VAR w: Texts.Writer;

     PROCEDURE (t: Tree) Insert* (name: ARRAY OF CHAR); 
          VAR p, father: Tree; 
     BEGIN p := t; 
          REPEAT father := p; 
               IF name = p.name^ THEN RETURN END; 
               IF name < p.name^ THEN p := p.left ELSE p := p.right END 
          UNTIL p = NIL; 
          NEW(p); p.left := NIL; p.right := NIL; NEW(p.name, LEN(name)+1); COPY(name, p.name^); 
          IF name < father.name^ THEN father.left := p ELSE father.right := p END 
     END Insert;

     PROCEDURE (t: Tree) Search* (name: ARRAY OF CHAR): Tree; 
          VAR p: Tree; 
     BEGIN p := t; 
          WHILE (p # NIL) & (name # p.name^) DO 
               IF name < p.name^ THEN p := p.left ELSE p := p.right END 
          END; 
          RETURN p 
     END Search;

     PROCEDURE (t: Tree) Write*; 
     BEGIN 
           IF t.left # NIL THEN t.left.Write END; 
           Texts.WriteString(w, t.name^); Texts.WriteLn(w); Texts.Append(Oberon.Log, w.buf); 
           IF t.right # NIL THEN t.right.Write END 
     END Write;

     PROCEDURE Init* (t: Tree); 
     BEGIN NEW(t.name, 1); t.name[0] := 0X; t.left := NIL; t.right := NIL 
     END Init;

BEGIN Texts.OpenWriter(w) 
END Trees.

(источник: http://www.uni-vologda.ac.ru/oberon/o2rus.htm)

Думаю, на этом дискуссию о легкости изучения Оберона можно и закончить: аргументы излишни, он сам за себя всё сказал.

geekless ★★
()
Ответ на: комментарий от den73

>А вот я не понимаю, как может сочетаться что-то встраиваемое со сборкой мусора.

Вот и я не понимаю. Видимо, такой вот нынче «рантайм» пошел.

geekless ★★
()

Тогда можно еще такой вопрос? Если бы вам предложили реализовывать некий проект на С++\С# либо на Oberon\Component Pascal, то что бы вы выбрали и почему при условии, что одинаково хорошо знаете эти языки?

LongLiveUbuntu ★★★★★
() автор топика
Ответ на: комментарий от geekless

Всё очень просто. Oberon — предок Явы.

KblCb ★★★★★
()
Ответ на: комментарий от geekless

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

BlackBox удобен не для домохозяек, а для специалистов (но не программистов), которые в состоянии распарсить приведённый пример (MODULE Trees;). Компонентная модель BlackBox позволяет не копаться в исходниках готовых модулей, а использовать их на уровне понимания интерфейсной части.

Простите, вы вообще Ruby видели? Вы хотя бы про Python слышали?

Ага! И утверждаю, что CP проще, чем Ruby с его «си-звращённым» синтаксисом :)

четкая и лаконичная программа на Ruby или Python, где алгоритм находит прямое и

ясно прослеживаемое отражение в коде?

Она «четкая и лаконичная» только для «профи», которые знают не только язык но и его библиотеки. У меня довольно большой опыт общения со специалистами, работающими в длительных морских экспедициях и на удалённых от цивилизации военных полигонах. Pascal (и основы BlackBox) они понимают и могут работать с ним самостоятельно. А Ruby или Python для них - «тёмный лес».

P.S. BlackBox не идеален, но в его нише конкурентов не видно, к сожалению.

quickquest ★★★★★
()
Ответ на: комментарий от ilias

> работающими в длительных морских экспедициях и на удалённых от цивилизации военных полигонах
Ну Вы всё же ответьте. Как быть - вот летит туча вражеских ракет. А оберон-на-чипе взял в руки веник и сказал «отстаньте от меня, у меня санитарный час». Я как раз недавно писал (на Дельфи) программу для чтения данных с АЦП и построения графиков. И, хотя частота чтения не превышает 20-30 гц, я не решился писать эту задачу на Лиспе.

den73 ★★★★★
()
Ответ на: комментарий от quickquest

>BlackBox удобен не для домохозяек, а для специалистов (но не программистов), которые в состоянии распарсить приведённый пример (MODULE Trees;)

Приведенный пример способен сходу распарсить далеко не каждый программист-императивщик, спокойно читающий любой другой Си- и Паскаль-подобный язык в темноте с закрытыми глазами. Превратить синтаксис в кашу из капса и спецсимволов — тут нужен особый талант.

Компонентная модель BlackBox позволяет не копаться в исходниках готовых модулей, а использовать их на уровне понимания интерфейсной части.


Она «четкая и лаконичная» только для «профи», которые знают не только язык но и его библиотеки.


Взаимоисключающие параграфы. Так ваши специалисты всё-таки в состоянии понять, что такое интерфейс и библиотеки, или нет?


Компонентная модель BlackBox позволяет не копаться в исходниках готовых модулей, а использовать их на уровне понимания интерфейсной части.


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

Ага! И утверждаю, что CP проще, чем Ruby с его «си-звращённым» синтаксисом :)


Лолшто? Не стыдно писать подобный бред? Вы правда не видели Ruby или просто фанатик Вирта? А назовите-ка характерные признаки си-синтаксиса в Ruby. Мню, ими, по вашему мнению, окажется присваивание через равно. Безусловно, это главный и критический недостаток всех языков, кои не черпали из источника мудрости в спецификациях Паскаля.

geekless ★★
()
Ответ на: комментарий от geekless

> Ну давайте посмотрим на этот язык

Вообще, идея сделать ключевые слова в верхнем регистре - абсолютно идиотская. Я примерно догадываюсь, что уши растут из лиспа, где применено это же идиотское решение, которое теперь очень тяжело исправить. ВПОЛНЕ ОЧЕВИДНО, ЧТО ВЕРХНИЙ РЕГИСТР ПО СРАВНЕНИЮ С НИЖНИМ ЧИТАЕТСЯ ГОРАЗДО ХУЖЕ. Несмотря на то, что на Паскале я пишу ежедневно, мне противно видеть процитированный код.

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

den73 ★★★★★
()
Ответ на: комментарий от geekless

Стандарт которой огромен и плохо воспринимаем? Плюс прожорливость системных ресурсов. Не-не, только не Ада.

LongLiveUbuntu ★★★★★
() автор топика
Ответ на: комментарий от den73

>Как быть - вот летит туча вражеских ракет. А оберон-на-чипе взял в руки веник и сказал «отстаньте от меня, у меня санитарный час».

Оберон скажет: «отстаньте от меня, ракетами занимается аппаратная жёсткая логика», у которой нет «санитарного часа»:)

для чтения данных с АЦП и построения графиков. И, хотя частота чтения не

превышает 20-30 гц, я не решился писать эту задачу на Лиспе.

В стародавние времена я в таких задачах использовал микроконтроллер типа КМ1816ВЕ51 с достаточной собственной буферной памятью. А новые АЦП тоже бывают разные, некоторые с памятью.

В задачах «мягкого реального времени» критерием применимости может быть только допустимое время запаздывания результатов из-за буферизации и накладных расходов на первичную обработку.

quickquest ★★★★★
()
Ответ на: комментарий от den73

> Я примерно догадываюсь, что уши растут из лиспа

нет, Вирт хотел снизить количество цветов для подсветки синтаксиса.

да и на CL и Scheme уже давненько не пишут в верхнем регистре

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

меня больше раздражает призыв использовать пропорциональный шрифт в листингах/редакторах, а так же склонность записывать несколько выражений в одну строку, типа

NEW(p); p.left := NIL; p.right := NIL; NEW(p.name, LEN(name)+1); COPY(name, p.name^);

это конечно дело добровольное, но читать такое неприятно и неудобно

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

>Вирт хотел снизить количество цветов для подсветки синтаксиса

И создал язык, который без подсветки синтаксиса невозможно читать вообще...

geekless ★★
()
Ответ на: комментарий от geekless

>Превратить синтаксис в кашу из капса и спецсимволов — тут нужен особый талант.

Дык, я же говорил, что BlackBox не идеален. Например в Zonnon проблема капса решена изящно, ключевые слова записываются либо только в нижнем, либо только в верхнем регистре «array» или «ARRAY», а «arRaY» - просто идентификатор.

P.S. «Для любого языка совершенство достигается только к моменту краха» (c) не_ помню_кто_сказал :)

quickquest ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

Да, не нужен потому, что есть Python. Язык более лаконичный и изящный с привязкой к массе библиотек.

ilias
()
Ответ на: комментарий от quickquest

> Дык, я же говорил, что BlackBox не идеален
По всей видимости, мне не стоит ждать ответа на вопрос о сборке мусора?

den73 ★★★★★
()
Ответ на: комментарий от korvin_

> да и на CL и Scheme уже давненько не пишут в верхнем регистре
Писать-то не пишут, однако при печати всё равно всё выводится в верхнем регистре.

den73 ★★★★★
()
Ответ на: комментарий от ilias

> Язык более лаконичный и изящный с привязкой к массе библиотек.
Это Питон не нужен, потому что он очень тормозной. В военном деле скорость играет не последнюю роль.

den73 ★★★★★
()
Ответ на: комментарий от quickquest

> Оберон скажет: «отстаньте от меня, ракетами занимается аппаратная жёсткая логика», у которой нет «санитарного часа»:)
Однако, это сильно сужает область его применения.

den73 ★★★★★
()
Ответ на: комментарий от den73

> Это Питон не нужен, потому что он очень тормозной. В военном деле скорость играет не последнюю роль.

Зато пасквилянтское отродье --- чемпионы мира, да?

ilias
()
Ответ на: комментарий от den73

>По всей видимости, мне не стоит ждать ответа на вопрос о сборке мусора?

Я думаю, после откровения о си-подобном синтаксисе в Ruby, от quickquest вообще не стоит ждать ответов по существу...

geekless ★★
()
Ответ на: комментарий от ilias

Я не знаю насчёт быстродействия оберона, но

http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=python&lang...

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

den73 ★★★★★
()
Ответ на: комментарий от den73

>Однако, это сильно сужает область его применения.

«Нельзя объять необъятное» (c) Козьма Прутков.
Язык аппаратной жёсткой логики заведомо быстрее любого программного языка.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

> Язык аппаратной жёсткой логики заведомо быстрее любого программного языка.
С не имеет подобных ограничений, когда речь идёт о реальном времени. Конечно, он медленнее аппаратных решений, но получается, что он более универсален, чем Оберон, и, оставаясь в рамках Оберона, это различие устранить не получится.

den73 ★★★★★
()
Ответ на: комментарий от den73

Минуточку! Вы путаете кислое с длинным. Речь идет не о пацкале, а о Component Pascal и Oberon, которые в принципе основаны на виртуальных машинах и ни разу не статически компилируемые.

да ещё и с таким плохим дизайном, как у Питона

Вы имеете сказать что-то против дизайна интерпретатора Питона?

ilias
()
Ответ на: комментарий от ilias

>а о Component Pascal и Oberon, которые в принципе основаны на виртуальных машинах и ни разу не статически компилируемые.

о_О И давно это с ними?

geekless ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.