Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 60 След.
Перебои в работе форума. Пишите о неисправностях и глюках
 
Господа проверьте сайт, у вас какие-то санузлы на первой странице, похоже вас хакнули :(
Звёздные датчики
 
[quote:5847d99a68="m939"]Правильно ли я понимаю?[/quote:5847d99a68]Наверное примерно где-то так. По крайней мере я бы с этого начал а дальше было б видно.

Общая идея простая: выбираем из имеющихся в кадре звезд некую конфигурацию, по ней вычисляем некую инвариантную метрику, используем ее в качестве ключа для поиска в базе, проверяем найденные варианты. Если совпадение не найдено, берем следующую конфигурацию итд.
При этом во избежание комбинаторного взрыва следует неким образом ограничить круг рассматриваемых конфигураций, причем желательно сделать это "конструктивно", т.е. сразу генерировать по кадру только подходящие конфигурации.
Все остальное - детали которые обычно проясняются по мере разработки.

[quote:5847d99a68="m939"]Для N=3 C(3,12)=220, для N=10 C(10,40)~8.5 10^8. Слишком много сочетаний. Так ли это и что можно сделать?[/quote:5847d99a68]Хрен его знает. 220 вроде как мало, 10^8 наверное много, истина где-то посередине. С этой блин комбинаторикой можно запросто влететь на +/- порядок :) В любом случае понятно что грубой силой перебирать на небе треугольники не прокатит, значит придется хитрить :)
Звёздные датчики
 
[quote:6e963a9342="m939"]Можно ли построить хэш устойчивый к появлению звезд-помех?[/quote:6e963a9342]Скорее всего нет. Придется повторить процесс для нескольких звезд пока мы не найдем совпадение. Каждое совпадение дополнительно проверяем по паре-тройке звезд не вошедших в хеш.
[quote:6e963a9342="m939"]Как быть с погрешностью определения координат (и скалярных произведений и пр.)?[/quote:6e963a9342]Как я писал ранее, для того чтобы сделать из них хеш они квантуются. Если возникает неопределенность в какую сторону округлять (величина оказывается вблизи порога квантования в пределах погрешности) то пробуем в обе стороны по очереди. Или же просто дублируем запись в таблице и размещаем под обоими индексами.
Разумеется в базе будет по нескольку записей на каждый хеш и всех их нужно будет проверить, но во первых это уже не тысячи а единицы-десятки, а во вторых проверять будет достаточно просто поскольку мы уже знаем ориентацию.
[quote:6e963a9342="m939"]Если как в БОКЗ в кадре будет 60 звезд из которых мы выбирает 10-15, то число комбинаций С(15,60) это ОЧЕНЬ много.[/quote:6e963a9342]А зачем их всех перебирать? Может я неясно выразился. При составлении базы для каждой звезды мы кодируем расположение (напр. в виде скалярных произведений) N _ближайших_ соседей (начиная с самого близкого и далее по часовой стрелке). Оптимальное N определяется экспериментально, но где-то между 3 и 10. При поиске просто берем звезду на выбор, находим N ближайших соседей, вычисляем хеш, ищем в базе. Разумеется для поиска соседей совершенно необязательно перебирать все звезды в кадре, есть методы быстрее. Если нашли - проверяем/уточняем по другим звездам, если нет - пробуем другую звезду. Думаю можно позволить себе перепробовать несколько (до пары десятков) "центральных" звезд.

[quote:6e963a9342="m939"]Инвариантным (к повороту/сдвигу) является, например, расстояние между 2-мя звездами. Это простейший инвариант.[/quote:6e963a9342]Угу, всего лишь частный случай скалярного произведения, из которого еще зачем-то взят квадратный корень :)
[quote:6e963a9342="m939"]Для 3-х звезд (треугольника) инвариантами являются углы (например два меньших) или отношения наименьшей и средней сторон треугольника к наибольшей.[/quote:6e963a9342]Как-то сложно все это. Отношение сторон - их сперва посчитать надо а потом еще и поделить. Углы это вообще тригонометрия, загребешся считать :( То ли дело например тройка скалярных произведений (AB,AB), (AC,AC), (AB, AC) - инвариант не хуже других и считается на раз. :)

