Сегодня послушал вторую лекцию про идеальную программу. Попробую опять же тезисно записать услышанное.
1. Идеальная программа.
Это спецификация. Спецификация — это ТЗ, описание задачи, того, что надо сделать. Его обычно ставят непрограммисты, заказчики. Идеалом является вымышленная ситуация, когда ставится задача и она тут же выполняется. Такое невозможно, но к этому стремятся.
Какой-то пример подобного действа — Эксель (который является тут же примером функционального программирования). В Экселе, кажется, происходит визуальное программирование: ты пишешь что тебе надо и тут же получаешь решение на экране. Если я правильно понял пример с Экселем.
И тут же как итог идет выражение, что идеальная ситуация — это не писать код, а решить задачу (то есть не код ради кода, а сделать то, что требуется).
2. Спецификация — это декларативное описание.
Декларативное описание отвечает на вопрос «Что?» и не всегда является программированием.
Примерами декларативного описания являются: html, sql, yaml (пока не знаю, что такое yaml) и тот же самый Эксель.
Декларативное описание — то, к чему стремимся. Чтобы ответ на вопрос «Что?» и был решением задачи. И программисты стремятся к тому, чтобы программы были по возможности максимально декларативными.
3. Императивное описание.
Отвечает на вопрос «Как?».
Тут выполняются инструкции, после чего получается результат. По инструкциями не видно цели, они лишь выполняют определенный процесс. Примерами являются императивные языки программирования, тот же Ассемблер.
Далее в лекции рассматривается функция reverse (является примером абстрации), которая переворачивает строку. Исходя из кода, видно, что тут происходит ответ на вопрос «Как?», на основе которого строка переворачивается.
4. Движение.
Существует некое движение языков от низкого уровня (машинного кода) до языков высокого уровня. Но языки делятся не только по уровню и поколениям, сами языки более склонны к декларативной или императивной парадигме.
Писать декларативный код можно почти на всех языках.
5. Код для людей.
Код нужно писать для людей. Идеальной программы нет. Хорошая или плохая программа — определяется тем, есть ли возможность по коду восстановить спецификацию (идею кода). Если да, то хорошо. Если нет, то код (абстракции и общий уровень) — говно.
Комментариев нет:
Отправить комментарий