[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.46946 Reply
File: lines_per_method.png
Png, 12.10 KB, 1140×316 - Click the image to expand
edit Find source with google Find source with iqdb
lines_per_method.png
~15 лет работал в сабже инженером-программистом
могу ответить на какие-то вопросы по теме (кодирование, отладка, архитектура, дизайн, методология)
на картинке немного code metrics реального проекта, 180 тысяч функций, по оси X длина кода функции в строках (включая заголовок), по оси Y доля функций имеющих такую длину
>> No.46947 Reply
>>46946
По деньгам-то что?
>> No.46948 Reply
>>46946
Как часто приходится переделывать программу в неожиданных местах из-за того, что в задаче что-то меняется? Это только в других областях такая мега-проблема или здесь тоже?
>> No.46949 Reply
>>46947
по деньгам негусто, в разы меньше чем в банках

>>46948
"в задаче" очень редко что-то меняется. если меняется - это обычно уже другое изделие / проект.
чаще переделывать приходится, когда алгоритмы или архитектура были выбрана неудачно, в силу неполного понимания задачи. но с этим как раз справляются при помощи всякого "agile", частых итераций и т.п. то есть мелкие переделывания - это совершенно постоянная активность. но места обычно ожидаемые.
>> No.46950 Reply
>>46949
Я ожидал, что "всякого agile" и прочего ООП может быть гораздо меньше, если заказчик не столь склонен менять задачу. Выходит, всё по-прежнему остаётся, а не уходит?
>> No.46951 Reply
>>46950
> Я ожидал, что "всякого agile" и прочего ООП может быть гораздо меньше, если заказчик не столь склонен менять задачу.
agile и ООП нужны не только тогда, когда формулировка задачи меняется, но и тогда, когда решение меняется. а решение меняется нередко, потому что тяжело с первого раза найти оптимальное. иногда даже тяжело с первого раза найти верное решение. но при добросоветсно реализованном итеративном подходе локальные неудачные решения не являются проблемой, т.е. устраняются в рабочем порядке.
а waterfall не работает.

> Выходит, всё по-прежнему остаётся, а не уходит?
что, по-твоему, должно было уйти? и что должно было придти взамен?

мы постоянно занимались r&d, то есть экспериментальными разработками (регулярно пробовали новые языки, например), стараясь не особенно это афишировать. (в чем существенная заслуга руководителей среднего звена - официальный график старались давать с таким запасом, чтобы команда имела некоторые ресурсы на эксперименты).
>> No.46952 Reply
>>46951
> что, по-твоему, должно было уйти?
Ты уже ответил. Практики, направленные на более беспроблемное изменение кусков кода.
Что вы вообще делаете? Оно не самим самолётом управляет?
>> No.46956 Reply
>>46946
> ~15 лет работал в сабже
> по деньгам негусто, в разы меньше чем в банках
Чому не съебал после первой пары лет?
>> No.46957 Reply
>>46952
> Что вы вообще делаете? Оно не самим самолётом управляет?
я уже не делаю. я вышел и поэтому теперь рассказываю. не хочется подставить никого случайно.
в самолете много устройств, которые разными процессами управляют. "самим самолетом" пилот управляет.

>>46956
> Чому не съебал
главное: возможность работать с (супер)современной техникой. сопутствующее: командировки в интересные места по россии и за границей. покатушки на самолетах/вертолетах ("хочу посмотреть на прибор в реальных условиях"). ощущение, что прогресс человечества движется в т.ч. твоими руками.
я вот теперь в банке. денег много, всего перечисленного нет, и работа очень простая. все что здесь программисты делают - даже близко не лежит. вплоть до того, что общий язык найти не могу.
>> No.46958 Reply
>>46957
Я слышал, что в таких вещах, где самолёты и автомобили и всё такое, везде используется только чистый Си. Это не так?
>> No.46959 Reply
>>46958
> Я слышал, что в таких вещах, где самолёты и автомобили и всё такое, везде используется только чистый Си. Это не так?
не "везде" и не "чистый Си".
к некоторым устройствам есть требование, чтобы было использовано специальное подмножество языка Си (например, без динамического выделения памяти и т.п.). я много раз про это слышал, но к нашим устройствам никогда такого требования не было. (хотя мы были к нему готовы, путем автоматической компиляции из высокоуровневого кода в Си).
был доступ к коду boeing - они автоматически генерируют с++ из какого-то (собственного?) высокоуровневного кода.
в общем можешь уверенно считать, что там "где самолёты и автомобили и всё такое", используются любые языки, не только Си.
>> No.46960 Reply
>>46959
> автоматической компиляции из высокоуровневого кода в Си
Это не жульничество? Почему не сразу асм? Я думал, причины были какие-то связанные с предсказуемостью поведения кода при написании, а не технические. И я вроде даже ещё слышал про какой-то закон(юр.) с этим связанный якобы.
>> No.46964 Reply
>>46960
> Почему не сразу асм?
для последующей оптимизации. компиляторы Си включают в себя высококачественные оптимизаторы.

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

> закон(юр.) с этим связанный
законов(юр.) таких нет, но есть отдельные правила, которые нужно соблюдать, чтобы пройти некоторые сертификации. но лично я ни разу не сталкивался, как я уже сказал.
>> No.46965 Reply
>>46964
> для последующей оптимизации. компиляторы Си включают в себя высококачественные оптимизаторы
Я никогда раньше не слышал и не думал об этом. Звучит интересно, но почему этим вроде так нечасто пользуются?
>> No.46970 Reply
Завидую ОПу. Главный плюс подобной работы -- иметь возможность общаться на работе с нормальными людьми. Хорошо быть тупым и работать с более умными чуваками.
>> No.46981 Reply
>>46970
Быть самым слабым звеном - это быть на грани увольнения, и изначально туда попасть на таких условиях у тебя будет мало шансов. Если такие шансы есть, то только с условием, что ты должен в кратчайшие сроки поумнеть.
>> No.46986 Reply
File: bytes_per_method.png
Png, 11.07 KB, 879×324 - Click the image to expand
edit Find source with google Find source with iqdb
bytes_per_method.png
>>46965
> > для последующей оптимизации. компиляторы Си включают в себя высококачественные оптимизаторы
> Я никогда раньше не слышал и не думал об этом. Звучит интересно, но почему этим вроде так нечасто пользуются?
это мало где нужно. там, где нужно, пользуются часто.

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

> Хорошо быть тупым и работать с более умными чуваками.
> то только с условием, что ты должен в кратчайшие сроки поумнеть.
быть тупым плохо. работать с более умными чуваками совершенно необходимо, чтобы умнеть самому.

на картинке еще немного code metrics, по оси X длина скомпилированного кода функции в байтах, по оси Y доля функций имеющих такую длину
>> No.46987 Reply
>>46986
Измерь ещё:
1) Как часто встречяютьса операторы условия с "else" и без "else",
2) Как часто встречяютьса операторы условия с "||" и "&&",
3) Бывают ли у битардов операторы "&&" с "else".
>> No.46988 Reply
>>46986
> тенденции безрадостные в этом смысле
Увеличить зар. плату - принципиально нет? У банков деньги есть, а строителей самолётов - ни гроша за душой? на самом деле странные тенденции. Я не понимаю.
>> No.46989 Reply
>>46988
> Увеличить зар. плату - принципиально нет? У банков деньги есть, а строителей самолётов - ни гроша за душой?
мне кажется, определенную роль играет тот факт, что банки в россии в бОльшей степени создавались с нуля / заимствовались с запада (коллективы и корпоративную культуру it я имею в виду). в то время как вещи типа авиации/космоса/оборонки гораздо сильнее унаследовали советскую ментальность и подход к организации. (иногда и саму организацию целиком)

а вообще, просто "всё уже украдено до нас". область сильно регулируемая, и вокруг нее столько присосавшихся, что до работяг/инженеров доходит существенно меньше, чем в коммерции.

но эта тема как бы выходит за рамки программирования.

>>46987
> Измерь ещё:
с учетом того, что код на си в основном написан генератором, такие подсчеты не имеют смысла. можешь считать, что все операторы с else, а || и && никогда нет.
>> No.46990 Reply
>>46989
> код на си в основном написан генератором
Расскажи подробней про всю систему целиком. Что у вас были за задачи? Что за генератор? Какая причина его появления?
>> No.46998 Reply
>>46990
> > код на си в основном написан генератором
> Расскажи подробней про всю систему целиком. Что у вас были за задачи? Что за генератор? Какая причина его появления?
задачи - ПО для бортового оборудования, наземных и береговых систем и т.п., то есть широкий спектр радиоэлектроники.
разные генераторы кода используются уже очень давно, (генераторы кода на си - как минимум с 80-х), просто потому, что писать код на си вручную - слишком error-prone (предрасполагает к ошибкам). как альтернатива, разработчик описывает желаемое поведение устройства в более высокоуровневых терминах. (в идеале, разработчик даже не является программистом, т.е. работает в какой-нибудь полностью визуальной среде). из таких систем общего назначения могу назвать simulink, знаю что он точно используется в авиации, но я с ним дела не имел.
мы писали подобного рода системы сами. не просто генератор кода, а визуальная среда программирования/моделирования + генератор кода. в определенном смысле, высокоуровневый и узкоспециализированный язык программирования.
суммируя архитектуру на наиболее высоком уровне, я бы сказал, что она двухступенчатая. программист пишет код не непосредственно для целевого устройства, которое будет стоять в самолете, а только для того, чтобы другой человек (специалист в авиации / электронике / бортовых системах) мог описать поведение этого устройства, из чего уже можно атоматически сгенерировать код. в некотором смысле, задача программиста в этом смысле ближе к написанию компилятора / среды разработки. только проще, поскольку релаьный компилятор должен работать у каждого, а наш, узкоспециализированный, только на столе у нескольких конкретных специалистов.
в общем вот такая причина появления.
если проводить аналогию построения программы и постройки здания, то программист создает не здание, а строительную машину. а уже ее затем будет использовать архитектор, который как раз принимает решения, что именно и как именно строить.
в каком-то смысле это одна из наиболее важных идей.
это общепринятый подход сегодня, но обсуждения в интернете и статей на эту тему мало - область довольно узкая и полная коммерческих и политических "секретов", будь они неладны.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]