CodeBlocks :: не просто ещё одна IDE

Видя регулярные холивары «студия vs эклипс» или «programmers notepad против vim», каждый раз собираюсь поведать миру об универсальном инструменте, которым сам пользуюсь в течение уже нескольких лет.
Это многофункциональная IDE для С/С++ разработки Code::Blocks.


CodeBlocks — это свободная кроссплатформенная среда, заполняющая нишу между монструальными и неповоротливыми «взрослыми» системами для больших проектов, типа Eclipse, Visual Studio, Net Beans, и убогими по функционалу, но шустрыми блокнотами типа Scintilla, причем преимущества и тех, и других складываются и позволяют использовать данную систему как для написания небольших проектов для встраиваемых приложений, так и для программирования приложений для РС под Windows, Linux и MacOs.

Основные характерные особенности среды:


  • Кроссплатформенная IDE с открытым кодом, основанная на библиотеке wxWidgets
  • Компактное ядро и расширение функционала посредством множества плагинов
  • Встроенный интерфейс под множество компиляторов и тулчейнов, как свободных, так и проприетарных
  • Множество визардов для быстрого создания шаблона проекта как для разнообразных микропроцессорных архитектур (AVR, ARM, PowerPC), так и для библиотек и тулкитов под РС: GTK, Qt, WxWidgets, OpenGL итд.
  • Компактная и интуитивно понятная структура меню, обеспечивающая быструю настройку среды
  • Огромное количество забавных и полезных рюшечек, которые я до сих пор с удивлением иногда нахожу :)

Данный пост — просто беглый обзор возможностей и особенностей IDE CodeBlocks, который(ая?) незаслуженно обделен вниманием, на мой субъективный взгляд.


Итак, начнем по порядку.

«Из коробки» C::B поддерживает многие компиляторы и архитектуры:
  • GCC (MingW / GNU GCC)
  • MSVC++
  • Digital Mars
  • Borland C++ 5.5
  • Open Watcom
  • ...and more

Выбор компилятора

  • AVR (WinAvr)
  • MSP430 (MSPGCC)
  • ARM
  • PowerPC
  • MathLab
  • OpenGL
  • GTK+, Qt, wxWidgets, WinGUI
  • … и многое другое



CodeBlocks имеет быструю встроенную систему сборки, способную реализовывать параллельную сборку (задействуя при этом «лишние» головы процессора), но одновременно с этим допускает сборку внешними инструментами (GNU Make, Cmake, etc) с рукописными скриптами типа makefile, причем тоже многопоточно.

Как и мощные профессиональные оболочки, имеет развитые средства поддержки проектов, включая workspace для объединения родственных проектов, общие межпроектные зависимости, множественные цели (target)

Предусмотрен механизм импорта проектов из других сред разработки



а также экспорта открытого файла в разнообразные форматы:



Отладка

Как и эклипс, кодеблокс позволяет отлаживать проекты через интерфейс GNU GDB (и даже «Also supports MS CDB»).

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

  • Full breakpoints support:
    • Code breakpoints
    • Data breakpoints (read, write and read/write)
    • Breakpoint conditions (break only when an expression is true)
    • Breakpoint ignore counts (break only after certain number of hits)
  • Display local function symbols and arguments
  • User-defined watches (support for watching user-defined types through scripting)
  • Call stack
  • Disassembly
  • Custom memory dump
  • Switch between threads
  • View CPU registers

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

Интерфейс

Практически ничем не уступает «старшим братьям».
  • Подсветка синтаксиса, настраиваемая и расширяемая (хотя куда уж шире — см. скриншоты ниже)
  • Сворачивание кода (folding) для С/С++ и XML
  • Система вкладок в рабочем окне и дополнительных фреймах
  • Свободная планировка фреймов и произвольное деление (split) рабочего окна
  • Автодополнение кода
  • Обозреватель классов
  • Быстрое переключение между .c и .h файлами (swap)
  • Список открытых файлов для быстрой навигации, когда табов уже не хватает
  • TODO list
  • ну и многое другое, реализуемое плагинами.

Ну и теперь, как обещал, несколько иллюстраций.

Автодополнение
Автодополнение (Code-completion). После ввода 4-х символов выпадает список с подходящими идентификаторами. Количество начальных символов настраивается, как и многие другие параметры.


Вводим точку после имени структуры — выпадает список полей. То же самое со структурными операторами -> и ::

Выбор варианта подсветки исходного текста — без комментариев:



Обратите внимание на опции для управления комментариями:
Comment/Uncomment имеют хоткеи и позволяют быстро комментировать и раскомментировать строки и куски текста.
Что характерно, комментарии вставляет именно такие, какие требуются для данного типа файлов.
Например, для.с и .h — "//", а для makefile или python — "#"

Контекстное меню (правой кнопкой в окне редактора) весьма развито:



Пункты меню «Find declaration of» и «Find implementation of» служат для поиска объявления и реализации (имплементации) выделенного объекта, а «Find occurrences of» — все включения во всех файлах проекта.

В этом же меню видим упоминавшийся ранее «Swap header/source».

Чуть ниже — запуск плагина автоформатирования AStyle, который форматирует текущий файл по одному из шаблонов:



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



Более того, настройки можно разложить по разным профилям.

Можно сплитить рабочий экран на произвольное количество окошек.



Легко и непринужденно — простым перетаскиванием вкладок к границам основного окна.
Перетаскивая вкладки из дополнительных окон в основное или соседние, можно объединять их обратно.

Ещё одна мегафича, которая мне нравилась ещё в IARe, это быстрая навигация вперед/назад: Alt + стрелки вправо/влево.

Также, очень удобная фишка под названием Default code.
Можно задать «шапку» для файлов, отдельно для.с и .h, которая будет автоматически подставляться при создании новых файлов. Плюс, при создании .h файлов может автоматически добавляться стандартный предохранитель от множественного включения:

#ifndef FILENAME_H
#define FILENAME_H

#endif