Но в общем я особо не настаиваю, вы все правильно пишете :)
Звёздные датчики
 
Я занимался поиском созвездий в изображениях, правда к звездам на небе они имели мало отношения :)

Вот например как один из вариантов, первое что приходит в голову:

В идеале изображение звезды на растре будет иметь вид функции точечного рассеяния (PSF - point spread function - как это по-рюсски?). Это позволяет найти координаты звезды с точностью до долей пиксела. В простейшем случае аппроксимируем получившееся пятно гауссианом и берем координаты пимпочки :) Лучше конечно померить и использовать реальную PSF - для этого есть куча методов.

Далее надо каким-то образом закодировать в базе информацию о взаимном расположении звезд, при этом в виде удобном для поиска и инвариантном к повороту/сдвигу. Напр. можно брать N звезд в некоем радиусе от "ключевой" звезды, обходить по часовой стрелке и считать скалярные произведения между ними (скалярное произведение удобно тем что оно инвариантно, кодирует и расстояния и углы и при этом его легко считать). Из полученного набора чисел путем хитрого квантования и комбинирования изготовляем хэш который потом используется для индексации данных в базе.
При поиске выбираем звезду ближе к центру, выбираем нужное кол-во звезд в заданном радиусе, считаем скалярные произведения, хеш и т.д. Если значение лежит близко к порогу квантования, придется проверять варианты с округлением как вверх так и вниз. Если звезд больше чем нужно то опять придется проверить несколько вариантов. После того как круг поиска сузился от >тысяч до <сотен, каждый вариант проверяется подстановкой в лоб. Если не нашли берем другую звезду и т.д.

Примерно так. Прошу строго не судить, это то что пришло в голову за 5 минут. Не исключено что подумав еще 5 минут я обнаружу что "а слона-то я и не приметил" :)

PS: С Новым Годом всех!
Эффект Бифельда-Брауна
 
[quote:a953a7ba28="Llevellyn"]Интересует научное объяснение эффекта Бифельда-Брауна. Гугл выдает только всякие "кефирные" и лженаучные объяснения, решил спросить на этом форуме, поскольку считаю, что здесь концентрация научно грамотных людей высока.[/quote:a953a7ba28]Если читаете по английски то статья в википедии вроде ничего.
http://en.wikipedia.org/wiki/Biefeld-Brown_effect
Если хочется подробнее то есть исследование NASA.
http://gltrs.grc.nasa.gov/reports/2004/CR-2004-213312.pdf
А вообще непонятно из-за чего такой ажиотаж. Ну на одном из электродов коронный разряд, ионизация, ионы разгоняются в поле, передают ­­­импульс при соударениях молекулам воздуха, получается типа ветер. И? Толку как с козла молока :)
На чем пишется софт для КА?
 
[quote:20d15d3a6e="MikeP"]Наверное надо более точно относиться к терминологии в таком разговоре.[/quote:20d15d3a6e]
Все просто. Прошивают прошивки. Прожигают соответственно прожи... проже... ыыы... прошивки :) :)
На чем пишется софт для КА?
 
[quote:1f77083d71="ДалекийГость"]Вы привели две мои цитаты, относящиеся к разным этапам. Непонятно, зачем Вы их пытаетеь смешать.[/quote:1f77083d71]Я извиняюсь, мне просто показалось что эти высказывания относились к одному и тому же контексту и я малость удивился. Типа я сказал что результатом являются формулы, вы сказали что формулы будут часто меняться, я переспросил на орбите чтоли, вы сказали да на орбите. Тут то у меня челюсть и отвисла. Чем моделирование отличается от ЛКИ я в общем догадываюсь.

