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

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #105 : Май 25, 2012, 11:23:54 am »
Ну, я в общем то вполне понимаю зачем этот самый ELSE. Вместе с ним цикл превращается в законченную отчуждаемую конструкцию.
А вот это ровно то , что я назвал под подозрением  на спец. ориентированность Сириуса (если это так, то уродские (из общих предположений) конструкции подобные этой не проблема).

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #106 : Май 25, 2012, 11:26:31 am »
Ну, я в общем то вполне понимаю зачем этот самый ELSE. Вместе с ним цикл превращается в законченную отчуждаемую конструкцию.
А вот это ровно то , что я назвал под подозрением  на спец. ориентированность Сириуса (если это так, то уродские (из общих предположений) конструкции подобные этой не проблема).
А для какой предметной области такое специфично?

Как по мне, так это вполне general purpose штука. Элементы этого имеются во всех современных ЯП.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #107 : Май 25, 2012, 11:29:42 am »
Вот свежий пример упомянутого мною использования блоков:
(в функции main пытаемся инициализировать переменную resourcePath):
func main() {
log.SetFlags(0)

var resourcePath string
{
GOPATH := os.Getenv("GOPATH")
if GOPATH == "" {
log.Fatal("No such environment variable: GOPATH")
}
for _, gopath := range strings.Split(GOPATH, ":") {
a := gopath + "/src/github.com/0xe2-0x9a-0x9b/Go-SDL/sdl-test"
_, err := os.Stat(a)
if err == nil {
resourcePath = a
break
}
}
if resourcePath == "" {
log.Fatal("Failed to find resource directory")
}
}
// ... дальше другой код
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #108 : Май 25, 2012, 11:32:42 am »
Ну, я в общем то вполне понимаю зачем этот самый ELSE. Вместе с ним цикл превращается в законченную отчуждаемую конструкцию.
А вот это ровно то , что я назвал под подозрением  на спец. ориентированность Сириуса (если это так, то уродские (из общих предположений) конструкции подобные этой не проблема).
А для какой предметной области такое специфично?

Как по мне, так это вполне general purpose штука. Элементы этого имеются во всех современных ЯП.
Ну нет, секция ELSE в WHILE - это чисто "от Сириуса" :D ... Теряюсь в догадках - будем считать, что Kemet меня заинтриговал..
ЗЫ с моей точки зрения это  вредная штука..... С другой стороны возможность привязать секцию CLOSE - к ЛЮБОМУ исполняемому блоку операторов... весьма элегантное решение многих проблем...

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #109 : Май 25, 2012, 11:39:08 am »
А для какой предметной области такое специфично?

Как по мне, так это вполне general purpose штука. Элементы этого имеются во всех современных ЯП.
Ну нет, секция ELSE в WHILE - это чисто "от Сириуса" :D ... Теряюсь в догадках - будем считать, что Kemet меня заинтриговал..
ЗЫ с моей точки зрения это  вредная штука..... С другой стороны возможность привязать секцию CLOSE - к ЛЮБОМУ исполняемому блоку операторов... весьма элегантное решение многих проблем...
Да ладно, секция ELSE в WHILE это банальнейший элемент цикла-паука. Штука весьма известная. Там где её нет, может эмулироваться посредством скрещивания цикла сo switch/case конструкцией -- там роль else будет играть default.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #110 : Май 25, 2012, 11:46:44 am »
Да ладно, секция ELSE в WHILE это банальнейший элемент цикла-паука. Штука весьма известная. Там где её нет, может эмулироваться посредством скрещивания цикла сo switch/case конструкцией -- там роль else будет играть default.
 
:D  Да ладно, цикл паук сугубо "теоретическая" конструкция  - такая же каким был цикл Дейкстры до О7  ;) ;D

valexey: поправил цитирование
« Последнее редактирование: Май 25, 2012, 12:10:35 pm от valexey »

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #111 : Май 25, 2012, 12:12:03 pm »
Да ладно, секция ELSE в WHILE это банальнейший элемент цикла-паука. Штука весьма известная. Там где её нет, может эмулироваться посредством скрещивания цикла сo switch/case конструкцией -- там роль else будет играть default.
 
