OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 19 Июнь, 2025 04:12

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




Начать новую тему Ответить на тему  [ Сообщений: 197 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 10  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 11:00 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
По поводу марковских языков - что бы там не говорил Гугль, но догадаться, что это нечто базирующееся на выч. модели цепей Маркова (которая является еще одним эквивалентом машины Тьюринга и исчисления Черча) совсем несложно.
Если не ошибаюсь, РЕФАЛ Турчина относится как раз к семейству марковских языков. По идеологии - нечто вроде ЛИСПА на двунаправленных симметричных списках, заточен под обработку строк.
И, между прочим, отнюдь не мертв, а развивается на Западе, например, для целей обработки древовидных структур, подобных XML.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 11:14 

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

Погодите, Илья! А может вы сильно всё драматизируете?
Может надо «несколько сместить акценты»?
Ведь что такое цикл for? Это «всего лишь» ФОРМА ЗАПИСИ чего-то стандартного из разряда циклов. Циклов, как класса алгоритмических конструкций, предполагающих инициализацию, проверки и выход из повторяющихся действий.
Помнится, что я даже как-то «извращался» с представлением алгоритмов, так у меня ничего кроме «обобщённых циклов» и не было. Просто я «параметризировал» их таким образом, что они превращались в простые операторы, циклы ПОКА и ПОКА НЕ.
Ну есть выход из цикла в виде break (EXIT) – в чём трагедия?
По вашей логике получается, что
LOOP
...
IF exit_condition THEN EXIT END
...
END
это хорошо, а
for(;;)
{ ...
if( exit_condition ) break;
...
}
это – плохо. Чем?
Или вы упираете, что foreach по самой своей идеологии ДОЛЖЕН пройти все элементы? Здесь – да, я согласен. Тогда конструкторам языка НЕЛЬЗЯ было разрешать использовать break внутри foreach...

Но, в то же время, если foreach – библиотечная функция, что помешает реализаторам обрабатывать внутри этой функции условия выхода по своему разумению?

И ещё. Почему-то все рассматривают вариант абсолютной потокозащищённости всего и вся. А ведь стабильность и спокойствие мира так призрачны!... :о)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 11:17 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Илья Ермаков писал(а):
Если не ошибаюсь, РЕФАЛ Турчина относится как раз к семейству марковских языков. По идеологии - нечто вроде ЛИСПА на двунаправленных симметричных списках, заточен под обработку строк.
И, между прочим, отнюдь не мертв, а развивается на Западе, например, для целей обработки древовидных структур, подобных XML.

Почему же он тогда так нераспространен. Задачи обработки строк ведь сейчас так популярны. Может проблемы с эффективностью?

А кроме Рефала что-нибудь еще есть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 11:20 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Wlad писал(а):
for(;;)

:D :D :D


Последний раз редактировалось PGR Среда, 30 Май, 2007 11:26, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 11:23 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Да я не уверен, что термин "марковские языки" включает Рефал. Просто предполагаю.
По поводу Рефала - ищите на имя Валентина Турчина, весьма известный ИТ-теоретик, эмигрировавший в 70-х в США. Его модели как-то очень тесно связаны с SGML и т.п. - была в свое время статья в Компьюетерре.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 11:26 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
По поводу for - в том и дело, что в С++ это отдельная обобщенная конструкция, которая, вообще говоря, эквивалентна while. С классическим for у нее сходно только название. Так и надо объяснять в спецкурсах по С++.
Я имею в виду не конструкцию FOR, а цикл со счетчиком. Это повальная беда у студентов в любом языке - построить этот цикл со счетчиком от начала до конца, а из середины прыгать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 11:33 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Илья Ермаков писал(а):
Я имею в виду не конструкцию FOR, а цикл со счетчиком. Это повальная беда у студентов в любом языке - построить этот цикл со счетчиком от начала до конца, а из середины прыгать...

Ну дык... Надо ввести законодательно, что строителям языков и компиляторов, ежели таковые будут предоставлять средство "выпрыгивания" из циклов со счётчиком, то отрубать оным десницу... :о)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 11:34 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Илья Ермаков писал(а):
Да я не уверен, что термин "марковские языки" включает Рефал. Просто предполагаю.
По поводу Рефала - ищите на имя Валентина Турчина, весьма известный ИТ-теоретик, эмигрировавший в 70-х в США. Его модели как-то очень тесно связаны с SGML и т.п. - была в свое время статья в Компьюетерре.


Из статьи Компьютерры:
Цитата:
Рефал - функциональный язык. Программа на Рефале определяет алгоритм, а выглядит как декларация отношения между элементами ввода и вывода.


Так, что вопрос по марковским языкам остается открытым...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 11:37 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Илья Ермаков писал(а):
По поводу марковских языков - что бы там не говорил Гугль, но догадаться, что это нечто базирующееся на выч. модели цепей Маркова (которая является еще одним эквивалентом машины Тьюринга и исчисления Черча) совсем несложно.

