Pull to refresh
14

Химик и программист.

32
Subscribers
Send message
Да и да. Предложено много метрик ПО и все они подвергаются критике. Количество строк кода — одна из самых критикуемых.
И, если вам не сложно, пробегитесь по публикации и сообщите об ошибках или идеях для ее упрощения.

Ok. Начну с заголовка:
Простое объяснение простоты.

Сожалею, но предложенное объяснение мне простым не показалось. Прежде всего оно непростое по форме, нпр.:
По моим наблюдениям есть два основных кейса
Так и хочется спросить: зачем юзать анлийские слова в записи русскими буквами? Тем более, что через несколько строчек читаем это слово в переводе:
Случай, когда объект элементарен — понятен.

Разве такое «разнообразие» упрощает, а не усложняет восприятие?

Далее, переходя к сути — ИМХО много тумана по очевидным общеизвестным фактам. Нпр., многозначность слов:

X — простой, каковы наши ожидания от X?


Если Х — натуральное число, то лично у меня от X ожидание как от простого числа (2, 3, 5, 7, 11, 13, 17,… :) Подозреваю, что автор хотел сказать несколько иное.

С вашим кодом не станет легче работать, даже если все вокруг думают, что его сложность такая же, как у табуретки.
Общеизвестная и признанная концепция структурного программирования утверждает обратное: со спагетти-кодом работать заметно тяжелее.

Действия эквивалентны когда одинаковы их алгоритмы.
Разве сортировка двух разных числовых последовательностей одним алгоритмом вызовет одинаковую совокупность действий? Нпр., одна из входных последовательностей может быть уже отсортирована и от алгоритма вообще не понадобится никаких действий.

Из того, что заканчиваю этот коммент, не следует, что с остальным я согласен.
Вообще, да, в основном за свой счёт.
Спасибо за ответ. Мне это странно слышать — если у кого денег нет, то курсовую сделать не сможет?! И в универах мастерских уже нет, где фанерку или металл порежут и отфрезеруют?

ИМХО в случае, если курсовая, описанная в статье, делалась за свой счет, то автору стоит добавить список примерных расходов — м.б. кто-то решит воспроизвести, и ему будет полезно узнать, сколько такое может стоить. Думаю, что алюминиевый станочный профиль — не самый дорогой пункт.
Алюминиевый станочный профиль стоит в 6 раз дороже.

Да, но я читал первую фразу статьи:
Во время изучения в университете такого занимательного предмета, как схемотехника, мне пришло в голову сделать в рамках курсового проекта «Двух осевой плоттер на бумаге с головкой из авторучки на базе Arduino».

поэтому у меня вопрос: теперь в универах студенты курсовые за свой счет делают? Я давно окончил МГУ, но помню на первом курсе полупроводник из расплава кристаллизовал, так там тогда 1 м платиновой проволоки для термопары стоил 32 руб. — почти стипендия (45 руб./месяц). Но предполагаю, что сверхчистый теллур для п/п промышленности, который я использовал, стоил во много раз дороже. За все эти вещи платило учебное заведение, я только 1 фотопленку на свои купил, чтобы фото выращенных кристаллов для курсовой сделать.
Ok, поэтому я и предлагаю не до 1ой, а до 20ой. Однако если человек одну цепочку криво написал, то остальные, скорее всего, напишет не сильно лучше.
Учитывая размеры пространства и неточность измерительных приборов доказать точность решения невозможно.
Для количественных задач. А в качественной — среда щелочная или нет, т.е. без цвета или красный — высокой точности не нужно. Аналогично: какой свет на светофоре: зеленый или красный. На практике и в количественных задачах задаются разумной точностью. Так земельный участок, ограниченный окружностью диаметром 20 м, будет ограничен «не точной окружностью», нпр., где-то на см меньше, а где-то больше. И это обычно устраивает.
200 комментов на 1000 строк, конечно, зашкал. И времени жалко. Но м.б. использовать подход солидных мат.журналов? Там железное правило: рецензент читает рукопись до первой ошибки. М.б. в случае кода, не до первой, а до 20-ой? После отсылать на доработку. Вряд ли все баги совершенно различные, наверное есть похожие, разраб увидев исправление в одном месте м.б. вспомнит, где похожие места и где м.б. похожее исправление и сам исправит остальные.
Когда-то работал с дорогими (промышленного изготовления) аналоговыми плоттерами для научных исследований. Устройства эти капризные, поэтому данный проект заслуживает высокой оценки. Если удастся нарисовать окружность, а не спираль вместо нее, то проект для самоделки можно считать успешным.

