Автор Тема: Программирование по-русски  (Прочитано 79636 раз)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Программирование по-русски
« Ответ #60 : 08.02.2021 20:31:59 »
Как же тогда мучаются англоязычные программисты, у которых английский родной с детства? :)))

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

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: Программирование по-русски
« Ответ #61 : 09.02.2021 07:14:28 »
Причём русификации, порождают стандартизацию заблуждений.
Здесь например, в прилагаемой ссылке
https://forum.altlinux.org/index.php?topic=44627.msg355998#msg355998
заблуждение, что do, это цикл. Цикла do не существует в природе. Цикл, это конструкция. Например do...loop, это цикл.
Эк Вы замахнулись на интернейшл стандардз. Не знаю, что там со стандартами на do loop, наверняка их не существует в природе, потому у каждого толкователя своё мнение, которое неоспоримо. Зато в ISO/IEC 9899:201x утверждается следующее:

6.8.5 Iteration statements
Syntax
1 iteration-statement:
while ( expression ) statement
do statement while ( expression ) ;
for ( expression opt ; expression opt ; expression opt ) statement
for ( declaration expression opt ; expression opt ) statement

6.8.5.2 The do statement
1 The evaluation of the controlling expression takes place after each execution of the loop body.

Инглишем по белому заявлено наличие операторов цикла, и do - один из них. И то что оператор составной и на уровне грамматики есть ещё и while - это дело десятое, это надобно хотя бы полистать Драгонбук, что бы в такие дебри лезть.
« Последнее редактирование: 09.02.2021 07:17:02 от trs »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Программирование по-русски
« Ответ #62 : 09.02.2021 14:11:22 »
Причём русификации, порождают стандартизацию заблуждений.
Здесь например, в прилагаемой ссылке
https://forum.altlinux.org/index.php?topic=44627.msg355998#msg355998
заблуждение, что do, это цикл. Цикла do не существует в природе. Цикл, это конструкция. Например do...loop, это цикл.
Эк Вы замахнулись на интернейшл стандардз. Не знаю, что там со стандартами на do loop, наверняка их не существует в природе, потому у каждого толкователя своё мнение, которое неоспоримо. Зато в ISO/IEC 9899:201x утверждается следующее:

6.8.5 Iteration statements
Syntax
1 iteration-statement:
while ( expression ) statement
do statement while ( expression ) ;
for ( expression opt ; expression opt ; expression opt ) statement
for ( declaration expression opt ; expression opt ) statement

6.8.5.2 The do statement
1 The evaluation of the controlling expression takes place after each execution of the loop body.

Инглишем по белому заявлено наличие операторов цикла, и do - один из них. И то что оператор составной и на уровне грамматики есть ещё и while - это дело десятое, это надобно хотя бы полистать Драгонбук, что бы в такие дебри лезть.

Цитируя 'Programming languages — C', раздел Semantics вы почему-то пропустили.

Правильное определение цикла и тела цикла в алгоритмической конструкции без привязки к языку программирования или интепретатору и не имеет даже значения какая аппаратная платформа:

A loop is a sequence of statements which is specified once but which may be carried out several times in succession. The code "inside" the loop (the body of the loop, shown below as xxx) is obeyed a specified number of times, or once for each of a collection of items, or until some condition is met, or indefinitely.

Это определение справедливо и для C, и для bash, и для SOS.
Поэтому определение 'do - цикл' неверно в принципе.
И поэтому нужно различать понятия цикла и тела цикла безотносительно языка программирования или интерпретатора.
« Последнее редактирование: 09.02.2021 15:42:33 от Speccyfighter »

Оффлайн ovk

  • Давно тут
  • **
  • Сообщений: 134
Re: Программирование по-русски
« Ответ #63 : 09.02.2021 19:58:19 »
m1
a=a+1
if a<10 then goto m1
....
Цикл?

Оффлайн gosts 87

  • Завсегдатай
  • *
  • Сообщений: 2 697
  • Дмитрий/Dmitry/德米特里/दिमित्री
Re: Программирование по-русски
« Ответ #64 : 09.02.2021 20:17:47 »
Ты и китайские иероглифы не поймешь, хотя, надо заметить, они более близки к автоматическому распознаванию на уровне блоков.
Иероглифы не подходят для написания кода, хотя-бы потому-что, один иероглиф - это целый слог, а не буква алфавита. :-)
« Последнее редактирование: 09.02.2021 20:19:35 от gosts 87 »

