Коллекционируем необычные явления в языках

Автор Юрий Б., августа 31, 2014, 23:48

0 Пользователи и 1 гость просматривают эту тему.

zwh

Цитата: Bhudh от сентября  2, 2014, 02:55
В том и прикол, что в ЯПах конструкции
do {/** do something **/} while(/** condition **/) и
do {/** do something **/} until(/** condition **/)
означают одно и то же :green:.
не, разное:

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

Vertaler

Цитата: Yitzik от сентября  1, 2014, 21:10
Цитата: Vertaler от сентября  1, 2014, 11:05
В румынском для этнонимов, хоронимов и т. д. существует два прилагательных: одно употребляется по отношению к людям и языкам, второе — ко всему остальному.
Вроде в грузинском почти то же самое:
- к людям кʰартʰвэли поэти "грузинский поэт"
- к остальному кʰартʰули эна да литэратура "грузинский язык и литература"
Это разве то же? Это их националистическая фишка: в Грузии живут картвелы (включая сванов, лазов и мегрелов), а литературный язык — картули, то есть собственно грузинский.

То есть картвели 'kartvelida', картули 'kartvela'.
Стрч прст в крк и вынь сухим.

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Yitzik

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

zwh

Цитата: Bhudh от сентября  2, 2014, 11:00
Цитата: zwh от сентября  2, 2014, 07:32не, разное
Это в каком языке? Обычно, если do‥while есть, do‥until отсутствует.
В Паскале есть и while ... do, и repeat ... ... until.

Ильич

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

Ильич

Цитата: Bhudh от сентября  2, 2014, 11:00
Цитата: zwh от сентября  2, 2014, 07:32не, разное
Это в каком языке? Обычно, если 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 раза, второй ни разу.

Ильич

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

Kaze no oto

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

Vertaler

Цитата: Yitzik от сентября  2, 2014, 12:29
Нет, это ко всем национальностям применяют.
Вот примеры из учебника Додоны Кизири:
Цитироватьамэрикэли бизнэсмэни ÷ амэрикули џази
гэрманэли мэгобари (немецкий друг) ÷ гэрманули газэтʰи
Ух ты, спасибо. Ромынул ши ӂеорӂиянул бхаи-бхаи, значит.
Стрч прст в крк и вынь сухим.

Bhudh

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

_Swetlana

Ув. коллеги, я зачем на тему подписалась? Чтобы узнать, что цикл с выходом по условию - необычное явление в яп? Как вам не аяяй.
🐇

Bhudh

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

_Swetlana

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

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

Думаю, что нужно вырезать эту часть дискуссии и переместить в компьютерную тематику :)
🐇

Bhudh

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

_Swetlana

Цитата: Bhudh от сентября  2, 2014, 17:18
Цитата: _Swetlana от сентября  2, 2014, 17:09нужен только оператор условного перехода IF... THEN ... ELSE
И шо с ним делать без оператора GOTO?
И без него можно. Достаточно простейшей ДМТ с последовательным доступом, когда на каждом такте либо шаг влево, либо шаг вправо, либо на месте. 
🐇

Tibaren

Цитата: Vertaler от сентября  2, 2014, 16:10
Цитата: Yitzik от сентября  2, 2014, 12:29
Нет, это ко всем национальностям применяют.
Вот примеры из учебника Додоны Кизири:
Цитироватьамэрикэли бизнэсмэни ÷ амэрикули џази
гэрманэли мэгобари (немецкий друг) ÷ гэрманули газэтʰи
Ух ты, спасибо. Ромынул ши ӂеорӂиянул бхаи-бхаи, значит.
В грузинском этот принцип не очень строгий. Напр., можно сказать kutaturi "кутаисец". В сванском более чёткое противопоставление по признаку человек - не человек, оформленное разными префиксами, ср.
mu-šwän "сван" vs. lu-šnu "сванский" (язык, дом и т.д.)
mə-zän "мегрел" vs.  lu-znu "мегрельский"
Zikiro beltza ona dut bañan obea buztan zuria

Ильич

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

Bhudh

Цитата: Ильич от сентября  2, 2014, 19:12настолько важная, что в некоторых языках программирования достаточно высокого уровня можно самому указать это место
ЧСХ, в ЯПах низкого уровня aka ассемблерах указывать не только можно, но до[b]́[/b]лжно.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

_Swetlana

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

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

Ильич

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

Ильич

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

_Swetlana

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

🐇

Bhudh

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

Ильич

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

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр