image

Количество строк кода в современном автомобиле в 200 раз больше чем в Шаттле, в 60 раз больше, чем в истребителе F-22 Raptor, в 50 раз больше, чем в телескопе Хаббл, в 20 раз больше чем в марсоходе Curiosity, в 4 раза больше чем в истребителях пятого поколения, в 2 раза больше, чем в большом адронном коллайдере или Facebook, если распечатать весь код на бумаге, то стопка будет высотой 200 метров. (по данным на 2009-2012 год)

Данные по количеству строк кода в современном автомобиле вызвали бурные споры на Reddit. Вопросы на темы от «В каком месте эти строчки прячутся, если у микроконтроллеров ограничена память?» до «Разве количество строк кода хоть что-то значит?»

Сравнительные данные по количеству строк кода (SLOC) в различных проектах довольно интересные.

image

Маргарет Гамильтон и её исходники кода для посадки Апполон-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 [пруф]

> миллиона


image


Билл Гейтс в 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 км

Большая картинка с инфографикой
image


Мы копнули первоисточники и выяснили, что первыми про 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.



О компании ИТЭЛМА


image

Мы большая компания-разработчик automotive компонентов. В компании трудится около 2500 сотрудников, в том числе 650 инженеров.

Мы, пожалуй, самый сильный в России центр компетенций по разработке автомобильной электроники. Сейчас активно растем и открыли много вакансий (порядка 30, в том числе в регионах), таких как инженер-программист, инженер-конструктор, ведущий инженер-разработчик (DSP-программист) и др.

У нас много интересных задач от автопроизводителей и концернов, двигающих индустрию. Если хотите расти, как специалист, и учиться у лучших, будем рады видеть вас в нашей команде. Также мы готовы делиться экспертизой, самым важным что происходит в automotive. Задавайте нам любые вопросы, ответим, пообсуждаем.