Наверно, я уже утомил своим перечислением, хотя не затронул многих интересных вещей. Пора переходить к практической части.

Установка


Если Вы пользователь Windows, то идем на страницу загрузки и готовимся потратить от 23 до 74М траффика (в зависимости от MinGW).
Сторонники Светлой Стороны могут для начала поискать в своем менеджере пакетов.
Имеются готовые сборки .deb (debian/ubuntu) и .rpm (Fedora, SUSE, Mandriva)

Чтобы был доступен весь функционал, нужно при установке отметить галочку включения дополнительных плагинов. Хотя, можно их добавить и после установки, но это не так удобно. В конце концов, проще после некоторых экспериментов отключить или удалить неиспользуемые.

Также, при установке в windows присутствует опция MinGW, по которой C::B устанавливает свой личный экземпляр MinGW внутри себя.
Забегая вперед, скажу, что эта штука может конфликтовать с другими win-gcc тулчейнами, находящимися в системе, например, с CygWin, так что в случае необъяснимых ошибок или подвисаний проблема скорее всего в этом.
В некоторых источниках рекомендуют ставить в последовательности wxWidgets (если нужно) — MinGW — CB(без MinGW).

Итак, установили.
Пока пыл не угас, попробуем по-быстрому чего-нибудь состряпать.
Например, окошко WinGUI.

1. Создаем новый проект. File-> New-> Project (или ссылку Create a new project на странице приветствия).

2. Из кучи визардов выбираем Win32 GUI project (придется ещё вниз помотать) и жмем «Go».

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


Запускаем. Жмем Build, Run или Build and run

[ 50.0%] Compiling: main.cpp
[100.0%] Linking executable: bin\Release\ggg.exe
Output size is 7.00 KB
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings
Build log saved as:
file://D:%5cwork%5cEXPERIMENTS%5cCB_Wx%5cggg%5cggg_build_log.html

Вуаля:


Ну, кто тут спрашивал, в чем бы под винду написать? :)
Шучу, конечно. На самом деле это была просто иллюстрация, естественно, что на голом WinGUI никто писать не будет, когда есть возможность пользоваться удобными фреймворками типа wxWidgets или Qt.

В общем, немного сумбурно получилось, но общее представление, надеюсь, дает.

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

Если будет интерес к теме, в следующий раз опишу процесс создания микроконтроллерного проекта.

Материалы по теме:

Официальный сайт С:: В
Записки программиста, и ещё.
Статья на ProSpo.ru
Первая программа

Ну и вообще, тысячи их.

Комментарии (145)

RSS свернуть / развернуть
я бы проголосовал за немикроконтроллерный
и интересуют компоненты TCP/UDP и Comport (если там вообще есть компоненты)
0
Возможно я не прав, но все эти «компоненты» от лукавого Борланд Дельфи. Есть же кроссплатформенный интерфейс сокетов для работы с TCP и UDP. Наверняка, есть классы для C++ (в своих простеньких программках обходился самоделками). А IDE же просто предоставляем Вам удобный редактор исходного кода и нормальные возможности отладки. Надеюсь CodeBlocks умеет делать трассировку под Linux?
0
Компоненты — это те же библиотеки.
0
плюсы вы описали, а как же про недостатки?
например, поддерживаются только языки С и С++
0
  • avatar
  • 286
  • 30 мая 2012, 16:59
Можно сдружить и с другими языками. Или не очень удобно в духе N++, или поудобней, но тогда придется писать плагин-сет.
Хотя с плагинами поддержки других языков и правда не густо… Впрочем, и самих тех языков с полпинка разве что Free Pascal вспоминается. Остальные или со своей IDE, или известны полутора анонимусам.
Кстати, среди поддерживаемых компилеров есть и DigitalMars D Compiler.
0
А что, ещё какие-то бывают?
:)
Смотря что считать «поддержкой».
Насчет подсветки синтаксиса — очень обширный список. Парсинг, естественно, только С/С++.
Кроме того, есть возможность запускать «неродные» типы файлов в сторонних редакторах вместо штатного.
0
Парсинг и сборку. Последнюю правда кое-как можно прикрутить, поковырявшись в настройках плагина Compiler. Но без Code Navigation как-то грустно
Насчет подсветки синтаксиса — очень обширный список.
Еще бы. Сцинтилла такая сцинтилла.
0
>> например, поддерживаются только языки С и С++

Странно, а я как-то по незнанию в нём на Верилоге писал… Вот блин, а оказывается нельзя… =\
0
я как-то гуглил их форум на тему прикручивания пацкаля, они там писали что поддерживаются только С/С++ и забросил.
0
Это опенсорс. «Надо? Вон сорцы, где компилер взять сам знать должен».
0
мне тогда нужно было на 1 раз, поэтому проще было поставить TMTPascal )
0
Ну если на один раз, тогда да, о чём разговор. А если нужен инструмент для постоянной работы, то почему-бы и не поточить топор?
0
Поточить топор — это подправить конфиги стандартного Compiler. Для полноценной поддержки нужно выковать новое топорище)
0
Ну не знаю, я, когда Верилог приделывал, до выковывания топорища так и не дошёл — заленился и ограничился заточкой имеющегося. Конечно полноценного кодкомпилшена не было, но кейворды дополнялись нормально. Были ещё кое-какие косяки, но в целом пользоваться было в разы удобнее, чем штатным квартусом.
0
CodeBlocks :: не просто ещё одна IDE
Судя по статье — именно просто ещё одна IDE.
Множество плагинов и визардов для программирования разнообразных микропроцессорных архитектур (AVR, ARM, PowerPC)
Не мешало бы показать именно микроконтроллерный проект тут, а уже следующим делом виндозный «Если будет интерес к теме».
Контекстное меню (правой кнопкой) весьма развито:
и избыточно. Половина пунктов никогда и не понадобится, а вот часто используемые пункты редактирования перенесены во вложенное меню. Возможно это дело настраивается, но всё-равно неприятно, что для комфортной работы в среде её надо пилить.
В общем, немного сумбурно получилось, но общее представление, надеюсь, дает.
Ну да, Упомянули МК, показали убунту, а приложение создали под винду, после чего повтыкали скриншотов в неуловимой последовательности. И всё это без каких-либо разделов.

