Author Topic: Коллекционируем необычные явления в языках  (Read 17404 times)

0 Members and 1 Guest are viewing this topic.

Offline zwh

  • Posts: 10054
В том и прикол, что в ЯПах конструкции
do {/** do something **/} while(/** condition **/) и
do {/** do something **/} until(/** condition **/)
означают одно и то же :green:.
не, разное:

do x++ while(x<10) === do x++ until(x==10)

Offline Vertaler

  • Posts: 11141
  • Vielzeller
В румынском для этнонимов, хоронимов и т. д. существует два прилагательных: одно употребляется по отношению к людям и языкам, второе — ко всему остальному.
Вроде в грузинском почти то же самое:
- к людям кʰартʰвэли поэти "грузинский поэт"
- к остальному кʰартʰули эна да литэратура "грузинский язык и литература"
Это разве то же? Это их националистическая фишка: в Грузии живут картвелы (включая сванов, лазов и мегрелов), а литературный язык — картули, то есть собственно грузинский.

То есть картвели ‘kartvelida’, картули ‘kartvela’.
Estas ago la plej fia — plore plendi pri l' destin',
Kvazaŭ eblas al alia en bazaro ŝanĝi ĝin.

A. Kuŝner

Offline Bhudh

  • Posts: 45604
  • aka 蝎
    • Сайты по языкознанию
не, разное
Это в каком языке? Обычно, если do‥while есть, do‥until отсутствует.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Yitzik

  • Posts: 4082
  • косинусоидальный депресняк
Это разве то же? Это их националистическая фишка:
Нет, это ко всем национальностям применяют.
Вот примеры из учебника Додоны Кизири:
Quote
амэрикэли бизнэсмэни ÷ амэрикули џази
гэрманэли мэгобари (немецкий друг) ÷ гэрманули газэтʰи
Paran Quenya ar quetin Esperanto!

Offline zwh

  • Posts: 10054
не, разное
Это в каком языке? Обычно, если do‥while есть, do‥until отсутствует.
В Паскале есть и while ... do, и repeat ... ... until.

Offline Ильич

  • Posts: 8374
В том и прикол, что в ЯПах конструкции
do {/** do something **/} while(/** condition **/) и
do {/** do something **/} until(/** condition **/)
означают одно и то же :green:.
Приехали.
В первом случае ** do something ** когда ** condition ** выполняется, и цикл заканчивается при значении условия False.
А во втором всё наоборот. Тело цикла выполняется, если condition = False, и цикл заканчивается при condition = True.

не, разное
Это в каком языке? Обычно, если do‥while есть, do‥until отсутствует.

VBA, например.
Sub qqqq()
Dim i As Integer
i = 1
Do While i < 3
    MsgBox i
    i = i + 1
Loop
i = 1
Do Until i < 3
    MsgBox i
    i = i + 1
Loop

End Sub

Первый цикл выполняется 2 раза, второй ни разу.

Я тоже призадумался, что же по-русски означает пока и пока не.
В некоторых случаях смысл теоретичекси может быть разный
Теоретически да, а практически есть разница?
1. Я пою, пока шумит вода в ванной.
2. Я пою, пока не шумит вода в ванной.

Offline Kaze no oto

  • Posts: 4573
Приехали.
В первом случае ** do something ** когда ** condition ** выполняется, и цикл заканчивается при значении условия False.
А во втором всё наоборот. Тело цикла выполняется, если condition = False, и цикл заканчивается при condition = True.
Ото про що я й говорив.

Offline Vertaler

  • Posts: 11141
  • Vielzeller
Нет, это ко всем национальностям применяют.
Вот примеры из учебника Додоны Кизири:
Quote
амэрикэли бизнэсмэни ÷ амэрикули џази
гэрманэли мэгобари (немецкий друг) ÷ гэрманули газэтʰи
Ух ты, спасибо. Ромынул ши ӂеорӂиянул бхаи-бхаи, значит.
Estas ago la plej fia — plore plendi pri l' destin',
Kvazaŭ eblas al alia en bazaro ŝanĝi ĝin.

A. Kuŝner

Offline Bhudh

  • Posts: 45604
  • aka 蝎
    • Сайты по языкознанию
В JS дело обстоит некількі не так.
Есть
while(/** condition **/){/** do something **/}
который выполняется при истинном условии, и есть
do{/** do something **/}while(/** condition **/)
который прекращается при истинном условии.
То бишь тут while равнозначно until.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline _Swetlana

  • Posts: 13782
Ув. коллеги, я зачем на тему подписалась? Чтобы узнать, что цикл с выходом по условию - необычное явление в яп? Как вам не аяяй.
Ὁ λόγος τῆς νοήσεως ἐλπίς ἐστιν.
Талбишектә үстем мин дә, сизелми мени бер дә?
Bless the Beasts and Children.

