Нет большой разницы.
Я имею в виду, что сейчас компьютер — ваш раб(*) (а вы — очень несчастный король). Либо очень тупой, когда ты сам отдаешь ему приказы о каждой мельчайшей детали. Мол, "помыть первую лошадь в моей конюшне". (Или даже «отнесите ведро воды к первому стойлу в конюшне. Помойте лошадь там. Вымойте первое стойло в конюшне».) Затем «помойте мою вторую лошадь». (Или даже «ведро… второе стойло…. и т. д.»). И т.п.
Или это чуть более знающий раб, где вы отдаете ему чуть более общие приказы, вроде «вымойте всех лошадей в моей конюшне». Но на самом деле вы можете сказать это своему изначально немому рабу, который с годами стал умнее, записывая рецепты для каждого действия, которое он должен был выполнить, так что более общие рецепты могли бы ссылаться на более простые рецепты вместо того, чтобы описывать каждый шаг заново.
Так что на самом деле разницы пока нет. Предположительно вы придерживаетесь определенных ограничений при разговоре со вторым рабом, которые облегчают вам описание вашей следующей просьбы к нему. Вы все еще делаете все описания.
Оба совсем не похожи на генерального менеджера, которому вы объясняете свои общие чувства по поводу того, как вы хотите, чтобы что-то делалось от вашего имени, и они выясняют мельчайшие детали сами.
Конечно, генеральному директору понадобится много помощников, которые, вероятно, будут использовать множество тупых рабов. И еще тупее.
Умный генеральный менеджер, вероятно, больше разбирается в управлении вашей империей, чем вы сами. Они могут даже полностью заменить вас у руля.
Вышеприведенное утверждает, что функциональный не является подмножеством декларативного.
редактировать: второй подчиненный отказывается понимать некоторые вещи от вас. Вы можете сказать первому, например: "n равно 1. Неси ведро воды в n-ю кабинку. n теперь 2. помыть лошадь в n-ом стойле. n теперь 3. clean до n-го киоска". Что приведет к ошибкам времени выполнения.
Более умный раб вас там просто не поймет. Он знает, что первая конюшня не может внезапно стать второй; это первый, всегда был. Это поможет вам не отдавать глупых приказов. Это функционально — знать, что некоторые вещи просто не сделаны, и отказываться выполнять глупые приказы. Императив, без проблем делает это. Таким образом, при императивном программировании ответственность лежит на вас, и только на вас; дисциплина, налагаемая на вас функциональной парадигмой, облегчает ваше бремя.
(*) Извините, что вызвал эту отвратительную парадигму из темной истории человечества; не так далеко в некоторых частях мира даже сегодня.
person
Will Ness
schedule
22.11.2017