Статья сырая и только отобьёт интерес к среде.
0
Судя по статье — именно просто ещё одна IDE.
Тащемта, так и есть. Но она открытая и модульная — это уже более редкий зверь. Относительно легковесная и симпатичная, опять же. Впрочем, мне действительно нравятся только Delphi IDE, BDS и MSVS 7+.
и избыточно. Половина пунктов никогда и не понадобится, а вот часто используемые пункты редактирования перенесены во вложенное меню.
Напротив. А Cut/Copy/Paste никому не нужны — кто часто юзает давно привык к хоткеям.
Статья сырая и только отобьёт интерес к среде.
Точно.
0
Есть такая хрень, как «экстримальное программирование», а в частности «совместное написание кода» и «совместный просмотр кода». Так вот, клавиатуру совместно использовать довольно проблематично, дергать её туда-сюда. Объяснять соседу что выдели от туда до сюда, тоже напряжно. Проще взять мышку и ей манипулировать.
Это просто когда я использую эту группу меню, хотя «экстримальным программированием» у нас и не пахнет.
0
Выделить — мышкой, а скопировать быстрее хоткеем. Да и не самая частая операция это для программинга, во всех IDE Copy/Paste даже на тулбар не вынесены.
0
>>во всех IDE Copy/Paste даже на тулбар не вынесены.
Это у вас IDE какое-то своебразное: посмотрел в IAR EW, MSVS 2008, AVRStudio — у всех copy-paste на тулбаре.
0
Хм, в студии разве вынесено (по умолчанию)? Не замечал.
В Delphi IDE точно нет, а в ней я работаю чаще всего…
Что до IAR'а и AVRStudio — это блокноты, им эти кнопки положено иметь)
0
Ну вот, по одной среде сделали вывод о всех.
А мнежду прочим довольно много людей дельфи за среду программирования не считают даже, так что же теперь, говорить что все не считают?
0
Ну я типа забыл и вообще меня понесло)
Кстати, на самом деле в Code::Blocks эти кнопки тоже вынесены в тулбар, так что на то, что в меню они немного спрятаны не так существенно. А с ними оно было бы куда длиннее.
0
не совсем. выделяем текст, ПКМ и далее 2 версии: N пунктов вниз (что чаще) либо M пунктов вверх.
При использовании же кнопок тулбара расстояние всегда зависит от месторасположения выделенного текста.
Казалось бы мелочь, но знаете как к ней привыкаешь. Рука на автомате выполняет требуемую последовательность при пкм, без привлечения глаз для поиска тулбара и кнопок.

Вообщем «тёплый ламповый звук».
0
так точно, делфа позор всей семье
0
Все, что ты перечислил, на самом деле, только внешние и совсем не обязательные аттрибуты XP. Там смысл совершенно в другом. Впрочем, эта тема весьма и весьма обширная, в пост явно не впихнуть.
0
Не-не, я XP заниматься не собираюсь. Не в условиях нашей конторы. Просто некоторые его атрибуты очень полезны и по возможности их использую.
Да и не обязательно обращаться к заморским чудесам, достаточно впомнить поговорку: «Одна голова хорошо, а две лучше».
0
Для мелких проектов, коими является практически вся ембедщина, ХР, возможно, не так уж сильно необходим. Да и рефакторинг сишного/плюсового кода штука довольно геморройная, поскольку поддержка в IDE для этого дела достаточно слабая, во всяком случае в сравнении с той же жабой. А без постоянного рефакторинга применять ХР сложно, если вообще возможно, поскольку это, практически, краеугольный камень Agile методик вообще, и ХР в частности.
0
Для мелких проектов, коими является практически вся ембедщина, ХР, возможно, не так уж сильно необходим

Я бы не сказал. Agile методологии рулят даже в небольших проектах.

А касательно рефакторинга – классический поход «сверху вниз» (водопад) тоже не избавляет от необходимости иногда проводить рефакторинг (хотя, конечно, при грамотном подходе рефакторинга в этом случае должно быть на порядок меньше ).
0
Да, Agile рулит, безусловно. Я бы даже сказал «особенно в небольших проектах». Но, на мой взгляд, в эмбеддед проектах, где софт часто пишется одним-двумя программистами, большой разницы нет, там своего рода «agile» складывается автоматически. Ну и «маленький» проект на жабе легко может быть на порядок сложнее (в смысле собственного кода и реализуемой бизнес-логики), чем «большой» эмбеддед проект на всю флешку средней стм-ки. Тут уже сложность диктует необходимость применения более-менее формализованных методик и подходов, иначе есть большой риск утонуть в «изобретении велосипедов» и «беге по граблям» в ходе выработки собственной методологии.

По поводу рефакторинга: я бы даже сказал так: водопад категорически требует рефакторинга, причем в гораздо больших объемах, чем agile. Это неизбежное последствие «априорного» проектирования. Другой вопрос что он же сильно затрудняет рефакторинг, в итоге программу чаще проще переписать заново полностью или, как минимум, бОльшую ее часть. К примеру: я сейчас участвую в проекте, который пережил минимум три глобальных изменения в архитектуре. При этом процентов 70 первоначального кода живы в первоначальном виде или с небольшими модификациями. Если бы это был водопад, то программу надо было бы переписывать с нуля каждый раз. И никакой грамотный подход не может предусмотреть изменений требований (которые диктует сама жизнь и опыт применения софта в продакшне). А из-за желания сделать «поуниверсальнее», что бы «если что, меньше переписывать», приводит к тому, что код оказывается обвешан ненужными фишками, которые при переписывании просто идут в мусор. В agile такого мусора, обычно, на два порядка меньше, а в идеале — нет совсем.

