Про структуруючі обмеження
May. 3rd, 2009 03:14 am
А давайте Ви відмітите всіх як присутніх на лекції? Або не відмічу нікого? Що те ж саме. Один з моїх викладачів. |
Викладач не жартував. Слухала його аудиторія математиків. Слухачі знали, що стовпчик літер «н» в журналі несе рівно стільки ж інформації, скільки і порожній стовпчик нуль. Знали також, приміром, що теорія, в якій можливо довести все, практичного застосування мати не може так само, як і теорія, в якій довести не можна нічного. Крайності сходяться це не філософія, не діалектика, це математика.
Якщо можливо все, то неможливо нічого. Прикладів цього універсального правила можна привести масу. Якщо художник не обмежить себе законами композиції, а композитор законами гармонії, вони просто нічого не створять. Саме тому навчання будь-якому видові творчості починається з багатьох «не» і практично без позитивних рекомендацій. Якби не існувало законів фізики, Всесвіт існувати би просто не зміг. Закони (тобто обмеження) необхідні для того, щоб взагалі що-небудь мало шанс на існування в цьому світі. Коли суспільство обмежується поняттям права, воно отримує можливість піднятися на новий рівень своєї будови, утворити у собі структури, що на порядки підвищують його можливості.
В християнському богословї фігурує концепція самообмеження Творця, яка говорить, що саме відмова Бога від мільйонів інших можливостей дозволяє існувати світу в тому вигляді, в якому він існує, дозволяє розвиватися йому по законах фізики, дозволяє існувати в світі незалежним від Нього, вільним істотам.
Ще приклад. По роботі мені приходиться програмувати на java та на php (ще зрідка delphi, але мова не про нього). Це зразки радикально протилежних підходів до того, які рамки може середовище програмування задавати програмісту. В php можна писати що завгодно, ніхто від тебе нічого не вимагає; в java теж не можна сказати, що від тебе чогось вимагають, але сама структура платформи підказує багато рішень. Можна, звичайно, сказати, що це програміста обмежує, проте я би сказав інакше: це тримає в тонусі. На php виникає бажання написати код найпростішим чином, не замислюючись про його подальшу долю. На яві просто не хочеться писати неякісний код. На php кожен рівень абстракції програми потрібно придумувати, відволікаючись від роботи (це в кращому випадку, якщо на це є час). На яві в більшості ситуацій, в які потрапляє програміст, за нього уже придумали зручні варіанти абстракції, йому залишається лише вибрати найзручніший у конкретному випадку. Окремо сидіти і придумувати інші варіанти потрібно лише в досить нетривіальних випадках. Php пустельна місцина, де, в принципі, можна збудувати все, що знадобиться. Java зручний каркас, на якому без особливих зусиль можна зручно побудувати конструкції, що потрібні найчастіше, причому ці конструкції будуть так само легко добудовуватися та перебудовуватися. Для нетипових же конструкцій каркас нескладно і розібрати.
Не всякі обмеження зменшують можливості деякі їх створюють. Розрізнити їх окрема праця в кожному випадку, але забувати про таке не можна.