juan_gandhi: (Default)
[personal profile] juan_gandhi
Т.к. есть такое европейское мнение, что рефакторинг - это метросексуальный аджальный метод продажи навоза юзерам, то я вдруг задумался - а что в Европе делают, когда их хакают и информацию воруют? Ну понятно, против воровства в Европе есть законы, например, GDPR; а в Швейцарии так даже масс шутинги запрещены (это мне швейцарцы когда-то сказали); но вот если случилось, так что тогда? Компьютеры сжигают на свалке, покупают новые, и пишут для них новые программы?

Ведь, я слышал, в Европе сначала на Z-notations и на Rational Rose весь дизайн правильно напишут, так что европейская программа не может быть неправильной, так что и рефакторить там нечего. Она совершенна.

И вот если она сломалась, то чо. Неужели с нуля переписывают?

Тесты-то понятное дело что не нужны; программист выполняет приказ менеджера, а менеджер не может ошибаться; и только плохой программист пишет код с ошибками. Немецкий код работает везде и без ошибок. Ой, тут сразу вспоминается Энигма, и три ушлых поляка, которые ее кракнули как раз перед Второй Мировой. 
Page 1 of 6 << [1] [2] [3] [4] [5] [6] >>

Date: 2018-03-10 07:38 am (UTC)
1master: (Default)
From: [personal profile] 1master
Ну вот у них чего-нибудь случается и они пишут очередной GDPR, главным солюшеном к которому являются всплывающие на всех сайтах плашки "мы используем куки, соглашайтесь"

Date: 2018-03-10 09:28 am (UTC)
perdakot: (Default)
From: [personal profile] perdakot
Очевидно, они используют зависимые типы и их программы содержат доказательство корректности. Поэтому не случается.

Date: 2018-03-10 09:56 am (UTC)
From: [personal profile] sassa_nf
(I do get your jest, but can't help to expand on it)

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?
Edited Date: 2018-03-10 10:45 am (UTC)

Date: 2018-03-10 11:16 am (UTC)
From: [personal profile] caztd
Не знаю как в других европах, а у нас дизайн рисуют на whiteboard'е, а потом на мобильник фотографируют и картинку в репо кидают. Ха-ха.

А недавно вот я сам наблюдал как чел на конфе дизайн в пэйнте лайф рисовал. Да, прям вот так, прямоугольничками и текстом. Architect lead, кстати.

Кстати да, EA у нас тоже юзают.. те же люди, которые весь код в виме пишут. Это наверное правильные программисты.

Date: 2018-03-10 11:29 am (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Я знаю только несколько групп в Германии, которые генерируют из моделей. (Кстати, не на Розе, потому что это дерьмо ужасное) Причём, в основном это структурное программирование. С объектно ориентированным стопроцентной генерации ни у кого нет, а xtUML в Германии вообще не известен.

В случае изменений это называется не рефакторингом, а "исправлением ошибок модели" или "внесением новых требований".

И вот если она сломалась, то чо.

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

Date: 2018-03-10 11:36 am (UTC)
snowps: (Default)
From: [personal profile] snowps
Нормально написанный код действительно редко нуждается в рефакторинге. Самый лучший пример - эмбеддед софт в технике японских производителей и тех же немцев. Нельзя его сравнивать с тем, как пишут в bay area на Скале или Джаве - это совершенно разные категории программирования и если использовать методы модных программистстких тенденций в эмбеддед софте, то домашняя техника и автомобили просто не будут нормально работать. Например версии всех прошивок в аудиовидеотехнике Sony или фото-видеотехнике Canon почти никогда не переваливают за номер версии 1.00, и не потому, что производители бросают свои товарные линейки, а потому, что в этом нет необходимости - код is rock stable. Этого невозможно добиться тогда, когда программирование в эдаком прихиппованном стиле считается фаном (хренак-хренак и в продакшн), а не трудной и кропотливой работой (каковой оно на самом деле и должно быть), но просто во многих направлениях подход фана just works somehow и людям начинает казаться, что это откровение. Увы - это не так.
Edited Date: 2018-03-10 11:39 am (UTC)

Date: 2018-03-10 02:14 pm (UTC)
From: [personal profile] bamalip
Проблема будет только с непроверяемостью самого ТЗ (с верхнеуровневой теоремой). Если же неправильно написаны промежуточные требования к модулям (более низкоуровневые леммы), то это сразу всплывет, поскольку из них невозможно будет вывести-собрать главную теорему.

Date: 2018-03-10 02:45 pm (UTC)
From: [personal profile] bamalip
Skype can't fix a nasty security bug without a massive code rewrite
http://www.zdnet.com/article/skype-cannot-fix-security-bug-without-a-massive-code-rewrite/

Date: 2018-03-10 05:05 pm (UTC)
From: [personal profile] sassa_nf
:) звичайно!

і проміжок між "треба відсортувати" (постановкою ТЗ) та записом у вигляді теореми.

Date: 2018-03-10 06:30 pm (UTC)
snowps: (Default)
From: [personal profile] snowps
Нет, я просто программист в другой области, нежели Вы, и в своей области разбираюсь существенно лучше Вас. :) Cофт в современных смарт-телевизорах - это достаточно низкокачественный софт, я поэтому и не привёл их в пример в перечислении, к тому же обновления в них связано в основном с изменением набора модулей подключаемых сервисов, а не самой операционной системы, кроме того - не смарт телевизоры отличаются намного более высоким уровнем стабильности и качества прошивок (я сравнивал неоднократно). В атомобилях иногда обновляется прошивка ECU (а чаще - просто калибровочные константы в ней), если в работе оной на уровне завода находятся проблемы, и изредка - прошивки отдельных периферийных контроллеров (каковых в машине как минимум 40-50 штук и которые в подавляющем числе случаев никогда не обновляются), ну и довольно регулярно может обновляться система навигации/интеллектуального управления, но это не полноценный эмбеддед, а примерно уровень магнитолы или навигатора на андроиде, в которых очевидно полно говнокода ("Toyota Motor Co. only issues software updates (Calibration or CAL files) for engine management and other electronic control units (ECU) only when there are specific issues or problems to be resolved. All updates are vehicle, model and model code specific." и примерно так же у всех остальных). Многие автомобильные периферийные контроллеры (в частности подушек безопасности, тормозной системы и т.п.) вообще не имеют возможности перепрошивки, в том числе и из соображений безопасности.

