Я бы сказал, что ограниченный набор функций всегда зависит от языка.Например, многие языки будут программироваться с использованием цикла code-compile-run-debug (например, C, C ++, Java), где другие будут более интерактивными, например, Python и Common Lisp.
Так, например, в первой группе я бы хотел интегрированную среду разработки, способную запускать компилятор (связывать свои выходные сообщения с моим кодом), запускать созданные двоичные файлы, ставить точки останова на код ипроверять следы стека на перерывах.(Eclipse является примером такой IDE)
Для второй группы я бы предпочел использовать IDE на основе Read-Eval-Print-Loop, которая позволяет мне оценивать биты кода на самом артефакте кода, проверяя переменныеи вообще поддерживая тесную связь между артефактами кода и состоянием памяти времени выполнения - динамически.(Emacs + SLIME является примером такой IDE).
Это ни в коем случае не полный охват групп / семейств языков программирования;Я просто хотел сказать, что среда IDE должна обеспечивать тесную связь с конкретным стилем разработки PL.Некоторые другие функции, такие как завершение кода и подсветка синтаксиса, являются слишком общими, и, таким образом, они попали в те текстовые редакторы, ориентированные на программистов.Но «ID» в IDE предполагает интегрированную разработку, поэтому он должен охватывать все, что вам нужно делать, не прибегая к дополнительным инструментам, таким как терминал (или, по крайней мере, этот внешний набор инструментов должен быть сведен к минимуму!).
О конкретных функциях, таких как упомянутые визуальные редакторы / редакторы диаграмм, они имеют смысл, если вы используете их для разработки своей программы.Так что редакторы пользовательского интерфейса имеют смысл для IDE только для подмножества всех языков программирования.Но все становится немного сложнее определить, если учесть редакторы карт разума и «виртуальные» доски / скетчбуки.Очевидно, что вы можете использовать его для разработки продукта на любом PL, но это не так очевидно (по крайней мере для меня), что IDE должна оказывать им поддержку ... То же самое относится и к поддержке совместной работы.Так что такого рода функции, несомненно, обогащают IDE, а также любой инструмент повышения производительности.Может быть, это признак того, что это должно быть предоставлено операционной системой?:) Я считаю, что понятие «Комплексная разработка» охватывает весь цикл от входного артефакта (ввод от программиста) до конечного двоичного файла.Это означает, что такие вещи, как sratchpads, не будут важной частью IDE, но, вероятно, будет редактор UML-диаграмм (если из него можно вывести код).IDE, см., Например, this .
(Из любопытства, как бы вы выбрали «правильный» ответ для вас? Это больше похоже на дискуссионную рассылку, может быть, вики,не так сильно, как тема вопросов и ответов)