Комментарии (81)


  1. MagisterLudi
    12.11.2019 19:23
    +2

    buxley,
    А сколько строк кода в движке Хабра?
    Сколько строк текста всего написано на Хабре в виде постов?


    1. Magikan
      12.11.2019 19:32
      +2

      на Хабре примерно 120к постов и 7.5млн коментов (моя кривая выгрузка). количество строк не считал


      1. MagisterLudi
        12.11.2019 19:43

        ого


  1. Lazytech
    12.11.2019 19:37
    +3

    road 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 у меня есть сомнения.


    1. MagisterLudi
      12.11.2019 19:44
      +2

  1. maxood
    12.11.2019 19:38
    +1

    Нда, Хабр что-то неторт совсем становится :(


    1. Goron_Dekar
      12.11.2019 19:57
      +12

      Вот соглашусь. Мало того, что в статье ни строчки технической информации, да к тому же ещё и явная ложь. Ну не может быть в авто столько кода. Даже со всеми тестами и прочей обёрткой. Просто потому, что чтобы код писать нужны программисты. А на них нужно тратить деньги. Можно легко сравнить бюджет IT у MS и у конторы типа Jeep. А дальше делаем выводы:
      или у Jeep потрясающе дешевые программисты.
      или крайне неэффективный код, написаный copy-paste
      или Jeep не делает современных автомобилей
      или у них весь код куплен и общий для всей автоиндустрии
      или статиситка в статье — брехня.

      Склоняюсь к последнему.


      1. MagisterLudi
        12.11.2019 20:01

        В статье есть ссылки, откуда данные. Если у вас есть ссылки на другие данные — предоставьте.


        1. maxood
          12.11.2019 20:20
          +7

          Это вы серьезно? Вот, например, пруф Но не на сайт производителя, без объяснения, что и как подсчитывалось. Ну да, взяли Linux, установили пару библиотек и собственный код — получилось 100500 миллионов строк.


          1. MagisterLudi
            12.11.2019 20:23

            Согласен с вами, что пруфы местами слабенькие, а местами оооочень слабенькие. Но хоть какие-то. То есть не «из головы», а проведена минимальная оценка публикаций на эту тему. Как я писал в комментах ниже, я бы с удовольствием посмотрел на качественную аналитику от доверенных экспертов. Возможно, частично, что-то проясниться из обсуждения здесь. (например, количество строк кода в движке Хабра).

            А статья 2007 года Манфреда Броя "Engineering Automotive Software". — из рецензируемого журнала.


      1. Inanity
        12.11.2019 22:16
        +4

        Ну не может быть в авто столько кода.
        Есть мысль, что дело во множественном заимствовании. Код для нового авто не пишут с нуля, как это возможно делали для Шаттла, Хаббла или F-35, всё таки каждый из этих проектов уникален настолько, что заимствовать можно что-то фундаментальное, да и то, с большой осторожностью. А автомобилей много, код постоянно заимствуется, и наверняка обрастает разного рода #ifdef CAR_MODEL. Т.е. например, модуль управления круиз-контролем написан так, что поддерживается вообще весь модельный ряд, надо только дефайном при сборке выбрать модель авто. Но это не точно.


        1. Mirn
          13.11.2019 07:31

          там есть ещё такой весёлая штука как MISRA которой не умеют пользоваться, и не критичные рекомендации принимают за ошибки и всеми силами исправляют, в итоге из кода вычищаются все switch-case, даже тривиальные функции дробятся на десяток таких и обвешиваются вообще всеми возможными проверками во всех ветках (даже там где именно переменная не используется) и прочий ад в стиле «заставь дурака богу молиться».


          1. xztau
            13.11.2019 08:02

            А почему бы и нет? Иначе зачем там такая рекомендация.


            1. Mirn
              13.11.2019 08:12
              +1

              Си исходник нейронки до MISRA пара сотен строк, несколько десятков килобайт
              после — сотни мегабайт или гигабайт.
              Быстродействие тоже катастрофически падает (а это не та задача где допустимо кадр просчитывать часами и днями).
              Одна из причин — нельзя использовать указатели, но константы нельзя передать через стек т.к. его не десятки мегабайт. В итоге все весовые коэффициенты захардкожены в тексте программы, да да все десятки миллионов того же resnet50.
              Другой пример — нельзя передавать функцию по указателю, в итоге всё обрастает копиями одного и того же кода с разными параметрами, для 3х3 ядра по 27 каналов, для 7х7 ядра по три канала и тд и тп.
              И всё из за невнимательного чтения стандарта в котором сказано что в именно таких исключительных случаях не обязательно соблюдать. Стандарт то хороший, но компании не хотят из за возможных юр проблем и на фоне «растерзания Тойоты» как это называют японцы вообще не хотят чтоб были любые предупреждения или даже hint и рекомендации ЛЮБОГО стат анализатора.


          1. eumorozov
            13.11.2019 08:04

            Возможно, так они защищаются от возможных претензий. Улетело авто в кювет, из-за того, что тормоз не сработал. Начнется расследование, и кто-нибудь скажет: «У вас тут в функции display_license не проверяется переменная license_text на NULL. Смотрите, какая плохая компания NNN — они не соблюдают рекомендации индустрии по проверке всех переменных на NULL. Из-за таких недоработок авто и вылетают с дороги!»


            1. Mirn
              13.11.2019 08:17

              как и ответил выше каментом
              habr.com/ru/company/itelma/blog/475448/#comment_20880038
              да именно на стыке юристов, социума и варнингов анализаторов к стандарту они боятся последствий. А оптимизировать по быстродействию как-то надо даже если стандарт под это не заточен вообще.
              Я считаю что это ещё один способ экономической войны — MISRA-C как способ не пускать никого в юр поле в стык индустриальной имплементации ML.


        1. Goron_Dekar
          13.11.2019 10:01

          То есть вы склоняетесь к copy-paste? Попробую разрушить такую теорию.
          Представьте себе, что где-то в середине такого кода находят критичный баг. Как его править?


          1. Inanity
            13.11.2019 10:49

            Находим баг, правим, прогоняем тесты по всему поддерживаемому модельному ряду, отзываем авто, бесплатно перепрошиваем. Но это сценарий очень серьёзного провала. Не понимаю, что изменится, если тот же критичный баг вы найдёте при любом другом подходе проектирования. Факт в том, что чаще всего авто от модели к модели не имеют настолько разительно разницы, что появляется необходимость писать всё с нуля. Поэтому я предположил, что код заимствуется. Если есть заимствование запчастей (даже между различными вендорами), почему вы исключаете заимствование кода внутри хотя бы одного вендора? Да я и как бы не настаиваю, сказал же, что это не точно.


            1. Goron_Dekar
              13.11.2019 15:03

              Проблема начнётся на стадии «правим». Для того, чтобы обойти весь код, сделанный copy-paste, надо много времени. Это деньги. Бюджет, в пересчёте на единицу строки кода, небольшой. Выходит, что:
              либо ошибок мало, потому, что программисты талантливые
              либо ошибки не правят и машины едут забагованные
              либо число строк в статье брехня.
              Я опять склоняюсь к последнему.


      1. Polaris99
        13.11.2019 15:18

        Можно взять тысячи библиотек, из которых используют дай бог десятую часть функционала, и просуммировать это как общее количество кода. Уверен, что производители так и делают, особо не заморачиваясь оптимизацией и качеством. Количество багов софта на своей новой машине я уже устал считать.


      1. RomanArzumanyan
        13.11.2019 15:53

        Наверняка, считают не кол-во строк «актуального» кода, который будет скомпилирован, а размер всего дерева с кучей 3rd-party, legacy и прочего балласта.

        Что-то из разряда «сделали систему распознавания знаков — посчитали строчки кода всей OpenCV».


  1. f1ac
    12.11.2019 19:40
    +9

    Подозреваю, что больше половины — просто код одной или нескольких OS


    1. vesper-bot
      13.11.2019 11:59

      Ещё сверху один или несколько браузеров, и готово.


      1. Polaris99
        13.11.2019 15:24

        Именно. Мы на прошлом месте работы делали систему управления прибором на базе браузера, запускаемого в Qt, пользователь вообще ничего не видит, а на деле там стартуют Linux, Qt, Chromium, если просуммировать количество строк кода, то уверен, что я работал в проекте, где их было миллионы! Не суть, что лично я написал дай бог сотню тысяч.


  1. somurzakov
    12.11.2019 19:42

    не верится, кажется в авто происходит двойной учет.
    софт изолирован и работает на сотне разных контроллеров, но использует одни и те же стандартные библиотеки. Если несколько стандартных библиотек умножить на кол-во контроллеров то так и получится много строк.


  1. realimba
    12.11.2019 19:55
    +2

    количество == качество! довелось работать на одном таком автомотив проЭкте для вага, шиппинг через пол года, мастер не собирался больше месяца и крешился каждый 2 запуск. зато была Архитектура, Покрытие100%, самописная База и многое другое… короче не завидую тем ребятам которые купили премиум модели с этим Г на борту :D


    1. Magikan
      12.11.2019 21:54
      +3

      Вот Вы сейчас описали 98% проектов на которых мне довелось поработать :D


      1. anticyclope
        13.11.2019 06:54

        — Помнишь, Маша, в меня стреляли, я при смерти был, а ты со мной всё время была? А помнишь, когда я обанкротился и денег совсем не было, а ты все равно рядом была? А первый мой инфаркт? Ты ж всё время от меня не отходила. Знаешь, что я думаю?
        — Что, дорогой?
        — Что ты, Маша, мне несчастье приносишь!


    1. nckma
      13.11.2019 10:00

      Я как-то предложил в компании поощрять тех, кто смог добиться сокращения количества строк кода. Там меня на смех подняли. Зато сейчас одно и тоже в коде пять раз делается разными способами потому, что 5 разных человек писали и каждый свою функцию хочет использовать.


      1. DnD_designer
        13.11.2019 15:42
        +1

        А в советское время на космических проектах премии лишали, если у тебя в программе находилась функция, которая уже написана в проекте, а ты ее не использовал.


  1. jakushev
    12.11.2019 19:56
    +6

    Немного некорректное сравнение. Это так же, как сравнивать количество строк кода в Вашем доме. Навигация — полноценный Линукс на борту, Мультимедиа — еще один девайс на Линуксе. Кода, отвечающего за сам функционал автомобиля (управление двигателем, кузовной электроникой, активной и пассивной безопасности) — не так уж и много. Это я, как automotiv разработчик в недавнем прошлом говорю. А так — да. Залить во все компоненты фирмаврь — до суток по CAN уходило. Сейчас немного по другому делают…
    ЗЫ: Пока писал, комментариев к статье еще не было. Опоздал.


    1. MagisterLudi
      12.11.2019 20:05
      +1

      Я бы тоже с удовольствие посмотрел на качественную аналитику с разделением различных систем: что в движке, что на фарах, что на прикуривателе, а что на автопилоте…


      1. jakushev
        12.11.2019 22:14
        +5

        Вот прям в строках не скажу, про объемы бинарников: контроллер двигателя / коробки — единицы мегабайт флеши, сотни килобайт ОЗУ. Больш'ая часть из этого — таблицы коэффициентов и параметров режимов. Да, софт для них не пишется, а рисуется (матмодели в Симулинке или закрытом фирменном ПО) с последующим синтезом в Си код. Боди (кузовная электроника): 1 — 2 мегабайт флеши, разбросанные по нескольким контроллерам. Мелочевка всякая — килобайты. А вот медиасистемы всякие, со встроенной полноценной ОС — это код самой ОС и приложений…


  1. eumorozov
    12.11.2019 20:24
    +2

    Строки кода сами по себе ничего не говорят. В данный момент, работаю над проектом на Python, в котором около 60,000 строк кода. Если переписать его на C, то получилось бы в 5-10 раз больше.


    1. MagisterLudi
      12.11.2019 20:29
      +2

      А какие, кстати, есть альтернативные метрики? Колмогоровская сложность? «Удельная плотность алгоритмических смыслов»?


      1. dimkss
        13.11.2019 16:07

        Альтернативные метрики чего? Качества, сложности, отказоустойчивости, количества функций, удобства поддержки, удобства кастомизации, скорости…?


        1. MagisterLudi
          13.11.2019 17:43

          Размера проекта, проделанной работы.
          На флоте тоже мерятся «водоизмещением», хотя этот параметр ой какой кривой.

          Я отлично понимаю, что и в пару килобайт можно впихнуть то, что индус на гигабайт не сделает.


    1. maxood
      12.11.2019 20:33
      +1

      То, что считать строки кода — это глупо, согласен на 146%. А вот про сравнение кода на Python и C — я б не был так категоричен — зависит от требований и приоритетов.


      1. eumorozov
        12.11.2019 20:35
        +1

        Это не глупо. Можно сравнивать строки кода, написанные на одном языке, какое-то представление о сложности это дает. Но вот как сравнивать строки кода, написанные на разных языках, не знаю.


    1. Polaris99
      13.11.2019 15:27

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


    1. PyerK
      13.11.2019 17:02

      Чтоже там за строки такие… сколько приходилось переписывать с питона, перла, R… правда не на С, но на С++, строк не намного больше становилось… Если отбросить строки с "{}" то +- такой же объем, за такой же функционал, но при этом производительность выростала на порядки. Правда в R коэффициент был похуже, там всё-таки было много особенностей с лаконичными конструкциями.


  1. xavier87
    12.11.2019 20:47
    +1

    Водитель ритма сердца

    Эмм..?


    1. Itelma Автор
      12.11.2019 20:51
      +1

      Кардиостимулятор, конечно.


  1. FForth
    12.11.2019 20:52

    Предлагаю к подсчёту количество строк, например, в ядре KolibriOS
    и для справки указать в какой размер файла они транслируются :)


  1. tuxi
    12.11.2019 21:27
    +2

    Игра "посадка на Луну" для МК-61 80 строк :)
    http://monatkodenis.blogspot.com/2014/01/blog-post.html?m=1


  1. Satyricon
    12.11.2019 21:30

    Прошивка ауди s4 от 97 года легко читается в ida. Даже баг находил. Какие там 100млн. Понимаю, что речь про современные авто, но всё же…


    1. lorc
      12.11.2019 22:07

      А вы добавьте Android Auto, например.


      1. Nemutaisama
        13.11.2019 12:56

        Android Auto как раз скорее всего немного добавляет. По сравнению с самостоятельными системами со своей навигацией и мультимедиа.


  1. gecube
    12.11.2019 21:44

    Расскажите-ка, как это в Windows XP Service Pack 1 кода меньше, чем в NT4?
    Учитывая, что каждый сервис пак 100% собирается из того же дерева исходных кодов, что и основная операционная система ??? Инфа 100ка


    Про микобактерий тоже интересно. Весь днк можно одной очень длинной строчкой закодировать. А можно каждую пару на отдельной строке. Сравнение интересное, но явно некорректное — как сравнивать яблоки и апельсины


    1. lopatoid
      13.11.2019 02:03

      Там Windows XP два раза встречается, причём с разным кол-вом SLOC.


    1. dyam
      13.11.2019 05:25

      ДНК/РНК в *.fa формате содержит 70 символов в строчке. Не помню с чем точно было это связано.
      Но в принципе да… считать строчками код… вот ведь бред. Банальное Си-шное (для Паскаль/Дельфи — «begin») переносить открывающую фигурную скобку на новую строчку или нет весьма меняет их количество.


  1. drWhy
    12.11.2019 21:53
    +1

    Когда у создателей управляющей программы очередного спутника (ну не помню, какого, даже чьего) остались 730 свободных байт оперативной памяти, они добавили программу стабилизации по звёздам.

    Когда было (случайно) обнаружено проникновение во внутреннюю сеть MS и за злоумышленником наблюдали в течение месяца (впрочем, тщетно), комиссия в составе АНБ, ФБР и прочих заинтересованных ведомств сделала вывод, что в исходные коды готовящейся к выпуску новейшей ОС Windows 7 скорее всего не было внесено изменений. Потому как необозримы.


    1. Xandrmoro
      13.11.2019 16:25

      Потому что с точки зрения кода нарисовать кнопочку гораздо сложнее, чем посчитать тригонометрию.


  1. nomadmoon
    12.11.2019 22:13
    +1

    Это вы про Андроид в медиа панели что ли?


  1. REPISOT
    12.11.2019 22:21

    Количество строк кода в современном автомобиле..
    в сферическом автомобиле в вакууме. Лада — современный автомобиль? Сколько в нем кода? А в китайском Geely? Очень желтый заголовок.


    1. somurzakov
      12.11.2019 22:38

      тазик != современное авто


      1. cyberly
        13.11.2019 00:31

        Там давно уже куча точно таких же деталей сторонних производителей, типа условного Bosch, как и везде. Ну или да, Итэлмы… Кстати, интересно, на какие марки они еще делают электронику…


    1. 5m1l3
      13.11.2019 01:27
      +1

      Беру Ладу, втыкаю диагностический проводок в ноут с hdd на пару терабайт, профит достигнут, лада будет на 1 месте!

      имхо, такой подход ничуть не хуже, чем пруфы с кворы, не указано сколько символов в строках.


  1. seri0shka
    12.11.2019 22:25
    +1

    Если я залью в Arduino скетч Blink в среде ArduinoIDE из-под Windows 10, я смогу заявить, что количество строк кода в моей Arduino равно количеству строк кода в скетче, ArduinoIDE и Windows 10 вместе взятых?


    1. dimkss
      13.11.2019 16:12

      Да, а также вы будете достойны уважения, месье.


  1. TimsTims
    12.11.2019 22:42
    +1

    Статья крайне не информативна! Не хватает сравнения кода в футбольных полях и размахах крыльев Airbus!
    П.С.: А если на одном компе поднять виртуалку, то кода получится в 2 раза больше :)


  1. Genoik
    12.11.2019 22:57

    Статья: «В компании трудится около 2500 сотрудников, в том числе 650 инженеров. „
    Открываю вас же сайт: “350 инженеров, 1800 сотрудников».
    Как так, где математика не сходится?

    P.S. Личные впечатления о вашей продукции не очень…


  1. 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 прикрутить графический интерфейс, то все равно, даже к миллиону строк не приблизиться.
    (имеются в виду, конечно, оригинальные строки программного кода)


    1. cyberly
      13.11.2019 00:20

      И как оно помещалось в 72 кб?

      Хм, на фото распечатки по папочкам разложены (я насчитал 17 штук). Если предположить, что весь код — это одна такая папочка, а остальное — это, например, предыдущие версии, распечатки тестовых прогонов, документация, или еще что-нибудь, то все должно поместиться.


      1. MagisterLudi
        13.11.2019 00:23

        там еще и комменты


  1. Steve_R
    12.11.2019 23:31
    +1

    Ну что вы все про код, в самом деле? Вы лучше расскажите про те направления, где нужно разрабатывать уникальное железо, без которого автономный автомобиль не поедет. Например, про радиолокационные датчики на диапазон 77 ГГц и про то, сколько проблем приходится решать разработчикам антенных систем для этих датчиков. А проблем там, реально, очень много…


  1. striver
    12.11.2019 23:36
    +1

    Количество строк — это не показатель. Это может быть еще тот говнокод. А вот Ф-22 — это истребитель 5-го поколения.


    1. Steve_R
      12.11.2019 23:39
      +3

      Полностью согласен. Количество строк кода — не предмет для гордости.
      Гордится нужно интересными разработками и людьми, что этими разработками занимаются.


    1. 0xd34df00d
      13.11.2019 02:55

      Не то что летающая табуретка F-35 :]


      Без сарказма.


  1. commanderxo
    13.11.2019 01:33
    +1

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


    1. MagisterLudi
      13.11.2019 04:45

      Тут вспоминается история о том, как Тойота включила в код 80 000 нарушений.


  1. emmibox
    13.11.2019 02:00
    +1

    Смысл сравнивать число строк — если в современном автомобиле как и в современном боинге как и в F-35 они не людьми написаны. До конца 90-х когда автогенерации не было еще можно было вот так прямо сравнивать.

    По динамике можно сравнивать — число строк в среднем удваивается за 2 года.


  1. Druu
    13.11.2019 06:48
    +2

    Из пруфа про фейсбук:


    Clarification: The new count includes the entire git repository: data, binaries, third-party and all.

    Ну так если считать — закинул npm в гит и каждый второй фронтендер над милионными по строкам проектами работает


  1. kolu4iy
    13.11.2019 09:06

    Ой, это же ваши ЭБУ нынче в ладах стоят? Ну, которые с ошибками P0327, дёрганными переходными режимами и прочими радостями?
    Я знаю, что всё в деньгах, но всё же — зачем настолько всё печально?


  1. A1exXx
    13.11.2019 10:04

    Дичь какая то из разряда «ваши волосы станут шелковистее на 146%».
    Что считается строкой, как учитываются циклы, почему за большое количество строк палками никого не побили, ведь чем меньше строк тем (скорее всего) программа более логична занимает меньше памяти и быстрей работает. с другой стороны если бы мне платили за количество строк кода я бы тоже каждый знак писал на отдельной строчке и циклы бы не использовал


    1. gecube
      13.11.2019 10:50

      Согласен. Чем больше кода — тем больше багов. Баги нам не нужны. А нужны фичи. Вывод? При прочих равных очень круто отсекать от когда все лишнее и оставлять только нужное ) как скульптору.


    1. barbanel
      13.11.2019 13:06

      Вы часом не родственник Маяковскому? =)


    1. vics001
      13.11.2019 13:06

      Никому не платят за строчки кода, поэтому эта метрика и работает. Правильно сказать, что строчек написанных на языке А будет больше, чем на языке Б и один программист пишет в 2-3 раза меньше строк, но эти числа не отличаются в разы в обычных проектах, на этом и основывается модель оценки стоимости проекта COCOMO, которая до сих пор является одной из самых точных.


  1. barbanel
    13.11.2019 13:05
    +1

    С таким количеством кода машине тормоза не нужны — пормозить будет ПО, простите за каламбур =)


  1. Astroscope
    13.11.2019 13:56

    Я, наверное (скорее точно), очень плохой программист. Но на дилетантском уровне знаком с устройством автомобиля. Поэтому мои выводы от прочтения статьи, вкратце, таковы.


    Количество строк кода — бредовая метрика. Рекомендую использовать ее только для сравнений "Apple versus Xiaomi", но только вне ресурсов для энтузиастов, т.е. вне Хабра.
    Количество строк ASM кода — метрика, имеющая некоторый развлекательный смысл и уместна для околотехнического флуда на околотехнических ресурсах.
    Современный автомобиль, в смысле его электроника, состоит из нескольких разрозненных (но связанных посредством CAN) модулей с контроллерами в единицы мегабайт флеша и сотни килобайт RAM. Чтобы запихнуть в них стопицот триллионов строк кода, необходимо создавать настолько чудовищный код, насколько я некомпетентен даже предположить. Естественно, что оптимизация кода истребителя или лунохода несопоставимо лучше, тогда как у автомобильных модулей на первом месте унификация и отсюда некоторая избыточность, при которой неиспользуемые в конкретном автомобиле функции программно отключаются при конфигурировании. Например, парктроники спереди и сзади поддерживаются в принципе и обслуживаются каким-то кодом, но если они не установлены, то будут программно отключены. Туда же круиз и тому подобное.
    Единственное место в автомобиле, где реально много кода, это "магнитола" с условно-полноценной операционной системой, но хотя формально это верно является частью автомобиля, передергивание все же налицо.


  1. aPiks
    13.11.2019 17:54

    Всё зависит от того, как считать.
    Например, если взять медиаустройство автомобиля — то это уже весь Андроид плюс еще миллион — пять на всякие там приложения внутри… Добавим сюда еще код для разных компонентов, датчиков, AI, если есть, управления двигателем и тд. Вполне может быть меньше шатла. Но если выкинуть всё то, что автомобилю не надо для успешного передвижения по асфальту, то хорошо, если останется даже пятая часть от этого объема кода…