Проблема кодинга на С не в том, что язык даёт возможность стрелять себе в ногу, а в том что этой возможностью с радостным ликованием пользуются мазохисты различной степени посвящённости.
"""" />

""" Проблема кодинга на С не в том, что язык даёт возможность стрелять себе в ногу, а в том что этой возможностью с радостным ликованием пользуются мазохисты различной степени посвящённости. """
2017-06-05 12:26:46

Участники:
@stanislavv - 17, @OCTAGRAM - 16, @zinid - 6, @vovanium - 6, @33 - 1

@zinid
Как будто есть возможность этим не пользоваться. Элементарно перепутал n с n-1 и сегфолт. Ты либо ходишь по граблям, либо берёшь другой язык.
#2873643/1 2017-06-05 13:14:27
@stanislavv
Иногда нет возможности взять другой язык, кроме асма. Но согласен, иногда свободы в сях чересчур много...
#2873643/2 → /1 2017-06-05 13:25:14
@OCTAGRAM
Кроме дурного начальства, это когда?
#2873643/3 → /2 2017-06-05 14:14:32
@33
Ты в курсе, что в жуйке цитаты не так оформляются?)
#2873643/4 2017-06-05 16:33:40
@vovanium
Что делают другие языки, если перепутал n с n-1?
#2873643/5 → /1 2017-06-05 19:28:20
@zinid
Ты других языков не видел?
#2873643/6 → /5 2017-06-05 19:40:13
@stanislavv
Какая разница? Лишь бы было понятно, что не мой текст.
#2873643/7 → /4 2017-06-06 05:29:38
@vovanium
Видел, просто интересуюсь, чем можно удивить, кроме неправильной работы программы.
#2873643/8 → /6 2017-06-06 10:21:32
@zinid
let it crash? не, не слышал
#2873643/9 → /8 2017-06-06 10:22:40
@vovanium
А segfault не crash?
#2873643/10 → /9 2017-06-06 10:23:48
@zinid
даже спорить лень с тобой, ты вообще не в теме
#2873643/11 → /10 2017-06-06 10:25:22
@vovanium
Хехе, слил так слил. Проблема си в том, что он НЕ сегфолтится/крашится/т.п., когда следовало бы.
#2873643/12 → /11 2017-06-06 10:34:58
@zinid
Да конечно слил, куда уж мне :) Ведь если сервер с тыщами соединений запортачился на каком-то одном, то надо сегфолтить к ебеням и сбрасывать все остальные соединения. Ведь так апологеты C считают (потому что ебанаты, которых в high-load подпускать и близко нельзя).
#2873643/13 → /12 2017-06-06 10:39:17
@vovanium
Сервер с тысячью соединений на си? Это извращение по другой причине, а не сегфолтов=) Вот если автопилот глюканёт, то там хоть сегфолт, хоть ассертфейл, хоть экзепшен, один хрен — аварийный сигнал и переход на ручное управление.
#2873643/14 → /13 2017-06-06 10:55:56
@zinid
Ну так ясен пень, что это от задачи зависит. Где-то C подойдёт (потому что быстрый как понос и встраивается везде где только можно). А такие вещи как автопилот я вообще не понимаю зачем писать на C и экономить на железе (ну если вам не срать на жизнь людей, хотя о чём это я). Такие вещи надо бы на чём-то с формальной верификацией писать.
#2873643/15 → /14 2017-06-06 11:06:23
@vovanium
Для того, чтобы писать на чём-то с формальной верификацией надо знать это что-то.=) А железо для автопилота — палка о двух концах, у нас вон спутники до сих пор летают на 16-битных интелах (точнее на ещё советских их копиях), просто потому что хорошо изучены, и никто боевой код на другие процы переносить за просто так не собирается (переносимость? не, не слышали).
#2873643/16 → /15 2017-06-06 20:35:56
@stanislavv
В микроконтроллерах обычно такое. Ну и в ядре линуксовом :-)
#2873643/17 → /3 2017-06-08 05:52:26
@OCTAGRAM
Сфигали это там обычно?
#2873643/18 → /17 2017-06-09 11:16:11
@stanislavv
FreeRTOS и иже с ними на сях. А без сих осей нынче под микроконтроллеры писать уже некошерно. Вообще, предпочёл бы, наверное, go, с его горутинами сопутствующими средствами как раз половина той ос будет, но сильно сомневаюсь, что его рантайм влезет в 32к какого-нибудь stm32, не говоря уже о atmega328 (тут ещё бОльшее препятствие - 8 бит). А покупать контроллер под язык - это уже перебор. Что касается ядра - таки может и найдётся пара-тройка модулей не на сях, но что-то сомневаюсь, что будут они в основном дереве.
#2873643/19 → /18 2017-06-09 11:34:07
@OCTAGRAM
Ну так просто берёшь и выбираешь Bare Metal Ada с собственным планировщиком. Вуаля, пишешь на Аде, а не на Си. > Что касается ядра - таки может и найдётся пара-тройка модулей не на сях, но что-то сомневаюсь, что будут они в основном дереве. Если кто-то другой повёл себя как мудак, это никак не препятствует другим не быть мудаками, и не снимает ответственности за мудачество. Тем более, что есть приличный набор трансляторов в Си, тот же AdaMagic для Ады.
#2873643/20 → /19 2017-06-09 11:39:32
@OCTAGRAM
http://www.cubesatlab.org/BasicLEO-Software.jsp — вот тут компилятора Ады обычного не было, но всё равно взяли и сделали как положено. Это у мудаков только отмазки какие-то появляются. Кто хочет, ищет способ, кто не хочет, ищет оправдания.
#2873643/21 → /19 2017-06-09 11:55:03
@stanislavv
Мы про имеющееся или желаемое?
#2873643/22 → /21 2017-06-09 11:57:18
@stanislavv
И ещё, как у сей ады с переносимостью? А то теста ради можно делать на чём-нибудь типа атмеги и потом, поменяв пару файликов в проекте (заголовки и инициализация), собрать под stm8
#2873643/23 → /21 2017-06-09 12:00:56
@OCTAGRAM
> Иногда нет возможности взять другой язык На поверку оказывается, что есть
#2873643/24 → /22 2017-06-09 12:01:36
@OCTAGRAM
Для AVR и ARM есть версии GNAT. Я так понимаю, атмега и stm8 — это оно
#2873643/25 → /23 2017-06-09 12:03:42
@stanislavv
В эту возможность должно входить ещё и экономическое обоснование переписывания или хотя бы адаптации сборки с библиотеками на сях... Так что тут - только желаемое.
#2873643/26 → /24 2017-06-09 12:03:47
@stanislavv
stm8 - это совершенно другая архитектура, несовместимая ни с avr, ни, тем более, с arm (она ж 8 бит!)
#2873643/27 → /25 2017-06-09 12:04:26
@OCTAGRAM
А, ну да, звериный оскал капитализма. Вроде бы не сам человек мудак, а это строй мудаческий. в котором человек просто винтик, мотивирован делать не на совесть, а так, чтоб постоянно ломалось, и приходили покупать новое. Тоже верно.
#2873643/28 → /26 2017-06-09 12:07:03
@OCTAGRAM
Значит, AdaMagic всё разрулит. Или есть компиляторы через Си для Модулы второй. Или другие хорошие варианты.
#2873643/29 → /27 2017-06-09 12:08:10
@stanislavv
Он самый. Для себя я вообще могу на бейсике писать. Или на паскале. И то, в случае, если процентов так 90 кода уже на сях (FreeRTOS + библиотеки работы с железом + библиотеки обработки собранного + библиотеки общения с внешним миром) - опять же, ещё подумаю, надо ли мне геморрой, если ради этого придётся переписать половину библиотек. В случае проекта, который хоть как-то отклоняется от хобби экономика влияет значительно больше, чем идеология.
#2873643/30 → /28 2017-06-09 12:14:30
@OCTAGRAM
Ну не переписывать, а привязки сделать. Для сишных библиотек есть ключик gcc -fdump-ada-spec А идеология важна. Вот как потребитель можно пенять на C и C++, это будет создавать давление, и под давлением будет продавливаться. Вот веганы продавливают новые магазины и рестораны для себя. Точно так же и Аду надо продавливать, или в общем случае, безопасное программирование, где Ада как образец, но могут появиться другие варианты, если хорошо давить. Когда статьи о софте пишутся, обращать внимание, на каком языке, и какие последствия для пользователя это сулит. С экономической точки зрения Ада не так уж плоха. Там удорожание за счёт привязок и поддержки платформы, но удешевление за счёт снижения геморроя при отладке. Это как барьер, который если преодолеть, зато потом хорошо пойдёт.
#2873643/31 → /30 2017-06-09 12:25:43
@stanislavv
Попытался найти AdaMagic, дабы почитать что-нибудь не на форумах. Не нашел. Где про него читать?
#2873643/32 → /29 2017-06-09 12:28:33
@OCTAGRAM
https://www.mapusoft.com/ada-to-c-changer/
#2873643/33 → /32 2017-06-09 12:35:02
@stanislavv
Может быть и неплоха. Но вопросы, вопросы: если она не плоха - где открытый софт на ней? Где библиотеки под неё? Ну и, в случае микроконтроллеров, я здорово сомневаюсь, что трансляция в си будет конечной стадией разработки. По-крайней мере, на https://www.mapusoft.com/ada-to-c-changer/ в обоих ветках (integrated/non-integrated) чётко написано про дальнейшую разработку. То есть, и на аде и на сях.
#2873643/34 → /31 2017-06-09 12:39:35
@OCTAGRAM
Прямая ссылка без регистрации: http://forum.pascal.net.ru/uploads/AdaMagic.2016-07-22.7z.zip
#2873643/35 → /32 2017-06-09 12:40:10
@stanislavv
https://www.youtube.com/watch?v=-A2v5UlwtOk - особенно мне нравятся ответы на вопрос, который задан к видео.
#2873643/36 → /34 2017-06-09 12:41:59
@OCTAGRAM
Надо смотреть не под AdaMagic конкретно, а под Аду 95ую. Там за совместимость спрашивают строго. Не дают право называться транслятором Ада, если не проходят тесты ACATS.
#2873643/37 → /34 2017-06-09 12:44:10
@stanislavv
Посмотрим... Мне б для начала ногой подрыгать на аде... Интересно, а gnat возможно собрать для target=atmega?
#2873643/38 → /35 2017-06-09 12:48:10
@OCTAGRAM
http://libre.adacore.com/download/configurations — вот здесь, если выбрать GNAT GPL 2012, становится доступен AVR. Кстати, тут есть конкурс один: http://makewithada.org/
#2873643/39 → /38 2017-06-09 12:51:05
@stanislavv
у меня нет винды, к сожалению. А под wine - большой геморрой (уже проходил для keil, больше не хочу).
#2873643/40 → /39 2017-06-09 12:57:44
@OCTAGRAM
Нашёл такое: http://arduino.ada-language.com/
#2873643/41 → /40 2017-06-09 13:00:48
@stanislavv
avr-ada, конечно, существует, но есть одно маленькое но: там нет кой-каких таргетов, которые я запланировал, а именно микроконтроллеры с usb типа atmega16u.
#2873643/42 → /41 2017-06-09 13:03:58
@OCTAGRAM
Может, взять вот это: https://github.com/evilspacepirate/avr-ada/tree/master/avr-ada/avr/avr_lib/atmega16a и адаптировать под atmega16u
#2873643/43 → /42 2017-06-09 13:13:36
@stanislavv
с учётом того, что с тем usb я собирался общаться через прослойку в виде библиотеки, так как не особо силён - не возьмусь...
#2873643/44 → /43 2017-06-09 13:14:48
@OCTAGRAM
Ну так эту библиотеку в проект и добавить
#2873643/45 → /44 2017-06-09 13:17:06
@stanislavv
пока я буду разбираться как вообще хоть что-то сделать на аде - забуду что хотел, блин... 1) документация (не по языку вообще, а к эмбедщине в частности), 2) я аду до сего дня не видел (документация уже по языку), 3) пока что из хоть каких-то знакомых признался в знании ады только ты (опять же, распространённость языка и то, на чём пишут программы). При этом начать дрыгать ногой на сях у меня получилось без перекомпиляции из левых исходников и без wine (опять же распространённость языка и доступность средств разработки)...
#2873643/46 → /45 2017-06-09 13:35:44