Очевидно кто-то просто не так друг друга понял, причем этот кто-то очень может быть и я. Еще раз извиняюсь если чем напряг. Засим предлагаю и завершить обмен мнениями, при этом отметив что есть как говорится "много способов ободрать кошку". :) Мне правда было интересно.
На чем пишется софт для КА?
 
[quote:7da7f7d8f1="ДалекийГость"]Получить конкретные формулы с конкретными цифрами можно только после многократного численного моделирования, в процессе которого "формулы и цифры" будут многократно изменяться.[/quote:7da7f7d8f1][quote:7da7f7d8f1]На орбите. По результатам летных испытаний и эксплуатации. Обычное дело.[/quote:7da7f7d8f1]Т.е. ваш математик-программист оптимизирует свой регулятор на живом КА? При этом многократно :shock: меняет числа и формулы :shock: в реальном живом коде? Может он еще и пэтчи сам шлет наверх? А если он его вконец уконтропупит своей оптимизацией? Ну не верю хоть тресни :)

[quote:7da7f7d8f1="ДалекийГость"]Если все используют один язык, то естественно удобнее, когда это язык конечного продукта. При этом очень удобно, когда все работают в одной среде программирования типа Visual C.[/quote:7da7f7d8f1]Ы? Какой блин Visual C на орбите? У вас там какой версии Windows? :shock: :shock: :shock:
Потом C/C++ просто фантастически неудобный для разработки алгоритмов. Скажем просто картинку показать или банальный график начертить надо на уши встать, на питоне это две строчки. На том же питоне (к примеру) с пол-пинка пишется скрипт который все тесты прогоняет, метрики всякие собирает, логи пишет итп. На C++ вы задолбетесь это делать.
А еще у меня сейчас из "языков конечного продукта" один куцый урезанный C на голом железе, другой вообще VHDL :) Какой из них удобнее? :)

[quote:7da7f7d8f1="ДалекийГость"]Меряться обьемами разных программ - бесмысленно.[/quote:7da7f7d8f1]Зато можно меряться человеко-месяцами. И если на "простейшее программирование" (которое при ближайшем рассмотрении включает в себя полный цикл разработки и составляет львиную долю кода) уходят месяцы и годы, то может стоит приоритеты сдвинуть, может не такое уж оно и простейшее, ага?
На чем пишется софт для КА?
 
[quote:4f5fa9def2="ДалекийГость"][quote:4f5fa9def2="ДмитрийК"]Уважаемый Далекий Гость, не очень понятно к чему вы клоните.[/quote:4f5fa9def2]Я "клоню" к следующему. Использование одного человека, программиста-математика, для создания ПО (разработка алгоритма и его программирование) эффективнее и надежнее, чем использование двух человек, математика и программиста-кодера. [/quote:4f5fa9def2]
Ну начать с того что ПО о котором идет речь в одиночку не пишется в принципе, обязательно есть команда. И в отличии от "коммерческого" софта, народ проводит бОльшую часть времени проверяя и перепроверяя работу друг друга, поэтому все в курсе кто чем занимается и в принципе все взаимозаменяемы в любой момент (а код получается на удивление лишенный индивидуальности). При наличии соответствующего документа с формулами, кроме этих непосредственно формул никакой связи между этапом разработки алгоритма и его кодированием нет вообще. И кому из команды поручить тот или иной этап - совершенно пофиг.        

