Попробую сформулировать такой термин: "дискретность стиля программирования", который всецело зависит от возможностей конкретного языка
( Read more... )
С другой стороны чем прямолинейнее язык, тем сложнее будет на нем сказать "а вот там две недели назад мы сгенерили вот такую вот штуку, надо бы ее прикрутить". Я не уверен что корректно говорить о том, что мысль все время движется только вперед основываясь только на том, что она непрерывна.
Я специально уточнил, что речь о прототипировании и проверке идей. Понятно, что в отделе на пять тысяч индусов и проекте на двадцать гигабайт заархивированных исходников правила будут несколько иными :)
Хм, в случае совсем-совсем прототипирования да, но идея идее рознь.
С другой стороны возможно же, что идея подлежащая прототипированию сама по себе не будет прямолинейной. Хорошо если мы говорим о прототипе чего то небольшого и абстрактного. Но это таки и в голове просчитать можно не тратя время на собственно набор кода в редакторе (:
Под идеей я понимаю что-то типа такого: "Интересно, что для поиска в этих данных будет быстрее: тупо перебрать подряд параллельно на четырех ядрах, или сначала построить обратный индекс и искать в один поток?"
По-моему, быстрее и надежней накидать, замерить и посмотреть глазами на гнуплотовский график, чем пытаться прикинуть в уме :)
Единственно, "быстро накидать" не получается на "дискретных" языках, потому как твоей основной мысли (проверить идею) начинают мешать второстепенные, касаемые собственно реализации (а где что мне надо объявить сначала).
Макросы делают язык еще непрерывнее. Даже статическую типизацию замазывают - не отрывая курсора пишешь макрос, который описание типа на этапе компиляции подправит/добавит.
А по моему мысль как раз прерывна. Во всяком случае, проще над сложными вещами работать не водопадной моделью "сел и подряд от начала и до обеда все сделал", а сначала обдумать общую структуру, потом ее как-то прототипировать, потом понемногу развивать-рефакторить, пока не получится результат.
Например, Проект -- GPS-трекер для n900 Мысль -- "раз в час отсылать координаты по sms на заданный номер"
Проверка идеи заключается в том, чтобы быстро накидать возникшую мысль и посмотреть на уже работающее решение глазами. А там дальше уже проще идет развитие: "А что если в этот момент не ловится сеть?", "А что если не ловит GPS?". Всего сразу никогда не предусмотришь (и вообще, велик риск понапридумывать лишнего).
Если сравнивать с творчеством, то творец обязательно прыгает по всему творению, улучшая его по многим направлениям сразу. Слово "чаво", вставленное в диалог, вполне может спровоцировать появления "соломы в волосах" по тексту выше. См., также, работу скульптора.
Без смены места приложения усилий много не наработаешь.
Проще определять по "сопротивлению улучшениям в необходимом направлении".
В этом отношении типизированные ЯП могут ухудшать работу (внесение типов замедляет работу), а могут улучшать (типы задают полезные ограничения).
Comments 13
Reply
Reply
С другой стороны возможно же, что идея подлежащая прототипированию сама по себе не будет прямолинейной. Хорошо если мы говорим о прототипе чего то небольшого и абстрактного. Но это таки и в голове просчитать можно не тратя время на собственно набор кода в редакторе (:
Reply
Под идеей я понимаю что-то типа такого: "Интересно, что для поиска в этих данных будет быстрее: тупо перебрать подряд параллельно на четырех ядрах, или сначала построить обратный индекс и искать в один поток?"
По-моему, быстрее и надежней накидать, замерить и посмотреть глазами на гнуплотовский график, чем пытаться прикинуть в уме :)
Единственно, "быстро накидать" не получается на "дискретных" языках, потому как твоей основной мысли (проверить идею) начинают мешать второстепенные, касаемые собственно реализации (а где что мне надо объявить сначала).
Reply
Reply
- пишешь код напрямую
- как только возникает смутное ощущение копи-паста, отыскиваешь похожий участок и заворачиваешь в макрос
- как ощущение возникает повторно: преобразуешь макрос под DSL и шпаришь уже дальше на нем
Тоесть, итеративный рефакторинг, а он подразумевает прыжки курсором :)Reply
Теперь мы сможем использовать всю мощь этого средства :-).
Reply
Reply
Reply
Например,
Проект -- GPS-трекер для n900
Мысль -- "раз в час отсылать координаты по sms на заданный номер"
Проверка идеи заключается в том, чтобы быстро накидать возникшую мысль и посмотреть на уже работающее решение глазами. А там дальше уже проще идет развитие: "А что если в этот момент не ловится сеть?", "А что если не ловит GPS?". Всего сразу никогда не предусмотришь (и вообще, велик риск понапридумывать лишнего).
Reply
Если сравнивать с творчеством, то творец обязательно прыгает по всему творению, улучшая его по многим направлениям сразу. Слово "чаво", вставленное в диалог, вполне может спровоцировать появления "соломы в волосах" по тексту выше. См., также, работу скульптора.
Без смены места приложения усилий много не наработаешь.
Проще определять по "сопротивлению улучшениям в необходимом направлении".
В этом отношении типизированные ЯП могут ухудшать работу (внесение типов замедляет работу), а могут улучшать (типы задают полезные ограничения).
Reply
Leave a comment