Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Cyberax, Вы писали:
C>>Плевать, два потока, исполняющие один код я запустить уже не смогу. C>>А контекст нужно передавать ВСЕГДА (в 99.99% случаев), иногда только C>>можно для целей оптимизации использовать глобальные переменные.
СГ>А если система встроенная и там потоков нет?
Т.е. получаем, что оберон имеет всего лишь узкую нишу применения и не более того? Приведи-ка, плиз, реализации его в embedded systems, если не трудно, конечно...
(просто интересно )
К>Берём ситуацию, что в with ты забудешь один из типов по запарке, бывает такое, ну и оберон твой нихрена не скажет, всё будет ништяк, но работать-то будет в итоге прога не правильно.
If no type test is satisfied and if an ELSE clause is missing the program is aborted.
Еще один проект, в котором Н.Вирт участвовал в течение нескольких лет начиная с 1995 г., был посвящен созданию беспилотного вертолета, способного автономно пролететь по заданному маршруту (проект, предпринятый в the Institute of Automatic Control and Measurement; создание "умных" беспилотных летательных аппаратов вызывает огромный интерес во всем мире, в том числе и в России, и прежде всего, конечно, у военных). Н.Вирт написал для проекта все программное обеспечение, начиная с компилятора для процессора StrongARM и кончая бортовой управляющей системой реального времени. Бортовой компьютер (получивший, кстати, имя OLGA = Oberon Language Goes Airborne) оказался настолько компактным благодаря компактности и эффективности получившихся программ (использовалось подмножество языка Оберон), что вес машины удалось резко снизить по сравнению с предыдущими версиями конструкции — всего до 15 кг. (Потомки компьютера OLGA используются в компании weControl.)
Читатель может прикинуть, сколько весила бы машина, если бы ее ПО создавалось на основе таких популярных языков как Java или C++ — и когда был бы закончен проект. В качестве масштабного множителя можно предложить отношение объемов описаний языков — 16 стр. для Оберона, 200 для Java и больше 1000 для C++. )
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Курилка, Вы писали:
К>>Берём ситуацию, что в with ты забудешь один из типов по запарке, бывает такое, ну и оберон твой нихрена не скажет, всё будет ништяк, но работать-то будет в итоге прога не правильно.
СГ> If no type test is satisfied and if an ELSE clause is missing the program is aborted.
Супер
Значит вместо ошибки компиляции мы получим, что у заказчика прога просто закроется ничего даже не сказав, нет, ну такие системы понравятся заказчикам, особенно в критически важных приложениях такое поведение просто то, что нужно!
Сергей Губанов пишет:
> Бортовой компьютер (получивший, кстати, имя OLGA = Oberon Language > Goes Airborne) оказался настолько компактным благодаря компактности и > эффективности получившихся программ (использовалось подмножество языка > Оберон), что вес машины удалось резко снизить по сравнению с > предыдущими версиями конструкции — всего до 15 кг. (Потомки компьютера > OLGA используются в компании weControl.) >
Ой, ну не надо ля-ля. Однокристалки в 10 грамм веса с JVM на борту
сейчас почти в каждом мобильнике.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Курилка, Вы писали:
К>>Берём ситуацию, что в with ты забудешь один из типов по запарке, бывает такое, ну и оберон твой нихрена не скажет, всё будет ништяк, но работать-то будет в итоге прога не правильно.
СГ> If no type test is satisfied and if an ELSE clause is missing the program is aborted.
Теперь подумай о "грязности"
— И эти люди запрещают мне в носу ковыряться? (ц) Вовочка
К>>Берём ситуацию, что в with ты забудешь один из типов по запарке, бывает такое, ну и оберон твой нихрена не скажет, всё будет ништяк, но работать-то будет в итоге прога не правильно.
СГ> If no type test is satisfied and if an ELSE clause is missing the program is aborted.
Бедный беспилотный вертолет! . Хочешь доказать, что одну дополнительную проверку правильности программы можно переложить на рантайм?
СГ>Еще один проект, в котором Н.Вирт участвовал в течение нескольких лет начиная с 1995 г.,
Вирт добивается успеха не потому что использует Оберон, а потому что он Вирт Как будто, если бы он был вынужден исопльзовать С++, этот вертолет ждал бы полный крах! Или ему бы потребовалось времени больше? (Только если языка не знает ) Или отлаживал бы дольше?
СГ>Читатель может прикинуть, сколько весила бы машина, если бы ее ПО создавалось на основе таких популярных языков как Java или C++ — и когда был бы закончен проект. В качестве масштабного множителя можно предложить отношение объемов описаний языков — 16 стр. для Оберона, 200 для Java и больше 1000 для C++. )
Не может читатель такого прикинуть, т.к. принципиальной разницы между Oberon и Java, например, в данном случае не видит. Половину восхвалений Вирта и Оберона можно было заменить на объяснение, какова принципиальная проблема в использовании другого языка? Java например.
Здравствуйте, Cyberax, Вы писали:
C>Ой, ну не надо ля-ля. Однокристалки в 10 грамм веса с JVM на борту C>сейчас почти в каждом мобильнике.
Да я не против Java или даже C#, я против Си/Си++.
Только у Java и C# есть свои области применения (интернет/бизнес), а вот Си/Си++ позиционируются как системный/универсальный, так вот языки Oberon/Component Pascal позиционируются тоже как системный/универсальный как раз вместо Си/Си++, но не вместо Java и C#.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Только у Java и C# есть свои области применения (интернет/бизнес), а вот Си/Си++ позиционируются как системный/универсальный, так вот языки Oberon/Component Pascal позиционируются тоже как системный/универсальный как раз вместо Си/Си++, но не вместо Java и C#.
А какже сказанное тобою тут про встроенные системы и отсутствие потоков? Как это с универсальностью соотносится?
Здравствуйте, Кодёнок, Вы писали:
Кё> ...объяснение, какова принципиальная проблема в использовании другого языка? Java например.
Причина просто в том что Oberon — системный язык, в то время как Java или С# таковыми не являются.
Просто посмотрим на типы данных:
RECORD — запись в памяти, переменная размещается статически на стеке (аналог struct в C#, Java — просто отдыхает)
EXTENSIBLE RECORD, ABSTRACT RECORD — тоже самое, но с возможностью расширения типа (C# + Java отдыхают вместе, в Java нет статики, а в C# нет наследования от value type)
POINTER TO RECORD, POINTER TO EXTENSIBLE RECORD, POINTER TO ABSTRACT RECORD — в C# и Java этому эквивалентны sealed class, class и в некотором смысле interface, хотя ABSTRACT RECORD может иметь данные, в то время как интерфейс может иметь только методы.
ARRAY Dim1, Dim2, Dim3,... OF SomeType — многомерный массив чего-то, который размещается на стеке (C# + Java отдыхают вместе — там массивов на стеке не бывает)
POINTER TO ARRAY Dim1, Dim2, Dim3,... OF SomeType тот же массив только в динамической памяти
POINTER TO ARRAY OF SomeType динамический массив — только такие есть в Java и C#.
Передача параметров по ссылке (VAR, IN, OUT), например, процедуре
PROCEDURE f(VAR points: ARRAY OF REAL);
можно передать:
p1: ARRAY N OF REAL; (* статический массив *)
p2: POINTER TO ARRAY OF REAL; (* динамический массив *)
VAR|IN|OUT p3: ARRAY OF REAL; (* ссылка на массив полученная как входной параметр в объемлющей процедуре. Например для рекурсии, когда f(points) вызывает себя передавая points — полученный ею самой на предыдущем шаге рекурсии *)
Короче говоря, в языках Java и C# просто нету возможности создавать системно необходимые типы данных.
C>>Ой, ну не надо ля-ля. Однокристалки в 10 грамм веса с JVM на борту C>>сейчас почти в каждом мобильнике.
СГ>Да я не против Java или даже C#, я против Си/Си++.
СГ>Только у Java и C# есть свои области применения (интернет/бизнес), а вот Си/Си++ позиционируются как системный/универсальный, так вот языки Oberon/Component Pascal позиционируются тоже как системный/универсальный как раз вместо Си/Си++, но не вместо Java и C#.
Мало ли что как позиционируется. Интересно, что они реально могут. А как тут уже показали на паре примеров, до универсальности им далеко, и даже попыток что-то не делается.
P.S. Microsoft не суется с Windows во встроенные системы с повышенными требованиями к надежности, а Вирт похоже не собирается приводить язык на рынок бизнес- и десктопных приложений. А если кто-то возьмется, тот тут-то и начнутся в правильном и красивом языке хак на хаке и разные расширения компилятора, как у Borland. В научных статьях Вирта оно конечно здорово смотрится но не более того.
Кё>> ...объяснение, какова принципиальная проблема в использовании другого языка? Java например.
СГ>Причина просто в том что Oberon — системный язык, в то время как Java или С# таковыми не являются.
СГ>Просто посмотрим на типы данных:
Ну не все так плохо с Java Железо может быть специально предназначено для JVM и только для нее. Но можно признать. А почему тогда не C++?
Здравствуйте, Кодёнок, Вы писали:
Кё> А почему тогда не C++?
А потому что:
1) Полное исчерпывающее описание Оберона занимает 16-30 страниц (в зависимости от шрифта), а полное исчерпывающее описание С++ занимает несколько сотен страниц. Проблема обучения.
2) Сколько ресурсов надо затратить чтобы написать новый правильно работающий компилятор С++ под новый тип чипа просто не сопоставимо с той же работой для Оберона. В ETH портирование Оберона на новый тип чипа делают студенты за месяц.
3) Сопровождение кода на С++ эффективно может делать только автор этого кода, любой другой программист лучше заново по своему напишет чем разбереться с уже написанным.
4) С++ — unsafe, Оберон — safe (работа с адресной арифметикой, если таковая необходима, в Обероне осуществляется через внешние библиотеки).
Сергей Губанов пишет:
> К>А какже сказанное тобою тут про встроенные системы и отсутствие > потоков? Как это с универсальностью соотносится? > Так ведь в Си/Си++ многопоточность тоже появляется только через > внешние библиотеки.
Так ведь в языке С++ есть все средства, чтобы многопоточность можно было
сделать библиотеками (кстати, а в Oberon'е есть volatile?). В этом-то и
суть С++ — к нему с помощью библиотек почти все можно подключить.
Сергей Губанов пишет:
> Кё> ...объяснение, какова принципиальная проблема в использовании > другого языка? Java например. > Причина просто в том что Oberon — системный язык, в то время как Java > или С# таковыми не являются.
Да какой он, нафиг, системный? Он же не умеет работать без GC и
runtime-системы. Он такой же системный как и Java.
Сергей Губанов пишет:
> C>Ой, ну не надо ля-ля. Однокристалки в 10 грамм веса с JVM на борту > C>сейчас почти в каждом мобильнике. > Да я не против Java или даже C#, я против Си/Си++. > Только у Java и C# есть свои области применения (интернет/бизнес), а > вот Си/Си++ позиционируются как системный/универсальный
А он такой и есть, так как существует множество _работающих_ систем всех
видов на С++. Начиная от ОС и кончая сложными бизнес-приложениями. Это
доказательство того, что С++ — универсальный.
> так вот языки Oberon/Component Pascal позиционируются тоже как > системный/универсальный как раз вместо Си/Си++, но не вместо Java и C#.
Только вот себя они не доказали на реальных примерах (да и не докажут —
нафиг они никому кроме Вирта не нужны).
Здравствуйте, AndrewJD, Вы писали:
AJD>ИМХО только благодаря "борландовским поделкам" паскаль все еще остается популярным.
Однако Delphi 8, Delphi 2005 многих разочаровали. Например я так и остался на Delphi 7, а есть люди оставшиеся на Delphi 6 (поскольку в семерке для них ничего нового не было а QReports был заменен на Rave) или даже на Delphi 5.