Количество строк кода в современном автомобиле в 200 раз больше чем в Шаттле, в 60 раз больше, чем в истребителе F-22 Raptor, в 50 раз больше, чем в телескопе Хаббл, в 20 раз больше чем в марсоходе Curiosity, в 4 раза больше чем в истребителях пятого поколения, в 2 раза больше, чем в большом адронном коллайдере или Facebook, если распечатать весь код на бумаге, то стопка будет высотой 200 метров. (по данным на 2009-2012 год)
Данные по количеству строк кода в современном автомобиле вызвали бурные споры на Reddit. Вопросы на темы от «В каком месте эти строчки прячутся, если у микроконтроллеров ограничена память?» до «Разве количество строк кода хоть что-то значит?»
Сравнительные данные по количеству строк кода (SLOC) в различных проектах довольно интересные.
Маргарет Гамильтон и её исходники кода для посадки Апполон-11
Количество строк кода меньше миллиона
10.000 — Unix v 1.0 (1971) [пруф]
10.000 — простая игра для iOS app [пруф]
14.000 — Win32/Simile virus [пруф]
39.000 — iOS app — photo editing [пруф]
80.000 — электрокардиостимуятор [пруф]
120.000 — первая версия Photoshop v1 (1990) [пруф]
200.000 — браузер Camino [пруф]
310.000 — движок Quake 3 [пруф]
400.000 — Space Shuttle [пруф]
> миллиона
Билл Гейтс в 1994 году демонстрирует, что на компакт-диск вмещается больше информации, чем на высоченные стопки бумаги.
1.000.000 строк кода помещается на 18.000 страницах, 2 метра высотой (в 14 раз больше чем «Война и мир», в 25 раз больше чем «Улисс», в 63 раза больше чем «Над пропастью во ржи»)
1.000.000 — игра Crysis [пруф]
1.140.000 — геном бактерии, вызывающей сифилис [пруф]
1.200.000 — Age of Empires Online [пруф]
1.200.000 — модель климата планеты CESM [пруф]
1.700.000 — истребитель F-22 Raptor [пруф]
1.800.000 — Linux Kernel 2.2.0 (1999) [пруф]
2.000.000 — Космический телескоп «Хаббл» [пруф]
2.000.000 — движок Unreal Engine 3 [пруф]
2.500.000 — Windows 3.1 (1992) [пруф]
3.500.000 — управляющий софт в дронах [пруф]
3.500.000 — софт для управления петабайтами данных с адронного коллайдера ROOT [пруф]
4.500.000 — Photoshop CS 6 (2012) [пруф]
4.500.000 — Windows NT 3.1 (1993) [пруф]
4.700.000 — HD DVD Players on XBox [пруф]
5.000.000 — марсоход Curiosity [пруф]
5.200.000 — Linux kernel 2.6.0 (2003) [пруф]
5.500.000 — сервер World of WarCraft [пруф]
6.100.000 — Windows XP Service Pack 1
6.500.000 — авионика и online support systems на Boeing 787 [пруф]
6.700.000 — Google Chrome [пруф]
7.500.000 — Windows NT 3.5 (1994) [пруф]
9.000.000 — LibreOffice [пруф]
9.500.000 — Windows NT 3.51 (1995) [пруф]
9.700.000 — Firefox [пруф]
10.000.000 — электроавтомобиль Chevy Volt [пруф]
10.000.000 — бухгалтерский программный пакет Intuit Quickbooks [пруф]
11.300.000 — OpenOffice [пруф]
11.500.000 — Windows NT 4.0 (1996) [пруф]
12.000.000 — Android (включая 3 миллиона строк на XML, 2.8 миллиона строк на C, 2.1 миллиона строк на Java и 1.75 миллиона строк на C++) [пруф]
12.500.000 — библитотеки Mozilla Core [пруф]
12.500.000 — MySQL [пруф]
14.000.000 — весь софт Boeing 787 [пруф]
15.000.000 — Android (верхняя оценка)
15.000.000 — Linux 3.1 (2013) [пруф]
20.000.000 — Linux kernel pre-4.2 (2015) [пруф]
23.000.000 — Apache Open Office [пруф]
24.000.000 — истребитель-бомбардировщик пятого поколения F-35 Fighter [пруф]
25.000.000 — Microsoft Office (2001) [пруф]
29.000.000 — Windows 2000 (2000) [пруф]
30.000.000 — Microsoft Office for Mac (2006) [пруф]
37.600.000 — Symbian [пруф]
40.000.000 — Windows 7 [пруф]
40.000.000 — Windows XP (2001) [пруф]
45.000.000 — Microsoft Office (2013) [пруф]
50.000.000 — Large Hadron Collider [пруф]
50.000.000 — Microsoft Visual Studio 2012 [пруф]
50.000.000 — Windows Vista (2007) [пруф]
62.000.000 — Facebook (without backend code) [пруф]
68.000.000 — Debian 5.0 codebase [пруф]
86.000.000 — Mac OS X 10.4 [пруф]
100.000.000 — софт в типичном новом автомобиле 2013 года [пруф]
324.000.000 — Debian 5.0 (all software in package) [пруф]
2.000.000.000 — Google [пруф] стопка распечатанных страниц высотой 3.6 км
Мы копнули первоисточники и выяснили, что первыми про 100 миллионов строк кода заявили в журнале IEEE Spectrum, сославшись на почетного профессора Мюнхенского технического университета Манфред Брой, который заслужил медаль Конрада Цузе (почти нобелевка в области computer science) в публикации 2009 «This Car Runs on Code»:
These are impressive amounts of software, yet if you bought a premium-class automobile recently, ”it probably contains close to 100 million lines of software code,” says Manfred Broy, a professor of informatics at Technical University, Munich, and a leading expert on software in cars. All that software executes on 70 to 100 microprocessor-based electronic control units (ECUs) networked throughout the body of your car.
- Публикация 2007 года Манфреда Броя "Engineering Automotive Software".
О компании ИТЭЛМА
Мы большая компания-разработчик automotive компонентов. В компании трудится около 2500 сотрудников, в том числе 650 инженеров.
Мы, пожалуй, самый сильный в России центр компетенций по разработке автомобильной электроники. Сейчас активно растем и открыли много вакансий (порядка 30, в том числе в регионах), таких как инженер-программист, инженер-конструктор, ведущий инженер-разработчик (DSP-программист) и др.
У нас много интересных задач от автопроизводителей и концернов, двигающих индустрию. Если хотите расти, как специалист, и учиться у лучших, будем рады видеть вас в нашей команде. Также мы готовы делиться экспертизой, самым важным что происходит в automotive. Задавайте нам любые вопросы, ответим, пообсуждаем.
Комментарии (81)
Lazytech
12.11.2019 19:37+3road vehicles — Does the source code of the software for a high-end car contain on average around 100 million lines of code? — Skeptics Stack Exchange
Один из комментариев:
Ford has said that the F150 pickup has 150 million lines of code.
According to the New York Times:
Twenty years ago, cars had, on average, one million lines of code. The General Motors 2010 Chevrolet Volt had about 10 million lines of code — more than an F-35 fighter jet. Today, an average car has more than 100 million lines of code.
So, even if the car isn't particularly high end, it could have that many lines.
According to Embedded Systems Security: Practical Methods for Safe and Secure Software (2012):
One of the first embedded systems within an automobile was the 1978 Cadillac Seville's trip computer, run by a Motorola 6802 microprocessor with 128 bytes of RAM and two kilobytes of ROM.…
In contrast, even the lowest-end automobile today contains at least a dozen microprocessors; the highest-end cars are estimated to contain approximately 100 microprocessors. With infotainment systems running sophisticated operating systems such as Microsoft Windows and Linux, the total embedded software content can easily exceed 100 million lines of code.
Если верить подчеркнутому тексту, при подсчете приплюсовали всё, что могли, включая исходные коды Windows и Linux. :) Правда, насчет Windows у меня есть сомнения.
maxood
12.11.2019 19:38+1Нда, Хабр что-то неторт совсем становится :(
Goron_Dekar
12.11.2019 19:57+12Вот соглашусь. Мало того, что в статье ни строчки технической информации, да к тому же ещё и явная ложь. Ну не может быть в авто столько кода. Даже со всеми тестами и прочей обёрткой. Просто потому, что чтобы код писать нужны программисты. А на них нужно тратить деньги. Можно легко сравнить бюджет IT у MS и у конторы типа Jeep. А дальше делаем выводы:
или у Jeep потрясающе дешевые программисты.
или крайне неэффективный код, написаный copy-paste
или Jeep не делает современных автомобилей
или у них весь код куплен и общий для всей автоиндустрии
или статиситка в статье — брехня.
Склоняюсь к последнему.MagisterLudi
12.11.2019 20:01В статье есть ссылки, откуда данные. Если у вас есть ссылки на другие данные — предоставьте.
maxood
12.11.2019 20:20+7Это вы серьезно? Вот, например, пруф Но не на сайт производителя, без объяснения, что и как подсчитывалось. Ну да, взяли Linux, установили пару библиотек и собственный код — получилось 100500 миллионов строк.
MagisterLudi
12.11.2019 20:23Согласен с вами, что пруфы местами слабенькие, а местами оооочень слабенькие. Но хоть какие-то. То есть не «из головы», а проведена минимальная оценка публикаций на эту тему. Как я писал в комментах ниже, я бы с удовольствием посмотрел на качественную аналитику от доверенных экспертов. Возможно, частично, что-то проясниться из обсуждения здесь. (например, количество строк кода в движке Хабра).
А статья 2007 года Манфреда Броя "Engineering Automotive Software". — из рецензируемого журнала.
Inanity
12.11.2019 22:16+4Ну не может быть в авто столько кода.
Есть мысль, что дело во множественном заимствовании. Код для нового авто не пишут с нуля, как это возможно делали для Шаттла, Хаббла или F-35, всё таки каждый из этих проектов уникален настолько, что заимствовать можно что-то фундаментальное, да и то, с большой осторожностью. А автомобилей много, код постоянно заимствуется, и наверняка обрастает разного рода #ifdef CAR_MODEL. Т.е. например, модуль управления круиз-контролем написан так, что поддерживается вообще весь модельный ряд, надо только дефайном при сборке выбрать модель авто. Но это не точно.Mirn
13.11.2019 07:31там есть ещё такой весёлая штука как MISRA которой не умеют пользоваться, и не критичные рекомендации принимают за ошибки и всеми силами исправляют, в итоге из кода вычищаются все switch-case, даже тривиальные функции дробятся на десяток таких и обвешиваются вообще всеми возможными проверками во всех ветках (даже там где именно переменная не используется) и прочий ад в стиле «заставь дурака богу молиться».
xztau
13.11.2019 08:02А почему бы и нет? Иначе зачем там такая рекомендация.
Mirn
13.11.2019 08:12+1Си исходник нейронки до MISRA пара сотен строк, несколько десятков килобайт
после — сотни мегабайт или гигабайт.
Быстродействие тоже катастрофически падает (а это не та задача где допустимо кадр просчитывать часами и днями).
Одна из причин — нельзя использовать указатели, но константы нельзя передать через стек т.к. его не десятки мегабайт. В итоге все весовые коэффициенты захардкожены в тексте программы, да да все десятки миллионов того же resnet50.
Другой пример — нельзя передавать функцию по указателю, в итоге всё обрастает копиями одного и того же кода с разными параметрами, для 3х3 ядра по 27 каналов, для 7х7 ядра по три канала и тд и тп.
И всё из за невнимательного чтения стандарта в котором сказано что в именно таких исключительных случаях не обязательно соблюдать. Стандарт то хороший, но компании не хотят из за возможных юр проблем и на фоне «растерзания Тойоты» как это называют японцы вообще не хотят чтоб были любые предупреждения или даже hint и рекомендации ЛЮБОГО стат анализатора.
eumorozov
13.11.2019 08:04Возможно, так они защищаются от возможных претензий. Улетело авто в кювет, из-за того, что тормоз не сработал. Начнется расследование, и кто-нибудь скажет: «У вас тут в функции
display_license
не проверяется переменнаяlicense_text
наNULL
. Смотрите, какая плохая компания NNN — они не соблюдают рекомендации индустрии по проверке всех переменных наNULL
. Из-за таких недоработок авто и вылетают с дороги!»Mirn
13.11.2019 08:17как и ответил выше каментом
habr.com/ru/company/itelma/blog/475448/#comment_20880038
да именно на стыке юристов, социума и варнингов анализаторов к стандарту они боятся последствий. А оптимизировать по быстродействию как-то надо даже если стандарт под это не заточен вообще.
Я считаю что это ещё один способ экономической войны — MISRA-C как способ не пускать никого в юр поле в стык индустриальной имплементации ML.
Goron_Dekar
13.11.2019 10:01То есть вы склоняетесь к copy-paste? Попробую разрушить такую теорию.
Представьте себе, что где-то в середине такого кода находят критичный баг. Как его править?Inanity
13.11.2019 10:49Находим баг, правим, прогоняем тесты по всему поддерживаемому модельному ряду, отзываем авто, бесплатно перепрошиваем. Но это сценарий очень серьёзного провала. Не понимаю, что изменится, если тот же критичный баг вы найдёте при любом другом подходе проектирования. Факт в том, что чаще всего авто от модели к модели не имеют настолько разительно разницы, что появляется необходимость писать всё с нуля. Поэтому я предположил, что код заимствуется. Если есть заимствование запчастей (даже между различными вендорами), почему вы исключаете заимствование кода внутри хотя бы одного вендора? Да я и как бы не настаиваю, сказал же, что это не точно.
Goron_Dekar
13.11.2019 15:03Проблема начнётся на стадии «правим». Для того, чтобы обойти весь код, сделанный copy-paste, надо много времени. Это деньги. Бюджет, в пересчёте на единицу строки кода, небольшой. Выходит, что:
либо ошибок мало, потому, что программисты талантливые
либо ошибки не правят и машины едут забагованные
либо число строк в статье брехня.
Я опять склоняюсь к последнему.
Polaris99
13.11.2019 15:18Можно взять тысячи библиотек, из которых используют дай бог десятую часть функционала, и просуммировать это как общее количество кода. Уверен, что производители так и делают, особо не заморачиваясь оптимизацией и качеством. Количество багов софта на своей новой машине я уже устал считать.
RomanArzumanyan
13.11.2019 15:53Наверняка, считают не кол-во строк «актуального» кода, который будет скомпилирован, а размер всего дерева с кучей 3rd-party, legacy и прочего балласта.
Что-то из разряда «сделали систему распознавания знаков — посчитали строчки кода всей OpenCV».
f1ac
12.11.2019 19:40+9Подозреваю, что больше половины — просто код одной или нескольких OS
vesper-bot
13.11.2019 11:59Ещё сверху один или несколько браузеров, и готово.
Polaris99
13.11.2019 15:24Именно. Мы на прошлом месте работы делали систему управления прибором на базе браузера, запускаемого в Qt, пользователь вообще ничего не видит, а на деле там стартуют Linux, Qt, Chromium, если просуммировать количество строк кода, то уверен, что я работал в проекте, где их было миллионы! Не суть, что лично я написал дай бог сотню тысяч.
somurzakov
12.11.2019 19:42не верится, кажется в авто происходит двойной учет.
софт изолирован и работает на сотне разных контроллеров, но использует одни и те же стандартные библиотеки. Если несколько стандартных библиотек умножить на кол-во контроллеров то так и получится много строк.
realimba
12.11.2019 19:55+2количество == качество! довелось работать на одном таком автомотив проЭкте для вага, шиппинг через пол года, мастер не собирался больше месяца и крешился каждый 2 запуск. зато была Архитектура, Покрытие100%, самописная База и многое другое… короче не завидую тем ребятам которые купили премиум модели с этим Г на борту :D
Magikan
12.11.2019 21:54+3Вот Вы сейчас описали 98% проектов на которых мне довелось поработать :D
anticyclope
13.11.2019 06:54— Помнишь, Маша, в меня стреляли, я при смерти был, а ты со мной всё время была? А помнишь, когда я обанкротился и денег совсем не было, а ты все равно рядом была? А первый мой инфаркт? Ты ж всё время от меня не отходила. Знаешь, что я думаю?
— Что, дорогой?
— Что ты, Маша, мне несчастье приносишь!
nckma
13.11.2019 10:00Я как-то предложил в компании поощрять тех, кто смог добиться сокращения количества строк кода. Там меня на смех подняли. Зато сейчас одно и тоже в коде пять раз делается разными способами потому, что 5 разных человек писали и каждый свою функцию хочет использовать.
DnD_designer
13.11.2019 15:42+1А в советское время на космических проектах премии лишали, если у тебя в программе находилась функция, которая уже написана в проекте, а ты ее не использовал.
jakushev
12.11.2019 19:56+6Немного некорректное сравнение. Это так же, как сравнивать количество строк кода в Вашем доме. Навигация — полноценный Линукс на борту, Мультимедиа — еще один девайс на Линуксе. Кода, отвечающего за сам функционал автомобиля (управление двигателем, кузовной электроникой, активной и пассивной безопасности) — не так уж и много. Это я, как automotiv разработчик в недавнем прошлом говорю. А так — да. Залить во все компоненты фирмаврь — до суток по CAN уходило. Сейчас немного по другому делают…
ЗЫ: Пока писал, комментариев к статье еще не было. Опоздал.MagisterLudi
12.11.2019 20:05+1Я бы тоже с удовольствие посмотрел на качественную аналитику с разделением различных систем: что в движке, что на фарах, что на прикуривателе, а что на автопилоте…
jakushev
12.11.2019 22:14+5Вот прям в строках не скажу, про объемы бинарников: контроллер двигателя / коробки — единицы мегабайт флеши, сотни килобайт ОЗУ. Больш'ая часть из этого — таблицы коэффициентов и параметров режимов. Да, софт для них не пишется, а рисуется (матмодели в Симулинке или закрытом фирменном ПО) с последующим синтезом в Си код. Боди (кузовная электроника): 1 — 2 мегабайт флеши, разбросанные по нескольким контроллерам. Мелочевка всякая — килобайты. А вот медиасистемы всякие, со встроенной полноценной ОС — это код самой ОС и приложений…
eumorozov
12.11.2019 20:24+2Строки кода сами по себе ничего не говорят. В данный момент, работаю над проектом на Python, в котором около 60,000 строк кода. Если переписать его на C, то получилось бы в 5-10 раз больше.
MagisterLudi
12.11.2019 20:29+2А какие, кстати, есть альтернативные метрики? Колмогоровская сложность? «Удельная плотность алгоритмических смыслов»?
dimkss
13.11.2019 16:07Альтернативные метрики чего? Качества, сложности, отказоустойчивости, количества функций, удобства поддержки, удобства кастомизации, скорости…?
MagisterLudi
13.11.2019 17:43Размера проекта, проделанной работы.
На флоте тоже мерятся «водоизмещением», хотя этот параметр ой какой кривой.
Я отлично понимаю, что и в пару килобайт можно впихнуть то, что индус на гигабайт не сделает.
maxood
12.11.2019 20:33+1То, что считать строки кода — это глупо, согласен на 146%. А вот про сравнение кода на Python и C — я б не был так категоричен — зависит от требований и приоритетов.
eumorozov
12.11.2019 20:35+1Это не глупо. Можно сравнивать строки кода, написанные на одном языке, какое-то представление о сложности это дает. Но вот как сравнивать строки кода, написанные на разных языках, не знаю.
Polaris99
13.11.2019 15:27С какой стати?? Вы думаете, эти строки кода ангелы принесли? Просто большая часть их спрятана под капот питона (частично) и в виде дополнительных библиотек, во внутренности которых Вы тоже не собираетесь заглядывать. Если взять готовые библиотеки на том же С — получится по сути то же самое.
PyerK
13.11.2019 17:02Чтоже там за строки такие… сколько приходилось переписывать с питона, перла, R… правда не на С, но на С++, строк не намного больше становилось… Если отбросить строки с "{}" то +- такой же объем, за такой же функционал, но при этом производительность выростала на порядки. Правда в R коэффициент был похуже, там всё-таки было много особенностей с лаконичными конструкциями.
FForth
12.11.2019 20:52Предлагаю к подсчёту количество строк, например, в ядре KolibriOS
и для справки указать в какой размер файла они транслируются :)
tuxi
12.11.2019 21:27+2Игра "посадка на Луну" для МК-61 80 строк :)
http://monatkodenis.blogspot.com/2014/01/blog-post.html?m=1
Satyricon
12.11.2019 21:30Прошивка ауди s4 от 97 года легко читается в ida. Даже баг находил. Какие там 100млн. Понимаю, что речь про современные авто, но всё же…
lorc
12.11.2019 22:07А вы добавьте Android Auto, например.
Nemutaisama
13.11.2019 12:56Android Auto как раз скорее всего немного добавляет. По сравнению с самостоятельными системами со своей навигацией и мультимедиа.
gecube
12.11.2019 21:44Расскажите-ка, как это в Windows XP Service Pack 1 кода меньше, чем в NT4?
Учитывая, что каждый сервис пак 100% собирается из того же дерева исходных кодов, что и основная операционная система ??? Инфа 100ка
Про микобактерий тоже интересно. Весь днк можно одной очень длинной строчкой закодировать. А можно каждую пару на отдельной строке. Сравнение интересное, но явно некорректное — как сравнивать яблоки и апельсины
dyam
13.11.2019 05:25ДНК/РНК в *.fa формате содержит 70 символов в строчке. Не помню с чем точно было это связано.
Но в принципе да… считать строчками код… вот ведь бред. Банальное Си-шное (для Паскаль/Дельфи — «begin») переносить открывающую фигурную скобку на новую строчку или нет весьма меняет их количество.
drWhy
12.11.2019 21:53+1Когда у создателей управляющей программы очередного спутника (ну не помню, какого, даже чьего) остались 730 свободных байт оперативной памяти, они добавили программу стабилизации по звёздам.
Когда было (случайно) обнаружено проникновение во внутреннюю сеть MS и за злоумышленником наблюдали в течение месяца (впрочем, тщетно), комиссия в составе АНБ, ФБР и прочих заинтересованных ведомств сделала вывод, что в исходные коды готовящейся к выпуску новейшей ОС Windows 7 скорее всего не было внесено изменений. Потому как необозримы.Xandrmoro
13.11.2019 16:25Потому что с точки зрения кода нарисовать кнопочку гораздо сложнее, чем посчитать тригонометрию.
REPISOT
12.11.2019 22:21Количество строк кода в современном автомобиле..
в сферическом автомобиле в вакууме. Лада — современный автомобиль? Сколько в нем кода? А в китайском Geely? Очень желтый заголовок.somurzakov
12.11.2019 22:38тазик != современное авто
cyberly
13.11.2019 00:31Там давно уже куча точно таких же деталей сторонних производителей, типа условного Bosch, как и везде. Ну или да, Итэлмы… Кстати, интересно, на какие марки они еще делают электронику…
5m1l3
13.11.2019 01:27+1Беру Ладу, втыкаю диагностический проводок в ноут с hdd на пару терабайт, профит достигнут, лада будет на 1 месте!
имхо, такой подход ничуть не хуже, чем пруфы с кворы, не указано сколько символов в строках.
seri0shka
12.11.2019 22:25+1Если я залью в Arduino скетч Blink в среде ArduinoIDE из-под Windows 10, я смогу заявить, что количество строк кода в моей Arduino равно количеству строк кода в скетче, ArduinoIDE и Windows 10 вместе взятых?
TimsTims
12.11.2019 22:42+1Статья крайне не информативна! Не хватает сравнения кода в футбольных полях и размахах крыльев Airbus!
П.С.: А если на одном компе поднять виртуалку, то кода получится в 2 раза больше :)
Genoik
12.11.2019 22:57Статья: «В компании трудится около 2500 сотрудников, в том числе 650 инженеров. „
Открываю вас же сайт: “350 инженеров, 1800 сотрудников».
Как так, где математика не сходится?
P.S. Личные впечатления о вашей продукции не очень…
MSC6502
12.11.2019 23:22+1объем пзу компутера аполлон 36 Кслов (72 килобайта). высота стопки распечаток возле Гамильтон пусть 1.7 м. пачка бумаги 500 листов имеет толщину примерно 6 см. 1.7/0.06=28 пачек.
28*500=14000 листов.
при 50 строках на лист получаем 700000 строк.
если допустить, что одна строка компилировалась в 1 байт (а реально это может быть и 2 и 3 байта), то это ПО требует как минимум 700 кБайт ПЗУ. (макс. около 2 МБайт)
И как оно помещалось в 72 кб?
вот 10000 строк в первом unix-e — это более похоже на правду. приходилось в свое время немного лазить по ядру TSX, так так его объем составлял примерно 40-50 килобайт.
40 млн. строк в win7 — их кто-нибудь видел? оценки, как можно предположить, весьма и весьма завышенные. (с другой стороны надо отчитываться перед акционерами и рассказывать куда пошли денюжки).
если к той функциональности, что давал unix в 70-80 прикрутить графический интерфейс, то все равно, даже к миллиону строк не приблизиться.
(имеются в виду, конечно, оригинальные строки программного кода)
cyberly
13.11.2019 00:20И как оно помещалось в 72 кб?
Хм, на фото распечатки по папочкам разложены (я насчитал 17 штук). Если предположить, что весь код — это одна такая папочка, а остальное — это, например, предыдущие версии, распечатки тестовых прогонов, документация, или еще что-нибудь, то все должно поместиться.
Steve_R
12.11.2019 23:31+1Ну что вы все про код, в самом деле? Вы лучше расскажите про те направления, где нужно разрабатывать уникальное железо, без которого автономный автомобиль не поедет. Например, про радиолокационные датчики на диапазон 77 ГГц и про то, сколько проблем приходится решать разработчикам антенных систем для этих датчиков. А проблем там, реально, очень много…
striver
12.11.2019 23:36+1Количество строк — это не показатель. Это может быть еще тот говнокод. А вот Ф-22 — это истребитель 5-го поколения.
Steve_R
12.11.2019 23:39+3Полностью согласен. Количество строк кода — не предмет для гордости.
Гордится нужно интересными разработками и людьми, что этими разработками занимаются.
commanderxo
13.11.2019 01:33+1Тут вспоминается история о том, как Тойота включила в прошивку мультимедиа-центра всем известный curl, в полном соответствии с лицензией упомянула автора, а потом недовольные водители стали бомбардировать Даниеля Стенберга просьбами помочь им настроить GPS или переключить язык на иврит.
MagisterLudi
13.11.2019 04:45Тут вспоминается история о том, как Тойота включила в код 80 000 нарушений.
emmibox
13.11.2019 02:00+1Смысл сравнивать число строк — если в современном автомобиле как и в современном боинге как и в F-35 они не людьми написаны. До конца 90-х когда автогенерации не было еще можно было вот так прямо сравнивать.
По динамике можно сравнивать — число строк в среднем удваивается за 2 года.
Druu
13.11.2019 06:48+2Из пруфа про фейсбук:
Clarification: The new count includes the entire git repository: data, binaries, third-party and all.
Ну так если считать — закинул npm в гит и каждый второй фронтендер над милионными по строкам проектами работает
kolu4iy
13.11.2019 09:06Ой, это же ваши ЭБУ нынче в ладах стоят? Ну, которые с ошибками P0327, дёрганными переходными режимами и прочими радостями?
Я знаю, что всё в деньгах, но всё же — зачем настолько всё печально?
A1exXx
13.11.2019 10:04Дичь какая то из разряда «ваши волосы станут шелковистее на 146%».
Что считается строкой, как учитываются циклы, почему за большое количество строк палками никого не побили, ведь чем меньше строк тем (скорее всего) программа более логична занимает меньше памяти и быстрей работает. с другой стороны если бы мне платили за количество строк кода я бы тоже каждый знак писал на отдельной строчке и циклы бы не использовалgecube
13.11.2019 10:50Согласен. Чем больше кода — тем больше багов. Баги нам не нужны. А нужны фичи. Вывод? При прочих равных очень круто отсекать от когда все лишнее и оставлять только нужное ) как скульптору.
vics001
13.11.2019 13:06Никому не платят за строчки кода, поэтому эта метрика и работает. Правильно сказать, что строчек написанных на языке А будет больше, чем на языке Б и один программист пишет в 2-3 раза меньше строк, но эти числа не отличаются в разы в обычных проектах, на этом и основывается модель оценки стоимости проекта COCOMO, которая до сих пор является одной из самых точных.
barbanel
13.11.2019 13:05+1С таким количеством кода машине тормоза не нужны — пормозить будет ПО, простите за каламбур =)
Astroscope
13.11.2019 13:56Я, наверное (скорее точно), очень плохой программист. Но на дилетантском уровне знаком с устройством автомобиля. Поэтому мои выводы от прочтения статьи, вкратце, таковы.
Количество строк кода — бредовая метрика. Рекомендую использовать ее только для сравнений "Apple versus Xiaomi", но только вне ресурсов для энтузиастов, т.е. вне Хабра.
Количество строк ASM кода — метрика, имеющая некоторый развлекательный смысл и уместна для околотехнического флуда на околотехнических ресурсах.
Современный автомобиль, в смысле его электроника, состоит из нескольких разрозненных (но связанных посредством CAN) модулей с контроллерами в единицы мегабайт флеша и сотни килобайт RAM. Чтобы запихнуть в них стопицот триллионов строк кода, необходимо создавать настолько чудовищный код, насколько я некомпетентен даже предположить. Естественно, что оптимизация кода истребителя или лунохода несопоставимо лучше, тогда как у автомобильных модулей на первом месте унификация и отсюда некоторая избыточность, при которой неиспользуемые в конкретном автомобиле функции программно отключаются при конфигурировании. Например, парктроники спереди и сзади поддерживаются в принципе и обслуживаются каким-то кодом, но если они не установлены, то будут программно отключены. Туда же круиз и тому подобное.
Единственное место в автомобиле, где реально много кода, это "магнитола" с условно-полноценной операционной системой, но хотя формально это верно является частью автомобиля, передергивание все же налицо.
aPiks
13.11.2019 17:54Всё зависит от того, как считать.
Например, если взять медиаустройство автомобиля — то это уже весь Андроид плюс еще миллион — пять на всякие там приложения внутри… Добавим сюда еще код для разных компонентов, датчиков, AI, если есть, управления двигателем и тд. Вполне может быть меньше шатла. Но если выкинуть всё то, что автомобилю не надо для успешного передвижения по асфальту, то хорошо, если останется даже пятая часть от этого объема кода…
MagisterLudi
buxley,
А сколько строк кода в движке Хабра?
Сколько строк текста всего написано на Хабре в виде постов?
Magikan
на Хабре примерно 120к постов и 7.5млн коментов (моя кривая выгрузка). количество строк не считал
MagisterLudi
ого