Времена и нравы

Персональный блог одноименного форумчанина. Человека и парохода, не побоюсь этого сравнения :)

Модератор: tyomitch

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Времена и нравы

Сообщение tyomitch » 13.04.2006 (Чт) 18:22

Несмотря на высокопарный заголовок, служащий единственно для привлечения вашего внимания к этому посту, здесь не будет заезженных сравнений прошлого и теперешнего. Речь пойдёт отдельно -- о временах, и отдельно -- о нравах :-)

* Считается, что регулярные выражения, о которых писал статью ANDLL, -- это самый быстрый способ разбора строки. Вполне может быть, что так оно и есть; но это означало бы только, что остальные способы ещё медленнее, а не то, что регулярные выражения работают быстро. Собственно, о времени работы регулярных выражений речь и пойдёт.

Если регулярное выражение -- действительно регулярное, т.е. описывает регулярный язык, то по такому выражению можно построить ДКА, который будет работать линейное время по длине строки. И всё же возможности тех "регулярных выражений", которые поддерживаются современными инструментами, не ограничиваются лишь регулярными языками. Так, man-страница grep(1) заканчивается секцией BUGS следующего содержания:

Large repetition counts in the {m,n} construct may cause grep to use
lots of memory. In addition, certain other obscure regular expressions
require exponential time and space, and may cause grep to run out of
memory.

Backreferences are very slow, and may require exponential time.


Другими словами, использование ссылок назад сразу же выводит алгоритм из линейного времени работы в неполиномиальное. То, насколько это плохо -- неполиномиальное время работы, можно проиллюстрировать следующим примером:

Код: Выделить всё
bash-2.05b$ time perl -e '$_="123454895:4890182361"; /((\d+)|\:|\2)*(\1|\2)$/'

real    1m32.795s
user    1m31.482s
sys     0m0.079s

Входная строка случайная; от конкретных символов время работы не зависит. Важно только то, что для входной строки из 20 символов этот 22-символьный регэксп работает полторы минуты, и добавление нового символа во входную строку увеличивает время работы примерно втрое.

Можно, однако наращивать не длину входной строки, а количество ссылок назад в регэкспе:

Код: Выделить всё
bash-2.05b$ time perl -e '$_="123454895:4890182361"; /((\d+)|\:|\2)*(\1|\2)+\3/'

real    1m44.623s
user    1m44.078s
sys     0m0.095s

На той же 20-символьной строке получаем лишние 13 секунд работы; рост втрое при добавлении символа сохраняется.

Здесь по задумке должен был идти вывод о проделанной работе; может быть, я его ещё сочиню и допишу сюда.


* Не знаю как остальных, но нас с начальной школы и до сих пор учителя пугают неимоверным количеством времён в английском языке, насчитывая всякий раз не по одному десятку.

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

