OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 10:14

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 86 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Суббота, 28 Ноябрь, 2020 17:31 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 293
Откуда: Russia
budden писал(а):
...
С таким уровнем аргументации - только вредить Оберону. Я много читал разных ресурсов, в том числе Хабр и RSDN, где пытались продвигать Оберон таким методом. Типа, вы все идиоты и ничего не понимаете, и сейчас я вам принесу доброе и вечное и дальше начинался трэш и угар, когда черное это белое, а белое - черное и немного с полосками. Итог очевиден. Если ты плохо разбираешься в вопросе, который пытаешься донести до общественности, то не стоит и пытаться.

Для начала, перенеси на Оберон сишный код с union'ами. Чтобы получился адекватный код. Ну или паскалевский с вариантными записями.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Суббота, 28 Ноябрь, 2020 18:22 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Не понял, к какой именно части моих высказываний относится данный комментарий. В целом он выглядит слегка недоаргументированным. Я, конечно, не эксперт по Оберону, но в какой-то степени его уже освоил. Учитывая, что мне приходилось писать где-то на десятке языков, я достаточно уверен в своих возможностях по сравнению языков. Давай пример кода с юнионами и определение адекватности. Пока что я вижу ровно одну проблему: нагрузка на кучу там, где в Си такой нагрузки нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Суббота, 28 Ноябрь, 2020 19:08 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Ну, допустим, ещё копирование таких записей присваиванием будет более трудоёмко.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Суббота, 28 Ноябрь, 2020 19:32 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Сравнивать Оберон с Си - мне как "пограничнику" и бывшему профи-программеру абсолютно понятно бесспорное преимущество Оберона.
Кроме одного: нет ИТ-контор, поддерживающих и продвигающих Оберон с IDE.
Американские конторы, естественно, продвигают свое.
Поэтому в мозгах массы народа, направляющегося по жизни в сторону ИТ, Оберон никак не присутствует.
Вот и вся проблема.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Воскресенье, 29 Ноябрь, 2020 14:23 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 293
Откуда: Russia
Цитата:
Давай пример кода с юнионами
Денис, это же ты утверждаешь, что with это какая-то там безопасная замена union. Что само по себе ошибочно. Ну так продемонстрируй, докажи свои утверждения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Воскресенье, 29 Ноябрь, 2020 15:21 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Буду цитировать.

Валерий Лаптев писал(а):
Сравнивать Оберон с Си - мне как "пограничнику" и бывшему профи-программеру абсолютно понятно бесспорное преимущество Оберона.
Кроме одного: нет ИТ-контор, поддерживающих и продвигающих Оберон с IDE.
Американские конторы, естественно, продвигают свое.
Поэтому в мозгах массы народа, направляющегося по жизни в сторону ИТ, Оберон никак не присутствует.
Вот и вся проблема.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Воскресенье, 29 Ноябрь, 2020 16:41 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Sergej Durmanov писал(а):
Цитата:
Давай пример кода с юнионами
Денис, это же ты утверждаешь, что with это какая-то там безопасная замена union. Что само по себе ошибочно. Ну так продемонстрируй, докажи свои утверждения.

Я не утвержда, что with - это замена юнион. Я просто это плохо сформулировал, и уже попросил к форме не придираться. На самом деле union заменяется наследованием записей, а with - это то, что пригодится при работе с этими записями. Без тега типа в той или иной форме безопасная замена юниона всё равно не получится, а поскольку тег типа в объектах на куче уже есть, а на стеке, наверное, его можно хранить отдельно, то вводить ещё один тег для уточнения варианта union-a нет смысла. Так что если даже и впилить в оберон юнионы, то они должны быть размеченными и будут мало отличаться от наследования записей. Кроме того, вводить два похожих механизма - это не по обероновски. В любом случае, без определения адекватности кода доказывать что-либо не вижу смысла, поскольку можно любой код объявить неадекватным.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Понедельник, 30 Ноябрь, 2020 08:32 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Info21 писал(а):
Буду цитировать.

Блин, меня здесь цитируют чаще, чем Жванецкого... :lol: :lol: :lol: :lol: :lol:

В подтверждение моих слов можно посмотреть в сторону ТурбоПаскаля.
Была контора, которая продвигала IDE с Паскалем.
И мы видим результат: до сих пор в России ТурбоПаскаль очень популярен в обучении начинающих программистов.
Последнее время его несколько потеснил ПаскальАВС, но опять же - ПАСКАЛЬ.
Однако контора сдулась - и где теперь Паскаль?

Возможно, роль Борланда в России сможет играть JetBrains.
Но они как-то совсем в эту сторону не смотрели.
Надо бы их как-то направить.
Вторая контора, которая Оберону была бы весьма полезна - Базальт.
Но и там Обероном никто не занимается, а занимаются Альтом то есть практически С/С++).
А Иван недавно поставил на Альт БлэкБокс без танцев с бубном... :)