Твиттер с Мордокнигой и Гугль с Хромом - это безобразный код, и в плане ресурсоёмкости, и в плане совместимости. Нормальный код - повторюсь, - это код в вайфай-карточке, бейзбанде сотового телефона, в контроллере SSD или жёсткого диска, в авионике и том же автопроме, когда устройство может работать непрерывно десятилетиями без единого сбоя. И да - такой код пишется в подавляющем числе случаев на ANSI C, поскольку модные ныне языки просто не дают нужного уровня контроля над кодом, а "компилятор лучше знает" и "если что - выделим ещё мощностей в AWS" в машинах и самолётах не прокатывает. Вот когда эмбеддеры на джаваскрипте и скале начнут писать авионику - тогда я готов буду признать, что это именно я чего-то недопонимаю, but till they don't, I doesn't too, for sure. :)

P.S.: по поводу рефакторинга - когда изначально спроектированная система в процессе написания конечного кода требует именно рефакторинга (т.е. переделки изначальной модели) - это всегда означает проблемы проектирования и аналитики модели. Это примерно как если бы в линуксе бы с каждым изменением в какой-нибудь внешней библиотеке приходилось бы переписывать куски ядра. Рефакторинг - это необходимая вещь, но не в процессе разработки, а в процессе изменения/расширения первоначального проекта, а-ля смена мейджорной версии и расширения функциональности, а если это процесс оказывается постоянным, то о качестве работы архитекторов системы очень сложно говорить в ползитивном ключе.
Edited Date: 2018-03-10 06:58 pm (UTC)

Date: 2018-03-10 07:04 pm (UTC)
From: [personal profile] bamalip
Вот если бы это был немецкий код настоящего немецкого качества...))

Date: 2018-03-10 07:05 pm (UTC)
rampitec: (Default)
From: [personal profile] rampitec
Могут и с нуля переписывать, наверное ;) Вот факап случился, всю команду, которая нафакапила, отстранить, а новые приходят, смотрят в код и нифига не понимают. Тогда новые говорят, что им проще с нуля написать. Да и денег так больше, и времени спокойной разработки, пока за качество кода еще никто не спрашивает.

