1

Верно ли утверждение, что действия, которые возможны при выполнении программы на традиционном языке, задаются в повелительной форме? Если да, возможно ли строить программы, используя изъявительное наклонение? А может они (действия в изъяв.накл.) уже используются в каких-либо языках программирования добавляя коду изящность и эффективность?

Изъявительное наклонение выражает действие, которое реально существует, существовало или будет существовать (купил, прочитал) ; глаголы в изъявительном наклонении имеют формы времени (настоящего, прошедшего и будущего) , лица (1,2 и 3) и числа (единственного или множественного);

UPD. (Непейвода Н. Н., Скопин И. Н. Основания программирования. — 2003, стр 113)

P.S. Не привел источник сразу, потому как прямо не цитировал. Просто вынес на ruSO интересный для себя вопрос.

TimurVI
  • 8,480
  • 5
    прочитал как "язвительное наклонение", и уже бросился писать, что постоянно это делаю –  Feb 22 '17 at 19:38
  • Я не считаю, что в программах хоть как то обозначено наклонение. по сравнению с английским программы пишутся максимально сокращенными формулировками. части речи, которые могли бы однозначно определить наклонение отброшены. И простейшую конструкцию "if(i>0) print i;" я воспринимаю как "если i больше нуля то печатаю i", а не как "печатай i" – Mike Feb 22 '17 at 20:23
  • является ли описание схемы базы данных, или целевой системы в виде списка железа, ОС, доступных библиотек, схем взаимодействия компонентов изъявительным наклонением ? – Dmitry Ponyatov Feb 22 '17 at 20:24
  • Если не секрет, что это вы такое кур... эээ... читаете?... :) – Harry Feb 23 '17 at 04:17
  • Приведите пример кода, как вы это видите? – Kromster Feb 23 '17 at 09:47
  • @Harry обновил вопрос. – TimurVI Feb 23 '17 at 10:49
  • 1
    Прочитал указанный вами источник. Там автор подробно отвечает на поставленный им вопрос. Хотя это даже не вопрос, это вводный текст для лучшего восприятия последующей темы про нетрадиционные (читать видимо как не императивные) языки. Наклонение само по себе (в том контексте) роли в общем то не играет. И ответ да, есть много не императивных языков, которые хороши для решения задач для которых они созданы и знать хотя бы про существование которых необходимо – Mike Feb 23 '17 at 13:40
  • 1
    Тестирование в стиле BDD, используя Cucumber демонстрирует такое применение языка (The Truth about BDD). Можно рассматривать это как пример декларативного стиля DSL. – jfs Feb 23 '17 at 14:00
  • 1
    вот статья, которая упоминает возможные причины, почему повествовательный стиль (Gherkin) даже для тестов не получил широкого распространения. Хотя разработка поддерживающих этот подход инструментов таких как behave достаточно активна – jfs Feb 24 '17 at 10:09

2 Answers2

3

все же дополните вопрос примерами собственного выдуманного языка

"я читаю книгу" отражает текущее состояние -> welcome в конечные автоматы

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

"я буду читать книгу" или "я хочу читать книгу" -- явно прослеживаются языки для систем планирования, управления задачами, финансового анализа и логистики: "могу крутить гайки с восьми до пяти, если меня будут возить на работу на такси", "в пакете myblin есть дыра в безопасности", "завтра нужно запустить проверку диска"

  • императивное программирование -- явно в повелительном наклонении

  • есть еще декларативное -- описываем что нужно получить, система разработки строит 1+ решение, удовлетворяющее заданным условиям и ограничениям (в т.ч. программирование в ограничениях: переменные имеют следующий диапазон, удовлетворяют вот такой системе уравнений, оптимизировать вот эти значения, выходной код генерировать под всю существующую матрицу mainstream платформ/языков программирования, в целевом коде можно использовать вот такие библиотеки): вроде похоже на изъявительное наклонение ?

есть еще всякое странное и смешанное декларативно/императивное

программирование через наборы правил, например описание конечного автомата в виде набора правил, условий перехода между ними, входные/выходные интерфейсы, код выполняемый при переходе/входе/выходе из состояний

языки трансформации данных: набор декларативных шаблонов входная структура -> выходная структура + функциональные части правил для прямого преобразования

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

чисто логические языки типа Prolog

языки описания знаний, семантические сети, сети фреймов Минского -- включают активную часть, например описания алгоритмов в общем виде, которые могут быть применены в качестве шаблона для генерации кода, или алгоритмы высшего порядка: алгоритмы преобразования алгоритмов

2

Да, скорее всего верно. Так как все (или большинство) языков программирования используют английский, то:

Для того чтобы поставить глагол в повелительное наклонение мы используем инфинитив без частицы to.

Как видите, все глаголы в программировании используют лишь повелительное наклонение (print, show, add и тп.)

Написать программу можно используя только существительные, но вот команд в изъявительном наклонении просто нет.

  • 1
    подождите, как нет команд в изъявительном наклонении? А это что - "Рот закрыл!" (я сегодня в ударе) –  Feb 22 '17 at 19:44
  • @Igor, если в значении "Он рот закрыл!", то да, но вроде бы про правилам такие эмоциональные формы расцениваются как повелительные (сюда можно привести и "Всем сесть!" или "Лежать!"). – Scholastic_Neko Feb 22 '17 at 19:49
  • @Mike, я ведь и заметил, что программ с изъявительными глаголами нет и предложил записать существительными. Но глаголов достаточно много в общем, что позволяет делать выводы. – Scholastic_Neko Feb 22 '17 at 19:54
  • 1
    В выражении go to label вряд ли label - глагол) – vp_arth Feb 22 '17 at 19:59
  • @Mike, я привел несколько в ответе (print, show, add). "goto" -- "go_to", т. е. "to" тут не указывает на инфинитив, а является предлогом ("идти на", "идти в", так "gotoScene()" = "идти на сцену"). – Scholastic_Neko Feb 22 '17 at 20:02
  • @vp_arth, все правильно. Тут глагол go. – Scholastic_Neko Feb 22 '17 at 20:05