lqp - По поводу программистской премудрости.
July 21st, 2009
03:02 pm

[Link]

Previous Entry Add to Memories Tell A Friend Next Entry
По поводу программистской премудрости.
Читаю эти тексты, и понимаю, что они мне как-то не близки. Хотя лет десять назад я от подобного повизгивал от удовольствия и ощущения какой-никакой, а сопричастности.

Чем дальше, тем больше я понимаю, что от чего мне надо всеми силами избавляться при написании кода - так это как раз от програмистского образа мышления. От ощущения текста программы как своей безраздельной вотчины, в которой можно хозяйничать по своему усмотрению, не оглядываясь особо ни на физический смысл, ни на математическую модель. От привычки решать задачи в окошке xemacs-а, а не на листке бумаги. От привычки любой ценой подгонять работу программы под правильный результат. От обыкновения заменять доказательство алгоритма тестовыми примерами. И упаси меня бог вносить оптимизации или улучшения в алгоритм, если у меня нет формального доказательства его правильности и эффективности.

К стыду своему, я и посейчас весьма и весьма всем этим грешен.

(15 comments | Leave a comment)

Comments
 
[User Picture]
From:[info]gevor
Date:July 21st, 2009 - 08:24 am
(Link)
Текст про Тао Программирования вспоминается
From:[info]lqp
Date:July 21st, 2009 - 08:32 am
(Link)
Да, именно его я и имел в виду. Да и автор баек, умаю, тоже.

Но сейчас он видится по другому.
From:(Anonymous)
Date:July 21st, 2009 - 10:21 am
(Link)
А вы попробуйте писать "человеческими" методами. Мне, например, ужасно понравилась идея "Literate Programming" Доналда Кнута. Я нашел самое простое её воплощение - "noweb" bu Norman Ramsey - и приделал к ней "сворачивание документов" в html разметке.

Пишу и радуюсь.

Можете попробовать (незаконченную, но вполне рабочую) версию скрипта
http://github.com/unixtechie/Literate-Molly/

Возьмире файл "MOLLY.html" и прочитайте - как образец самого формата, и как объяснение что надо делать (слишком, к сожалению, многословное пока что -- это из-за того, что я пытался пробовать на файле разные приемы работы с таким подходом).

Взять один файл с github'а легко и без Git'а (which is a distributed version control tool) если открыть его на чтение в "raw" виде (справа над окошком) и сохранить на своей машине.

From:(Anonymous)
Date:July 21st, 2009 - 10:32 am
(Link)
P.S. И если попробуете - напишите сюда ваше мнение, мне бы хотелось его знать.

Или даже мнение о полезности "свёрнутого html" как формата для работы с длинными документами.
С одной стороны, ничего особо нового, но с другой так никто не делает, а мне показалось, что "folding html" резко облегчает нагрузку на память и "расширяет горизонт видения" при программировании длинных программ.
From:[info]lqp
Date:July 21st, 2009 - 11:02 am
(Link)
Это все на самом деле не имеет отношения к языку.
From:(Anonymous)
Date:July 21st, 2009 - 12:41 pm

.. как не имеет отношения к языку сайт с притчами.

(Link)
.. как не имеет отношения к языку ваш сайт с притчами.
Программирование вообще не имеет отношения к языку (программирования) в удивительно большой степени. Оно имеет отношение к "управлению мышлением", когда количество деталей на порядки больше возможности человека за ними следить.

Лучший язык программирования - и лучший подход к нему - равно применимы для создания любых кропотливых документов, где надо увязывать абстракции на микро- и макро-уровнях.

Этим и занимается Literate Programming, система создания иерархий макро на естественном человеческом, которые лишь в самом низу воплощены в конструкциях языка машинного кодирования - и система расширения горизонта внимания который обеспечивает folding
From:[info]phantom
Date:July 21st, 2009 - 11:38 am
(Link)
>От привычки любой ценой подгонять работу программы под правильный результат.

Это в какой предметной области?
[User Picture]
From:[info]ketmar
Date:July 25th, 2009 - 05:19 am
(Link)
да в любой почти. попробуй скажи, например, что прогон юнит-тестов и последующая правка кода с матами и воплями — это не подгонка кода.

а я бы тоже предпочёл подогнать юнит-тесты под новый код, ага…
From:[info]phantom
Date:July 26th, 2009 - 09:48 am
(Link)
Кажется, ты не понял автора.
[User Picture]
From:[info]ketmar
Date:July 26th, 2009 - 10:20 am
(Link)
ровно так, как написано…
From:[info]lqp
Date:August 3rd, 2009 - 08:50 pm
(Link)
Да, разумеется.

Откуда ты знаешь, что твои тесты верны, что они тестируют то что надо тестировать и что правильный результат не получается в результате сложения четного числа взаимно противоположных ошибок? Случаи, когда ты можешь во всем этом хоть сколь-нибудь быть уверенным, в реальной жизни редки и малоинтересны.

Хотя в программизме да, это фундаментальное представление.
[User Picture]
From:[info]ketmar
Date:August 3rd, 2009 - 08:56 pm
(Link)
тесты потому и «юнит», что проверяют только одну фичу. правильно сконструированный юнит-тест проверяет граничные условия, ошибочные, корректные. поскольку тестируемая фича одна и небольшая, то вполне можно точно знать, что именно ожидается на выходе. если выход другой — с вероятностью 90% как минимум баг не в тесте.

я, конечно, беру нормальный тест, а не нечто, сляпаное «абы было».

а если простые тесты проходят — из них уже можно конструировать более сложные, на взаимодействие фич. тут несколько сложнее, но зная, что фичи прошли первые тесты, и зная результаты — опять таки получаем немалую вероятность верности тестов.

не панацея, но лучше пока ничего не придумали, увы.
From:[info]lqp
Date:August 6th, 2009 - 11:59 am
(Link)
Кака бы, выделить "одну фичу" - это три четверти всего решения задачи. Хорошо, если до тебя это кто-то сделал.

Но если до тебя это кто-то сделал - то ты сам, скорее всего будешь заниматься какой-нибудь другой задачей. Ведь смысла повторно решать уже решенную задачу - немного.
From:[info]the7ofdiamonds.livejournal.com
Date:June 21st, 2013 - 07:47 pm
(Link)
а в реальной жизни у меня этих фич несколько тысяч (реально - пара сотен групп похожих), а времени на разработку - существенно меньше, чем несколько лет. и все фичи более менее слабые, потому что задача - реально сложная. ну и как тут по уму??
[User Picture]
From:[info]ketmar
Date:August 3rd, 2009 - 08:58 pm
(Link)
в реале, кстати, тоже до какой-то степени оно так. если тесты достаточно «юнит» и их хватает терпения проводить без халатности.
Powered by LJ.Rossia.org