Догадаться несложно. Увидеть бы реализации этого "нечто" :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 11:50 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
slava писал(а):
Тем, что в цикле foreach не должно быть впринципе пункта 3.
foreach это и есть FOR EACH, а не for each, but while....


Это опять литературные придирки. По факту досрочно выйти из foreach можно, и это удобно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 12:10 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
Если по break - то о том и речь. Грубая ошибка алгоритмизации - использование цикла с предопределенным числом проходов, а потом лихорадочный поиск, как бы "спрыгнуть с поезда" в середине пути... И, конечно же, goto, пусть и в ипостаси break.


А return или бросание exception у тебя не вызывают ассоциации с goto?

Я не спорю, что в определенных ситуациях хотелось бы иметь "строгую" версию foreach, но видимо проблемы привносимые break посчитали не настолько существенными, чтобы жертвовать универсальностью.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 12:20 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Vlad писал(а):
Это опять литературные придирки. По факту досрочно выйти из foreach можно, и это удобно.

Дело - не в удобстве! А в формализации смыслов в конструкции.
А то ить удойбства - це "благие намерения" в сторону пользователя, которые сами знаете куда ведут... :о)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 12:46 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Wlad писал(а):
Vlad писал(а):
Это опять литературные придирки. По факту досрочно выйти из foreach можно, и это удобно.

Дело - не в удобстве! А в формализации смыслов в конструкции.
А то ить удойбства - це "благие намерения" в сторону пользователя, которые сами знаете куда ведут... :о)


Формализация простая - для каждого элемента, если не break. Хочется более строгих гарантий - напиши свой foreach (например, в C++ std::foreach реализован именно так). Потеряешь в универсальности, но выиграешь в строгости. А формализация ради формализации - это маразм.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 12:54 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Vlad писал(а):
А формализация ради формализации - это маразм.

Формализация -- ради надежности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Среда, 30 Май, 2007 13:52 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Vlad писал(а):
Сергей Губанов писал(а):
Читайте Дейкстру.


Сейчас еще придет info21 и пошлет учить марковские языки.


Пришел и послал. По-доброму, как старший товарисч младшего.

PGR писал(а):
А кроме Рефала что-нибудь еще есть?


Снобол-4. Книжка была переведена.

SCHOONSCHIP -- система 1967 г. рождения для символической алгебры большого объема. Долго была самая быстрая. Потом был его коммерческий клон FORM-2.

Сейчас самый быстрый движок -- мой 8-)
Он, правда, на синтетическом языке КП, но основной идейный "паттерн" позаимствован из SCHOONSCHIP'а.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 13:56 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
PGR писал(а):
Vlad писал(а):
А формализация ради формализации - это маразм.

Формализация -- ради надежности.


Еще раз: foreach с break настолько же формален, насколько и без break. Разница только в формулировке. Что касается надежности, то WHILE с ручным управлением счетчиком принципиально менее надежен, чем foreach с break. И уж конечно WHILE в деле поиска элемента менее надежен, чем отдельная протестированная функция find.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 14:08 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Причем тут библиотечная функция? Есть -- пользуйся на здоровье.

Потерял нить тезиса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Среда, 30 Май, 2007 14:08 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
info21 писал(а):
Пришел и послал. По-доброму, как старший товарисч младшего.


По-доброму - это по ссылкам. А так - это на отвяжись.

info21 писал(а):
Снобол-4. Книжка была переведена.


Читаю в википедии:

Significant Language Features

Цитата:
* String Manipulation Operations - has several of these operations which allow a string to be tested for contents and make replacements in the string.
* Pattern Matching- involves examining substrings, for the occurrences of specified substrings. Substrings are also known as patterns.
* Dynamically typed - SNOBOL4 has no type declarations and no restrictions on the data type of the value of any variable.
* Interpretive language - The compiler translates the program into a notation that the interpreter can easily execute.


Да, наверное для 60-х годов прошлого сатолетия этот язык был интересен. Про марковские цепи ничего не нашел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 14:14 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Vlad писал(а):
Еще раз: foreach с break настолько же формален, насколько и без break.

Абажьжите!
А давайте БУКВАЛЬНО (вот, кстати, одно из последствий НЕПЕРЕВОДА ключевых слов, использование слов чужого языка и потери изначального смысла слов :о) )

foreach( Type a in typeCollectionInstance) ....

Первожу:
ДЛЯ КАЖДОГО (БЕЗ ИСКЛЮЧЕНИЙ) элемента из заданной коллекции ...

Дальше надо?...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 30 Май, 2007 14:20 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Сравнение языков программирования (и Снобола в том числе) хорошо описано в книге R.A. Finkel "Advanced Programming Language Design"


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

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


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

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


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

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