Отдельные замечания.
1) Фанера — не подходящий продукт для подобных конструкций. Легкий алюминиевый сплав даст лучшие результаты.
2) Жаль не показаны гайки, двигаюшие платформу с пером — чем они длиннее, тем, возможно, точнее будет рисунок.
3) Ручка — неудачный узел. Лучше использовать голый стержень для ручки (так делали и в промышленных плоттерах).
У меня был Зенит В с Гелиос 44 — вес ок. 1 кг и штатив-струбцина ФЭД. Такой вес не держал. Очень трудно было расположить камеру, чтобы, нпр., переснять из книги. Городил дополнительные подставки. ИМХО шарик был слишком маленький и зажим слабый, неудобный для руки (использовал плоскогубцы). Думаю, что конструкторы не доработали. Сейчас, наверное, для легких цифровых камер мог бы подойти.
PS Если искать примеры вечных вещей, то ИМХО камера Зенит В гораздо более подходящий пример.
Про личинки не знаю, не биолог. А что в моем эксперименте неточного? Где тут «лишь аппроксимация реального мира»? Или Вы предлагаете каждое точное решение называть «аппроксимация»? — ИМХО у этого термина другой смысл.
Прежде всего есть качественные закономерности, а есть количественные. Некоторые качественные закономерности являются абсолютно точными. Нпр., при нормальных условиях и достаточных в широком интервале концентрациях (можно на глазок отсыпать) водный раствор щелочи вызовет красно-фиолетовое открашивание раствора фенолфталеина.
мир не устроен по законам математики
Не слишком ли категоричное утверждение? Простейший пример для школьника: дан диаметр круглой площадки, нужно найти количество досок, чтобы сделать глухой забор по окружности. Далее можно приводить примеры из физики, которая почему-то вся на математике ;)
Я сомневаюсь в полезности при разработке современного продакшен кода.
Я с этим не спорю — имеете полное право сомневаться. Есть очень разные задачи и очень разные подходы к их решению. Если в поставке современной IDE будет опция анимации, то ИМХО сильно не утяжелит, но всякий сможет попробовать на своей задаче. Если почти никому не понравится — не проблема: мало ли всяких бесполезных штучек добавляют в очередную версию (а тут хотя бы для обучения подойдет :)

Про «17 лет работы» (у меня больше) — мода живет меньше — отвыкайте от привычки следовать моде (я про это писал).
Вы парадигмы программирования оцениваете по возрасту тех, кто их продвигает в массы???

Обычно нет, но в данном случае (м.б. мне показалось) Вы намекнули, что Вирт устарел. М.б. и Кнут устарел? ;)

Да, со времен Вирта появились новые парадигмы. Да, после С и C++ появились managed языки.
А «managed языки» это парадигма? Или я не понял — гугл отсылает на вики:
Управля́емый код (англ. managed code) — термин, введённый фирмой Microsoft, для обозначения кода программы, исполняемой под «управлением» виртуальной машины .NET[
Про .NET, конечно, разные мнения, но ИМХО не вижу, что это было революцией сравнимой со структурной, модульной и ОО. Поправьте, если ошибаюсь.
Но «анимация в дебаге» где-то в стеке модема сотового телефона, поверьте, не поможет. Я знаю — я дебажил.
Да. Вот мобильные устройства я не программировал. Поэтому полностью Вам верю. Телефон у меня самый простой и использую только чтобы СМС-пароли из банков получать (т.о. и как пользователю мне сказать тут нечего). А вот такой гаджет как электронная книга ИМХО явно и резко деградирует. Опасаюсь, что файлы скоро опять придется принтовать, как в конце 1990х.
Возможно, ваша область производства ПО… ну, очень сильно отличается от того, с чем я знаком…
Нпр., как сказал выше, моделирование новых лекарств.
Мне кажется вы не занимаетесь производством ПО, верно? :)
Вам кажется :)
Почитайте хоть Буча.

