Я читал статью в Википедии о Дугласе Макилрое и нашел цитату, в которой упоминается
«Настоящий герой программирования - тот, кто пишет отрицательный код».
Что это обозначает?
Я читал статью в Википедии о Дугласе Макилрое и нашел цитату, в которой упоминается
«Настоящий герой программирования - тот, кто пишет отрицательный код».
Что это обозначает?
Ответы:
Это означает сокращение строк кода путем устранения избыточности или использования более лаконичных конструкций.
Посмотрите, например, этот известный анекдот от оригинальной команды разработчиков Apple Lisa:
источник
Есть цитата Билла Гейтса о том, как измерять производительность программиста по строкам кода - это как измерять прогресс в авиастроении по весу.
Я хотел бы добавить, что метрика LOC поощряет использование чрезмерно многословных языков и намеренно изобретает колесо, чтобы соответствовать квоте.
источник
Когда я учился в старшей школе - да, в 70-х у нас были компьютеры, хотя мы должны были делать их из шкур животных с помощью каменных ножей - один из учителей математики провел конкурс по программированию. Правила заключались в том, что победившей была бы программа, которая вырабатывала правильный вывод, и имела наименьшее произведение строк времени выполнения кода. То есть, если ваша программа взяла, скажем, 100 строк кода и работала в течение 5 секунд, ваш счет составлял 500. Если кто-то еще написал 90 строк кода и работал в течение 6 секунд, его результат был 540. Низкий счет выигрывает, как в гольфе.
Это произвело на меня впечатление блестящей системы начисления очков, поощряя лаконичность и производительность.
Но заявка, которая технически соответствовала критериям победы, была дисквалифицирована. Проблема заключалась в том, чтобы напечатать список всех простых чисел, меньших 100. Дисквалифицированная запись шла примерно так (большинство студентов тогда использовали BASIC):
Студент, который написал эту статью, указал, что она не только коротка и очень эффективна, но и алгоритм должен быть очевиден для всех, кто имеет минимальные знания в области программирования, что делает программу очень удобной в обслуживании.
источник
Это насмешливый. Если это стоит $ N за среднюю кодированную строку, то кодирование «отрицательных линий», безусловно, является победителем.
В качестве практического совета это означает, что небольшой код, выполняющий эту работу, намного лучше, чем большой код, который делает то же самое, при прочих равных условиях.
источник
X
строк. Затем, в течение нескольких итераций, сокращаем конечный продукт поY
строкам. Таким образом,(X-Y)
оставшиеся строки кажутся очень дорогими, потому что резня рефакторинга уничтожила все потери.Написание одной и той же программы с меньшим количеством кода является целью для всех.
Если программе потребовалось 200 LOC для кодирования, а я записал ее за 150, я написал -50 LOC. Поэтому я написал отрицательный код.
источник
Ответ Тило, вероятно, является наиболее точным в историческом плане, но метафора «отрицательный код» может также включать производительность и использование памяти - вознаграждение за попытки отложить выполнение или выделение чего-либо до тех пор, пока это действительно не понадобится.
Этот менталитет «промедление платит» породил такие насмешливые аксиомы, как «Ничего не делать всегда быстрее, чем делать что-то», «Самый быстрый код - это код, который никогда не выполняется» и «Если вы можете отложить его достаточно долго, вам, возможно, никогда не придется делать это "(имеется в виду отсрочка дорогостоящих операций, пока они не потребуются)
Одним из способов реализации отрицательного кода является оспаривание исходных предположений и определений проблемы. Если вы можете переопределить проблемную / входную область таким образом, что «проблема-залипание № 3» категорически невозможна, вам не придется тратить время или код на решение проблемы-залипания № 3. Вы устранили код, оптимизировав дизайн.
источник