Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
"логичность" языков
Yevgenijz Не на форуме
Новичок
*


Рейтинг: 0
Сообщений: 2
У нас с: 30.09.2018
Пол: Мужской
Сказал Спасибо: 0
Есть Спасибо: 0 в 0п.
Сообщение: #1 | 30.09.2018 13:15
"логичность" языков
Цитата:Ленайра моргнула, честно попыталась осмыслить слова — иногда русские фразы ставили ее в тупик. В этом плане ее родной язык очень походил на английский, с его логикой расстановки слов и образования падежей, родов и склонений. Все логично и жестко. Никаких исключений, никаких двусмысленностей. Может быть, это плохо для творчества, но очень хорошо для магии и построения заклинаний, когда фразу можно понять только так, как нужно, и никак иначе. В своей жесткости смысла английский не очень уступал рунному письму, хотя и со своими проблемами. Все же разговорный язык неизбежно вбирает в себя много разного, не всегда ему нужного, но обогащающего речь. Тем более что язык аристократии отличается от языка крестьян
Автор, видимо, недостаточно хорошо знает английский, иначе бы не ляпнул такое.
Английский очень сильно отличается от Паскаля, например, слово then в нём имеет совершенно другой смысл. Например, в конструкции
Цитата:If русские не пускают евреев к нам then мы поставим эмбарго на поставки им стратегических товаров
слово then означает отнюдь не то, что можно было бы подумать, что русские должны что-то сделать, чтобы Америка отменила санкции. В этой фразе "than" имеет смысл "и после этого". Таким образом по-англий

ски фраза "После того - не значит вследствие" звучит как then не значит then

что опровергает логичностьб английского языка. Впрочем, все естественные языки нелогичны.

да и английская поговорка
Цитата:пишется "Манчестер", читается - "Ливерпуль"

Ди и Паскаль нелогичен: вот зачем все begin имеют свой end;, кроме первого begin последний end. пишется с точкой, а не с запяточием, что нелогично.

Ещё нелогичность Паскаля: после всех операторов ставится запяточие;, но если после оператора стоит оператор end; или end., то запяточие Не ставится. В общем, наделал Вирт проблем составителям трансляторов с его языка.
(Последний раз сообщение было отредактировано 30.09.2018 в 14:42, отредактировал пользователь Yevgenijz.)
Сказать Спасибо Цитировать выделенное Вернуться к началу
Serge Sadov Не на форуме
Автор
**********


Рейтинг: 156
Сообщений: 2 362
У нас с: 10.03.2009
Пол: Мужской
Сказал Спасибо: 17
Есть Спасибо: 4827 в 686п.
Сообщение: #2 | 01.10.2018 20:46
RE: "логичность" языков
(30.09.2018 13:15)Yevgenijz писал(а):  но если после оператора стоит оператор end; или end., то запяточие Не ставится.
Допускается не ставить, но правила хорошего тона требуют его там ставить. Всегда ставил - проблем меньше, если вдруг понадобиться что-нибудь еще вписать в то место, то вылетит ошибка. С точкой тоже все логично - конец программы.

В этом плане мне нелогичным кажется наличие оператора begin в FOR, WHILE, WHEN. Сами эти операторы логично было бы считать началом блока, требующего наличие в конце оператора END.

- У него за плечами - огромный жизненный опыт!
- А когда-то там были крылья...
Сказать Спасибо Цитировать выделенное Вернуться к началу
Abs Не на форуме
Продвинутый
***


Рейтинг: 1
Сообщений: 294
У нас с: 15.03.2009
Пол:
Сказал Спасибо: 2
Есть Спасибо: 60 в 21п.
Сообщение: #3 | 02.10.2018 08:44
Ответ: "логичность" языков
Как раз всё логично. For/While выполняют один оператор. Если оператор составной, он заключается в операторные скобки begin/end. Всё. А присутствие закрывающей операторной скобки без открывающей сломало бы всю логику.

Истина размножается спорами...
Сказать Спасибо Цитировать выделенное Вернуться к началу
Yevgenijz Не на форуме
Новичок
*