Он не сильно моложе Вирта ;)
Поверьте, современное построение программного продукта ушло значительно дальше Вирта.
Но сильно лучше не стало. Те же самые проблемы :( Нпр., только вчера
Можно добавить:
— сделать бекапы (я до сих пор использую для этого устаревшие болванки :)
— подумать над виртуальной машиной или над безопасной конфигурацией для web-серфинга.
Я читал Вирта, в частности, о его подходе к построению компиляторов. Т.о. в общем мне было понятно устройство PascalS, но не отдельные детали. Анимацию я крутил около часа, то ускоряя, то замедляя, а то и останавливая. И у меня нет впечатления, что я даром потратил этот час. Усталость не больше, чем от внимательного просмотра кинофильма.
Давно сложившаяся общемировая практика — одни учебные заведения выпускают универсальных программистов, другие — программистов, которые являются еще и спецами в определенной предметной области. Таких много, нпр., в квантовой механике, в экономике, в квантовой химии, в мат. химии и т.д. Инженер электроник и программист в одном лице может разрабатывать очень сложные профессиональные программы, нпр., по моделированию новых микропроцессоров. Такие программы, нпр., описаны в публикациях Интела.
Вы о каких ресурсах???

О, да. Забавная непонятка вышла. Я о Resource fork MacOS 7.0 и в виндах понятие «ресурс» есть. Ok. Разобрались:
Если что, я про ресурсы энергопотребления и тепловыделения, например.
Память — это ресурс? Если да, то раньше за каждый Кб боролись, что в ОЗУ, что на диске. А энергии в пересчете на 1 Кб та память жрала сильно больше, чем нынешняя. И стоила соответственно. И грелось это в пересчете на 1 Кб умопомрачительно.
Поэтому никто не заморачивается писать «оптимальный» код
Да. Т.е. крутизна оптимального кода осталась, но только она идет бесплатным приложением.
Но современный программный продукт это еще и взаимодействие со внешними устройствами и сложной инфраструктурой за пределами программы.
Современный программный продукт может моделировать новое лекарство или нефтяную скважину на суперкомпе, при этом кроме примитивного I/O ничего не иметь, даже подключения к инету. И потом: разве взаимодействие со внешними устройствами это не алгоритм? Одних инет протоколов многие тысячи.
Сейчас больше думают о ресурсах.

Уже в MacOS 7.0 (больше 20 лет назад) много думали о ресурсах. Что поделать — GUI.
поменялись возможности — раньше считалось крутым писать «оптимальный код»
ИМХО наоборот. Сейчас весь код почти оптимальный. Очень рано возникли правила, типа 1% кода жрет 99% времени, только его и надо оптимизировать. Оптимизировать приходилось руками. А сейчас современные компиляторы научились очень хорошо оптимизировать, отомизируют всё подряд, и, как правило, этого достаточно.
программирование сейчас это не алгоритмы
Не понял. Каждая программа это алгоритм + структуры данных.
А потом каждую на 1 KLOC? И так далее до некоторых величин, чтобы человек мог осознать эту величину просто на нее глядя на экране?
Чувство меры и здравый смысл никто не отменял.
Где-то в 90-х вообще было мнение, что «процедура должна умещаться на одном экране»
Для маленьких программ это и сейчас бывает разумно. Но и в старых программах этому не всегда следовали — см., нпр., процедуру init в статье. Как удобно — так и надо делать.
Сожалею, что приходится говорить очевидные, на мой взгляд, вещи :)

Information

Rating
Does not participate
Registered
Activity