Кто-либо использующий Python для встроенных проектов? [закрытый]

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

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

40
задан That1Guy 14 April 2015 в 18:59
поделиться

11 ответов

Не КАНУН Онлайн клиент яркий пример высокоэффективного Python в реальном времени?

1
ответ дан S.Lott 27 November 2019 в 01:36
поделиться

У меня есть сервер Python (использующий Скрученный ) и некоторые сценарии помощника, работающие под Встроенным XP, и он работал отлично.

2
ответ дан eglaser 27 November 2019 в 01:36
поделиться

Моя команда записала встроенное программное обеспечение, сделанное из C++ и Python. Мы решили записать основные классы и тяжелые вычислительные процедуры в C++. Мы записали логику в Python. Библиотеки повышения как связующее звено. Используя повышение никогда не легко, но результаты превосходно. Быстрый и легкий изменить. Используя Python для представления пользовательской необходимости мы можем удовлетворить необходимость клиентов, в реальном времени, изменяя код с помощью инжекционной техники. Что-то действительно захватывающее! (хорошо, я - фанат ;)

Мы начали моделировать в Python, но мы внезапно поняли, что это было ясно слишком медленно. Таким образом, мы решили структурировать программу в различных вычислительных слоях для достижения требований к скорости. C++ был лучшим решением.

для использования Python и C++ вместе, мы должны были сохранить строгий контроль над вводом.

3
ответ дан Zen 27 November 2019 в 01:36
поделиться

Действительно, Python часто используется в качестве 'языка поддержки', в то время как необходимо записать некоторые тесты - т.е. Я был вовлечен в проект, которым (базирующийся Python) кодовая база среды тестирования была (?) почти столь же большой как тот из основного продукта. Работы 'агентов' Python над QNX, VxWorks - и большинство проблем, которые мы имеем, должны были портировать правильно поточную обработку и связанные с сетью части нашего кода.

Это могло бы стоить для взгляда проект OpenMoko, большая встроенная разработка в Python сделана там.

Вещи предостеречься: - поддержка дополнительного модуля Python/C могла бы вести себя вполне странно в зависимости от платформы/ОС - большинство встроенных платформ предлагает довольно устаревшие версии Python - наконец Вы узнаете, что существует различие между 'надлежащим' встроенным программным обеспечением, в который каждый числа битов и 'современное' встроенное программное обеспечение, которое выполняется на> центральные процессоры XScale на 412 МГц с большим количеством thatn 128 МБ, и затем Python просто не соответствует аппаратным средствам, для которых требуется быть нацеленными: (

3
ответ дан stic 27 November 2019 в 01:36
поделиться

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

Модульные тесты являются Вашей единственной безопасностью против этих вещей.

4
ответ дан Ali Afshar 27 November 2019 в 01:36
поделиться

В моем предыдущем работодателе я хотел провести некоторое время, играя с созданием встроенных систем в tinypy, который является "минималистской реализацией Python в 64k кода". (Но я никогда не добирался до него, и у меня больше нет времени.)

8
ответ дан Daryl Spitzer 27 November 2019 в 01:36
поделиться

Лично, я работал над частью программного обеспечения, которое работает в устройстве, используемом BusRadio. Это - пример встроенного проекта, основывался Скрученный и Python. Устройство является встроенным процессор XScale, работающий debian-полученный распределение, таким образом, это не могло бы выполнить определенные определения "встроенных", но это является довольно блин маленьким: это вписывается в панель инструментов школьного автобуса.

были некоторые интересные проблемы с использованием Python с крупными библиотеками - интерпретатор может занять долгое время, чтобы запустить и загрузить весь код для Скрученного на действительно медленной микросхеме, и некоторые вещи нуждались в оптимизации особого случая. Однако ни в каком смысле был динамический характер Python проблема. Рассматриваемое программное обеспечение, конечно, не было прекрасно, но по крайней мере когда Скрученное использование, простая программная ошибка "не снизит целое приложение". traceback будет зарегистрирован, и обработка продолжается.

Так, если Вы находитесь во встроенной среде, достаточно неограниченной, что можно использовать Python во-первых, это не отличается, чем разработка "обычных" программ (игры, настольные приложения, веб-приложения). Вам не нужен статический контроль типов там, и Вам не нужен он здесь также.

9
ответ дан Glyph 27 November 2019 в 01:36
поделиться

BTW, посмотрите это сообщение в блоге: " Вывод типа для Python " для интересного обсуждения вывода типа и статического контроля типов, включая ссылки на некоторые сообщения в блоге Guido van Rossum, описывающие добавление дополнительного статического контроля типов к Python.

я соглашаюсь с Bruce Eckel , что каждый - более обеспеченное практикующее "сильное тестирование", чем доверие строгому контролю типов. Я думаю, что это применяется одинаково хорошо к встроенной разработке.

10
ответ дан Daryl Spitzer 27 November 2019 в 01:36
поделиться

Мы используем Python здесь в университете для встраиваемых приложений на основе аппаратной платформы Gumstix. Хотя более способный, чем традиционные встроенные системы, мы находим соединение миниатюрного форм-фактора, низкого (выход) потребляемая мощность и простота в передаче кода между разработкой на настольных машинах и целевыми аппаратными средствами неоценимый.

Python является также большим языком для обучения студентов, и с Gumstix его великое они могут получить код, работающий над системой низкой мощности, а не головной болью и горем, которое идет с использованием специализированных языков, таких как NesC.

3
ответ дан Dan Goldsmith 27 November 2019 в 01:36
поделиться

Я работал в компании, которая использовала Python во встроенном продукте, основанном на Atmel AVR32 и работающем со встроенным Linux. Прошивка изначально была разработана на ПК (из-за отсутствия работающего прототипа оборудования), а затем была перенесена на встроенное оборудование, работающее на кросс-скомпилированном интерпретаторе Python.

Возможность отлаживать и изменять исходный код «вживую» на устройство было большим плюсом во время разработки и сэкономило много времени. Большими недостатками были скорость и использование памяти интерпретатором Python.

После первого выпуска производственной прошивки мы перенесли критические участки кода на C / C ++. Работа по переносу была довольно простой и привела к улучшению на несколько порядков критичного к скорости кода (как и следовало ожидать).

3
ответ дан 27 November 2019 в 01:36
поделиться

Мы используем python в довольно большом количестве встроенных плат с процессорами ARM и 16 МБ ОЗУ (под управлением Linux).

Он работает очень хорошо и действительно легко и быстро создавать собственный код - одна из сильных сторон Python.

Что касается надежности кода, мы стараемся обеспечить 100% тестовое покрытие. Написание тестов с помощью python происходит очень быстро и дает чувство уверенности. Мы используем витую пробную версию для запуска тестов и составления отчетов о покрытии, но есть много других доступных инструментов.

По моему опыту, тесты python + более надежны и намного быстрее пишутся, чем любые другие альтернативы.

Единственным недостатком встроенной работы является то, что иногда python может работать медленно, а иногда использовать много памяти (условно говоря). Это еще не вызывает у нас проблемы с остановкой шоу, а python довольно легко профилировать как по скорости, так и по памяти, если это становится проблемой.

pychecker тоже очень полезен, который улавливает довольно много типичные ошибки.

14
ответ дан 27 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: