это не «у нас». это просто тест в интернете.
дык, за чем дело стало? покажи класс. накатай мне парсер регекспов на пистоне для гигабайтных тектовых файлов. только так, чтобы он не повалил сервер и закончил работу до того, как я выйду на пенсию.
Embedded у нас в стране хреново продаётся, по очевидным причинам. Поэтому, embedded у меня так - возможные халтуры, если интересно будет и денег нормально предложат. Хотя раньше бывало что и больше 200k$/год получал, если пересчитать потраченное время и полученное бабло на $/год. А потом совсем перестали у нас в стране хоть что-то своё пытаться сделать. Народ либо поуезжал вместе с бизнесом, либо позакрывался.
Я уже представляю себе компилятор, который работает на таких железках, и как суровые бородатые чуваки его отлаживают.
Да обычные чуваки. SDCC вполне адекватные люди пишут.
Нет, встраеваемые системы - это всё таки достаточно узкий класс задач, осилить которые во многих случаях способна даже обезьяна.
Это вообще не класс задач. Это задача засунуть произвольный алгоритм в ограниченные возможности железа.
И, что удивительно, выбор более высокоуровневых языков вместо C вполне может предотвратить ситуации с переполнением стэка или выходом за границы массива, от которых код на C так страдает.
Код на С может страдать только от криворукости писателя. Жалкие попытки предовратить дебилизм программиста-идиота выливаются только в безмерные тормоза, пожирание памяти и общее резкое усложнение системы.
Я не понимаю как из первого ты выводишь второе.
Человеки разные. Строение и нюансы работы всех огранов человека, в том числе и мозга определяются генетикой. Народ - группа человеков с близкой генетикой. Разные народы могут иметь очень значительные генетические отличия, соответственно и весьма разную работу мозгов в том числе. Вот некоторые народы вообще не умеют в абстрактное мышление, например, так что теперь, чтоб расизьму не было, этот факт нужно тщательно скрывать, что-ли?
Крайне денежные проекты, связанные с железом, очень часто относятся к военной области
почему это? военные проекты практически не бывают массовыми. а всякое фуфло для кофемашин/стиралок/плееров приносит в сумме больше дохода, чем выпуск танков и ракет. потому что это фуфло продаётся сотнями миллионов штук. то, что воендосские вакансии висят без ответов, означает лишь простой факт, что программисты воендосов не любят: зачем программисту гемор с людьми в фуражках, графиком работы с 8 до 5, военная диктатура на работе и запрет выезда за границу без видимых причин? программист - существо свободолюбивое, лучше работает дома, в тапочках, когда ему на мозг никто не капает. поэтому военные вакансии что у нас, что за границей, не особо-то пользуются популярностью.
Согласен. Но прогресс идет вперед, и я думаю скоро и в микроконтроллерах появится что-то высокоуровневое. Не питон, скорее всего, а что-то попроще. Я вот думаю лиспопрдобие какое нибудь прикрутить можно.
Ты, по-моему, далек от разработки электроники, не смотря на то, что не купил диплом радиотехника.
и бесконечно счастлив тому, что далек. статистика по моим однокурсникам - либо ПЛИСы (в том числе ЦОС) с верилогами и vhdl всякими, либо паяльник в задн^W^W^W мелкие партии говнодевайсов с избыточными мощностями и таки сишкой (почему? да у меня тут мощности с запасом, нахер мне асмом париться). макакой в ынтырпрайзе во-первых интереснее, во-вторых денежнее.
скоро и в микроконтроллерах появится что-то высокоуровневое
Тут нужно провести четкую грань между SoC типа RPi и MCU типа STM8 и не путать одно с другим. Всегда будут проекты, в которых нужно будет по SPI что-то куда-то передавать с очень высокой частотой (например, на трансивер), поэтому всякие Raspbian там использоваться не будут, а будет osless, и софт будет продолжать писаться на C99.
Хотя раньше бывало что и больше 200k$/год получал, если пересчитать потраченное время и полученное бабло на $/год.
А если посмотреть с определённого ракурса, то кажется, что мой член имеет длину полтора метра.
SDCC вполне адекватные люди пишут.
SDCC работает на PIC с 512 байтами памяти?
Это вообще не класс задач. Это задача засунуть произвольный алгоритм в ограниченные возможности железа.
Нет, не произвольный. Очень многие алгоритмы в твой embedded тупо не влезут из-за требований по объёмам памяти и вычислительной мощности.
Код на С может страдать только от криворукости писателя.
Как и код на любом другом языке, внезапно. Другой вопрос в том, что у программистов на C очень часто просто чудовищных размеров эго, выливающееся в отрицание собственной жопорукости. После чего автомобили при нажатии тормоза внезапно начинают ускоряться.
TL;DR в случае с C довольно сложно доказать корректность написанного кода без привлечения сторонних инструментов.
Жалкие попытки предовратить дебилизм программиста-идиота выливаются только в безмерные тормоза, пожирание памяти и общее резкое усложнение системы.
Удивительно, но попытки совсем не жалкие и вполне работают. Начиная от использования Java (JavaCard сейчас практически в каждой смарткарте и много где ещё) или других языков и заканчивая DSL на хаскелле, камле или лишпе, из которых генерируется корректный код на C или VHDL.
Вот некоторые народы вообще не умеют в абстрактное мышление
мы одно время работали с циклонами. на сях там есть реализации микроконтроллеров, но у нас на работе всё писали просто на AHDL. я дома поковыряла палочкой NIOS, с С компилятором, но он мне не понравился: какой-то сырой и слишком жручий до ресурсов показался. для альтеры мне лично AHDL больше всего нравился, хоть он и проприетарный. верилог - не моё, уж лучше VHDL. возможно, дело привычки. а вот для микроконтроллеров на С нормально вполне.
На каких языках вообще можно математически доказать корректность кода, кроме функциональных?
Ни на каких, потому что инструменты для этого написаны в основном на функциональных языках. Другой вопрос в том, что использовать эти инструменты можно даже для C, но это требует дополнительных усилий. Для примера можешь посмотреть на seL4.
ну, я читала про реализацию жаба-машины на железе. американцы это любят в военной технике юзать. честно говоря, у них тоже косяки случаются, и в космической отрасли, и в военке. но они жабу зело любят в таких вещах, считая её «надёжной». поэтому есть вероятность, что в массовой продукции жаба там появится быстрее пистонов.
он довольно урезанный, на самом деле, и требует яростной обработки напильником для реального применения, но формально формальная верификация в жабе есть)
На каких языках вообще можно математически доказать корректность кода, кроме функциональных?
да и на сях пишут, но доказывают как-то вручную. в первую очередь, алгоритмы, как я понимаю. у нас в своё время в универе спецкурс преподавала тётенька, которая систему отслеживания целей для С-300 писала. это была её кандидатская, вроде. с доказательством, естессна. у неё в кабинете ещё висело фото Миг-29 с подписью «С благодарностью от разработчиков». так что там были не только системы наведения, судя по всему. например, у нас в городе есть компания, которая системы безопасности для ЖД делает и ещё какие-то силовые установки для общественного транспорта вроде трамваев-троллейбусов. тоже софт на плюсах и С, и доказательства - отдельно. они аж в Питер едут «доказывать» свой софт, в какой-то НИИ, как диссер. ходила к ним на собеседование однажды. устаревшее ядро, самодельные дрова для устрашающего вида железяк и страшный гемор с этими доказательствами. в общем, для программиста тоска смертная. я туда работать не пошла, хотя денег они предлагали немало. общая обстановка там была какая-то военная, с явкой на работу к 8 часам.
В девайсах в принципе нет никакой периферии которая бы хоть как-то нуждалась именно в double. float более чем достаточно. Однако, double достаточно просто добавить, компилятор-то несложный.
и объявления, перемешанные с текстом.
А это-то нафига? Никогда не пользовался, на самом деле, даже в С++.
А если посмотреть с определённого ракурса, то кажется, что мой член имеет длину полтора метра.
Вытянулся от перманентного онанизма, да? Ходить поди сильно мешает. Сочувствую.
SDCC работает на PIC с 512 байтами памяти?
Зачем компилятор запускать на однокристалке?
Нет, не произвольный. Очень многие алгоритмы в твой embedded тупо не влезут из-за требований по объёмам памяти и вычислительной мощности.
А если взять и подумать, то влезет уже половина от того, что не лезла. За это, в том числе, и платят большие деньги ембедщикам.
После чего автомобили при нажатии тормоза внезапно начинают ускоряться.
И с какой стороны это проблема C и эмбеддед?
Удивительно, но попытки совсем не жалкие и вполне работают.
Только всё это так и остаётся студенческими поделками не имеющими применения в реальности.
Желание гонять жабу на однокристалках даже привело к выпуску реальных жабопроцессоров, однако оно таки сдохло, потому что тормоза и ужор памяти, даже когда жаба сделана в железе.
Лисп - да, применяется. Но это, пожалуй всё.
Вот именно этот тезис ты откуда вывел?
Ну типа всякие антропологи статьи всякие научные писали. Волей-неволей приходится иногда новости из мира антропологии и психофизиологии узнавать, ибо один из соседей в этой области специализируется. Правда, говорит разгонят их скоро, или зарплату такую сделают, что он сам уволится. Нынче науки всякие антропологические в рашке не в почёте, как и эмбеддед.
Компилятор - это пример задачи, нереализуемой на однокристалке, что подтверждает мой тезис об ограниченности набора задач в embedded.
После чего автомобили при нажатии тормоза внезапно начинают ускоряться.
И с какой стороны это проблема C и эмбеддед?
Если бы у тебя череп был заполнен мозгом, а не каловыми массами, ты бы осилил прочитать текст по ссылке, в котором в частности упомянута причина той хрени, а именно переполнение стека в контроллере. Угадай с одного раза, на каком языке был написан код.
Только всё это так и остаётся студенческими поделками не имеющими применения в реальности.
Ещё раз, если бы твой череп не был заполнен под завязку каловыми массами, ты бы слегка изучил вопрос и не нёс бы здесь подобную ахинею.
Желание гонять жабу на однокристалках даже привело к выпуску реальных жабопроцессоров, однако оно таки сдохло, потому что тормоза и ужор памяти, даже когда жаба сделана в железе.
Я кому про смарт-карты рассказывал? У тебя жаба в твоей кредитке, в твоей сим-карте и ещё дохрена где.
а про ограничения по времени ты ничего не говорил :)
А, ну тогда можно и без внешней памяти. Однопроходный компилятор C вполне способен работать считывая код построчно из порта и записывая результат обратно. Плюс минимальное состояние. В несколько килобайт RAM вполне влезет. Только смысла от этого немного.
Восьмибитники обычно оверхед для большинства задач. Ардуина этому доказательство. А в критических местах быстрее, надёжней и проще использовать специализированные аппаратные средства (пусть даже внутри этих же восьмибитников). И решать такие задачи алгоритмически начинают либо от нищебродства, либо «because we can».
Если на это будут причины. Не стоит возводить в абсолют. Нотвот тебе простой пример. Низкочастотный ШИМ (<100 Гц). Ты будешь ногодрыгать или всё-таки запустишь таймер в спец. режиме?
Возможно, я некорректно назвал условия. МК всё равно будет в схеме, ибо это не единственная функция устройства. Но твой выбор средств показывает, что всё зависит от задачи. Я же говорю, что лучше использовать аппаратные средства, т.к. это сокращает сроки на разработку и отладку, а также увеличивает надёжность.
Собственно характерная проблема жабо- пистоно- макак. Хвалятся длиной МПХ, а то, что в реале с МПХ длиной в полметра жить будет крайне проблематично - до них не доходит.
Компилятор - это пример задачи, нереализуемой на однокристалке, что подтверждает мой тезис об ограниченности набора задач в embedded.
На однокристалке вполне возможно замутить компилятор. Только зачем это может быть нужно - совершенно непонятно.
Если бы у тебя череп был заполнен мозгом, а не каловыми массами, ты бы осилил прочитать текст по ссылке, в котором в частности упомянута причина той хрени, а именно переполнение стека в контроллере. Угадай с одного раза, на каком языке был написан код.
О да, вставание ЭБУ двигателя колом (или та же самая херня с ускорением) при сборке мусора - это, разумеется будет значительно более продвинутая лажа.
Ещё раз, если бы твой череп не был заполнен под завязку каловыми массами, ты бы слегка изучил вопрос и не нёс бы здесь подобную ахинею.
Твоя проблема в том, что я этот вопрос изучил не слегка.
Я кому про смарт-карты рассказывал? У тебя жаба в твоей кредитке, в твоей сим-карте и ещё дохрена где.
Ну для многих однокристалок бейсик, например есть, и что? Java Card - это такой бейсик с синтаксисом похожим на жабу. Там даже GC нету, строк нету, плавающей точки нету, да вообще почти ничего нету. Про скорость работы этой хрени я вообще молчу.
Да и вообще - сама Java Card - как раз пример embedded софта написанного на С для конечного потребителя девайсов.
Ты бы хоть с предметом ознакомился для начала, прежде чем эту смешную туфту гнать. :)