За життя

Про нелінійне мислення

Замислився над фактом, що саме розробка компонентів для ПЗ і імплементація алгоритмів привчила мене до якісної оцінки можливих наслідків, ситуацій і альтернатив для кожної дії чи події. Може й не так, як шахистів, але все одно.

Звичайний програміст, котрий пише програму, зазвичай має справу з лінійними алгоритмами, в яких є певний вхід і певний невеликий набір виходів, а програміст просто реалізує чорний ящик в найкоротший і найпростіший спосіб.

В компонентах же і в реалізаціях алгоритмів є величезна кількість можливих входів (запитів користувача компонента чи реалізації протоколу) і величезна ж кількість виходів (очікуваних поведінок компонента). І в чорному ящику (тобто нашій реалізації) необхідно не тільки пов'язати всі входи з відповідними виходами, але зробити це так, щоб не поламалися інші зв'язки. Іноді це вдається, а іноді, в складних випадках (наприклад, правильний MIME/SMIME парсер), битися доводиться роками.