[quote:4f5fa9def2="ДалекийГость"][quote:4f5fa9def2="ДмитрийК"]На мой взгляд результатом этого этапа работы является набор конкретных формул с конкретными цифрами в виде пригодном для программирования[/quote:4f5fa9def2]Получить конкретные формулы с конкретными цифрами можно только после многократного численного моделирования, в процессе которого "формулы и цифры" будут многократно изменяться. Поэтому современый математик-инженер обязан уметь программировать.[/quote:4f5fa9def2]
Эээ постойте, где это будут меняться, на орбите что ли? Я говорю о формулах которые пойдут в продукт. К этому моменту все моделирование должно быть уже проделано. И естественно математик должен уметь программировать, с этим никто не спорит. Никто не предлагает рядом с каждым гением - математиком сажать обезьянку - кодера чтобы воплощать его великие идеи в код. Но, во-первых он может использовать язык/инструмент который ему наиболее удобен (а это как правило НЕ язык конечного продукта), во вторых не заботиться об оптимизации кода (оптимизировать алгоритм) ну а в третьих ему не надо забивать себе голову контекстом - как и где сей алгоритм будет существовать, откуда и куда он будет слать данные и в каком формате, как отрабатываются ошибки и т.д. Ну а взамен появляется этап перевода "исследовательского" кода в "продуктовый". Как правило приходится переписывать начисто :)

[quote:4f5fa9def2="ДалекийГость"][quote:4f5fa9def2="ДмитрийК"]превращение этих формул в рабочий код - отдельная задача, по-своему сложная и ответственная и с предыдущей имеющая очень мало общего.[/quote:4f5fa9def2] Это миф (для программирования на языках высокого уровня), который придумали и распространяют программисты-кодеры, чтобы не остаться без работы.[/quote:4f5fa9def2]Да откуда же вы их взяли, этих мифических кодеров, которые ни математики ни логики не знают, умеют только кнопки нажимать? Да их на пушечный выстрел к такому проекту никто не подпустит. Кстати, студентов-стажеров у нас берут как-раз на инженеров-исследователей, пусть себе сидят, графики чертят в матлабе, авось начертят что-нибудь умное, а базу кода (продуктового) им никто трогать не даст, себе дороже.


[quote:4f5fa9def2="ДалекийГость"][quote:4f5fa9def2="ДмитрийК"]Вы же похоже считаете что настоящим результатом является только код который идет непосредственно в продукт, а формулы расчета - это так, несущественный промежуточный этап, при этом процесс превращения сих формул в код для целевого железа - не стоит выеденного яйца, так?[/quote:4f5fa9def2]Нет, не так. Програмисты-математики создают конечный продукт - ПО. В этом процессе есть разные этапы. Непосредственно программирование - один из самых простейших.[/quote:4f5fa9def2] Да, только почему-то в этом конечном продукте - ПО - гениальный регулятор занимает 1% от силы а остальные 99% - это "простейшее программирование", типа там ОС реального времени, файловая система, каналы связи, телеметрия, обнаружение и обработка ошибок, "безопасный режим" и прочая подобная фигня. И на все это талмудец документации сантиметров в 5, который надо прочесть от корки до корки а избранные места выучить наизусть прежде чем на кнопки нажимать. Так нафига нашему гению-математику мозги канифолить себе и другим ради 1%, пусть формулы напишет, уж там вколотим где и как надо.

[quote:4f5fa9def2="ДалекийГость"][quote:4f5fa9def2="ДмитрийК"]Все равно эти формулы должны быть в наличии[/quote:4f5fa9def2]Если должны быть (для себя, заказчика, начальника, отчетности, научных журналов) - значит будут. Программист-кодер для этого совершенно не нужен.[/quote:4f5fa9def2]А будут формулы - не нужен математик :)

[quote:4f5fa9def2="ДалекийГость"][quote:4f5fa9def2="ДмитрийК"]А как же быть человеку которому придется потом этот код править? Каждый раз повторять заново все шаги вывода чтобы понять откуда взялся тот или иной магический коэффициент?[/quote:4f5fa9def2]Для таких описаниий ПО, программист-кодер тоже не нужен. Он и не может ничего написать, для него все коеффициенты - "магические".[/quote:4f5fa9def2]
Да, только есть например правило: Никаких чисел в коде кроме 0 и 1. Все прочие должны быть определены в .h файле и прокомментированы, что означают и откуда взялись. Так что извольте либо трактат в комментариях либо ссылку на документ.
На чем пишется софт для КА?
 
Уважаемый Далекий Гость, не очень понятно к чему вы клоните.
Я совершенно согласен, что разработка напр. оптимальных регуляторов - задача нетривиальная. Вопрос что является результатом такой активности. На мой взгляд результатом этого этапа работы является набор конкретных формул с конкретными цифрами в виде пригодном для программирования, а превращение этих формул в рабочий код - отдельная задача, по-своему сложная и ответственная и с предыдущей имеющая очень мало общего. Вы же похоже считаете что настоящим результатом является только код который идет непосредственно в продукт, а формулы расчета - это так, несущественный промежуточный этап, при этом процесс превращения сих формул в код для целевого железа - не стоит выеденного яйца, так? Это мне как-то даже  сложно представить. Все равно эти формулы должны быть в наличии перед тем как начинать писать на Си, на клочке бумажки ли, в "математике", в матлабе, на бейсике, да хоть в голове - неважно.   А как же быть человеку которому придется потом этот код править? Каждый раз повторять заново все шаги вывода чтобы понять откуда взялся тот или иной магический коэффициент?

А знаете на что уходит больше всего времени? На "code review", а именно сидят 5 человек и отчаянно борются со сном а 6-ой монотонно вещает: в строчках 789-792 мы вычисляем значение alpha2 согласно формуле пп. 13.24.1.5 детальной спецификации расчета... В этот момент раздается шорох - каждый роется в 5-сантиметровой стопке бумаги, достает нужный документ, тупо смотрит на формулу, потом в код. И т.д. до потери пульса.Так что вашему супер-дупер математику-программисту на 3-ей строчке бы сказали -"А это здесь у вас выражение X^2/2 откуда взялось, из какого параграфа это следует? Непорядок!" И привет - пошел писать "Дополнение Е5 к спецификации АБВГД о методике расчета...". А потом опять собирать комиссию чтобы его по параграфам разжевать и утвердить.  Потому как  каждая строчка кода и каждый параграф документа должен быть обсужден и принят комиссией. Подается это под соусом гарантии качества, на самом деле служит целью прикрытия коллективной #опы. Об эффективности пр-ва и речи не идет. Разумеется когда срок сдачи начинает приближаться а еще ничего ни хрена не сделано, то народ начинает на бюрократию класть и писать код как все нормальные люди, и только поэтому что-то вообще получается сдать, но это уже исключение а не правило :) Я не придумываю, я сам в подобном участвовал (пока не сбежал). Компания кстати весьма известная в области войны и аэро-спейс.
[ Закрыто] Парадокс. СТО не тянет трех близнецов
 
[quote:59f9828a0e="korund"][quote:59f9828a0e="ДмитрийК"]
Двойка. Сотрите за собой с доски этот бред. Задание к следующему уроку: объяснить принцип действия изображенного на рисунке прибора "ультразвуковой анемометр".  Разрешается использовать учебник физики и интернет.
[/quote:59f9828a0e]
Двойка - это у вас .......
ТО не вписывается не в какие рамки, не физические не математические, не логические. И защищать ее может либо,  человек с ограничеными интелектуальными возможностями, либо матерый провакатор.....[/quote:59f9828a0e]Напрасно вы так подставляетсь :) В отличие от невнятного абстрактного бреда который несете вы, Павел73 понес бред конкретный и внятный :) Он описал конкретный физический эксперимент, при этом ожидаемый результат привел с точностью до наоборот. Однако ж этот эксперимент, в отличие от других здесь обсуждаемых, очень простой, вполне под силу учащимся старших классов средней школы, был проделан несчетное кол-во раз, и все время с одним и тем же положительным результатом. Более того, принцип работы упомянутого мною прибора - анемометра - основан на измерении скорости ветра (среды) путем измерения сдвига фаз на разных направлениях, того самого наличие которого Павел73 с такой категоричностью отрицает.

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

Тут все однозначно, сдвиг фаз он или есть или его нет, третьего не дано. Поэтому одно из двух: либо отрекайтесь от бреда и признавайте наличие сдвига фаз (что сразу придает особое значение опыту Майкельсона-Морли), либо объясняйте как по-вашему работает ультразвуковой анемометр. Попытка ухода от ответа будет засчитана как слив.
[ Закрыто] Парадокс. СТО не тянет трех близнецов
 