Offline Bhudh

  • Posts: 45604
  • aka 蝎
    • Сайты по языкознанию
Ну так то Вы со своим громадным опытом функциональных языков. А кто-то, может, и правда не знал :green:.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline _Swetlana

  • Posts: 13782
Ну так то Вы со своим громадным опытом функциональных языков. А кто-то, может, и правда не знал :green:.
Не знала и знать не хочу. Древнегреческий хочу. Да и что в них необычного. Логические поинтересней.

Как реализуется оператор цикла с выходом по условию на самом низком уровне, т.е. на уровне детерминированной машины Тьюринга? Ходим по кругу, переходя из состояние в состояние, и в каком-то состоянии развилка: при одном входном сигнале идём по кругу, при другом - выходим. То есть для реализации цикла нужен только оператор условного перехода IF... THEN ... ELSE, какая разница, куда его пихнём.
А вот если его нет, но хотим циклический процесс - тогда рекурсия.
А если не хотим пользоваться ни рекурсией, ни глобальными переменными, но всё же хотим организовать циклический процесс - тогда остаётся Пролог, язык логического программирования.

Думаю, что нужно вырезать эту часть дискуссии и переместить в компьютерную тематику :)
Ὁ λόγος τῆς νοήσεως ἐλπίς ἐστιν.
Талбишектә үстем мин дә, сизелми мени бер дә?
Bless the Beasts and Children.

Offline Bhudh

  • Posts: 45604
  • aka 蝎
    • Сайты по языкознанию
нужен только оператор условного перехода IF... THEN ... ELSE
И шо с ним делать без оператора GOTO?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline _Swetlana

  • Posts: 13782
нужен только оператор условного перехода IF... THEN ... ELSE
И шо с ним делать без оператора GOTO?
И без него можно. Достаточно простейшей ДМТ с последовательным доступом, когда на каждом такте либо шаг влево, либо шаг вправо, либо на месте. 
Ὁ λόγος τῆς νοήσεως ἐλπίς ἐστιν.
Талбишектә үстем мин дә, сизелми мени бер дә?
Bless the Beasts and Children.

Offline Tibaren

  • Global Moderator
  • *
  • Posts: 7693
Нет, это ко всем национальностям применяют.
Вот примеры из учебника Додоны Кизири:
Quote
амэрикэли бизнэсмэни ÷ амэрикули џази
гэрманэли мэгобари (немецкий друг) ÷ гэрманули газэтʰи
Ух ты, спасибо. Ромынул ши ӂеорӂиянул бхаи-бхаи, значит.
В грузинском этот принцип не очень строгий. Напр., можно сказать kutaturi "кутаисец". В сванском более чёткое противопоставление по признаку человек - не человек, оформленное разными префиксами, ср.
mu-šwän "сван" vs. lu-šnu "сванский" (язык, дом и т.д.)
mə-zän "мегрел" vs.  lu-znu "мегрельский"
Hizkuntza aldian hibaian zehar hibia da (c)

Offline Ильич

  • Posts: 8374
Как реализуется оператор цикла с выходом по условию на самом низком уровне, т.е. на уровне детерминированной машины Тьюринга? Ходим по кругу, переходя из состояние в состояние, и в каком-то состоянии развилка: при одном входном сигнале идём по кругу, при другом - выходим. То есть для реализации цикла нужен только оператор условного перехода IF... THEN ... ELSE, какая разница, куда его пихнём.
А вот если его нет, но хотим циклический процесс - тогда рекурсия.
А если не хотим пользоваться ни рекурсией, ни глобальными переменными, но всё же хотим организовать циклический процесс - тогда остаётся Пролог, язык логического программирования.
Очень странное высказывание. Машина Тьюринга всё же абстракция. Конкретная реализация языка программирования только машинные коды, может быть не за один шаг. Большая разница, куда мы пихнем проверку условия. И настолько важная, что в некоторых языках программирования достаточно высокого уровня можно самому указать это место.
Глобальные переменные вообще не при чем, равно как и Пролог. Всё это только внешнее оформление.

Offline Bhudh

  • Posts: 45604
  • aka 蝎
    • Сайты по языкознанию
настолько важная, что в некоторых языках программирования достаточно высокого уровня можно самому указать это место
ЧСХ, в ЯПах низкого уровня aka ассемблерах указывать не только можно, но до́лжно.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline _Swetlana

  • Posts: 13782