Date: 2018-03-10 07:06 pm (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Легенду о коврике мы все слышали. Только этот ужал люди изнутри видели. Там, даже, watchdog отсутствует.

А какой подход лучше, зависит от задач. Многое прекрасно решается структурным подходом. Особенно, если в код люди практически не заглядывают, всё делают на уровне моделей.

Date: 2018-03-10 07:06 pm (UTC)
From: [personal profile] bamalip
Ну конкретно цей приклад (сортування) ближчий до бібліотечної леми. Хоча проблема дійсно існує. Написали специфікацію на супутник, а він потім не туди полетів. Бо не туди написали.

Date: 2018-03-10 09:00 pm (UTC)
ded_maxim: (Default)
From: [personal profile] ded_maxim
Не-не, в Тойоте использовали рекурсию в embedded safety-critical коде.

Рекурсию, Карл!

В общем, переполнение стека, вот это вот все.

https://users.ece.cmu.edu/~koopman/pubs/koopman14_toyota_ua_slides.pdf
Edited Date: 2018-03-10 09:00 pm (UTC)

Date: 2018-03-10 09:36 pm (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
И что именно подразумевает этот вопрос?

Date: 2018-03-10 09:43 pm (UTC)
ppk_ptichkin: (Default)
From: [personal profile] ppk_ptichkin
Поиск bmw ecu update принёс, например, http://www.e90post.com/forums/showthread.php?t=686054

Date: 2018-03-10 10:12 pm (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Подозрения в чём именно? И почему? :-) Последнее время дискуссия идёт какими-то ребусами.

Date: 2018-03-10 10:26 pm (UTC)
snowps: (Default)
From: [personal profile] snowps
Разумеется, есть огромное количество энтузиастов, которые занимаются чип-тюнингом и всякой прочей ерундой, но поскольку исходники прошивок очевидно недоступны (в большинстве случаев даже элементная база недоступна, так как партнамберы используемых чипов заменены на OEM коды Боша или Инфинеона для немцев, а часть чипов - вообще глубокий кастом без возможности найти документацию, кроме разве что центральных процов), изменить что-то в прошивке кроме тех самых калибровочных констант, которые регулируют поведение двигателя, подвески и т.п., но никак не влияют на функциональность и основной код, невозможно. Дополнительно во многих современных небюджетных машинах производитель лочит ECU на периферийные контроллеры с определённым серийником, чтобы исключить замену комплектухи мимо серис-центра, вплоть до невозможности вручную поменять аккумулятор, к примеру, поскольку он чипованный, поэтому народ с руками, растущими из правильного места, и нормальным широким инженерным образованием, который не хочет платить бабки в сервисе, покупает программаторы под CAN-шину (китайские в основном, поскольку родные стоят совершенно неприлично) и без лишних затрат диагностирует, чинит и обслуживает свои машины в своём собственном гараже. Всё это к рефакторингу и перепрошивке в стиле замены той же андроидовской фирмвари в телефонах на кастомную, не имеет вообще никакого отношения, а скорее по духу напоминает загрузку национальных шрифтов в HP4L для печати кириллицей из DOS в далёких девяностых. :)
Edited Date: 2018-03-10 10:28 pm (UTC)

Date: 2018-03-10 10:42 pm (UTC)
snowps: (Default)
From: [personal profile] snowps
Почему-то кроме Штатов с больной и жадной до бабок адвокатурой эту проблему нигде не раскручивали, и даже согласно приведённой ссылке, эксперты не нашли прямых доказательств проблем в софте и по суду Тойоту обилетили именно на конструктивные дефекты педали и коврика. Документ вообще поражает некоторыми своими разделами - например идея детектить вочдогом подвисшие таски, а не подвисший целиком проц, - это вообще феерично, особенно учитывая, что инициализация ECU не проходит мгновенно. Вот едет машина по дороге, повисла задача дворников и вочдог - хрясь! - ребутит контроллер движка, а ребутится он, скажем, полсекунды. Представили? :) Купман вообще занимается безопасностью эмбеддед софта, поэтому нагнать ужасов, как всё плохо без использования его методов, ничем не отличается от гона Касперского о том, что всё сразу зарастёт вирусами без его антивируса.
Page 1 of 6 << [1] [2] [3] [4] [5] [6] >>

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

July 2025

S M T W T F S
  12345
6789 1011 12
131415 1617 1819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 18th, 2025 11:52 pm
Powered by Dreamwidth Studios