продолжая беседу
Mar. 9th, 2018 08:34 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Т.к. есть такое европейское мнение, что рефакторинг - это метросексуальный аджальный метод продажи навоза юзерам, то я вдруг задумался - а что в Европе делают, когда их хакают и информацию воруют? Ну понятно, против воровства в Европе есть законы, например, GDPR; а в Швейцарии так даже масс шутинги запрещены (это мне швейцарцы когда-то сказали); но вот если случилось, так что тогда? Компьютеры сжигают на свалке, покупают новые, и пишут для них новые программы?
Ведь, я слышал, в Европе сначала на Z-notations и на Rational Rose весь дизайн правильно напишут, так что европейская программа не может быть неправильной, так что и рефакторить там нечего. Она совершенна.
И вот если она сломалась, то чо. Неужели с нуля переписывают?
Тесты-то понятное дело что не нужны; программист выполняет приказ менеджера, а менеджер не может ошибаться; и только плохой программист пишет код с ошибками. Немецкий код работает везде и без ошибок. Ой, тут сразу вспоминается Энигма, и три ушлых поляка, которые ее кракнули как раз перед Второй Мировой.
Ведь, я слышал, в Европе сначала на Z-notations и на Rational Rose весь дизайн правильно напишут, так что европейская программа не может быть неправильной, так что и рефакторить там нечего. Она совершенна.
И вот если она сломалась, то чо. Неужели с нуля переписывают?
Тесты-то понятное дело что не нужны; программист выполняет приказ менеджера, а менеджер не может ошибаться; и только плохой программист пишет код с ошибками. Немецкий код работает везде и без ошибок. Ой, тут сразу вспоминается Энигма, и три ушлых поляка, которые ее кракнули как раз перед Второй Мировой.
no subject
Date: 2018-03-10 07:38 am (UTC)no subject
Date: 2018-03-10 09:28 am (UTC)no subject
Date: 2018-03-10 09:56 am (UTC)No, not of correctness, but only that the corresponding theorem is proven.
Example:
Function a: List -> b: List sorts list a, if b_i <= b_(i+1) for all i.
Then functions
duh _ = []
duh2 xs = [head xs | _ <- xs]
clearly satisfy that theorem.
So one needs to start with the correct theorem involving a proposition that the output list is necessarily a permutation of the input list. How does one prove the "correctness" of the theorem?
no subject
Date: 2018-03-10 11:16 am (UTC)А недавно вот я сам наблюдал как чел на конфе дизайн в пэйнте лайф рисовал. Да, прям вот так, прямоугольничками и текстом. Architect lead, кстати.
Кстати да, EA у нас тоже юзают.. те же люди, которые весь код в виме пишут. Это наверное правильные программисты.
no subject
Date: 2018-03-10 11:29 am (UTC)В случае изменений это называется не рефакторингом, а "исправлением ошибок модели" или "внесением новых требований".
И вот если она сломалась, то чо.
То, что бывает, когда сломалась программа управления педали газа, наглядно показала Тайота. Судя по слухам, там внутренности сделаны совсем не по-немецки. Видимо, теоретиков новых подходов начитались.
no subject
Date: 2018-03-10 11:36 am (UTC)no subject
Date: 2018-03-10 02:14 pm (UTC)no subject
Date: 2018-03-10 02:45 pm (UTC)http://www.zdnet.com/article/skype-cannot-fix-security-bug-without-a-massive-code-rewrite/
no subject
Date: 2018-03-10 03:43 pm (UTC)Насчет педали газа - у Тойоты пластмассовая штучка блокировала эту педаль.
no subject
Date: 2018-03-10 04:03 pm (UTC)С другой стороны, японские производители что, каждый год с нуля пишут софт для новой модели автомобиля? Про японских не знаю, а для Форда точно не с нуля.
Мои телевизоры апгрейдится регулярно, например. И мои японские машины тоже, каждый раз, как в сервис приволоку.
Короче, попробую открыть вам глаза на природу софтвера.
Это две разные вещи, деплоймент и девелопмент. Никто при деплойменте рефакторинга не делает. А в девелопменте это то, что мы и делаем все время.
Это ничего, что вы не в курсе; плохо, что вы, будучи не в курсе, несете всякую чушь, чисто как зритель с трибун. Bay Area не угодила, надо же. Плохо мы тут программируем. Твитер с фейсбуком, хром с андроидом, гугл и эпл, нетфликс и линктин недостаточно хороши, надо же. Давайте их заменим японскими или немецкими.
no subject
Date: 2018-03-10 04:04 pm (UTC)no subject
Date: 2018-03-10 05:05 pm (UTC)і проміжок між "треба відсортувати" (постановкою ТЗ) та записом у вигляді теореми.
no subject
Date: 2018-03-10 06:30 pm (UTC)Твиттер с Мордокнигой и Гугль с Хромом - это безобразный код, и в плане ресурсоёмкости, и в плане совместимости. Нормальный код - повторюсь, - это код в вайфай-карточке, бейзбанде сотового телефона, в контроллере SSD или жёсткого диска, в авионике и том же автопроме, когда устройство может работать непрерывно десятилетиями без единого сбоя. И да - такой код пишется в подавляющем числе случаев на ANSI C, поскольку модные ныне языки просто не дают нужного уровня контроля над кодом, а "компилятор лучше знает" и "если что - выделим ещё мощностей в AWS" в машинах и самолётах не прокатывает. Вот когда эмбеддеры на джаваскрипте и скале начнут писать авионику - тогда я готов буду признать, что это именно я чего-то недопонимаю, but till they don't, I doesn't too, for sure. :)
P.S.: по поводу рефакторинга - когда изначально спроектированная система в процессе написания конечного кода требует именно рефакторинга (т.е. переделки изначальной модели) - это всегда означает проблемы проектирования и аналитики модели. Это примерно как если бы в линуксе бы с каждым изменением в какой-нибудь внешней библиотеке приходилось бы переписывать куски ядра. Рефакторинг - это необходимая вещь, но не в процессе разработки, а в процессе изменения/расширения первоначального проекта, а-ля смена мейджорной версии и расширения функциональности, а если это процесс оказывается постоянным, то о качестве работы архитекторов системы очень сложно говорить в ползитивном ключе.
no subject
Date: 2018-03-10 07:04 pm (UTC)no subject
Date: 2018-03-10 07:05 pm (UTC)no subject
Date: 2018-03-10 07:06 pm (UTC)А какой подход лучше, зависит от задач. Многое прекрасно решается структурным подходом. Особенно, если в код люди практически не заглядывают, всё делают на уровне моделей.
no subject
Date: 2018-03-10 07:06 pm (UTC)no subject
Date: 2018-03-10 09:00 pm (UTC)Рекурсию, Карл!
В общем, переполнение стека, вот это вот все.
https://users.ece.cmu.edu/~koopman/pubs/koopman14_toyota_ua_slides.pdf
no subject
Date: 2018-03-10 09:19 pm (UTC)no subject
Date: 2018-03-10 09:36 pm (UTC)no subject
Date: 2018-03-10 09:43 pm (UTC)no subject
Date: 2018-03-10 10:01 pm (UTC)no subject
Date: 2018-03-10 10:12 pm (UTC)no subject
Date: 2018-03-10 10:26 pm (UTC)no subject
Date: 2018-03-10 10:42 pm (UTC)