[quote:84b41fe384="Павел73"][quote:84b41fe384="KVV"]Опыт Майкельсона-Морли :)[/quote:84b41fe384]Неправильно поставлен. Невозможно определить скорость движения сквозь неподвижную среду, излучая волны, распространяющиеся в этой же среде и двигаясь с этой же скоростью. Вот станьте на движущейся железнодорожной платформе, положите на её пол звуковой излучатель (излучающий звук, скажем с частотой 1 кГц) и поместите своё ухо сначала над ним (т. е. Вы будете слышать звук, распространяющийся перпендикулярно направлению движения платформы), а затем лягте на пол впереди него (тогда Вы будете слышать звук, распространяющийся в ту же сторону, куда движется платформа). Внимание, вопрос: будет ли хоть какой-то сдвиг фаз между этими звуками, если расстояние до Вашего уха одинаковое? Нет, не будет. [/quote:84b41fe384]
Двойка. Сотрите за собой с доски этот бред. Задание к следующему уроку: объяснить принцип действия изображенного на рисунке прибора "ультразвуковой анемометр".  Разрешается использовать учебник физики и интернет.
[img]http://andys.ru/assets/images/Meteo/s1404z.jpg[/img]
На чем пишется софт для КА?
 
[quote:caef9ae482="ДалекийГость"][quote:caef9ae482="ДмитрийК"]И это другое - ограничения по памяти и по времени, форматы представления данных, используемые библиотеки, обработка ошибок и переполнений, синхронизация[/quote:caef9ae482]Все это математик обязан знать и учитывать на этапе разработки алгоритма, независимо от того, кто его будет программировать. Но кроме этого, математик должен знать характерики используемых приборов; разнообразные ограничения, относящиеся к КА; особенности других алгоритмов, с которыми взаимодействует его алгоритм; и т.д. и т.п. Плюс, естественно, много математики. И физика может потребоваться.[/quote:caef9ae482]Ну не обязан один и тот же человек одинакого хорошо разбираться в фильтрах Калмана или там алгебре кватернионов и одновременно в прогаммировании контроллера MIL-STD-1153B и примитивах синхронизации в RTEMS или QNX. Может, но не обязан. И тем более нельзя мешать это в одну кучу.

[quote:caef9ae482="ДалекийГость"][quote:caef9ae482="ДмитрийК"]Для этого между двумя этапами должен быть документ - разжеванный алгоритм на псевдокоде (бейсике, питоне итд). Наличие сего документа сильно упрощает жизнь и тому и другому.[/quote:caef9ae482]Если есть лишние деньги и время, то так можно делать, чтобы упростить жизнь программисту. (Дать ему легкую работу вместо того, чтобы уволить за ненадобностью.) [/quote:caef9ae482]Странные у вас понятия. А о том что продукт надо сопровождать вы в курсе? А то что люди увольняются а на их место приходят другие?

Угу, вот сейчас мы передаем заказчику продукт (под ёлочку :) ) вместе со всей КД, отдали все что было, так они сцу^H^H^H  специально требуют именно такой документ. В дизайне написано "затем находим вершину параболы проходящей через данные 3 точки", ясен перец любой дурак^W программист сможет это ур-е написать и решить. Нет, нужны именно формулы по которым непосредственно производятся вычисления. И я их понимаю. Если б на меня внезапно свалилось столько чужого кода, подобный документ очень бы пригодился.
На чем пишется софт для КА?
 