Оффлайн gosts 87

  • Завсегдатай
  • *
  • Сообщений: 2 697
  • Дмитрий/Dmitry/德米特里/दिमित्री
Re: Программирование по-русски
« Ответ #65 : 09.02.2021 20:24:01 »
И извиняюсь за тавтологию, но китайская грамота, для меня китайская грамота. Поэтому иероглифы, для меня ничего не значат. И для меня они не несут, ни литературного, ни их философского содержания.
А иероглифы (тем более в отдельности) и не несут никакого литературного и.т.д. значения. Один иероглиф - это всего-лишь один слог (частица) целого языка. :-)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Программирование по-русски
« Ответ #66 : 10.02.2021 00:13:04 »
m1
a=a+1
if a<10 then goto m1
....
Цикл?

Рекурсия. Перед которой переменная не декларирована.

А разница есть:

без декларации переменной
#!/bin/bash

m1 () {
a=$((a+1))
echo $a
if (( a < 10 ))
   then m1
fi
}
#a=0
echo $a
m1
$ ./m1.sh

1
2
3
4
5
6
7
8
9
10

с декларацией
#!/bin/bash

m1 () {
a=$((a+1))
echo $a
if (( a < 10 ))
   then m1
fi
}
a=0
echo $a
m1
$ ./m1.sh
0
1
2
3
4
5
6
7
8
9
10

бесконечная рекурсия
#!/bin/bash

m1 () {
a=$((a+1))
echo $a
#if (( a < 10 ))
#   then m1
#fi
sleep 1
m1
}
a=0
echo $a
m1
$ ./m1.sh
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
^C
« Последнее редактирование: 10.02.2021 02:16:15 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Программирование по-русски
« Ответ #67 : 10.02.2021 00:39:19 »
И извиняюсь за тавтологию, но китайская грамота, для меня китайская грамота. Поэтому иероглифы, для меня ничего не значат. И для меня они не несут, ни литературного, ни их философского содержания.
А иероглифы (тем более в отдельности) и не несут никакого литературного и.т.д. значения. Один иероглиф - это всего-лишь один слог (частица) целого языка. :-)

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

Оффлайн ovk

  • Давно тут
  • **
  • Сообщений: 134
Re: Программирование по-русски
« Ответ #68 : 10.02.2021 13:11:44 »
Рекурсия. Перед которой переменная не декларирована
Рекурсия, в программировании, вызов функции (или процедуры) из самой этой функции. Кстати, если переменная не определена, компилятор | интерпретатор выдаст ошибку, я просто привел  конструкцию цикла на гипотетическом языке, без декларации переменных. Достаточно для практических целей цикл описан в википедии

https://ru.wikipedia.org/wiki/Цикл_(программирование)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Программирование по-русски
« Ответ #69 : 10.02.2021 14:49:54 »
Рекурсия. Перед которой переменная не декларирована
Рекурсия, в программировании, вызов функции (или процедуры) из самой этой функции. ..., я просто привел  конструкцию цикла на гипотетическом языке, без декларации переменных. Достаточно для практических целей цикл описан в википедии

https://ru.wikipedia.org/wiki/Цикл_(программирование)

:-) Понял что это гипотетический язык. Да это и неважно. Главное был понятен смысл конструкции. Скажем это можно было бы воспринимать как несколько конкретизированный алгоритм. А его реализация на конкретном языке, это уже детали.
И вы наверное поняли, что примеры приведены не для вас, а для пользователей форума. Чтобы они на конкретных примерах понимали о чём идёт речь и как это выглядит в каждом конкретном случае. И чтобы они понимали, что sysvinit, да и init вообще, не так страшен, чем ужасы, которые о нём рассказывают.

Кстати, если переменная не определена, компилятор | интерпретатор выдаст ошибку,

При вызове функции из самой функции, если переменная не объявлена, по крайней мере bash-4.4.23 не споткнулся об необъявленную переменную (первый пример выше). Хотя теоретически, это должно было произойти. Но Beta Basic 3.0 для Спектрум, при вызове функции из самой функции без объявленной переменной, скорее всего выдаст ошибку. Но точнее не скажу. За давностью.

Оффлайн gosts 87

  • Завсегдатай
  • *
  • Сообщений: 2 697
  • Дмитрий/Dmitry/德米特里/दिमित्री
