Автор Тема: Язык программирования Оно  (Прочитано 14311 раз)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #15 : Январь 25, 2013, 02:48:36 pm »
2. Проект оберон делался без оглядки на мир С++.
Справедливости ради, полно ОСей писались без оглядки на мир С++, например Юникс :-) Да и языков тоже полно (старых, собственно Оберон делался без оглядки на плюсы просто потому, что плюсов тогда особо и не было).

Сейчас проектируя новый язык глупо игнорировать опыт С++ и других языков.
Y = λf.(λx.f (x x)) (λx.f (x x))

Valery

  • Full Member
  • ***
  • Сообщений: 101
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #16 : Январь 25, 2013, 06:39:03 pm »
1. Разница существенная.
Проект Оберон СРАЗУ разрабатывался как ос на языке высокого уровня. А unix - переписана на языке высокого уровня.
2. учет опыта С++ приводит к разработкам типа Java и C#.
Лучше от этого отрешиться и просто сформулировать - чего надо-то? 

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #17 : Январь 25, 2013, 06:47:20 pm »
1. Разница существенная.
Проект Оберон СРАЗУ разрабатывался как ос на языке высокого уровня. А unix - переписана на языке высокого уровня.
Ну, ок. Не юникс. Пусть будет BeOS.

2. учет опыта С++ приводит к разработкам типа Java и C#.
Лучше от этого отрешиться и просто сформулировать - чего надо-то?
Нет. Учет опыта С++ приводит к разработкам типа Rust и Go.

PS. А чем java не нравится?
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #18 : Январь 25, 2013, 07:51:05 pm »
http://tunilab.org/Ono/Philosophy/WYTIWYG

Цитата: Freeman
Проблема читабельности и понятности

 Недостатки языков Си-семейства хорошо известны: плохая читабельность, «ребусы», небезопасная и чреватая трудноуловимыми ошибками концепция препроцессора, и многое другое. Но когда я начал изучать функциональное программирование, оказалось, что все, за что ругаем C/C++ — функционалка. Точнее, это кривая-косая попытка всунуть часть подходов ФП в явно императивный язык. Кстати, именно поэтому Си так лаконичен, за что и любим программистами. Но цель все же не оправдывает средства.

 Взяв полноценные функциональные языки, вроде Haskell или Erlang, мы… увидим то же самое: плохую читабельность, «ребусы» и, разве что, вывод типов и сопоставление с образцом вместо препроцессора. Видя программу на ФП-языке, программист, не знакомый с парадигмой, пытается «зацепиться глазом» за привычные вещи: переменные, типы, стандартные операторы, вроде if, и пр. Но ничего этого в программе на ФП-языке, как правило, нет. Другая парадигма, и всё тут. Пока получается, что функционалку знают параноики самые въедливые, кому интересно разбираться в новом виде тайнописи.

Ого, какой феерический бред ))) Даже понравилось )))

Цитата: Freeman
Видя программу на ФП-языке, программист, не знакомый с парадигмой, пытается «зацепиться глазом» за привычные вещи: переменные, типы, стандартные операторы, вроде if, и пр. Но ничего этого в программе на ФП-языке, как правило, нет. Другая парадигма, и всё тут.
Да есть всё это, есть. Хаскелл так вообще является лабораторией типов...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #19 : Январь 25, 2013, 08:29:30 pm »
Цитата: Freeman
Тот же пример на Оно:
add(int x, y) = x + y;
inc(int x) = add(x, 1);

Ужасный пример! Либо уж полностью специфицируйте тип функции, либо вообще опустите спецификацию. А вот такая частичная, с недоговорками и необоснованными предположениями, что программист, читающий этот код, сам догадается (common sense, понимаешь ли!) -- не годится!
int add(int x, int y) = x + y;
int inc(int x) = add(x, 1);
Так ещё куда ни шло.
Однако хаскельный оригинал имхо лучше, только правильнее всё же делать так:
add :: (Num a) => a -> a -> a
add x y = x + y

inc :: (Num a) => a -> a
inc x = add x 1
Что же касается наглядности и понятности описаний, то тут во многом дело привычки. Кому-то нагляднее так, например:
function add(x: in Integer; y: in Integer) return Integer is
begin
  return x + y;
end add;

function inc(x: in Integer) return Integer is
begin
  return add(x, 1);
end inc;
и я их вполне понимаю...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Freeman

  • Newbie
  • *
  • Сообщений: 15
  • Завлаб
    • Просмотр профиля
    • Лаборатория Единой среды
Re: Язык программирования Оно
« Ответ #20 : Январь 26, 2013, 02:29:14 am »
2. учет опыта С++ приводит к разработкам типа Java и C#.
Под учетом опыта подразумевается ответ на вопрос "Зачем они это сделали?":
  • Анализ результатов. Типа, шаблоны -- это обобщенное программирование, полиморфизм времени компиляции.
  • Поиск исходных задач и воспроизведение среды, в которых они решались. Типа, на PDP-11 (?) поиск нулевого байта в строке делался одной командой.
Такая "обратная разработка" применяется ко всему, не только к C/C++. Например, окна нужны были в свое время для отображения информации большей, чем может вместить экран. Так в 2007-м году была предсказана Retina и модные нынче адаптивные интерфейсы. Просто были правильно воспроизведены условия, и логически мыслящие люди по разные стороны океана пришли к одинаковым выводам.

С этой точки зрения вторичные по отношению к C++ решения тоже могут быть источником опыта. Например, в модных версиях Delphi были бездумно добавлены "дурацкие угловые скобки" -- решение с шаблонами было скопировано в лоб. Зачем, спрашивается?

Зато в Delphi полностью своя, чуть ли не единственная "расово верная" реализация строк с хорошо продуманной поддержкой кодировок. С поправкой на окружение Delphi она может служить примером.
Ого, какой феерический бред ))) Даже понравилось )))
Мы старались. :)

Valery

  • Full Member
  • ***
  • Сообщений: 101
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #21 : Январь 26, 2013, 05:16:55 am »
Насчет читабельности.
Передо мной книжка Окулова: Информатика. Развитие интеллекта школьника.
Он упоминает об эффекте Струпа: http://ru.wikipedia.org/wiki/%D0%AD%D1%84%D1%84%D0%B5%D0%BA%D1%82_%D0%A1%D1%82%D1%80%D1%83%D0%BF%D0%B0

Дык в программировании этот эффект, как я теперь понимаю, проявляется сплошь и рядом!
Особенно когда имена не соответствуют содержанию. Отсюда и ошибки - от несоответствия.

DddIzer

  • Гость
Re: Язык программирования Оно
« Ответ #22 : Январь 26, 2013, 02:51:50 pm »
Хотел создать тему, но не находил нужных слов. Поэтому дам просто ссылку.

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

DddIzer

  • Гость
Re: Язык программирования Оно
« Ответ #23 : Январь 26, 2013, 03:01:14 pm »
Слушайте господа,  а может Freeman - это новый ник. Влада Жаринова? (типа ссылается на труды своей молодости)  :)

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #24 : Январь 26, 2013, 03:09:00 pm »
Маловероятно, если заочно давать оценку. Объяснить не могу, но различие ощущается чётко.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #25 : Январь 26, 2013, 04:32:03 pm »
Слушайте господа,  а может Freeman - это новый ник. Влада Жаринова? (типа ссылается на труды своей молодости)  :)


Владислав, но не Жаринов, а какой-то Джавадов.

И да, всё же стиль словоблудия Freeman'а заметно отличается от стиля словоблудия Драконографа...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #26 : Январь 26, 2013, 05:42:57 pm »
http://tunilab.org/Ono/Syntax/Containers/SCA
Цитировать
’строка’ — (’ст’, ’ка’) = ’ро’;
Вычитание набора строк (контейнера) из строки: входящие в контейнер строки вычитаются из исходной строки, как в первом варианте.
Бесполезное и неоправданное усложнение. Проще сделать так:
’строка’ — ’ст’ — ’ка’ = ’ро’;

Насчёт операций деления и умножения строк, вероятно стоит рассматривать здесь строки как множества символов и использовать соответствующие операции.


http://tunilab.org/Ono/Syntax/Containers/TreesGraphs

Деревья и графы вводить в язык не стоит, лучше сделать их просто частью стандартной библиотеки.


http://tunilab.org/Ono/Syntax/Exceptions
Цитировать
Вопросы по исключениям — только по ключевым словам:
Для возбуждения исключений использовать throw или raise? Или оба ключевых слова одновременно?
Для отлова исключений голосую за catch, находя except неоднозначным. Но если кто-то хочет except, можно добавить равноценным словом, как и с возбуждением.
Язык надо делать как можно более компактным, поэтому разведение кучи ключевых слов для одной и той же сущности -- плохо. То же и с операциями.

Так же синтаксис кортежей с круглыми и квадратными скобками тоже слишком избыточен, лучше оставить один вариант. Haskell-way: кортежы в круглых скобках, списки в квадратных.


Вообще в описании Оно постоянно упоминаются SQL и СУБД. С чем это связано?

http://tunilab.org/Ono/Syntax
Цитировать
Поскольку синтаксис языка Оно создавался во многом путем комбинирования синтаксиса паскалеподобного языка и SQL, при изучении Оно достаточно запомнить простое правило:

Синтаксис SQL имеет приоритет.

Интересно будет посмотреть на реальную работающую более-менее большую программу на этом Оно -- тот ещё птичий язык получится )))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #27 : Январь 26, 2013, 05:51:23 pm »
После чтения - ощущение такое..что автор.. после того как прочитал несколько популярных статей из ВИКИ понял что просто так информация содержащаяся в них у него не устаканится.. Поэтому он залил ее 10 литрами пива (процесс пошел), для его ускорения он начал прыгать на одной ноге.. но упал ударившись головой о пол... после этого его посетило ОТКРОВЕНИЕ.. в основе которого появились эти материалы...Поскольку эффект этого ритуала быстро сошел на нет, то автор не в состоянии даже себе обьяснить суть написанного и просит разобраться других...
У меня ощущение, что автор раньше работал с СУБД и SQL, со всякими дельфями, интересовался ФП, всякими хаскелями и лиспами, и вдруг решил сделать свой язык, не имея при этом достаточно серьёзной теоретической и практической подготовки в информатике и программировании.
И вот мы и увидели шедевр по названием Оно (Ono is Not Oberon).
Вот только сомневаюсь я, что автор Freeman со своим помощником Proger'ом (а их там двое) осилят создание транслятора с Оно.
А если вдруг и осилят, результирующий язык будет сильно отличаться...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #28 : Январь 26, 2013, 06:28:22 pm »
что автор Freeman со своим помощником Proger'ом (а их там двое) осилят создание транслятора с Оно.
А если вдруг и осилят, результирующий язык будет сильно отличаться...
В плане трансляторов, я бы авторам (Freeman & Co) советовал, в качестве легкого упражнения, реализовать компилятор/транслятор Оберона-07/11 четко по описанию языка от Вирта.

По моему, это первое что должен сделать автор будущего языка - простое упражнение которое позволит прокачать основные навыки. Эдакий компиляторный и языковый Hello World (кроме навыков реализации компилятора прокачаются также навыки досконального разбора языка по спекам, без оглядки на существующие реализаци).
Y = λf.(λx.f (x x)) (λx.f (x x))

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Язык программирования Оно
« Ответ #29 : Январь 26, 2013, 06:37:00 pm »
Сначала надеялся, что с созданием языка всё не очень серьёзно, потому не хотел говорить об одной маркетинговой неувязочке. Но теперь, думаю, всё-таки стоит сказать: настоятельно советую сменить название.