Кроме этого факта, в привлекшем моё внимание топике описывается "давнопрошедшее" время ([url=http://ru.wikipedia.org/wiki/Плюсквамперфект]плюсквамперфект[/url]), сохранившееся по словам автора в южнорусских говорах. Если носители этих говоров читают мой блог, прошу их оставить комментарии по этому поводу :-)


* Теперь, наконец, про нравы. О вреде злоупотребления алкоголем написано и нарисовано очень много, но интересно сравнить эти два схожих по своему сюжету плаката -- советский и китайский. Вот один из комментариев в их отношении:
GSerg писал(а):А плакаты в целом одинаковы, ведь у нас одна рюмка и одно маленькое "нет", а там две бутылки и куча текста - пропорции соблюдены :)



+Молния: СГУ и АлтГТУ респект!!
Изображение

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 13.04.2006 (Чт) 19:33

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

А какие говоры считаются "южнорусскими"? Я живу на юге (правда Украины) и разговариваю на русском: про "давнопрошедшее" время слышу впервые.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 14.04.2006 (Пт) 12:27

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

На юго-востоке Украины никто и никогда не упоминал ни о каком давнопрошедшем времени. Хотя сейчас, говорят, выдумывают новую грамматику, так что всё могло измениться за 10 лет. В армии видел укринцев из разных регионов и отмечу, что выражения типа "був бачыв" и "був чув" отмечались только у тех, кто русским языком не владел совершенно. Есть ли здесь какая-то зависимость - не знаю. Скорее всего это проявления диалектов или архаизмов...
В английском языке, на сколько мне известно, времён четыре - настоящее, прошедшее, будущее и прошедшее в будущем (past in future), остальное же изобилие - залоги, перфектность, длительность...
"There's more than one way to do it!"

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.04.2006 (Пт) 14:19

Подозреваю, что новую (?) украинскую грамматику не выдумывают, а уже выдумали.
http://uk.wikipedia.org/wiki/Давноминулий_час
Изображение

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 14.04.2006 (Пт) 14:26

все приведённые там примеры можно перевести с русскими "было" и "бывало", это ведь в русском не давнопрошедшее время, правда? Вот так они и "притягивают за уши" то, что им хочется притянуть. Потому и уехал я оттуда и отказался от их гражданства. Я русский уже! Кстати, можете меня поздравить с этим фактом.
"There's more than one way to do it!"

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 14.04.2006 (Пт) 16:46

tyomitch писал(а):Подозреваю, что новую (?) украинскую грамматику не выдумывают, а уже выдумали.
http://uk.wikipedia.org/wiki/Давноминулий_час

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

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 14.04.2006 (Пт) 16:58

А они там, на западной Украине вообще считают себя единственными настоящими украинцами и забывают, что там от украинских корней вообще ничего не осталось - только польские, венгерские, румынские и прочие традиции, ритуалы, язык - всё вообще.
"There's more than one way to do it!"

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.04.2006 (Пт) 17:29

Вон какую ссылку нашёл: http://www.mfa.gov.ua/mfa/ua/publicatio ... nt/392.htm

Сайт МЗС України писал(а):Дієслово української мови існує в чотирьох часах: окрім минулого, теперішнього та майбутнього, використовується давноминулий час (для вираження дії, яка відбулася в минулому, але раніше від дії, вираженої звичайним минулим часом).




И, с другой стороны, вот эту дискуссию на английской Википедии:
* This tense (давноминулий час) is formed by the verb 'бути' in a personal form and a main verb in past, and means an action taking place before another one. Pre-past is now used rarely in mass media and business, rather in literature and in spoken language (however, it has been used in the text of the Act of Independance, 1991).

* I am a native Ukrainian speaker and I've never heard of such a tense (pre-past: був читав) or its usage. Can you please give concrete references from Ukrainian literature or other accessible sources where this tense is used?

* Also, "pre-past" it passingly introduces as if it is a common tense, is archaic and currently used only in dialects or coloquical language.
Изображение

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 14.04.2006 (Пт) 21:46

Не стоит обижать жителей западной Украины. "Новий український правопис" разрабатывался вполне таки серьезными дядями и тетями в Киеве. Насколько я понимаю, разработчики хотели систематизировать знания по украинскому языку, определить, что есть "истинные" грамматические формы языка, а что - русизмы. Насколько мне известно, никто не принимает получившийся в результате изврат всерьез. Детям подобными, мягко говоря, странными правилами психику не травмируют - в школе все учат обычный украинский язык.
Листинги не горят!

Денис Победря
Мегобойанист
Мегобойанист
 
Сообщения: 1037
Зарегистрирован: 03.01.2005 (Пн) 21:29
Откуда: Из Москвы

Сообщение Денис Победря » 14.04.2006 (Пт) 22:02

tyomitch
Ну уж не знаю. От того, если считать, что в английском 3 или 2 времени, изучать его проще не станет.
[Место cдаётся]

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 15.04.2006 (Сб) 11:45

Сайт МЗС України писал(а):
Дієслово української мови існує в чотирьох часах: окрім минулого, теперішнього та майбутнього, використовується давноминулий час (для вираження дії, яка відбулася в минулому, але раніше від дії, вираженої звичайним минулим часом).

Дааа... Когда я учился в школе обучение у нас велось на украинском и английском языках (за исключением русского языка и литературы, естественно) ни о каких "давноминулих часах" и упоминания не было.
А сейчас создается впечатление, что правопис переписывается под отдельный диалект с попыткой представить его единственно правильным и исторически обоснованным вариантом украинского языка. Лично мне выражения типа: "Я був ходив до магазину" режут слух и создают впечатление безграмотной украинской речи.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.04.2006 (Вс) 11:35

Tuco писал(а):
Не знаю как остальных, но нас с начальной школы и до сих пор учителя пугают неимоверным количеством времён в английском языке, насчитывая всякий раз не по одному десятку.
Поэтому естественно, что я не мог не обратить внимания на этот топик. По нему выходит, что времён всего два: прошедшее и непрошедшее.

В английском языке, на сколько мне известно, времён четыре - настоящее, прошедшее, будущее и прошедшее в будущем (past in future), остальное же изобилие - залоги, перфектность, длительность...

А почему бы тогда конструкции со словом must не выделить в отдельное время?
Грамматически они ничем не отличаются от "будущего" и "будущего в прошедшем" времён.

(Про "прошедшее в будущем" слышу впервые.)
Изображение

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 16.04.2006 (Вс) 16:05

Просто это не прошедшее в будущем, а будущее в прошедшем (future in the past)
Если всё делать своими ручками, они скоро отвалятся !

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 18.04.2006 (Вт) 11:07

тысяча извинений, действительно я ошибси. "будущее в прошедшем (future in the past)" - конечно же так должно быть! Выделяют его, вероятно, аналитически... А зачем выводить модальный глагол must и конструкции с ним в отдельное время? Тогда для каждого глагола можно придумывать свои времена...

А на Украине сейчас одна политика - максимально отдалиться от России во всём, в том числе и в языке. Пример: раньше было слово "карта" и означало оно то же, что и в русском языке - "карта". Сейчас появилось слово "мапа" с тем же значением. Кто-нибудь слышал такое слово раньше? И таких примеров можно найти массу!
"There's more than one way to do it!"

ZHN
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 02.04.2006 (Вс) 23:25

Сообщение ZHN » 30.04.2006 (Вс) 20:16

Интересно, но заметку о регэкспах никто не прокомментировал.

Другими словами, использование ссылок назад сразу же выводит алгоритм из линейного времени работы в неполиномиальное.

Не совсем так. Например, регулярное выражение ^(.+)\1$ вполне себе линейное, а ^(.+)(.+)(.+)(.+)\1\2\3\4$ -- полиномиальное. Т.е. далеко не все регулярные выражения с backrefferences экспоненциальные.
man grep писал(а):Backreferences are very slow, and may require exponential time.


У меня есть некоторое исследование на тему, как по виду регэкспа понимать экспоненциальное оно или нет. Статья сейчас в стадии редактирования. Если она будет опубликована (тьфутьфутьфу), то могу пообещать ссылку, если интересно.

Кстати, статья ANDLL не затрагивает backrefferences совсем. Все регэкспы там линейные. Правда, и возможности их ограничены регулярными языками.


Вернуться в Tyomitch

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

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

    TopList