Apr. 14th, 2015

gemelen: (Default)
Утащено из комментария к:

Я думаю программистское мышление подразумевает следующие вещи:

1. Желание отделять данные от логики. Пример: есть некий скрипт do_A, которыей делает нечто с A. Надо теперь делать B, причём B очень похоже на A, либо вообще идентично. Нормальный человек просто скопирует do_A в do_B, потом откроет новый файл и заменит там везде A на B. (И будет жить счастливо ещё 10 лет.) Программист такого не потерпит и полезет в скрипт разбираться. Сделает из него do_wtvr и будет передавать параметром A или B. Такое выделение данных из логики обыденная вещь у программистов, но почти всегда удивляет остальных. Как следствие, программисты очень не любят всякое hardcoded, а обычные люди относятся к этому спокойно. Можно дать некий псевдокод, где много всего hardcoded и есть повторения. Спросить как можно было бы это улучшить. Или более абстрактно об этом поговорить.

2. Делегирование и indirection. Скажем, обычных людей не смущают вещи вида "#!/usr/local/bin/python27" . Программист напишет "#!/usr/bin/env python". Вообще, желание всё прошить хуками и колбеками - очень программисткая черта. "А вдруг понадобиться что-нибудь вставить, а я не готов?" - так рассуждают программисты. Другая грань этого свойства - вызывание уже готовых тулзов, функций и пр., а не написание их самому. Скажем, не писать скрипт для поиска слова в файлах определённого вида, а запустить grep посреди других операций в пайпе. Из этого как следствие желание модулярности и независимости узлов, а не монолитного решения. Можно человека спросить как бы он решил некую задачу, которая легко разбивается на подзадачи, при этом предупредить что задача скорее всего будет видоизменяться, поэтому хотелось бы иметь robust решение. Программист сразу начнёт клепать модули и интерфейсы. Обычных людей такие вопросы часто ставят в тупик, т.к. они не привыкли разбивать большие задачи на мелкие под-задачи.

3. Программисты мыслят стеком. То что взяли надо положить обратно. То что трогали, надо почистить и вернуть как было. Unwind and rollback всегда подразумеваются. Обычных людей это часто раздражает и они не всегда понимают зачем это надо и тем более зачем это надо делать в обратной последовательности, а не в произвольной.

4. Обсессивное внимание к деталям. Не обязательно только программистская черта, но почти у всех программистов я её наблюдаю.

Profile

gemelen: (Default)
gemelen

June 2025

M T W T F S S
      1
2345678
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 26th, 2025 03:02
Powered by Dreamwidth Studios