Re: Программирование по-русски
« Ответ #70 : 10.02.2021 17:01:57 »
Два иероглифа кунг фу работа и время, это работа над собой, достижение мастерства. Но мудрецы Китая говорят, что мастерство не достижимо, это бесконечный Путь. Т.е. наполнение иероглифов более глубокое, чем просто перевод.
Отчасти можно согласиться, но только в том случае, если язык воспринимать как часть целой философии.

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

Оффлайн flint1975

  • Завсегдатай
  • *
  • Сообщений: 1 425
    • Email
Re: Программирование по-русски
« Ответ #71 : 10.02.2021 22:13:31 »
Я иероглифы упомянул только для того, чтобы продемонстрировать зрительное восприятие ;)
но иероглифы ближе к понятиям (словам) чем к слогам (просто часть понятий используется для описания слогов, а не наоборот)
и иероглифы вполне успешно можно применять для программирования. Поскольку язык программирования (точнее его интерпретатор) - это конечный автомат имеющий некоторый алфавит на входе и другой алфавит на выходе. Какая разница какими символами определять алфавит автомата!

Оффлайн gosts 87

  • Завсегдатай
  • *
  • Сообщений: 2 697
  • Дмитрий/Dmitry/德米特里/दिमित्री
Re: Программирование по-русски
« Ответ #72 : 10.02.2021 22:34:39 »
но иероглифы ближе к понятиям (словам) чем к слогам
С точки зрения носителя этого языка - да, каждый иероглиф (кроме знаков препинания) - это отдельное слово.
Для примера: 你好 - Здравствуйте.
отдельно: 你 - ты.
отдельно: 好 - хорошо.
Т.е. когда китаец здоровается, он, как-бы, желает тому с кем здоровается, хорошего.
и иероглифы вполне успешно можно применять для программирования
Возможно. Но сложновато. :-)
« Последнее редактирование: 10.02.2021 22:47:43 от gosts 87 »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Программирование по-русски
« Ответ #73 : 11.02.2021 00:13:53 »
Поскольку язык программирования (точнее его интерпретатор) - это конечный автомат имеющий некоторый алфавит на входе и другой алфавит на выходе. Какая разница какими символами определять алфавит автомата!

Теоретически да. Но понадобится может быть что-то вроде таблицы соответствий. Интепретатор может поперхнуться, например пытаясь угадать на каком языке написан оператор, на русском, украинском или беларуском. А учитывая что в украинском и беларуском много однокоренных слов, интепретатору это может снести "мозг". К тому же, насколько сохранится быстродействие, количество ошибок, в том числе и в определении  языка, объём потребляемой оперативной и дисковой памяти, насколько в проекте будет велик процент носителей языка способных исправлять ошибки. И прочее. То что учесть сразу невозможно. Сложности могут быть и с языками нероманской группы использующих латиницу. Да и в иероглифах возможно будут разночтения. В зависимости от страны. Как это вообще может отразиться на интепретаторе в целом? Станет ли носитель языка, в котором используется например латиница (и это необязательно романская группа / или наоборот), искать ошибки или улучшать код написанный на кириллице, либо в каком-то другом варианте? Насколько долго для этого хватит альтруизма? Здесь может быть масса незаметных моментов. Про проприетарный код разговор вообще не идёт. Тут всё глухо.
Ну это как мне всё это видится.

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: Программирование по-русски
« Ответ #74 : 11.02.2021 05:56:48 »
Цитируя 'Programming languages — C', раздел Semantics вы почему-то пропустили.
Очевидно, потому что я процитировал необходимое и достаточное. Выражение "цикл do" совершенно корректно. По международному стандарту  ISO/IEC 9899 в редакции 201x, параграф 6.8.5.2.

Правильное определение цикла и тела цикла в алгоритмической конструкции без привязки к языку программирования или интепретатору и не имеет даже значения какая аппаратная платформа:

A loop is a sequence of statements which is specified once but which may be carried out several times in succession. The code "inside" the loop (the body of the loop, shown below as xxx) is obeyed a specified number of times, or once for each of a collection of items, or until some condition is met, or indefinitely.
Это что за отсебятина? Завели речь о стандартах, об их перевирании при переводе, давайте ссылки на стандарты.

Рекурсия, в программировании, вызов функции (или процедуры) из самой этой функции.
Согласно тезису Чёрча-Тьюринга рекурсия и цикл эквивалентны.
« Последнее редактирование: 11.02.2021 06:08:37 от trs »