Programming
17 January 2012

Ещё одна среда разработки. Объединение проектирования и программирования в один процесс

From Sandbox
Имея опыт программирования свыше 10 лет, я начинаю удивляться: «почему до сих пор не сделали удобную среду разработки для программистов?». Я пользовался многими средами и во всех них есть несколько недостатков. Они работают с текстом, т.к. ориентированы на язык программирования. В них неудобно проектировать. Система контроля версий текстовых исходников никуда не годится.

Я хочу это исправить. Я не ставлю своей целью сделать универсальную среду, но кое-что попытаюсь. Возможно я просто ленивый или не умею программировать. Возможно шаблоны STL, QT это то что мне нужно? Может просто начать программировать на функциональных языках? Если вы увидите, что моя идея — бред, и я иду в неправильном направлении, скажите мне об этом.

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

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

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

Огорчает навигация по исходным текстам программы.

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

Я не нашёл среды программирования, которая удовлетворила бы меня на 100%, поэтому
хочу спросить у сообщества: “может я плохо искал или не там”? Поэтому я неспешно пишу свою.
Ниже будет список хотелок с примерами на русифицированном С:

Не читайте первый пункт сразу. Вы поймёте о чём речь из следующих пунктов или из комментариев.
1. Возможность писать программу на русском(среда не будет требовать писать обязательно на русском, но возможность должна быть);
целый Возраст ученика = 10;


2. Абстрагирование от понятия unit / модуль / файл. Например для написания программы требуется класс КЛАСС. Мне этой информации должно быть достаточно. Не хочется вспоминать в каком модуле класс находится и как правильно его подключать(#include …, #import …, и т.д.);

2.1. Следствие из пункта 2. Компилировать нужно только те функции, которые менялись, т.е. уменьшение времени на компиляцию.

3. Нормальный поиск. Не хочу искать отдельные слова(я же не писатель). Хочу поиск с указанием типа искомого объекта: функция, переменная, тип; поиск мест, где переменной присваивается значение; поиск мест, где переменная используется;

4. Работа с классами должна быть похожа на работу с файлами, как в менеджерах TotalCommander, Far, т.е. удаление, перенос, переименование, создание должны выполняться одной клавишей;

5. Автоподстановка слов для имён переменных, классов, типов из словаря;

6. Отладка отдельно взятой функции или куска кода;

7. “Сладкий синтаксис”. Хочется таких вещей:
целый Длина = “Длинный длинный текст, длину которого не рекомендуется вставлять постоянным числом”.длина();

целый Ч = 127; целый Количество цифр = Ч.строка().длина();
строка Имя = Запрос к БД("SELECT Name FROM People WHERE Id=Идентификатор"); //здесь Идентификатор - целочисленная переменная


логический Только для чтения = Истина; Только для чтения.Инвертировать(); // переменная Только для чтения меняет своё значение на противоположное

Печатать("Имя ученика: Имя\t Возрат ученика: Возраст\n"); //где Имя и Возраст соответственно строковая и целочисленная переменные

дробный Пи = 3.14; целый Ц = Пи.целая(); целый Д = Пи.дробная();
и т.д.;

8. Удобная работа с макросами отладки, кроссплатформенности. Т.е. если в проекте не объявлено #define DEBUG, то я не хочу видеть куски отладочного кода. Или если я пишу программу для Windows, то я объявляю в проекте #define WIN и больше не вижу кода для Linux;

9. Комментарии хочется видеть в виде маленьких флажков или ещё каких-то картинок, щелчок по которым бы раскрывал комментарий;

10. Больное место: стиль. У каждого программиста, работающего с проектом, программа должна выглядеть так, как нравится программисту. Я не должен думать об отступах и пробелах. Я хочу настроить стиль один раз и не думать больше об этом;

11. Контроль версий. Не хочу видеть фразы: удалена 150 строка. Строка 1 перемещена на 5. Добавлено: “int a = 0;”. Хочу видеть фразы: добавлена функция такая-то, добавлена переменная такая-то, такой-то тип переименован в сякой и т.д.;

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

Добавлено:
13. Переменное число параметров в функции(привет С) и задание значений любых параметров функции по-умолчанию, а не только последних(привет QuickBasic).

Подскажите, где есть такая среда разработки?

P.S. Мне нужна среда для себя. Никого переучивать не хочу. И парсера в ней не будет.

-28
1.7k 7
Comments 230