Ограничения — интересная концепция. О них много написано и сказано.

На первый взгляд, ограничения вводят в заблуждение. Говорить, что больше свободы — это плохо, не очень часто. Обычно нам нужно больше возможностей, больше гибкости и больше свободы. Но ограничения, если их использовать с умом, на самом деле могут повысить производительность и эффективность, а также снизить затраты.

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

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

В «Звездных войнах» (мне всегда приятно, когда я могу кинуть отсылку к «Звездным войнам» в свои статьи) Люк не начинал чувствовать силу, пока Оби-Ван не заставил его сражаться вслепую.

В программировании ограничения, кажется, в моде. Функциональное программирование, неизменность, TDD — все это примеры искусственных ограничений.

В языках программирования ограничения представляют собой интересную концепцию.

Несколько лет назад язык BASIC был несколько популярен. В то время Эдгар Дейкстра, один из пионеров нашей отрасли, написал основополагающую статью Перейти к заявлению, признанному вредным. точные цели. Это короткая статья, и ее стоит прочитать.

Еще один интересный пример — Rust. В Rust нет исключений. Обработка ошибок в Rust выполняется совсем иначе, чем в других языках. Опять же, использование ограничения дало Rust то, что большинство людей считают значительным преимуществом.

Недавно Microsoft анонсировала Bosque. Bosque не имеет петлевого механизма. Вы можете использовать такие функции, как map, для работы со всеми элементами в коллекции, но вы не можете перебирать их в цикле, как это делают другие языки. Опять же, намерение состоит в том, чтобы улучшить, забрав.

JavaScript — невероятно гибкий язык. Многие вещи можно сделать разными способами. Но использование всей этой свободы часто приводит к катастрофе. Просто посмотрите на smooshgate, поэтому у нас есть Array.flat() вместо Array.flatten().

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

Удачного кодирования!

Нравится это обсуждение? Подпишитесь на нашу рассылку здесь.

Посетите нас: thinkster.io | Facebook: @gothinkster | Твиттер: @GoThinkster