July 28th, 2009

Говнософт

Все, блин, терпение лопнуло!

Открывается новый тег "Говнософт". Под этим тегом буду писать о различном софте, с которым мне так или иначе пришлось столкнуться, и который оставил после себя вышеуказанное послевкусие...

А первым в эту рубрику пойдет Freescale CodeWarrior.

Последний год приходилось работать в Freescale CodeWarrior IDE. А до этого несколько лет - в Windriver Tornado. И если от Tornado остались в основном только приятные воспоминания, то CodeWarrior - это просто тихий ужас.

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

Итак, Freescale любезно предоставляет пример .bat файла, запускающего билд. И как вы думаете, каким образом они в примере показали то, каким образом нужно передавать компилятору список файлов?

Вот так:

set Source_Files=(main.c)

Т.е. мне теперь нужно догадаться, каким же образом мне передать список из двух файлов.

Вот так? set Source_Files=(main1.c, main2.c)

Или может быть так? set Source_Files=(main1.c; main2.c)

Или даже так? set Source_Files=(main.c),(main2.c)

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

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

ЗЫ. Да, я понимаю, что это на самом деле касается синтаксиса множества в командном файле, а не компилятора, но это ничуть не оправдывает автора примера. Чтобы найти ответ, мне нужно все бросить и идти в гугл искать этот синтаксис, вместо того чтобы прямо в примере увидеть, как надо делать.

Freescale CodeWarrior - продолжение

Продолжим.

Итак, работаем мы, значит, в их IDE, работаем, проект уже включает в себя около 200 файлов, плюс куча настроек, и тут вдруг возникает необходимость запустить билд проекта не из IDE, а из командной строки.

Казалось бы, задача простая. Но не в CodeWarrior.

Несмотря на то, что утилиты для командной строки предоставлены.

Вот только не существует способа сделать экспорт настроек из IDE во что-то, с чем бы эти утилиты командной строки работали. В результате с одной стороны имеем вот такой набор настроек (и это лишь одна группа, а список всех групп можно оценить по скроллеру слева):



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

А потом то же самое сделать со списком .с файлов, путями к .h файлам, определить все дефайны и прочее. Потом как-то проверить, что полученный результат идентичный билду из IDE.

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

При том что вся необходимая работа уже была проделана авторами - они же каким-то образом этот экспорт внутри IDE делают!

Сразу скажу, что IDE не вызывает утилиты командной строки, а использует отдельную версию компилятора и линкера в виде .dll.

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

Realterm

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

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

Вот ее интерфейс:



Чем он мне не нравится? Ну например:

- Что делает кнопка "Change"?
- А что делает галочка рядом с ней?
- После того как я выбрал нужный порт, что нужно сделать с нажатой кнопкой "Open"?
- А что делает маленькая кнопочка без надписи рядом с кнопками "Clear" и "Freeze"?

На других закладках все не менее прозрачно и интуитивно понятно :)

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