[quote:01c74f1e57="ДалекийГость"]Железо развивается так, что профессиональное владение им и софтом для уже давно становится не актуальным (для прикладных программ). Ну будет код в три раза объемней и/или медленней. Ну и ладно, никому не мешает. Перешли же с ассемблера на языки высокого уровня.[/quote:01c74f1e57]
Я эту мантру слышу уже много лет. Во многих случаях так и есть. Но не во всех.
Наверное мне повезло, я работаю в уникальном месте, вот только мы 2 месяца потратили чтобы выжать лишние 10-15% (и оно того стоило). И то что происходит у процессора на шине во время критического цикла я наблюдал с большим интересом. При этом мы не луддиты, все написано на нормальном Ц, на ассемблере только отдельные команды которые компилятор не знает, и те аккуратно обернутые в inline-функции. Основная оптимизация как раз происходит на этапе перевода алгоритма в код. Разумеется следующая версия должна работать быстрее и на более дешевом железе :)
А в другом проекте мне пришлось по-бырому изучить/вспомнить SSE2/3/4 - тоже о чем-то говорит.

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

[quote:01c74f1e57="ДалекийГость"]математик будет думать, что ошибку сделал программист и не будет стараться искать свою ошибку. А программист будет думать, что ошибку сделал математик.[/quote:01c74f1e57]
Кроме "кто виноват" еще важно "почему" и "на каком этапе". Для этого между двумя этапами должен быть документ -  разжеванный алгоритм на псевдокоде (бейсике, питоне итд). Наличие сего документа сильно упрощает жизнь и тому и другому.
На чем пишется софт для КА?
 
[quote:bf542ab5c0="Дем"][quote:bf542ab5c0="ДмитрийК"]Если в готовом продукте есть функции или фрагменты кода которые в твоем случае не вызываются - пофиг, либо придумывай (утверждай, согласовывай) для них тест-план, либо выкидывай[/quote:bf542ab5c0] Это да. Но ведь оптимизирующие компиляторы давно придуманы - если на данную функцию нет ссылки, она в продукт не попадёт.[/quote:bf542ab5c0]
Я специально упомянул о фрагментах кода. Например if который никогда не срабатывает или неиспользуемый case в операторе switch. Важно что есть исходный код не покрытый тестами. А значит неизвестно что он может натворить если на него попадет управление. А что оно туда никак не попадет - это еще доказать надо, теорему Тьюринга никто не отменял.
Пример из жизни, называется как правильно подкладывать грабли: Некий протокол обмена с устройством на базе ASCII, половина чисел в 10ой системе, половина в 16ой с префиксом 0x. Лень разбираться где что и как, везде использую библиотечную функцию strtol(), все работает. Но вот только эта сцу^H^H^H функция еще и 8ую систему понимает. Т.е. 0100 интерпретируется как 64. Но в документации на протокол это не отражено! Там вообще синтаксис для целых чисел дан весьма расплывчато, подразумевается что все и так всё понимают. А править и утверждать ради этого новую версию (с переводом на японский и обратно) - оно того не стоит, не ракету делаем в конце концов :)
На чем пишется софт для КА?
 
[quote:fcda766ff2="Дем"][quote:fcda766ff2="Werno"] Софт для КА включает в себя все системное программирование которое можно представить. Это и драйвера для устройств, и матемитика, служебные задачи обмена информацией между устройствами КА. [/quote:fcda766ff2] так основной и логично возникающий вопрос тут - а не является ли это во многом изобретением велосипеда?
Нельзя ли просто взять готовые протоколы обмена и драйвера, благо их наработано много?[/quote:fcda766ff2]
Основную часть времени занимает не кодирование, а тестирование и всякого рода бюрократия до и после. Использование чужого готового кода эту работу увы не уменьшает а наоборот увеличивает. Например одно из требований - 100% покрытие кода тестами. Если в готовом продукте есть функции или фрагменты кода которые в твоем случае не вызываются - пофиг, либо придумывай (утверждай, согласовывай) для них тест-план, либо выкидывай, просто так оставить их нельзя (и в этом есть свой резон - первый Ариан-5 напр). Фактически получается что "ты в ответе за того кого приручил". А оно тебе это надо?
На чем пишется софт для КА?
 
[quote:7a6d3cb184="ДалекийГость"]Разработка и программирование, например, оптимальных регуляторов - это работа для программиста-математика?

По моему мнению - конечно,  да. Любой математик, который умеет создавать такие алгоритмы, сумеет их запрограммировать на языке высокого уровня. [/quote:7a6d3cb184]"Сьесть то он съест да кто ж ему дасть" :) Вопрос не в том может ли он выразить сей алгоритм на языке (ясен перец что может), а в том сможет ли он это сделать быстрее и лучше чем профессионал, который хорошо владеет контекстом (железо и софт) в котором сей алгоритм будет вариться.

Конечно разрабатывать/отлаживать алгоритм и код может один и тот же человек, но это два разных вида деятельности, и их лучше не смешивать. И вообще между этими этапами должен быть втиснут документ. Я делал и то и другое попеременно, бывало так что "шляпу менять" приходилось по нескольку раз, напр: Кодируем/оптимизируем алгоритм, пытаемся утоптать некую структуру в 128 бит (так нужно). Нэлэзэт. Меняем шляпу, исследуем а сколько значащих бит нам реально нужно до и после запятой. Строим мат. модель, ставим эксперименты, чертим в экселе графики. Меняем шляпу обратно, продолжаем кодировать.

Ситуация примерно такая же как с тестированием софта - любой программист обязан это уметь но лучше когда этим занимается специалист.

А на вопрос темы  - не знаю как для КА но в смежных сферах софт в основном пишется на ворде, экселе итп. :) Потому как 60%-80% времени и сил уходит на всевозможную документацию. Особенно когда речь идет о какой-нибудь мелкой встроенной штучке, простой но при этом очень важной типа чип-карты например. Там код вообще теряется погребенный под пластами протоколов, форматов, спецификаций, тест-планов и т.д.

А вообще пишут на банальном C только с кучей драконовских самоограничений. Есть несколько стандартов типа "MISRA C", "Japanese Automotive C" итп.
http://en.wikipedia.org/wiki/MISRA_C
Цвет неба на планетах и спутниках
 
А у нас сегодня Марс :) Выглянул с утра в окно и обалдел.
Фотографии сделаны на рассвете, они чуть более красно-желтые а сейчас порозовело и стало просто 1:1 как на Марсе.
У меня монитор стоит на фоне окна, специально развернул на нем фотку марсианского неба - цвет не отличить вообще.

[url=http://www.smh.com.au/photogallery/environment/dust-turns-sydney-sky-red/20090923-g0tw.html][b][u:5cfd265ea1]Dust turns Sydney sky red[/u:5cfd265ea1][/b][/url]
[img]http://images.smh.com.au/2009/09/23/748103/kate4-600x400.jpg[/img]
[img]http://images.smh.com.au/2009/09/23/748152/Freshwater%20Headland_small_-600x400.jpg[/img]
На чем пишется софт для КА?
 
[quote:c193b65160="hudvin"]Но справедливо для обычных процов и обычного софта. А как в космонавтике - не знаю, поэтому и спрашиваю.[/quote:c193b65160]А что летает-то в основном? RISCи всякие по большей части, MIPSы и SPARCи вроде как если я не ошибаюсь? А для них на ассемблере писать - дело неблагодарное.
На чем пишется софт для КА?
 
[quote:23d675ce1c="Инженер проекта"]С оптимизацией команд согласен, но я ещё имел ввиду оптимизацию алгоритма, а здесь компилятор не поможет :)[/quote:23d675ce1c]Зато его отсутствие может сильно помешать. На С человек может посмотреть на функцию и сказать "а дай-ка я здесь попробую хеш-таблицу вместо линейного списка". На ассемблере человек потратит полдня на то чтобы сэкономить 4 байта кода и 3 цикла, код будет красивый и изящный, но просто вот все бросить и переписать чтобы "попробовать" хеш-таблицу ему и в голову не придет. По себе знаю :)
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 60 След.
Журнал Новости Форум Фото Статьи Книги