Если в Москву можно будет приехать в конце января - я с ними встречусь и побеседую.
Надо их тоже как-то направить в сторону Оберона.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Понедельник, 30 Ноябрь, 2020 12:01 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
А почему именно Базальт? Специфическая предметная область?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Понедельник, 30 Ноябрь, 2020 13:33 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
У них есть прекрасная ось Альт Образование. Я уже полгода пишу с нее.
Поставил - и работаю прямо из коробки.
В системе для обучения начинающих программеров есть все. В том числе FreePascal и Лазарус.
А также все по С++.
Даже СиШарп есть. И Питон, если хочется
И устанавливается в полпинка все остальное, если хочется.
Гит - из коробки.
Если сделать пакет для установки ББ или какого-то IDE Оберона - включить его в репозиторий

Есть сообщество, форум, несколько каналов в Телеге, есть Вики... Есть репозиторий Сизиф...
Есть ученик Лукина Артем, который сам для своей школы на базе Альта сделал свой дистрибутив.
Альт достаточно давно известен в России и, на мой взгляд, самая реальная ось для установки в образовательных учреждениях.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Понедельник, 30 Ноябрь, 2020 16:01 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Понял, спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Вторник, 01 Декабрь, 2020 01:06 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Валерий Лаптев писал(а):
сделать пакет для установки ББ или какого-то IDE Оберона - включить его в репозиторий
Не бережёте Вы себя, Валерий...
Когда всерьёз надумаете и соберётесь это делать, наденьте непромокающий плащ и мушкетёрскую шляпу...
А - лучше - сразу в полный ОЗК облачиться...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Вторник, 01 Декабрь, 2020 04:42 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Валерий Лаптев писал(а):
Если сделать пакет для установки ББ или какого-то IDE Оберона - включить его в репозиторий.

Думаю, что к этому придём. Есть повод и Блэкбокс причесать, навести лоск.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Вторник, 01 Декабрь, 2020 09:51 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Иван Денисов писал(а):
Думаю, что к этому придём. Есть повод и Блэкбокс причесать, навести лоск.
Правовые вопросы копирайтного плана - все решены?
А что там граждане коллеги заграничные, которые его "ведут" - полные взаимные понимание и сотрудничество? Или у них - своё "генеральное видение" развития системы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Вторник, 01 Декабрь, 2020 10:05 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Да, с копирайтом нет проблем. The 2-Clause BSD License допускает всякие варианты. Так что в репозиторий Alt-линукса нет проблем включиться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Четверг, 03 Декабрь, 2020 21:02 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 473
Занимательные циферки (из соседней темы: "Пузырь браузеров и стандартов W3C"):
https://habr.com/ru/company/dcmiran/blog/493018/
Цитата:
Известный Linux-разработчик, соавтор графического протокола Wayland, пользовательского окружения Sway и почтового клиента Aerc, Дрю ДеВолт (Drew DeVault) провёл анализ спецификаций W3C, которым должны соответствовать современные браузеры.

Он скачал 1217 спецификаций с помощью wget и подбил статистику утилитой wc -w (количество слов). Оказалось, что весь текущий каталог спецификаций W3C составляет 114 млн слов. Для сравнения, объём спецификации C11 составляет 208 220 слов, а длина романа «Война и мир»188 088 слов.
...
C++17 (PDF, последний открытый черновик): 576 344
...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Четверг, 03 Декабрь, 2020 21:06 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 473
budden писал(а):
Во многих применениях спокойно можно заменить юнионы на записи Оберона и наследование.

Для случаев, когда для одного и того же объекта необходимы разные интерпретации его типа в зависимости от контекста (внешнего по отношению к объекту), не помешают вариантные записи или/и absolute.

Для Паскаля когда-то предлагалась удобная форма вариантного типа (почему именно "предлагалась" -- проект Mselang (альтернатива для Freepascal) заброшен после смерти автора -- известного "паскалиста" благодаря проекту MseIDE/GUI и др.):
https://gitlab.com/mseide-msegui/mselang/-/wikis/home/mselang_objects#variant-part
Код:
type
 objty = object
  f1: int32;
  (f2: int32; f3: int32;);
  (f4: int32;);
 end;

Вариантные части (в скобках) -- в конце записи. Выше f2 and f4 -- в одном участке памяти. Компилятор контролирует совместимость, ограничения для вариантности -- "managed types" (динамические массивы, контролируемые указатели и т.п.). Аналогичные требования и для паскалевской директивы "absolute" -- размещение переменных в одном и том же месте.

Контролируемые вариантные записи и absolute, вроде бы, вряд ли прямо уж криминальны (всё же, их применение лучше, чем различные "низкоуровневые" хаки, приведение типов по месту).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Четверг, 03 Декабрь, 2020 21:11 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 473
budden писал(а):
Сами по себе теги типа дают неустранимые накладные расходы. Т.е. конечно может быть где-то и есть докторская о том, как их убрать, но мне не попадалась...

Где-то было расширение для Оберонов, предлагающее "открытоподобные" массивы -- в качестве локальных переменных, где их длина задаётся в виде константных выражений на основе аргументов процедуры (реализация "резинового" стека на манер Ada).
По аналогии, в качестве бреда, исходя из предположения, что уже отработана техника условно произвольных (с ограниченими) константных выражений и выявления необходимых зависимостей, можно реализовать тип "динамической" записи в таком стиле:
Код:
TYPE Rec = RECORD
  size: INTEGER;
  a: ARRAY size OF INTEGER;
  b: ARRAY size * 2 OF INTEGER;
END

Выше размеры массивов a и b зависят от size -- ака "дискриминант" записи на манер Ada. Операция NEW для такой записи (указателя) должна требовать обязательной установки значения для поля size, пусть в стиле Modula:
Код:
VAR r: POINTER TO Rec;
...
NEW(r, size := 10);

В отличие от случая, если бы поля a и b имели бы тип указателя на открытый массив, в данном случае предполагается единое выделение памяти для всей записи (вместо отдельных дополнительных операций для каждого массива), нет скрытого хранения размеров массивов (где-то в "тегах" для каждого массива), нет хранения указателей на массивы.

В случае отсутствия полей-"дискриминантов" в "динамической" записи размеры массивов необходимо указывать в операции NEW:
Код:
TYPE Rec = RECORD
  a: ARRAY OF INTEGER;
  b: ARRAY LEN(a) * 2 OF INTEGER;
END;
...
VAR r: POINTER TO Rec;
...
(* компилятор для NEW должен требовать установки размера для поля "a": *)
NEW(r, LEN(a) := 10);


Такие массивы/динамические записи не ликвидируют "теги" для типов, но снижают их "нагрузку", уменьшают потребность в обходных хаках (особенно в языке с ограниченными операциями над указателями).

Конструктив не изменяется, если в язык ввести и "неконтролируемые" массивы (без "тегов") для "ручного" управления памятью (что, скорее, возможно в той же Modula) -- аналог "array[0..0] of ..." в Pascal/Delphi (может быть в иной форме, чем результат Си-шного влияния, аля "UNTRACED ARRAY OF ...").


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Четверг, 03 Декабрь, 2020 23:23 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Ну не знаю, можно придумать миллион частных оптимизаций для частных случаев, но Оберон не про это. Он вытянут в сторону простоты. Наверное, Сергей Дурманов написал правду, и вытянут он ради учёбы, а не ради безопасности. Но вот нужен ли такой язык в промышленности? Правда, это уже явная ересь в рамках данного форума, развивать это нет желания.

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

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

В частности, С++ в этом плане просто неудачно спроектирован и там есть лишняя сложность. Оберон, скажем так, спроектирован почти хорошо, но он оптимален только для программ не больше какого-то определённого размера. Ну вот тупо одноуровневое пространство имён модулей - это уже ограничение на сложность программ, которые удобно будет поддерживать на Обероне. В Яве же недаром есть составные имена что-то.что-то.ещё-что-то. Так же как с файловой системой - пока файлов мало, их удобно хранить в одной директории, но когда их много - надо как-то структурировать. И это только одно из направлений, по которым язык может усложняться. При том в A2 уже практически в этот потолок упёрлись, получили конфликты и сделали костыль, который фактически делает двухуровневую иерархию имён модулей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон против Си и Си++, часть 2
СообщениеДобавлено: Пятница, 04 Декабрь, 2020 00:39 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
А как вы полагаете, есть некие сообщения, для выражения которых окажется недостаточно 33 знаков?

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

Вы упомянули Джаву - она, например, втягивает в язык понятие файла, и затем еще иерархические пространства имен. Зачем это нужно вообще в языке? Оберон прекрасно обходится без файла; модуль определяется как текст. Откуда эти тексты берутся и где хранятся - вообще вопрос не языка, а среды. Это существенно упрощает не только язык, но и среду, и жизнь вообще. Если решается настолько крупная задача, что число модулей умопомрачительное, и имена безжалостно конфликтуют - значит, требуется что-то подправить в среде, решить проблему внеязыковыми средствами. Но не трогать при этом язык, и не трогать программиста, который решает отдельную подзадачу, взаимодействует с пятью десятками модулей, а до остальных полутора тысяч ему дела нет.

Подобного рода "решение", кмк, есть и в человеке: у каждого человека насчитывается примерно не более 60 осмысленных контактов. Это позволяет индивиду жить как в глухой деревне, так и в бездонном мегаполисе: устройство психики таково, что более 60 человек она не может удерживать одновременно. Остальное просто отсекается - переводится в иерархии на уровень не особо осмысленных контактов. А Джава предлагает мне, когда нужно вызвать какую-нибудь плевую функцию, продумать весь путь до нее от самого начала вселенной.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 86 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB