Автор Тема: Сириус - обероноподобный язык и компилятор  (Прочитано 76409 раз)

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #135 : Май 29, 2012, 02:09:29 pm »
Мы занимаемся специфическими задачами, часто на специфическом оборудовании, когда каждая лишняя команда - лишняя. Поэтому приходится заниматься ручной оптимизацией....
  Приблизительно это я и имел ввиду когда говорил, что Сириус типичный DSL, по субъективным ощущениям где - то между Делфи и Обероном 2 - интересно, уровень оптимизации выше чем у XDS(или таки предпочитаете ручками)?

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #136 : Июнь 06, 2012, 07:33:33 pm »
Оптимизация это такая специфическая штука... иногда похожая на измерение в попугаях...

X512

  • Newbie
  • *
  • Сообщений: 45
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #137 : Ноябрь 25, 2012, 10:44:04 am »
Что качается самого компилятора, то планируется сделать его общедоступным и открыть исходники, но это будет не раньше осени и только после удаления ряда зависимостей. в паблик пойдёт только компилятор с рантаймом и несколько пакетов, всё остальное, включая среду разработки раскрывать мы не имеем права, а то нас закроют )))
Уже ноябрь, скоро зима... Планируется выпустить Сириус в открытый доступ? Интересный проект.

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #138 : Ноябрь 27, 2012, 10:08:20 am »
Что качается самого компилятора, то планируется сделать его общедоступным и открыть исходники, но это будет не раньше осени и только после удаления ряда зависимостей. в паблик пойдёт только компилятор с рантаймом и несколько пакетов, всё остальное, включая среду разработки раскрывать мы не имеем права, а то нас закроют )))
Уже ноябрь, скоро зима... Планируется выпустить Сириус в открытый доступ? Интересный проект.
ну да интересно.. что сотворили  программисты из "ящика", в особенности  после топика про "ящичных" конструкторов бортовых ЭВМ. :D
Только боюсь , мы этого не увидим  ;D, с другой стороны, может оно и к лучшему... деньки и  так серые.

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #139 : Ноябрь 30, 2012, 10:27:53 am »
Уже ноябрь, скоро зима... Планируется выпустить Сириус в открытый доступ? Интересный проект.
Планируется. Сейчас осуществляется "причесывание" языка и модификация компилятора.

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #140 : Декабрь 18, 2012, 09:56:54 am »
В процессе жизни - эксплуатации, в Сириусе образовались "паразитические" конструкции - некоторые вещи можно сделать разными способами, что, на мой взгляд, совершенно неверный подход, но он обусловлен, как я уже говорил, долгой жизнью и наличием давно написанного в старом стиле кода, который нужно поддерживать. Но сейчас, в новой версии языка решено от всего лишнего багажа использоваться. В связи с чем есть несколько вопросов к сообществу по синтаксису.
В Сириусе перечисления можно описать несколькими способами:
1) Days = ( Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday );
2) Days = ENUM ( Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday );

В Активном Обероне перечисления описываются таким образом:
Days = ENUM
  Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
END;

Лично для меня, использование специального ключевого слова - ENUM вполне оправдано, и более чем приятственно. К тому же новичкам легче освоиться.
В связи с чем вопрос, какую конструкцию лучше использовать?

Теперь перейдем к диапазонным типам
1) x = [ 1..9 ];
2) x = RANGE 1..9;

вопрос тот же - какой оставить.

Пока я склоняюсь к унификации описаний, типа так
x = RANGE 1..9;
Days = ENUM Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday;

Возможно, перечисления будут расширяемыми

name = ENUM(baseenum) ....;
хотя, для этого форма активного оберона
name = ENUM(base) ....END;
подходит лучше...

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #141 : Декабрь 18, 2012, 10:53:26 am »
В Активном Обероне перечисления описываются таким образом:
Days = ENUM
  Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
END;

По аналогии с RECORD это выглядит наиболее идиоматично для оберона.

Теперь перейдем к диапазонным типам
1) x = [ 1..9 ];
2) x = RANGE 1..9;
вопрос тот же - какой оставить.

В Аде используется второй вариант:

type Range_Type is range -5 .. 10;

Возможно, перечисления будут расширяемыми

name = ENUM(baseenum) ....;
хотя, для этого форма активного оберона
name = ENUM(base) ....END;
подходит лучше...

Насколько вообще востребованы у вас в софте расширяемые перечисления?
И, кстати, какие правила подстановки будут использоваться с расширяемыми перечислениями?
В O'Haskell, например, запись-наследник является субтипом записи-родителя (как и в обероне),
а вот перечисление-наследник является супертипом для перечисления-родителя.

ЗЫ. Кстати, если уж пошли такие расширения, то прикольно было бы добавить в перечисления параметры.
В каком-то из новомодных языков их добавили -- выглядело неплохо.
Хотя для оберона это будет идти в разрез с идеологией Вирта -- такие типы (по сути алгебраические типы данных) можно имитировать иерархией записей...
to iterate is human, to recurse, divine

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

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #142 : Декабрь 18, 2012, 11:19:36 am »
По аналогии с RECORD это выглядит наиболее идиоматично для оберона.
понятие "идиоматичность" в данном контексте мне не совсем понятна ))
В Аде используется второй вариант:
и лично для меня - более приемлемый вариант.
Насколько вообще востребованы у вас в софте расширяемые перечисления?
Ни насколько - на текущий момент расширения для перечислений отсутствуют.
В то же время, сами перечисления используются активно. Думаю эта возможность будет востребована.
Кстати, в Активном Обероне при описании перечисления элементу можно задать конкретное значение. В Сириусе пока такого нет, это тоже нужно будет добавить.
В таком случае при расширении можно будет указывать стартовое значение.
а вот перечисление-наследник является супертипом для перечисления-родителя.
логично )
ЗЫ. Кстати, если уж пошли такие расширения, то прикольно было бы добавить в перечисления параметры.
это что такое?

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #143 : Декабрь 18, 2012, 11:43:40 am »
диапазонный тип:
x = 1..9

объявление с инициализацией:
x:int = 1..9

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #144 : Декабрь 18, 2012, 11:48:10 am »
ЗЫ. Кстати, если уж пошли такие расширения, то прикольно было бы добавить в перечисления параметры.
это что такое?
В хаскелле это выглядит примерно так:
module Main where

-- Простое перечисление:
data EasyEnum = A | B | C | D

-- Перечислимый тип с параметрами:
data SomeAlgTD a b
    = K1 Int String
    | K2 a Double
    | K3 Bool b

-- Конструирование значений:

x, y, z :: SomeAlgTD Char EasyEnum

x = K1 10 "Hello"
y = K2 'p' 3.14
z = K3 True A

-- Паттерн-матчинг (разбор и связывание значений):

foo :: SomeAlgTD Char EasyEnum -> String

foo (K1 x s) = "K1 " ++ show x ++ " " ++ s
foo (K2 с d) = "K2 " ++ show с ++ " (" ++ show d ++ ")"
foo (K3 b A) = "K3 " ++ show b ++ " and A"
foo (K3 b _) = "K3 " ++ show b ++ " and not A"

main = do
    putStrLn $ foo x
    putStrLn $ foo y
    putStrLn $ foo z

Main> :main
K1 10 Hello
K2 'p' (3.14)
K3 True and A
to iterate is human, to recurse, divine

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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #145 : Декабрь 18, 2012, 11:49:29 am »
объявление с инициализацией:
x:int = 1..9
А какой смысл у этого выражения? Я бы понял такой вариант:

x:int range 1..9 = 5;
to iterate is human, to recurse, divine

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #146 : Декабрь 18, 2012, 11:55:00 am »
ЗЫ. Кстати, если уж пошли такие расширения, то прикольно было бы добавить в перечисления параметры.
это что такое?
Это АТД, то чего в Виртвоских языках как раз не хватает :-)
(алгебраические типы данных).
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #147 : Декабрь 18, 2012, 12:15:27 pm »
ЗЫ. Кстати, если уж пошли такие расширения, то прикольно было бы добавить в перечисления параметры.
это что такое?
Это АТД, то чего в Виртвоских языках как раз не хватает :-)
(алгебраические типы данных).
Лучше всё-таки сокращать как АлгТД, что бы не было путанницы с Абстрактными Типами Данных...


это что такое?
(алгебраические типы данных).
http://ru.wikipedia.org/wiki/Алгебраический_тип_данных
to iterate is human, to recurse, divine

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

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #148 : Декабрь 18, 2012, 12:18:10 pm »
В хаскелле это выглядит примерно так:
ужос
обойдемся классическими перечислениями

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #149 : Декабрь 18, 2012, 12:20:31 pm »
Кстати, раз уж пошли диапазоны и перечисления, то навернео будут и диапазоны перечислений?
Так как целые числа можно представить как перечисление, то логично что диапазоны целых чисел будут диапазонами перечисления INTEGER:

TYPE X = RANGE 1..9;

Days = ENUM
  Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
END;

TYPE WorkDays = RANGE Monday..Friday;
to iterate is human, to recurse, divine

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