Рассказывая новичкам об agile, я часто приводу такое сравнение: водопад это стрельба неуправляемым артиллерийским снарядом из-за горизонта. Agile — это стрельба самонаводящимися ракетами. Если цель неподвижна и ее координаты точно известны — то без разницы чем стрелять. А если мы только приблизительно знаем, где эта цель находится или цель движется, то накрыть ее артиллерией можно только залпом, а самонаводящейся ракеты хватит и одной. Снаряд/ракета — это, по сути, код проекта. Цель — требования заказчика.
0
Ну, кто тут спрашивал, в чем бы под винду написать? :)
На голом винапи, ага. Уж лучше выбрать проект wxSmith. Заодно кроссплатформенность. Заодно внушающие уважение мегабайты)

Алсо Code::Blocks тут неоднократно упоминалась. Но вопрос адекватной настройки ее для работы с тулчейнами под МК, особенно теми, которые не GCC не так прост. Так, хотя GCC для ARM, MSP430 и AVR поддерживается из коробки — большую часть настроек компилятора придется вводить в поле «дополнительные ключи командной строки».
Неплохо бы запилить к ней более адекватный плагин для таких таргетов… Но всем лень.
0
  • avatar
  • Vga
  • 30 мая 2012, 17:10
На голом винапи, ага. Уж лучше выбрать проект wxSmith.
Так это ж «искаропки», без единого телодвижения. Чисто для иллюстрации.
Ради интереса качал как-то GTK, и опять же с ходу скомпилил дефолтную форму, только ещё с кнопочкой посередине.
Ну а для консольки — сам бог велел. Ну не студию же громоздить, в самом-то деле.
0
Так это ж «искаропки», без единого телодвижения. Чисто для иллюстрации.
wxSmith тоже искаропки, более того — на нем кодблокс и сделан. Только в отличие от WinAPI он более вменяемый и RAD.
Ну а для консольки — сам бог велел. Ну не студию же громоздить, в самом-то деле.
Студия — самое то, если не связываться с кроссплатформой, остальным иде до нее далеко. Впрочем, даже кроссплатформа очень часто под винду собирается именно в студии.
Ради интереса качал как-то GTK, и опять же с ходу скомпилил дефолтную форму, только ещё с кнопочкой посередине.
Собрать-то прогу на гтк несложно, вот собрать сам гтк… Хорошо, когда есть уже скопиленый… И не слишком старый.
0
wxSmith-то из коробки, а вот wxWidgets на винде отдельно доставлять придётся. Впрочем, как это сделать быстро и без лишнего гемора я как-то писал в ЖЖ.
0
Ну wxWidgets довольно сговорчивый в плане установки из сорцов. Не помню, есть ли SDK-капеты для винды.
0
SDK-капеты
Ой, лол. Пакеты.
0
Отладка-то работает?
+1
Теоретически — должна, если GDB поддерживает. Практически — даже под виндой она у меня артачилась. Впрочем, в SVN обитает некий DEBUGGER BRANCH, так то есть надежда на улучшение ситуации.
0
Под гентой отлаживал консольную прогу без проблем. Под виндой лет 5 назад отлаживал Wx-совый софт на ура, причём оно даже запрыгивало в исходники самих wxWidgets. Сейчас уже давно не проверял — очень редко бывает нужно, обычно хватает printf`ов.
0
Там есть интерфейс для работы с gdb, причем в 10,5 и немного позже он, честно говоря весьма убогий. Но в последнее время на этом поприще были немалые изменения и отлаживаться стало намного удобнее.
0
А debugger branch пробовал? Или это в ней и есть эти самые изменения? И в чем они заключаются, кстати?
0
я в сам репозитарий давно не заглядывал, возможно она и есть. Сейчас у меня на обкатке последняя ночная сборка вот тема на форуме. Пока особых косяков не заметил.
Для меня главные:
— возможность из гуя редактировать значения переменных
— нормально отображаются структуры и массивы в watch'е
— увеличена скорость работы отладчика (по ощущениям раза в 2 точно)
ну и еще несколько приятных мелочей.
0
Ну debugger branch тоже в ночных билдах выкладывается, правда сейчас вроде на пару версий от основной ветки отстает (возможно, его туда уже интегрировали и закрыли).
0
Дебаггер бранч влили в транк пару месяцев назад (см r7920).
0
Да такое же фуфло как и остальное. Я после всех проб использую Keil(0$)+J-Link(10$) и горя не знаю
0
Да кейл как иде не лучше. Единственный (да, веский) плюс — нормальная отладка.
0
Keil(0$) — это хде-ж вы такие цены нашли? ;-)
0
2 килобайта для 51 и 32 для армов — на шару. При условии неприменения в коммерческих целях.
0
И вам хватает таких размеров? :)
J-Link официальный, для студентов стоит 50 евриков, если что. И это не для коммерческого пользования.
0
Самое смешное, что недавний прожект (на мелком 51 филипсовском) таки утоптал в 2 килобайта, ибо там больше не было. :( Понятное дело, что голый асм, с множеством извращений по прессовке кода.
В связи с новыми веяниями, т.е. переходом на ST-шные кортексы, Ж-линк недавно купили, за 50 с чем-то евриков, но, кхм, не совсем официальный (с jtag.su). Ничего, жужжит.
0
а можно было совсем не официальный за 15-20 баксов… ;)
0
Есть вообще самопальный, обошёлся чуть больше десятки. :)
0
ну, примерно да.
но «совсем не официальный» ни внешне ни внутренне почти не отличается от оригинала… ну разве что в последних версиях там какие-то косяки с обновлением, говорят, бывают…
0
2 килобайта для 51
И специально настроенный линкер, чтобы эта прошивка в камни с 2кб флеша не влезла.
0
Ещё веселее. Прямо в тексте: CSEG AT…
К примеру, некоторыми процедурами были заткнуты 8-байтные «дырки» в области векторов прерываний.
0
Ну, если на асме писать — то быть может. А вот сишный код он линкует, начиная с адреса 0х800 — чтобы неповадно было юзать халявную демо-версию для написания рабочего кода под контроллеры с 2к флеша.
0
Ну, я не настолько честен, чтобы кейлизму не поставить. ;)
А вообще-то кодеблокс года 2 назад пробовал, применительно к AVR — радикальных преимуществ перед аврстудией не обнаружил, да и забросил, вкупе с самими AVR. Сейчас, вероятно, вернусь к этому вопросу, было бы неплохо сотворить в одной среде и встроенный софт (CM3
0
Ну ничего себе сравнение, даже обидно как-то… в avr студии сам редактор настолько убог, что хуже не придумаешь. Единственный плюс студии — симуляция отладки и отображение перифирии.
+2
А, после двухлетнего сидения в ultraedit с сочинённым на скорую руку wordfile оно как-то пофиг. :)
0
Ну как сказать, странное сравнение… Я много лет пользовал UE и UEStudio — они оба намного удобнее AVR Studio. У меня до сих пор ломка по некоторым их функциям. Кое-что даже пытался перенести в CB, но не особо успешно.
0
), и технологический под венду. С безмятёжно-честным взглядом при этом.
… блин, клавиатура на нетбуке чудит.
0
С безмятёжно-честным взглядом при этом.
А что, сама винда-то уже честная?)
КодБлокс кое-как поддерживает (точнее, вроде даже вполне неплохо, только конфигурить параметры компиляции вручную надо) все эмбед-тулчейны на GCC — MSP430, AVR, ARM, MIPS. Вроде можно туда же прикрутить и под MCS51 компилер (SDCC вроде поддерживается «из коробки»). Так что да, можно весь спектр решений там реализовать.
Ну, я не настолько честен, чтобы кейлизму не поставить. ;)
Ну с клизьмой-то они все бесплатные и неограниченные… Только того, этого…
0
Кстати, а с дельфи как? Сейчас есть бесплатные версии, или покупать?
0
Сейчас есть бесплатные версии
Только на торрентс.ру) Turbo Delphi прикрыли, давно уже (собсна, ее и не обновляли — она так и осталась бесплатной версией Delphi 2006).
0
0
Не раз слышал, что «уже работает», не раз и обламывался. Последний раз был наверное года два назад, мож теперь и правда работает.
Впрочем, IDE убогая. Тот же C::B получше будет.
0
Работает, как ни странно. Выручил меня в прошлом году, когда надо было за оооочень короткий промежуток времени обработать кучу данных. Вручную сразу отпадает, софт писать — долго.
Набыдлокодил на нём за пару дней утилит специальных, успел в срок.
0
Ну я не скажу, что совсем не работает, но то отладка не фурычила, то еще что-нить. Плюс в те времена мне не понравились кодонавигатор и полное отсутствие настраиваемости и расширяемости IDE. Да и для установки компонентов ее пересобирать надо (хотя это скорее недостаток FPC и того, что использует binutils).
0
Кстати, я почему-то нигде, кроме дельфей и лазаруса, не встречал такой фичи редактора кода, как возможность поставить курсор в любое место, независимо есть там текст или нет. Мне она нравилась.
0
эээ… а зачем?
0
Поставил где надо и начал писать. Недостающие CRLF/TAB/SPACE иде сама сгенерит. Удобно для написания прог паровозиком (аскиартовым) и просто форматирования столбцами. Плюс когда жмешь стрелки вверх/вниз — курсор передвигается строго по своей колонке, а не скачет туда-сюда в зависимости от длины строк.
Фича эта еще есть в SynEdit, называется «Cursor beyond EOL/EOF». Правда, на SynEdit'е я только одну IDE видел — Dev-C++ (нынче wxDev-C++).
Обратная сторона — редактор дельфи лимитирует длину строк 1024 символами, и позволяет скроллить по горизонтали на все эти 1024 символа независимо от реальной длины строк.
0
Правда, на SynEdit'е я только одну IDE видел — Dev-C++ (нынче wxDev-C++).
А, лазарус вроде тоже на нем.
0
SynEdit — вспомнил! Я использовал его ещё как компонент. Из-за того, что он единственный из попавшихся мне на тот момент открывал без тормозов огромные файлы (похоже он не грузил их полностью, а подтягивал динамическки)
0
Так это и есть компонент. «Официального» редактора на нем, как SciTE для Scintilla AFAIK нету.
0
На нём много «самодельных» редакторов было. Да и я делал — его на форму + open/save диалог. 5 минут — готов редактор.
0
Ну, я за 1024 ни разу не выползал :)
0
А мне однажды попался сорец с кривыми переводами строки, которые Delphi IDE не засчитала и заявила «Error: too long line».
0
ааа… ну, слик так умеет.
0
Я когда-то написал и долгое время пользовался собственным редактором под полуосью. Так реализация этой фичи была одной из главных причин, по которой я взялся писать собственный редактор…

P.S. фича в реализации весьма геморройная если сохранять табы…
0
В Visual Studio (и соответственно в AVR Studio 5/6) такая фича тоже есть, только отключена по умолчанию. Включается так: Tools->Options->TextEditor->(конкретный язык или All Languages) и ставим галку Enable Virtual Space.
+1
В C::B эта штука есть, только надо включить в настройках, но я этим обычно не пользуюсь. А вот что меня радует — это ввод в несколько мест одновременно с помощью клика мышью в зажатым альтом и прямоугольное выделение с зажатым альтом и шифтом.
0
Как по мне, то переключаться в режим прямоугольных блоков лучше явно (тем более, что, например, в еклипсе и идее этот режим имеет и другие полезние фишки, например позволяет писать одинаковый текст сразу в весь выделенный вертикальный блок, что исключительно удобно для заполнения однотипных данных, например). А выделение с альтом и шифтом лучше отдать под контекстно-зависимое выделение текста. Это такая фича, при которой выделяется сразу законченное выражение. Например, если попробовать выделить переменную в выражении, в котором вычисляется один из параметров вызываемого метода, то сначала выделится переменная, на второе нажатие выделится все выражение, на третее — весь вызов метода. Этой фишкой я пользуюсь куда чаще, чем вертикальными блоками, так что ее лучше иметь в более оперативном доступе. Хотя, конечно, это дело вкуса.
0
>>Как по мне, то переключаться в режим прямоугольных блоков лучше явно (тем более, что, например, в еклипсе и идее этот режим имеет и другие полезние фишки, например позволяет писать одинаковый текст сразу в весь выделенный вертикальный блок, что исключительно удобно для заполнения однотипных данных, например).

Хм… по моему опыту для чего-то другого прямоугольное выделение используется сильно редко, так что относить это к «другим полезным фишкам» как-то странно. А вот чего мне в CB не хватает, так это заполнения столбца инкрементирующимеся цифрами.
Что касается контекстно-зависимого выделения, в CB такого не видел, действительно упущение с их стороны, но с технической точки зрения одно другому не мешает.
0
Хм… по моему опыту для чего-то другого прямоугольное выделение используется сильно редко, так что относить это к «другим полезным фишкам» как-то странно
Отчего же, я, как раз, эту фишку использую никак не чаще чем, например, удаление или вставку.
Что касается контекстно-зависимого выделения, в CB такого не видел, действительно упущение с их стороны, но с технической точки зрения одно другому не мешает.
Не мешает, конечно, просто пересекается по кнопкам. Что же касается упущения, то реализовать ее не так просто, как кажется на первый взгляд. Нужен live parser, да еще и устойчивый к ошибкам (внутри выделяемого блока может быть, например, неполное выражение). Для плюсов это реализовать значительно сложнее, чем для жабы, как в силу особенностей синтаксиса, так и в силу наличия препроцессора, который изрядно гадит на всю малину.
0
Когда сильно сложный проект, то Source Insight + Visual Studio (только для кодирования)
0
Как только по правой кнопке будет рисоваться Find all instances и Goto to Declaration — тогда можно смотреть
0
А вы всё же в начале посмотрите (скрины) и увидите, что там такое есть :)
0
Оно бы еще работало нормально. Те версии, что я пробовал, косячили в плане навигации.
0
? вроде нормально работает, обычно (за исключение некоторых моих ихвратов, но это я сам виноват)
0
Возможно я опять же привык к дельфи (а кодонавигатор там хоть и невзрачен на первый взгляд, но весьма мощен), а может та версия косячила, но помогать оно мне не хотело. Подсказки не вылазили, автодополнения не вылазили и все такое.
0
Странно, может глючный билд попался? У меня ~95% кода нормально парсится. Ну и по сырцам самого C::B навигация отлично работает, что весьма ценно (они, всё-таки, не маленькие).
0
По крайней мере функция Find occurrences of просто незаменима — обычный grep по файлам проекта/папки/открытых файлов, чего я не нашел в VisualStudio (ее Find All references тупо не находит все, а только те места, где символ определен и где используется, а вот где он еще упоминается она просто игнорирует).
0
Если обычный grep — то оно вроде в студии называется «поиск по файлам». Или «по проекту» ли.
0
И запускается также — двумя кликами мышки, но отводя ее далеко от искомого слова? ;-) Так то он есть везде, вопрос в том, как его запустить? На сколько удобно, и насколько удобно потом смотреть результат того поиска.
0
Если часто надо — запомни/назначь хоткей. Остальное не знаю — никогда не пользовался. Меня в кодонавигаторе больше всего интересуют четыре вещи — поиск определения, автодополнение полей, подсказка с аргументами и список символов.
0
Все это есть в кодблоксе. Единственно, из-за довольно слабоватенького парзера, на больших проектах с паттернами/шаблонами, не всегда/сразу срабатывает.

Мышей удобней искать/запускать греп ;-)
И вот таких вот мелочей наберется довольно много, что они начинают перевешивать все остальное.
Пользуясь случаем хочу спросить наболевший вопрос про VisualStudio. Как найти в дереве Solution'а открытый в редакторе файл по быстрому?
В C::B это делается двумя щелчками на вкладке файла и выборе пункта Show File in Project tree. А вот в студии мы это уже год ищем, найти не можем. А проект растет, блин.
0
А хз. Я с MSVS знаком довольно слабо, да и деревом проекта почти не пользуюсь даже в Delphi — обычно нужный модуль открываю через Show definition — сразу попадаю не только в нужный файл, но и в нужное место (собсно, одна из основных причин — привыкание к первой освоенной IDE, где и формируется рабочий процесс — а дерево проекта в ранних версиях Delphi IDE было спрятано, в результате привык пользоваться другими средствами).
И вот таких вот мелочей наберется довольно много, что они начинают перевешивать все остальное.
Это да. Но при переходе на другую IDE в любом случае какие-то из мелочей будут другими. Так что разумно подумать не над самой мелочью, а над задачей, которую она решает, и поискать в новой иде другую удобную мелочь для той же задачи.
0
Я с MSVS знаком довольно слабо
Не в обиду, но вообще характерно: «студия лучшая, только в ней, только её».
А спросишь, мол, как конкретно сделать вот так и вот это — «да я как-то и не пробовал, как-то наверно можно, а зачем?»
Самое, что меня бесит во всей этой мелкосятине — что оно каждые два года новое и по большей части само с собой несовместимо. Не успеешь старое освоить, как опять уже денежки на новое готовь, а там все уже по-другому.
0
Ну из того, с чем я имел дело для С/С++ (а я пробовал не так мало, хотя это и довольно странно для дельфиста) MSVS и правда лучшая. Просто хорошо знаком я только с той IDE, где работаю 95% времени — а это Delphi IDE и BDS. А в MSVS юзаю то, к чему привык в Delphi и оно в принципе неплохо работает.
Стоит, впрочем, отметить, что среди созданных не крупными компаниями IDE C::B смотрится весьма неплохо. Поэтому я за ней слежу, хотя чаще оно меня разочаровывает.
0
и поискать в новой иде другую удобную мелочь для той же задачи.
Дык, не находится! Что в эклипсе, что в MSVS. В Эклипсе так вообще настройки всего и вся находятся черт знает где и найти их можно совсем не интуитивным путем.
0
У еклипса своя логика в постоении интерфейса. Она может быть кому-то не совсем привычна, но она есть. Что же касается «интуитивности», то единственный интуитивно понятный интерфейс — мамкина титька, остальному приходится учиться.
0
Сколько сложностей из-за отсутствия кнопочки «Link with editor» на панели дерева проекта. В эклипсе, кстати, она есть и мне и в голову не пришло бы, что где-то ее может не быть.
0
Я, честно говоря, ожидал что это вообще поведение по умолчанию. Только не уверен, откуда у меня это ожидание. Возможно и не от IDE, потому как деревом проекта я пользуюсь редко.
0
На самом деле это не всегда удобно и иногда полезно иметь возможность отключать. Например, когда в поле зрения нужны соседние файлы (или вообще другое место в дереве проекта), то навигация по коду может приводить к тому, что они из поля зрения исчезают. А так да, в подавляющем большинстве случаев у меня эта пимпочка включена.
0
Так и смотрите, на картинке.

Find declaration of
Find implementation of
Find occurrences of
0
Codeblocks отличная IDE сам пользуюсь уже несколько лет для разработки под AVR и ARM. Когда ковырялся с AT91SAM7S то прикручивал отладку через GDB и SEGGER J-Link всё работало :) А вот с STM32 пока не подружил отладку надобности пока не возникало.
0
В том то и дело что прикручивать не хочется. Для моргающих лампочек любой ide подойдет. И не говорю, что плохой или хороший ide — каждый сам решает. Автор просто описал свои наблюдения.
0
>>Ещё одна мегафича, которая мне нравилась ещё в IARe, это быстрая навигация вперед/назад: Alt + стрелки вправо/влево.

Вообще-то я уже года три назад написал нормальный Alt+Tab со стеком, но в релиз 10.02 он не попал, так как долго тестировали, а потом настала заморозка кода. А в ночных сборках он по дефолту отключен.
0
А можно к CodeBlocks прикрутить компилятор Keil?
0
Можно. Свой makefile делаете и все что душе угодно прикручивается.
Также можно и без makefile, вроде как. Выбрать из списка компиляторов любой понравившийся и заменить исполняемые файлы на кайловские. Там же можно и настроить все параметры, которые передаются этому компилятору. В общем — настраивается он хорошо. но надо настраивать самому.
0
А можно, не выбирая из списка компиляторов, добавить в этот список любой новый?
0
Можно, скопировав уже существующий кнопкой Copy.
0
… в настройках Global Compiler Settings.
0
Кто-то тут минусы хотел ;-)

Большие проекты ему не всегда даются хорошо в плане навигации и поиска по пороекту через ThreadSearch. Иногда вешается, чаще просто падает с Эксепшином. (Большие — больше 2000 файлов).
Навигация через Alt-стрелки вправо-лево — иногда, после дня работы, начинают глючить, и прыгать не в последний файл, а в файл из середины списка последних. После раз 5-7 прыжков работа налаживается. Но если быстро прыгать — CB падает тупо.
Иногда навигация перестает прыгать в последний файл, а остается в текущем. Но это реже, все же.

Парзер медленный (на таких больших проектах).
Если С++ классы используют всякие хитрые шаблоны (design patterns) то он просто тупо не находит функции.
Часто надо ждать долго, когда он запарсит проект, чтобы найти недавно добавленные функции.
По сравнению в еклипсовским парзером КБвский парзер пока вминусе.

Еще одна «фича», про которую я уже разрабам рассказывал, но они до сих пор не смогли ее повтороить, хотя у меня она каждый день вылазит:
Если в проекте есть заголовочный файл, но нет того же файла с кодом, то парзер тупит секунд 5, вешая всю ИДЕ при этом намертво, при каждом открытии этого файла (навигации через/в этот файл), при добавлении новых строк, и при сохранении файла. Не долго, но достает ужасно.
Пока вот такие вот минусы нашел за 4 года работы с ним.

Дебаг работает с AVR микрушами, с ARM микрушами через SEGGER J-Link. Другие не пробовал просто.
Ну и под виндой тоже работает дебажинг нормально.
0
Если в проекте есть заголовочный файл, но нет того же файла с кодом, то парзер тупит секунд 5, вешая всю ИДЕ при этом намертво
Надо попробовать. Ни разу не встречал такого.
Были висяки, но я уже упоминал — из-за конфликтов GCC тулчейнов.
Кстати, напомнили: ещщё одна мегафича — Swap header/source.
То есть, колупаясь в одном, можно одним щелчком вызвать парный, не рыская по деревьям проекта и туче вкладок.

Вообще, большое спасибо всем откликнувшимся, в свободное время подпилю текст. Может, видюшек добавлю для наглядности.
Тяжело выдать на-гора шедевр, урывками по 10 минут добавляя абзацы между работой. Вроде кажется, писал много, а большую часть упустил.
0
Если в проекте есть заголовочный файл, но нет того же файла с кодом, то парзер тупит секунд 5, вешая всю ИДЕ при этом намертвоНадо попробовать.
Ни разу не встречал такого.
Я вроде малость выловил закономерность этого — когда есть несколько проектов, одновременно открытых, которые используют общие файлы, и если это заголовочные файлы, да без сорсников, да лежат еще вне папок проектов, а где то в другой папке, которая находится малость выше уровня папок проекта, то… тогда это и случается. Наверное. :)
Если интересно, я тут про это отписался: forums.codeblocks.org/index.php?topic=16178
0
Я MSP430 отлаживал в нём через gdb сервер mspdebug. Вполне неплохо работает.
0
Немного подрихтовал, как смог.
Ну и to be continued, надеюсь.
0
Это хорошо. Статья стала как-то лучше читаться :)
*Зануда* Только вот с «не просто» в топике я всё ранно не согласен
0
*Зануда* Только вот с «не просто» в топике я всё ранно не согласен
Точно.
0
Это маркетинговая фишка :)
0
MathLab
Matlab же. Сокращение от Matrix, а вовсе не Mathematics.
0
  • avatar
  • Vga
  • 01 июня 2012, 22:40
Ну поставил СВ!- чтоб как все! А то работаю на Programmer’s notepad 2 =http://www.pnotepad.org/, который никто в упор не видит однако он вроде бы имеет всё- 1) и упомянутую выше возможность поставить курсор в любое место, независимо есть там текст или нет 2) и LinePadding- регулировать межстрочный интервал что резко улучшает читаемость текста 3) и разные подсветки разных типов комментариев 4) и хер его знает чего у него нет! Работаю AVR/WINAVR и теперь ищу в СВ фишки чтоб оправдать его существование на моем компе. Эклипс тоже есть но не нашел преимуществ. Приложения для ПК (простые) пишу на лазарусе года 3- все устраивает и ИДЕ неслабая (отладкой не пользуюсь)
0
Эклипс тоже есть но не нашел преимуществ.
Это пока проекты простые. Как только проект становится чуть сложнее, без нормальной навигации по коду писать что-либо становится существенно неудобнее. Ноутпад, как не сложно догадаться, нормальной навигации обеспечить не может.

P.S. активное обсуждение фишек редактора — один из признаков слабости IDE как IDE, поскольку главное в IDE именно навигация по коду (даже рефакторинг всего лишь на втором месте после нее), а не подсветка синтаксисва или возможность писать за концом строки.
0
активное обсуждение фишек редактора — один из признаков слабости IDE как IDE
Или наоборот, если навигатор во всех вариантах хорош и различия только в редакторе) Но это редкость.
В C::B навигатор есть, и довольно неплохой — когда работает.
0
нашел таки фишку- открывает файл со свернутыми функциями и комментариями- дуже удобно. Похоже пересяду на СВ
0
Подобная фича чуть ли не единственное, что меня здорово раздражает в дефолтных настройках эклипса и я ее сразу же отключаю.
0
Вот еще одна mini-ide Softomato. Оптимизировано для экранов ноутбуков. Пока бетка. yadi.sk/d/GbPB4rsxeXQ2z Страничку под нее пока не делал.
0
На чем основано? Скрин бы хоть привел и все такое.
0
Основано на видении оптимального редактора кода :) Взял все лучшее из многих редакторов и написал с нуля за новогодние праздники 2015 г., так как ждать любимых фич в других редакторах оказалось ну очень долго. Она настолько мелкая и быстрая, что ее проще поставить и самому посмотреть, чем скрины делать. А по скрину тоже много не скажешь. Максимум места под код не в ущерб навигации. Большинство команд через горячие клавиши.
0
Какова функционаьность? Открытие исходного кода планируется?
На чем написано? В качестве редактора — сцинтилла?
0
Навигация по функциям, переменным с многословным фильтром поиска, поиск слова по дабл-клику, быстрое переключение между проектами, автодополнение (поддерживает несколько фрагментов в любой последовательности), шаблоны кода, синхронизация фрагментов кода в разных проектах, анализ вызовов функций, вход и выход из функции при установке курсора на названии функции, быстрое переключение между h и с файлами по F11, экспорт импорт натроек редактора и цветовой схемы в файл, может еще что-то забыл, фичи постепенно добавляю по мере надобности. Насчет открытия кода не размышлял, чего там открывать-то тысяч 5 строк. Написана на CodeTyphon. На базе SynEdit.
0
Чет по описанию довольно круто, для написанного с нуля за новогодние праздники размером всего в 5kloc. Вот теперь мне хочется на код взглянуть)
Написана на CodeTyphon. На базе SynEdit.
Угу, уже вижу, что лазарь — а значит, SynEdit (раз scintilla.dll рядом не валяется). Ну и вижу сам синэдит в ресурсе формы)
0
Не лучше ли топик про среду написать? Со скринами, кратким описанием. Там можно будет нормально обсудить программу.
0
0
Имеет будущее только то что будет работать на Android
Эта IDE будущего не имеет.
-2
Лучше на симбиан.
+2
Полагаю, мировому рынку хватит и пяти компьютеров.
Thomas J. Watson, председатель правления IBM, 1948 г.

Нет никаких причин иметь компьютер в каждом доме.
Ken Olson, президент Digital Equipment Corporation, 1977 г.

640 Кб должно хватить для любых задач.
Bill Gates, 1981 г.

Имеет будущее только то что будет работать на Android. Эта IDE будущего не имеет.
selevo о CodeBlocks, we.ee, 2015 г.

P.S. Это шутка, просто ты уж очень категоричен =)
+2
я не успел дописать
в нынешней виде этой IDE и форме
тоесть во времена тотального перехода на ARM который windows не потянет
переход на android дело нескольких лет.
И если эта IDE не будет иметь свою ипостась на этой платформе то будущее её призрачно тем более без отладки.
-2
переход на android дело нескольких лет.

А зачем android на десктопе, если есть нормальный «десктопный» Linux (в т. ч. и готовые дистрибутивы для АРМ) с кучей готового софта?

Да и windows тоже постепенно двигается в сторону отличных от Intel архитектур.

Какой смысл от android на десктопе?

Большинству людей вообще плевать на ОС, им нужны приложения, в которых они работают. Например (актуально для данного ресурса) CAD-системы. Какие CAD-системы есть для android?
+3
Да и с продолжением менее бредовым не стало.
0
Фееричнейший бред.
+1
Всё верно, сейчас время готовых решений
И…
Никто не будет ковыряться в линуксе (отщепенцев не считаю)
google — предложил готовое (рабочее) решение и выиграл.
Время такое — некогда всем :)
0
Хороший наброс
+1
Вы это. Не увлекайтесь теми веществами что принимаете. Или хоть перерыв побольше делайте.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.