Как реализуется оператор цикла с выходом по условию на самом низком уровне, т.е. на уровне детерминированной машины Тьюринга? Ходим по кругу, переходя из состояние в состояние, и в каком-то состоянии развилка: при одном входном сигнале идём по кругу, при другом - выходим. То есть для реализации цикла нужен только оператор условного перехода IF... THEN ... ELSE, какая разница, куда его пихнём.
А вот если его нет, но хотим циклический процесс - тогда рекурсия.
А если не хотим пользоваться ни рекурсией, ни глобальными переменными, но всё же хотим организовать циклический процесс - тогда остаётся Пролог, язык логического программирования.
Очень странное высказывание. Машина Тьюринга всё же абстракция. Конкретная реализация языка программирования только машинные коды, может быть не за один шаг. Большая разница, куда мы пихнем проверку условия. И настолько важная, что в некоторых языках программирования достаточно высокого уровня можно самому указать это место.
Глобальные переменные вообще не при чем, равно как и Пролог. Всё это только внешнее оформление.
Самый низкий уровень - уровень математической модели алгоритма. Их три. Если в качестве модели алгоритма возьмём ДМТ, получаем так называемые алгоритмические языки, независимо от уровня: и ассемблер, и бейсик. В этой модели достаточно последовательного доступа. Будет, конечно, медленнее, но ведь речь идёт не о конкретном трансляторе, а вообще о теоретической возможности сделать универсальный интерпретатор - U-машину Тьюринга.
Вторая модель, эквивалентная первой - вычислимая (частично-рекурсивная) функция. От неё получаем функциональные языки. Третья, вообще говоря, не эквивалентная модель - исчисление предикатов. Здесь получаем логические языки.

Смысл моей фразы был следующий. Если я хочу в первой модели организовать циклический процесс, мне нужно с помощью ДМТ уметь реализовать оператор условного перехода.
Если я во второй модели хочу циклический процесс - мне нужна рекурсия.
А третья модель позволяет организовать циклический процесс просто за счёт механизма логического вывода - возврата после неудачи (неудачной попытки доказательства предиката).
Правда, в таком циклическом процессе невозможно запомнить какие-то вычисленные значения, т.к. при возврате они уничтожаются. Но речь шла просто об организации циклического процесса при отсутствии управляющих операторов и глобальных переменных, и нежелании использовать рекурсию, например, чтобы ускорить выполнение программы.
Не будем углубляться в Пролог, где у него чего. Написан, он, конечно, на Си. :)   
Ὁ λόγος τῆς νοήσεως ἐλπίς ἐστιν.
Талбишектә үстем мин дә, сизелми мени бер дә?
Bless the Beasts and Children.

Offline Ильич

  • Posts: 8374
Да хоть какую модель берите, и любой язык программирования, всё равно реализован цикл будет используя команду условного перехода, даже если в языке программирования вообще нет GO TO, нет циклов, etc. В ассемблерах, которые здесь можно рассматривать как приближение к машинным командам, это команды condicional jump.
Альтернативным способом перехода можно считать обработку прерываний, но это совсем другая песня.

В JS дело обстоит некількі не так.
и есть
do{/** do something **/}while(/** condition **/)
который прекращается при истинном условии.
То бишь тут while равнозначно until.
Ошибаетесь.
Quote
Клиентский JavaScript. Руководство.
Оператор do...while повторяется, пока специфицированное выражение не станет false. Оператор do...while выглядит так:
do {
   statement
} while (condition)

Offline _Swetlana

  • Posts: 13782
Да хоть какую модель берите, и любой язык программирования, всё равно реализован цикл будет используя команду условного перехода, даже если в языке программирования вообще нет GO TO, нет циклов, etc. В ассемблерах, которые здесь можно рассматривать как приближение к машинным командам, это команды condicional jump.
Альтернативным способом перехода можно считать обработку прерываний, но это совсем другая песня.
Мне тут анек рассказали, как Гераклит сидит в нужнике, к нему заходят его ученики, стоят в нерешительности на пороге, а Гераклит им: "И здесь есть боги" ;D
Машинные коды тоже имеют матмодель, и модель эта - ДМТ, идея транслятора в смысле Платона, не реальный транслятор, U-машина Тьюринга (с последовательным доступом), которая может выполнить (интерпретировать) любую ДМТ-программу.
 

Ὁ λόγος τῆς νοήσεως ἐλπίς ἐστιν.
Талбишектә үстем мин дә, сизелми мени бер дә?
Bless the Beasts and Children.

Offline Bhudh

  • Posts: 45604
  • aka 蝎
    • Сайты по языкознанию
Вот как раз сейчас решал задачку М1 и понял, в чём ошибся…
Конечное условие часто пишут как отрицательное:
То есть словесно выражается как "пока x не равно y".
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Ильич

  • Posts: 8374
Наверное, многое кажется в языке необычным, когда сталкиваешься с чем-то новым. Потом привыкаешь, и экзотичность уже не ощущается.
Когда учил в школе немецкий, то удивили отделяемые приставки. Как же так, часть слова, приставка и вдруг прыгает в конец предложения. Потом увидел в английском такое же поведение предлогов. Уже воспринималось как родное.

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: