LINUX.ORG.RU
ФорумTalks

Для тех, кто обожает экстрим

 , , , ,


0

2

Ребяты, пилят опенсорсный и кроссплатформенный набор автопилота.

Тот неловкий момент когда принцип камаза как никогда применим к ключевым разработчикам :)

★★★★★

Последнее исправление: pon4ik (всего исправлений: 2)

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

alexru ★★★★
()

Скоро будет полностью отечественная жигули с полностью российским ПО автопилота?

Promusik ★★★★★
()

На питоне? Совсем упоролись и охренели. Отберите у эти мудаков средства повышенной опасности, пока они никого не убили.

WitcherGeralt ★★
()
Ответ на: комментарий от Promusik

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

А вдруг у теслы тоже на питоне или js? Весь мир юзает, а ты тут плюёшься. А на современных космических аппаратах какой язык? Может там вообще всё на Visual Basic домохозяйками писано... Это я к тому что: во-первых важен результат, а во-вторых нужно знать на чём написаны аналогичные проекты. Быть может ты будешь удивлён.
P.S. Сам я такой информацией не обладаю, я диванный аналитик и не хотел оскорбить твои чувства.

Promusik ★★★★★
()
Ответ на: комментарий от Promusik

Потому что если Тэсла использует, то это хорошо и правильно и аргументов выкатят вагон, а если остальные, то «ой-ой-ой, фсёпрапала!!!»

Deleted
()
Ответ на: комментарий от Promusik

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

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

Та же обработка различных бизнес правил уровня сконвертировать одни данные в другие или склонировать сообщение на том же js может занимать наносекунды если руки не крюки.

pon4ik ★★★★★
() автор топика
Последнее исправление: pon4ik (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

Сразу видно, человека который разбирается :)

Этот ваш тормозной vm уже давно с jit'ом(в js точно, но думаю и в python что-то есть, раз его выбрали) и после прогрева может давать неплохое распределение, с вылетами меньше десятка микросекунд на среднестатистических зионах.

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от pon4ik

*сотни наносекунд разумеется

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от pon4ik

Для начала, ни о каком жестком реалтайме на языках с GC и речи быть не может, это очевидный факт. Во-вторых, тормознутость — это лишь один из факторов.

Сразу видно, человека который разбирается

Ещё лучше видно того, кто вообще не одупляет. Ты упустил главную претензию — динамическая типизация. Тебе объяснить?

WitcherGeralt ★★
()
Ответ на: комментарий от pon4ik

Насчёт питона ты не прав. Он и правда довольно тормозной, производительность никогда не была его сильной стороной. Если говорить о дефолтной реализации - cpython'е конечно же. В нём не то что jit, даже просто компиляция в байткод почти без оптимизаций выполняется. Хвостовая рекурсия? не не слышали.

Мимо питонист.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от WitcherGeralt

управления системой торможения

на изначально скриптовых языках

скриптовую задачу на скриптовых языках? ни за что

eternal_sorrow ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Ну если ты настолько не умный что будешь писать на самой ноде а не libv8 или libmosj в своё приложение встраивать, то конечно поимеешь проблем. Говорят, что в принципе тот же luajit покуривает в сторонке на данный момент.

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

Да будут вылеты. Нет их будет мало(от 10% до 1%, смотря что за движок и сколько пердолиться) и они будут максимум на порядок, что всё равно будет превышать на десятки порядков реакцию человека. Да и в нативном решении всё равно тоже будут вылеты.

Динамическая типизация - палка о двух концах. Такое решение зато можно будет конфигурировать без пересборки. Для poc в режиме отладки и для rad, что бы поменьше миньетизировать на рынке для мелкого ОО проекта вполне себе ок, кмк. Насколько я видел, в решениях где используют скриптоту в таком сценарии обычно это либо мэппинг либо крайне простые но изменчивые бизнес правила.

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от WitcherGeralt

Магических чисел и функций на каждую железку и отдельный её узел может быть много разных например? Разный состав узлов может быть, разные принципы управления при разных пороговых значениях.

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

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от pon4ik

Всё то же самое, что делается для нативного кода в общем то

И зачем тогда GC?

Да и в нативном решении всё равно тоже будут вылеты

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

Для poc в режиме отладки и для rad

Тут без вопросов, главное чтобы это потом на рынке в том же виде не оказалось. Я очень даже за херак-херак прототипирование.

WitcherGeralt ★★
()

На сишке? А они экстремалы.

RazrFalcon ★★★★★
()
Ответ на: комментарий от WitcherGeralt

А что ты понимаешь под «управлением системой торможения». Я понимаю некий алгоритм, который описывает последовательность работы определённых частей системы. Для этой задачи скриптовый язык вполне подходит, ведь непосредственного выполнения кода в ней немного, основное время занимают собственно процессы, которыми мы управляем.

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)
Ответ на: комментарий от pon4ik

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

Ты уж определись - ты пишешь на скриптоте рилтайм или встраиваешь скриптоту.

tailgunner ★★★★★
()
Ответ на: комментарий от WitcherGeralt

это как сервис работать должно, а сервис по определению не скрипт.

Приведи используемые тобой определения скрипта и сервиса, а то сервисы на Python смотрят на тебя с недоумением.

tailgunner ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Да, лучше если твой автопилот сегфолтнется. И причем тут типизация? Очевидно, что все должно быть покрыто тестами. В том же питоне есть type hints и типизация строгая, перепутать тип не так просто, как кажется.

И я не сторонник писать автопилоты на питоне, но аргументы какие-то не те.

жестком реалтайме на языках с GC и речи быть не может,

То-то куча торговых ботов на всяких биржах с минимальным временем отклика написаны на яве. gc, например, можно отключить и дергать его в те моменты, когда это сделать гарантированно можно(или вообще не дергать).

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

Да, лучше если твой автопилот сегфолтнется.

Я на 146% уверен, что там многократное резервирование.

tailgunner ★★★★★
()

Загнется. Вот еслиб на PHP + C#

demrnd
()
Ответ на: комментарий от tailgunner

Пытался найти чёткое определение скрипта, но не нашел ничего лучше того, что есть в википедии:

scripts — programs written for a special run-time environment that automate the execution of tasks[1] that could alternatively be executed one-by-one by a human operator.

В моём понимании это некий конечный набор действий. Само слово «сценарий» это подразумевает.

WitcherGeralt ★★
()
Ответ на: комментарий от eternal_sorrow

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

scripts — programs written for a special run-time environment that automate the execution of tasks[1] that could alternatively be executed one-by-one by a human operator.

И что мешает скрипту (в этом смысле) исполняться в виде сервиса? Ровно ничего.

tailgunner ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Это не мешает скрипту содержать event loop (который сам даже не обязательно должен быть написан на самом скриптовом языке) и асинхронно реагировать на события от внешних по отношению к скрипту источников.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

И часто у тебя встречается в коде хвостовая рекурсия, которую можно оптимизировать? Что мешает циклом написать?

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

В том же питоне есть type hints

Вон хвостострела спроси, он лучше знает. Там говно, а не статический анализ получается.

То-то куча торговых ботов на всяких биржах с минимальным временем отклика написаны на яве

Не знаю как это комментировать. Ну на писаны и написаны. Ты не контролируешь вм в любом случае, и не понятно зачем юзать язык с gc, если ты в итоге собираешься его обходить.

WitcherGeralt ★★
()
Ответ на: комментарий от pawnhearts

Так потому и не встречается, что нет оптимизации. Если бы была, я бы лично использовал эту возможность. Это иногда и семантически правильнее и лаконичнее.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Если он не конечен, то я тогда особого смысла в определении не вижу. Всё, что высокоуровневое и интерпретируемое, — скрипт, получается?

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от pawnhearts

Что мешает циклом написать?

Ничего, но с рекурсией зачастую гораздо читабельней и проще/короче выходит.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

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

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

Ну хорошо, что тогда вообще отличает «скрипт» от того, что «не скрипт»?

Четкой границы нет. Обычно скриптом называют программу на интерпретируемом языке, предназначенную для однократного исполнения, но ровно ничто не мешает программе на интерпретируемом языке быть «долгоживущей» (сервером чего-нибудь). С другой стороны, например, в Rust есть такая штука, как build script - он компилируется в машкод.

tailgunner ★★★★★
()
Ответ на: комментарий от ox55ff

Сейчас тебе расскажут, что есть Cython, PyPy, ctypes, свиг, буст, гил можно выпилить, а gc отключить.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Нет никакой четкой границы. От того что у тебя в скрипте на баше бесконечный цикл со слипом он станет «сервисом»?

Вон хвостострела спроси, он лучше знает.

АФАИК, он давно на питоне не пишет. А когда писал таких средств там еще не было.

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

От того что у тебя в скрипте на баше бесконечный цикл со слипом он станет «сервисом»?

Однозначно. А если он подразумевает ещё и какую-то интерактивность, то и подавно.

У меня есть гуёвая (с помощью zenity) программ на баше, это тоже скрипт только потому, что на баше?

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Так конечность и есть чёткая граница. Скрипт и сервис не зря же два разных слова.

Ну, окей, ты используешь такое определение. А что такое «скриптовый язык»? Конечные программы можно писать на любом языке -> любой язык является скриптовым.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.