Я учусь на последнем семестре и собираюсь получить степень бакалавра компьютерных наук. Я хотел бы в конечном итоге перейти в индустрию исследования космоса (NASA, SpaceX, Boeing, Lockheed Martin и т. д.). Я ничего не знаю об авионике и хотел бы узнать больше об этом предмете, особенно о программном обеспечении. Я нашел мало информации в Интернете. Пожалуйста, дайте мне справочный материал (книги, веб-сайты и т. д.), чтобы узнать об этой области. Ваша точка зрения и дополнительная информация приветствуются.
Хорошо, я публиковал это как комментарий, но он стал смехотворно длинным...
Большую часть своей профессиональной жизни я работал в областях, которые так или иначе связаны. Я вижу, что есть три области обучения, которые очень помогут вам здесь.
Первое: языки программирования. Знание языка, используемого в отрасли, является преимуществом. Сейчас я работаю в автомобильной/транспортной отрасли; Я не работаю над материалами, критически важными для безопасности, поэтому мы просто используем стандартный C/C++. Даже на этом уровне хорошее знание низкоуровневого программирования и программного обеспечения (как написать простой драйвер, как взаимодействовать с устройством с помощью ioctl и т. д.) очень полезно.
До этого я работал в области, связанной с языками программирования и компиляторами, особенно над моделированием и анализом параллельного кода. Среди прочего, я кратко общался с людьми, работающими в Airbus (профессора, которые работают в академических кругах, но помогают создавать настоящее программное обеспечение). Они все еще видят и используют много Ады, так что... знать, что это хорошо :) Я также знаю, что Java также используется вместе со специальными инструментами для проверки кода.
Что подводит нас ко второму: все, что связано с проверкой программного обеспечения , как с теоретической, так и с практической точки зрения, очень поможет вам в этой отрасли. Изучайте и практикуйтесь, по крайней мере, с мониторами времени выполнения и средствами проверки моделей. Узнайте о различных методах статического анализа, таких как абстрактная интерпретация. Посещайте занятия по этому поводу, если можете, в своей школе.
И в-третьих: изучайте и практикуйтесь со встроенными системами и (более редкими) операционными системами реального времени и с тем, как они работают (и как вы их программируете). Приобретите себе arduino или netduino (не raspberry PI — слишком высокий уровень, там слишком много ресурсов!) и потренируйтесь с ними. Узнайте о uboot.
Я подозреваю, что единственный ответ - "на работе".
Изучите C и C++, а также немного встроенного программирования и попробуйте подать заявку на любые младшие должности в компаниях, занимающихся авионикой, которые вы найдете.
Мобильные телефоны уже нельзя считать встроенными, но вы сможете найти курс по робототехнике или кибернетике (промышленные контроллеры) или стажировку, связанную с ними. Стажировка по бытовой электронике тоже может помочь.
И не забывайте, что производители самолетов не производят авионику сами, а либо покупают стандартные модули у таких поставщиков, как Garmin или Honeywell, либо передают их в субподряд многим консалтинговым компаниям. И эти компании часто делают и другие виды встраиваемых систем (автомобильные, промышленные и т. д.).
Примечания: я отдаленно знаю кого-то, кто занимался авионикой, и я не думаю, что он специально стремился к этому; он был просто хорошим программистом на C и устроился на работу. Я сам немного занимался автомобилестроением, опять же, только что подал заявку на (младшую; это было сразу после выпуска) C/C++ работу в консалтинговой компании, которая изначально была мобильной и была переведена на автомобильную промышленность, поскольку первоначальный проект на самом деле не продвигался.
Для авионики для рассмотрения вашего резюме будет необходимо следующее:
Также будет полезно следующее:
Имея степень бакалавра (не бакалавра технических наук) в области компьютерных наук (не электронной техники), вы можете оказаться в невыгодном положении по некоторым из этих вопросов. Вы ДОЛЖНЫ выбирать свои проекты, чтобы получить правильный опыт, который вы хотите передать работодателям.
Конечно, вы только в самом начале своей трудовой жизни. Степень — это только начало, и любой работодатель, нанимающий выпускников, будет знать, что вам нужно пройти обучение. Хороший работодатель больше будет обращать внимание на то, насколько вы умны в целом и насколько хорошо, по их мнению, вы можете освоить новые навыки. Если вы играете с технологиями в свободное время, это, вероятно, тоже неплохо взять с собой на собеседование.
У меня есть друг, который занимается программным обеспечением для авионики. В том числе космические проекты.
Он попал в нее, устроившись на работу в компании, работающие в этой или подобной сфере, до этого у него не было специальной подготовки или опыта в области авионики.
В работе по авионике чаще используются языки программирования, которые не являются общепринятыми. Я думаю, что есть много встроенного C (поэтому общие навыки C могут быть полезны), а также специфичный для процессора ассемблер и языки, такие как Ada (возможно, в большей степени для оборонной авионики).
Скорее всего, вы ориентируетесь на операционную систему реального времени (RTOS) или микроконтроллер. Так что их знание может быть преимуществом. Возможно, вам потребуется написать драйверы устройств и перенести их на новые платформы (например, с одного микропроцессора на другой). Вам может понадобиться запрограммировать микроконтроллеры (например, 8051) на ассемблере или C.
Вполне вероятно, что вы столкнетесь с гораздо более высокими требованиями к написанию и/или использованию модульных тестов, тестовых наборов, инструментов покрытия, интеграционного тестирования и кропотливой формальной документации и проверки всего.
Уже предлагалось изучать C и C++ , и я бы еще добавил в этот список язык программирования Ada . Многие программы для авионики написаны на этих трех языках программирования.
При изучении C/C++ также может быть полезно научиться правильно кодировать в соответствии со стандартами кодирования для авиационного программного обеспечения.
Я рекомендую прочитать:
Если вы хотите поиграться с настоящим программированием авионики, вам может быть интересно получить квадрокоптер с открытым исходным кодом (например, от AeroQuad ) в качестве игрушки и поэкспериментировать с его программным обеспечением.
Я не работаю с авионикой, но я работал с дистанционным зондированием в контексте наук о Земле.
Я думаю, что эти материалы могли бы помочь в дополнение к тому, что предложили другие, особенно. если вас интересуют научные аспекты (извините, ответ может быть несколько не по теме, если вы этого не сделаете).
Программирование
Помимо C, для реализации различных алгоритмов и моделей по-прежнему много используется Fortran. Для небольших задач и визуализации люди часто используют Python ( numpy , scipy , pandas , matplotlib ) и R (R — отличный язык статистического программирования, который можно использовать вместо Excel для серьезных задач).
Что касается C, кажется, никто не упоминает, что безопасное кодирование действительно необходимо для таких приложений с высокими ставками. Seacord, 2013 — отличная книга для этой цели.
Чепмен, Стивен Дж. Фортран 95/2003 для ученых и инженеров. Макгроу-Хилл, 2008 г.
Сикорд, Роберт. Безопасное кодирование на C и C++ (2-е издание) (серия SEI по разработке программного обеспечения). Эддисон-Уэсли Профессионал, 2013.
Матлофф, Норман. Искусство программирования на R. Пресса без крахмала, 2011.
Физика
Хорошие основы физики, безусловно, жизненно важны для освоения космоса.
Многие измерения, проведенные в космосе, связаны с излучением, поэтому я добавляю ссылку на это.
Физика I: Классическая механика ,
Физика II: электричество и магнетизм ,
видеолекции профессора Уолтера Левина (MIT OCW)
Холлидей, Дэвид, Роберт Резник и Джерл Уокер. Основы физики расширены. Джон Уайли и сыновья, 2010.
Петти, ГВ. Первый курс атмосферной радиации (2-е изд.). Издательство Сандог, 2006.
Математика
Исчисление, наверное, важнее линейной алгебры.
Многие проблемы проектирования и физики связаны со статистикой и оптимизацией.
Видеолекции по линейной алгебре профессора Гилберта Странга (MIT OCW)
Уилкс, Д.С. Статистические методы в атмосферных науках. Академическая пресса, 2011.
Вероятностное программирование и байесовские методы для хакеров (доступно онлайн)
Крушке, Дж. Выполнение байесовского анализа данных, второе издание: Учебное пособие с R, JAGS и Стэном. Академическая пресса, 2014.
Юникс/Линукс
Операционные системы Unix широко используются в прикладных науках, встроенных системах и суперкомпьютерах.
Керриск, М. Интерфейс программирования Linux: Справочник по системному программированию Linux и UNIX. Пресса без крахмала, 2010.
Лукас, МВ. Absolute FreeBSD: Полное руководство по FreeBSD. Пресса без крахмала, 2007.
многие другие книги, например, изданные O'Reilly
Немного ежедневного чтения: phys.org/space-news/ (-;
Я настоятельно рекомендую изучить курс анализа программного обеспечения и изучить систему проверки, такую как PVS. Я вернулся в аспирантуру после 14 лет работы в различных отраслях программного обеспечения, и курс по анализу программного обеспечения, который я прошел, был для меня самым поучительным. Когда я учился в школе, это не имело особого смысла, но после многих лет работы материал прижился. Мне никогда не казалось, что эта тема мне понравится, и она может быть немного суховатой, но как только вы ее освоите, вы уже никогда не будете смотреть на программирование как раньше.
После небольшого поиска в сети я нашел эту книгу: « Разработка критически важного для безопасности программного обеспечения: практическое руководство для авиационного программного обеспечения — Риерсон» .
Джон Стори
Ян Худек
Джон Стори
Ян Худек
Ян Худек
рбп
Джон Стори
номер пользователя
Ян Худек
рбп
Киган
ШинТакэдзо