Рейтинг: 0
Сообщений: 2
У нас с: 30.09.2018
Пол: Мужской
Сказал Спасибо: 0
Есть Спасибо: 0 в 0п.
Сообщение: #4 | 18.02.2019 15:56
RE: "логичность" языков
(01.10.2018 20:46)Serge Sadov писал(а):  Допускается не ставить, но правила хорошего тона требуют его там ставить. Всегда ставил - проблем меньше, если вдруг понадобиться что-нибудь еще вписать в то место, то вылетит ошибка. С точкой тоже все логично - конец программы.
Читал в учебнике, что поставить ; в таких случаях именно ошибка, очень удивлялся, ибо в PL1 как раз ; в конце любого оператора обязательно, (в т.ч. и в последнем END; ) поэтому после PL, C, Фортран именно Паскаль кажется чудовищно неудобной дикостью.
Точка в конце программы нелогична - она заставляет транслятор по особому её обрабатывать, если бы было ; составителям транслятора было бы проще.
Ещё Паскаль бесит тем, что программы на нем приходится писать сзаду-наперед.
Если вы читали "Похождения бравого солдата Швейка", то там есть такой эпизод, когда Швейк спрашивает (обер)лейтенанта Лукаша:
- Какой том нести, первый или второй?
а Лукаш отвечает:
- Мы же не евреи какие-нибудь, чтобы сзаду-наперед читать.
Так вот, Паскаль, в отличие от Си и Фортрана построен так, что то, что в других языках называется ПОДпрограммой, в Паскале по повелению Вирта, чтоб ему икалось, ОБЯЗАНА писаться НАД текстом программы, для которой она является подпрограммой. Это затрудняет понимание программ, написанных на Паскале и затрудняет написание программ на Паскале.
Почему я вспомнил евреев: у них книги пишутся справа-налево и строчки идут снизу-вверх, вот и программу на Паскале приходится читать снизу-вверх, но не весь текст снизу-вверх, ведь внутри ПОДпрограмм, которые против всяких правил наименования, пишутся НАД программами, текст опять-таки пишется сверху-вниз, что ещё больше запутывает.
В Фортране же главная программа ОБЯЗАНА быть самой верхней: та, которая сверху, та и главная, в PL можно располагать главную программу как раздельно, самой верхней, как в Фортране, так и объемлющей подпрограммы, как в Паскале и Алголе, но нам говорили, что это нежелательно и лучше по отдельности. В Си та программа главная, которая называется main и неважно, где она стоит, но опять-таки для лучшей читаемости лучше, когда главная программа сверху.

(02.10.2018 08:44)Abs писал(а):  Как раз всё логично. For/While выполняют один оператор. Если оператор составной, он заключается в операторные скобки begin/end. Всё. А присутствие закрывающей операторной скобки без открывающей сломало бы всю логику.
В PL каждый DO должен иметь свой END; даже если внутри цикла всего один оператор.(например DO I=1 TO N;a(I)=B(I);END; ) А в С вообще вместо операторных скобок begin end ставят фигурные скобки {}

(01.10.2018 20:46)Serge Sadov писал(а):  понадобиться
Вы, случайно, не украинецЬ?
Рассказ о мягком знаке в глаголах и о том, как он своим личным отсутствием строит настоящее и будущее время
http://flibusta.is/b/539410/read#t57
Рассказ ведется от лица мягкого знака.
В украинЬсЬкой мове в глаголах после т мягкий знак ставитЬся ВСЕГДА, а в русском языке не всегда, а только в неопределенной форме или повелительном наклонении, тся-ться - это частный случай того же самого правила. Исключение: когда стоит модальный глагол (может или должен.) Может понадобиться и понадобится.
Для русского можно было бы ставить проверочные вопросы:
Что сделает?(мягкого знака нет) - понадобится.
Может что сделаться?(мягкий знак есть) - понадобиться.
А для украинЬця это будет неприемлемо, потому что для него контрольный вопрос будет Шо сделаитЬ? Шо сдеитЬся?, соответственно всегда будет содержать Ь, как оно в мове и есть.
(Последний раз сообщение было отредактировано 18.02.2019 в 17:14, отредактировал пользователь Yevgenijz.)
Сказать Спасибо Цитировать выделенное Вернуться к началу
Alekc Не на форуме
Пользователь
**


Рейтинг: 0
Сообщений: 59
У нас с: 23.03.2009
Пол:
Сказал Спасибо: 1
Есть Спасибо: 9 в 7п.
Сообщение: #5 | 19.02.2019 12:18
RE: "логичность" языков
(18.02.2019 15:56)Yevgenijz писал(а):  В PL каждый DO должен иметь свой END; даже если внутри цикла всего один оператор.(например DO I=1 TO N;a(I)=B(I);END; )
Вот меня это в VBScript жутко бесит. Если мне надо сделать простое ветвление, например: if fileexists() then ..., то приходится городить блок на три строчки, когда за глаза хватило бы двух.

(18.02.2019 15:56)Yevgenijz писал(а):  Так вот, Паскаль, в отличие от Си и Фортрана построен так, что то, что в других языках называется ПОДпрограммой, в Паскале по повелению Вирта, чтоб ему икалось, ОБЯЗАНА писаться НАД текстом программы, для которой она является подпрограммой.
"подпрограмма" - это перевод и в изначальном смысле он вовсе не обозначает что код должен располагаться именно после основной программы. Это просто выделенный в отдельную сущность кусок кода и ничего более. Зато такое расположение процедур позволило сделать однопроходовый компилятор и повысить скорость компиляции.

Ну и да, время расставило всё по своим местам - где там тот PL и Фортран?..
Сказать Спасибо Цитировать выделенное Вернуться к началу
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)