:D  Да ладно, цикл паук сугубо "теоретическая" конструкция  - такая же каким был цикл Дейкстры до О7  ;) ;D
Но ведь должен же кто-то проверять теорию на практике? :-) Кроме того, если мне склероз не изменяет, то в Аде как раз реализована та часть цикла-паука, которая не пересекается с циклом Дейкстры.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #112 : Май 25, 2012, 12:19:42 pm »
Но ведь должен же кто-то проверять теорию на практике? :-) Кроме того, если мне склероз не изменяет, то в Аде как раз реализована та часть цикла-паука, которая не пересекается с циклом Дейкстры.
А я и не спорю - более того, допускаю, что в ТОЙ ОБЛАСТИ, для которой создавался и ИСПОЛЬЗУЕТСЯ Сириус - он весьма уместен и полезен...

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #113 : Май 25, 2012, 12:21:39 pm »
Но ведь должен же кто-то проверять теорию на практике? :-) Кроме того, если мне склероз не изменяет, то в Аде как раз реализована та часть цикла-паука, которая не пересекается с циклом Дейкстры.
А я и не спорю - более того, допускаю, что в ТОЙ ОБЛАСТИ, для которой создавался и ИСПОЛЬЗУЕТСЯ Сириус - он весьма уместен и полезен...
Я не вижу тут ничего областеспецифичного, и не вижу такой области где это было бы явно нужно/выраженно.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #114 : Май 25, 2012, 12:24:02 pm »
А я  достаточно четко использую слово допускаю - его смысл вам расшифровывать не надо?  ;)

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #115 : Май 25, 2012, 12:24:32 pm »
То и означает - -разобраться с  результатами поиска - у нас возможно как минимум 2 варианта - 1. мы нашли искомый элемент 2 мы не нашли его (просмотрев ВСЕ элементы множества) - понятно, что идеологически это единый кусок... так я говорю про то, что использование ELSE в этом случае уродливо (если не сказать еще хуже...).  А между тем вышеупомянутый паттерн.. весьма общий для ЯП в которых нет операторов  безусловного перехода и выхода из цикла...
Реализация паттерна может быть различной и не требовать проверок после завершения цикла, например, это тоже поиск:
Result := NIL;
IF Start.value = Value THEN
    Result := Start;
ELSIF Start # End
    IF End.value = Value THEN
        Result := End;
    ELSE
        End := End.prev;
        WHILE ( Result = NIL ) & ( Start # End ) DO
            Start := Start.next;
            IF Start.value = Value THEN Result := Start END;
        END;
    END;
END;
Что касается ELSE ветки в конструкции WHILE в Сириусе, которая выполняется когда условие прохождения цикла становится ложным, то, видимо, придется обозвать ее как-то иначе, но удалять ее из языка не будем, потому что она органично завершает цикл, делая его целостной конструкцией.
В принципе, у новичков, которые приходят к нам, проблем с этой конструкцией не возникает, по крайней мере вчера я специально опросил несколько человек, которые работают у нас меньше года. Возможно, конечно, и такой вариант, что они говорят неправду, но код-то они пишут именн так, хотя никто не заставляет секцию ELSE использовать.

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #116 : Май 25, 2012, 12:28:48 pm »

Что касается ELSE ветки в конструкции WHILE в Сириусе, которая выполняется когда условие прохождения цикла становится ложным, то, видимо, придется обозвать ее как-то иначе, но удалять ее из языка не будем, потому что она органично завершает цикл, делая его целостной конструкцией.
В принципе, у новичков, которые приходят к нам, проблем с этой конструкцией не возникает, по крайней мере вчера я специально опросил несколько человек, которые работают у нас меньше года. Возможно, конечно, и такой вариант, что они говорят неправду, но код-то они пишут именн так, хотя никто не заставляет секцию ELSE использовать.
А я и не призываю вас удалять... просто довожу до сведения свою мысль (с обоснованиями) о , скажем так, "специфичности" данной  конструкции (в текущем исполнении)..

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #117 : Май 25, 2012, 12:46:09 pm »
ЗЫ 2 Kemet - присмотрелся я к куску кода который вы привели.. и скажу честно, не фанат я таких извращений,  не фанат...

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #118 : Май 25, 2012, 01:09:16 pm »
ЗЫ 2 Kemet - присмотрелся я к куску кода который вы привели.. и скажу честно, не фанат я таких извращений,  не фанат...
А что в нём не так?  ;)

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #119 : Май 25, 2012, 01:54:15 pm »
ЗЫ 2 Kemet - присмотрелся я к куску кода который вы привели.. и скажу честно, не фанат я таких извращений,  не фанат...
А что в нём не так?  ;)
  ;D А напрягаться приходится ... для того чтобы  понять смысл кода - видать старенький я  стал для этого , ибо предпочитаю напрягаться над смыслом алгоритма... но не  кода реализующего его....  ;)  :)