singlepost

Я пишу среду разработки. << На главную или назад  

А я пишу среду разработки уже почти два года, еще два года до этого занимался разработкой другого подобного продукта. Конечно параллельно я сделал не одну программу (в том числе на этой среде), и просто бездельничал.

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

Программа содержит в себе:
* Проработанный, мощный и простой в мире набор объектов для
быстрого построения учетных программ
Отдалено похожий на Access, Dbase, Clarion и очень
отдаленно на 1C, Delphi, С#
* Красивый и максимально простой интерфейс
+ Полностью на скинах (кроме скролл-бара, руки не добрались)
* Транслятор SQL диалектов.
Для обеспечения переносимости программ между любыми
SQL-серверами (возможна также работа с сервером имеющим
язык запросов отличный от SQL). И имеющий одно понятное и
простое дополнение к стандартному синтаксису SQL
select customer.filial.town.name, code from orders
сейчас поддерживается MySQL, MySQL Emb, MSSQL, Access
* Редактор SQL-запросов и исходного кода
С фоновой проверкой и подсказкой уровня MS Visual Studio.
* Редактор диалогов (по моему единственный Wysiwyg)
Позволяющий редактировать диалоги с
использованием масштабирования, и редактировать все
одном щелчком.
Имеющий вместо списка свойств, панель форматирования
аналогичную MS Word
* Редактор отчетов
Бендовый как в Access
* Компиляторы PASCAL, JAVA, BASIC (немного упрощенные)
Компилируют в байт-код, который интерпритируется
Либо в машинный код, который записывается DLL.
* Набор утилит
Анализатор запросов, ER-диаграммы
Многомерный и графический анализ,
Централизованное обновление, Архивирование баз данных
Перенос баз данных между серверами, орфография…
* Встроенная локальная однопользовательская база данных SQL
* Отладчик
* Транслятор языка хранимых процедур и триггеров

60 ответов в теме “Я пишу среду разработки.”

  1. 44
    Deltd Deltd ответил:

    // www . vinx . ho . ua / demo.rar
    1 Мб

    Для запуска потребуется:
    - MySQL 5.0+
    - libmysql.dll на локальном компьютере.

    1) Запускаем EasyControl.exe
    2) В появившемся списке нажимаем правую кнопку
    3) Нажимаем ВОССТАНОВИТЬ БАЗЫ ДАННЫХ
    4) Выбираем файл Демо_2008_11_05.database_backup
    5) Тип базы – MySQL, остальное понятно
    6) Запускаем базу, нажимаем ФАЙЛ/РЕДАКТОР
    7) В списке ошибок 4 пункта.
    7.1) Нажимаем на первый пункт (GoodReport)
    7.2) В левом верхнем списке курсор будет стоять на GoodReport. Нажимаем по нему правой кнопкой.
    7.3) Нажимаем на "Примерить на сервере"
    7.4) И так по кажой ошибке (несозданная вьюха)

    Дальше закрываем реждактор и смотрим программу.

    Открыть редактор на нужном модуле можно нажав на системное меню какого либо модуля (пикторгамма окна). Там будет команда "Открыть в редакторе"

    Видео ролик с примерами программирования на подходе.

    //vkontakte.ru/photos.php?act=show&id=-9132...

    SWAT почти букву в букву содрана с Delphi 7 (ради
    проверки совместимости).

    Любые комментарии приветствуются :)

  2. 43
    Deltd Deltd ответил:

    Нарисовал примеры.

    Добавления поля в существующую программу:
    //vkontakte.ru/photos.php?act=show&id=-4922...

    Добавление таблицы, и поле ссылающегося на эту таблицу.
    //vkontakte.ru/photos.php?act=show&id=-4922...

  3. 42
    Михаил Сергеевич ответил:

    аФФтару риспект огромный за терпение и труд… непросто такое одному писать…

  4. 41
    Дима Мироводин ответил:

    > Я надеюсь, что пользователи моей программы

    Для большего конструктива советую обратьться на SQL.ru в форум, раздел ERP.там кстати такие вот походы на завоевание рынка и свержения ненавистного гнета 1ц случаются регулярно. примерно раза 3-4 в год точно.

    ЗЫ еше один момент. не сисдите на 1-м месте много, т.к. когда автоматизируеш 1 узко спец-ю задачу, думаеш что спец. потом поднимаеш глаза – офигеть, а мир то уже на пару лет вперед ушел :)

    по поводу денег и программирования :

    в данном аспекте кошернее 1ц – 1700р в час,и безусловный лидер АБАП!

  5. 40
    Deltd Deltd ответил:

    Один человек не может знать все, темболее все мои мысли
    замкнуты на самой системе. Мне некогда тчательно изучать
    другие среды.

    Вот для этого я и собираюсь выпустить BETA-версию и долго
    разбирать отрицательные отзывы.

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

    А область применения – это автоматизация среднего бизнеса. Те кто зарабатывают деньги с помощью моей программы, я уверен будут более охоно платить за нее деньги.

    Но повторюсь, что это универсальная среда.
    На ней можно написать почти все.

  6. 39
    Deltd Deltd ответил:

    > Команда пишет на том, что лучше знает.

    Почти любая команда знает – SQL92, BASIC/PASCAL/JAVA, положительные
    отличия узнаются за день.

    > Ну дак все и используют фрайм ворки + кодят на том, на чем привыкли.

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

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

  7. 38
    Deltd Deltd ответил:

    > Пользоваться этим, хорошему программисту – извините но
    > охрененная деградация. Как в плане опыта, так и следствие
    > в плане денег.

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

    Выбор среды, в которой разработка программы займер больше времени, а её дальнейшее сопровождение бдет сложнее и дороже – это признак интеллекта?

    Или проявление интеллекта – это вствки на ассемблере?

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

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

    Не совсем так. "Определенный круг задач" этой программы гораздо шире специализорованных сред. Все бухгалтерские программы оперируют своими терминами и обьектами – план счетов, документы, справоники, проводки.

    Еще раз повторюсь – это некий аналог обычной IDE, в которой применен обычный язык программирования, и все инструменты для создания программы под рукой.

    Глобальное отличие от того же C# – на панели инструментов у вас всего 15 обьектов, у которых всего по 30 свойств. (У PageControl вообще 6)

  8. 37
    Deltd Deltd ответил:

    > Причем тут опен соурс. Кто вам что то бесплатно делать будет ???!!! > Студенту не интересны накладные и проводки!

    Студенту интересно получить 1000 рублей за работу.

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

    Например есть завод производящий разные металлоконструкции, программма управления производством там написана на Visual Basic примитивнейшими способами. Кое где без циклов, и комментарией больше в 10 чем кода. Программа выполняет все управляющие и расчетные функции, на входе задачи – на выходе задания и контоль выполнения задач.

    Но доработать её никто не берется.

  9. 36
    Дима Мироводин ответил:

    >Выбор среды, в которой разработка программы займер больше времени
    Команда пишет на том, что лучше знает.

    >Еще раз повторюсь – это некий аналог обычной IDE, в которой применен >обычный язык программирования, и все инструменты для создания
    >программы под рукой.

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

  10. 35
    Дима Мироводин ответил:

    > Дешевле в 10 раз программиста 1С, если рассматрвиать OpenSource.

    Причем тут опен соурс. Кто вам что то бесплатно делать будет ???!!!

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

  11. 34
    Deltd Deltd ответил:

    Дешевле в 10 раз программиста 1С, если рассматрвиать OpenSource.

    Программы на универсальных языках программирования редко бывают OpenSource – тут либо обращатсья к разработчикам, либо забыть.

    А по факту могу вспомнить больше 20 примеров программ с кодом больше 1 Мб, которые проще было переписать с нуля.

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

  12. 33
    Дима Мироводин ответил:

    эх…
    я вас понимаю, программисту это писать может и интересно.

    Пользоваться этим, хорошему программисту – извините но охрененная деградация. Как в плане опыта, так и следствие в плане денег.

    Внедренец или админ знающий T-SQL + любой ооп язык + генератор отчётов будет более предпочтителен, чем тот который знает только вашу систему.

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

  13. 32
    Дима Мироводин ответил:

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

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

  14. 31
    Deltd Deltd ответил:

    Главная проблема – это не написать все это одному, а написать теперь справку :)

  15. 30
    Deltd Deltd ответил:

    Я являюсь 1 из 3х человек входяих в подразделение СОФТ, некоторой фирмы. Основная деятельность фирмы – оптовая тоговля.

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

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

    Притом пишут они её уже несколько лет, и сейчас 50% кодирования, и гдето 5% мыслей в системе моих.

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

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

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

    А еще из людей использующих мою программу много моих старых клиентов, чьи программы я перевел на новую среду. Почти все счастливы, потому что получили Open Source на самом простом языке программистования обьемом 30 Кб. А так же кучу побочных возможностей.

    А 4 года назад, я принес на собеседование в эту фирму прообраз всех этих компонент.

    А началось это наверное в 98 году, когда я начал программировать на C++ под Windowsи собирать различные идеи в библиотеки.

  16. 29
    Deltd Deltd ответил:

    Хмм… сейчас отсортирую таблицу по полю PARENT, и искать по PARENTдвоичным поиском.

  17. 28
    Дима Мироводин ответил:

    >Но разрабатывают (дорабатывают мной написанные программы) на ней >уже больше 10 человек.

    А какого рода проекты? Специфика ? Прикладная область ?

    Эти 10 человек ваши подчиненные? Вы работаете в 1-й организации ?

  18. 27
    Deltd Deltd ответил:

    Вообще, вот локальное формирование дерева

    static vector<bool> mask;
    static MemoryData *to, *from;
    static char* to_ptr;
    static int tf, pkf, to_off;

    inline void moveRow(int p, int l) {
      char* f = from->data.begin() + from->recLen*p;
      *(int*)(to_ptr) = l;
      memcpy(to_ptr+to_off, f, from->recLen);
      memset(f, 0, from->recLen);
      to_ptr += to->recLen;
    }

    static void move(int c, int l) {
      for(int i=0; i<mask.size(); i++)
        if(!mask[i]) {
          if(from->getI(tf, i)==c) {
            int d = from->getI(pkf, i);        
            moveRow(i, l);
            mask[i]=1;
            move(d,l+1);
          }
        }
    }

    void DataviewX::executeTree(MemoryData& d, int _pkf, int _tf, bool hidden) {
      pkf = _pkf, tf = _tf;

      if(d.columns.size()==0) {
        d.resetAsTree();
        for(int i=1; i<sub->stack.size(); i++)
          d.addColumn(sub->stack[i]);
      }

      // Формирование аналогичного массива данных
      MemoryData mem;
      for(int i=3; i<d.columns.size(); i++) {
        AbstractDataView::Column& c = d.columns[i];
        mem.addColumn(c.dataType);
      }

      // Загрузка
      { Work wo("Выполнение запроса");
        low->execute(mem, 0, 0, hidden);
      }

      Work wo("Формирование дерева");

      // Выделение памяти
      mask.resize(mem.recordCount);
      memset(mask.begin(), 0, mask.size());
      d.append(mem.recordCount);
      to_ptr = d.data.begin();
      to_off = d.offsets[3];

      // Формирование дерева
      to = &d;
      from = &mem;
      move(0,0);

      // Удаление невлезших записей
      int total = (to_ptr-d.data.begin())/d.recLen;
      if(total<d.recordCount) d.remove(total, d.recordCount-total);
      d.fullChanged();
    }

  19. 26
    Дима Мироводин ответил:

    Не очень понял, у вас только 3 уровня вложенности что ли?

  20. 25
    Deltd Deltd ответил:

    Сохранение сложных форм происходит следущим образом.

    Форма может быть связана с какой либо таблицей (или вьюхой) базы
    данных (для формы может быть выбрана), тогда у формы появляется
    метод APPLY.

    Если на форме присутствуют таблицы (Grid), то они могут быть связыны
    с таблицами базы данных. При эьтом выбирается отношение связи
    OrderDetail.Header = Order.Code.

    При создании формы (вызове конструктора) необходимо указать код
    записи (первичный ключ) и режим работы (создание, удаление,
    копирование, изменение).

    Если имя обьекта размещенного на диалоге, совпадает и именем
    поля таблицы БД, то они заполняется из базы данных. Так-же
    и таблицы размещенные на форме.

    При вызове метода Apply, все поля, имя поторых совпадает с полей
    базы данных (обратный процесс), в зависимости от режима, попадают
    в запрос INSERT или UPDАTЕ.

    Если в таблице присутствет поле счетчик, то после выполнения INSERT
    в него помещается ID записи. При UPDАTЕ оно соответственно
    используется в WHERE.

    Тот же метод Apply, заполняет поля OrderDetail.Header полученным ID.

    Ну и все это выполняется в блоке TRANSACTION … END, что не позволяет
    другой программе видеть (или модифицировать) промежуточные изменения
    в базы данных.

    А так же, программа помещает сведения о блокировке нескольких записей в
    базу данных (создает флаг с определенным именем), а при закрытии
    диалога уничтожает это флаг. Другая программа программа подключенная
    к этой БД, при попытке создать этот флаг выведет сообщение – что этот
    документ (запись) редактируется.

  21. 24
    Deltd Deltd ответил:

    > Не очень понял, у вас только 3 уровня вложенности что ли?

    Нет, за одну итерацию проверятеся 3 уровня вложенности.
    Затем, следущие 3 уровня.
    (Я набрал запрос руками, он сильно упрощен).

    Но в общем рекурсивные запросы на серверах MySQL решаются наприсанием программы.

  22. 23
    Deltd Deltd ответил:

    К примеру, на моей программе написана управляющая программа для для интернет магазина. В инетрнет магазине для уменьшения нагрузки использутеся формат хранения дерева:

    0, Корень
    1, Папка 1
    2, Папка 1.1
    2, Папка 1.2
    1, Папка 2

    Да и сама система работает с многими таблицами в таком же виде, это позволяет развивать максимальную производительность.
    Вот пример из действующей программы (комментировать и оптимизировать лень)

    D := MakeTree((select code,parent,name from goodClasses),0,1);
    for i:=0 to D.Count-1 do
    s:=s+IntToStr(D[i].Code)+#1
    +IntToStr(D[i].Level)+#1
    +Replace(#10,'',D[i].Name)+#10
    res := ReadHttpFile(url+'/syncr.php?action=tree&pwd='+quoteurl(pwd), 'data='+quoteurl(data));
    if res<>'Done' then raise('Ошибка загрузки файла '#10+res);

    А функция MakeTree в зависимости от размера таблицы, формирует
    дерево либо хранимой процедурой на сервере, либо локально (это быстрее).

    Ваш же вопрос, про фильтрацию ветки дерева решщается таким образом
    Select Code,Parent,Name From Clients WHERE Code IN GetChildCodes(Parent)

    GetChildCodes – это хранимая процедура, работает по принципу

    D := [RootCode];
    LOOP
    D := (select code from table where parent in D or ifnull(parent.parent in D, 0=0) or ifnull(parent.parent.parent in D, 0=0));
    if D.Count=0 then break;
    Result := Result + D;
    END LOOP

  23. 22
    Дима Мироводин ответил:

    Идеи основные таковы:

    Распределенные приложения, асинхронность, сервисы, ORM. Вот пожалуй основные термины.

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

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

  24. 21
    Deltd Deltd ответил:

    Кстати мне было бы не то, что интересно.
    Я хочу что вы бы обьяснили, как по каким принципам должна работать подобная система 21-ого века?

    Если вы скажете что то дельное, я воплощу ваши идеи в цифре.

  25. 20
    Дима Мироводин ответил:

    Вот стандартный справочник древовидный. Задается в субд в таблице вида:

    ID, ParentID, Field1, Field2 …….

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

    Вторая задача сходу, которая опять же есть в 100% систем.

    Запись сложного документа в 1 транзации. Как решается у вас ?

    Пример есть главная таблица T1, и подчиненная T2. Алгоритм выглядит так:

    1. начать транзакцию.
    2. Добавить в T1 запись, получить Primary Key,
    3. Вставить запись в T2 используя полученный в пункте п2 Primary Key
    4. если все ок, Commit.

    Про все что связано с трансляцией запросов – а вы вообще про ORM читали ?

  26. 19
    Deltd Deltd ответил:

    1. На счёт SQL

    А по конкретнее?

    Вам никто не мешает работать без трансляции запросов.

    И ваш запрос не выполнится на MySQL, Firebird, JetDB – а это основные СУБД с которыми работает система.

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

    2. На счет программиста и 2-х звенной архитеркуры.

    Вы совсем не увидели системы.

    Я понимаю очень сложно что то понять, не имея ничего кроме нескольких картинок и общих слов.

    Эта среда является обычным прикладным языком программирования, похожим на Visual Basic, Delphi, C#, Access. Только в нее добавлены возможности позволяющие писать определенные программы существенно быстрее.
    А так-же убрано все, что может запутать и усложнить программу.

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

    Отличие от Delphi, С#, Visual Basic. Это таблицы, представляения и хранимые процедуды можно редактировать прямо в редакторе программы.

    Я на счет пытаются – народ вообще все пытается переписать. Да и все переписано. Я же предлагаю не очередной Access или Delphi, а инструмент для быстрой разработки и простого сопровождения у.а. программ.

    Еще раз повторюсь, в отличии от отдаленно похожих программ (Clarion и 1С например). Я использовал СТАНДАРТНЫЙ СИНТАКСИС языков программирования и SQL. И убрал все нодновзначности и лишние возможности. Например изменять положение обьектов на форме из программы нельзя, просто нет таких свойств.

    Я тут упомянул не раз 1С в основном, что бы подчернуть отличия. Человек знающий Delphi, Visual Basic, Clarion или C# сможет за день научится писать программы.

    ***

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

  27. 18
    Дима Мироводин ответил:

    1. На счёт SQL

    самый простой пример, Есть во всех системах учета – раскручивание древовидного справочника. Как решается в SQL на вашей системе?

    2. На счёт любой программис.

    Я не вижу реальных плюсов данной системы именно для программиста.

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

    Я уже не 1-й год программирую, и подобные системы пытается написатьлюбой, кто в программировании > 2х лет.

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

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

  28. 17
    Deltd Deltd ответил:

    Поправлю все основные баги и мелкие недоработки (например отсутствие интерфейса с программиы обнолвения) – потом мне понадобится конструктивная критика, что бы сделать конфетку.

  29. 16
    Deltd Deltd ответил:

    Какую демку написать на этой программе для примера?

  30. 15
    Deltd Deltd ответил:

    Исходники весят 10 Мб… не считая единственной бибилиотеки, которую я использую CxImage.

    И даже немного обидно, что CxImage весит 3 Мб :)

  31. 14
    Deltd Deltd ответил:

    > Дима Мироводин:
    > Т.к. в этом будет разбираться только автор.

    Там все очень просто. Я надеюсь, что ею сможет пользоваться любой программист.

    > Жека jkff Кирпичев:
    > Один только "Транслятор SQL диалектов", если он не
    > примитивный, *правильно* написать – совсем нелегко

    К счастью он примитивнейший, я убрал все то, что не требуется для поставленных перед ним целей. Я бы мог нагородить лес, как в Оракле,
    но 99% запросов можно написать в простой форме. Если же очень хочется использовать всю мощь SQL, то с помощью функцй DirectQuery(string) : Dataset, программист может выполнять запросы на языке сервера. Соответственно при этом теряется перенсоимость.

    Вот синтсксис встроенного языка:

    Простой запрос:
    SELECT var {,var}

    Запрос из таблицы:
    SELECT [DISTINCT] var {,var} FROM TABLE [WHERE var]

    Запрос из таблицы с группировкой:
    SELECT [DISTINCT] gvar {,gvar} FROM TABLE [WHERE var] GROUP BY var {,var} [HAVIG BY gvar]

    var – это выражение типа (var+var)-var/var+1+'a'+true+null
    var – может быть поле таблицы CODE
    var – может быть fn([var {,var}]), cast(var as type), case…
    var – может быть реляцией CLIENT.CITY.NAME
    var – может быть функцией

    gvar – это выражение типа (gvar+gvar)-gvar/gvar+1+'a'+true+null
    gvar – может быть SUM(var), AVG(var)…
    gvar – может быть fn([gvar {,gvar}]), cast(gvar as type), case…
    gvar – может быть запрос использвоанный в GROUP BY

    Эта запросы могут быть обьеденены

    <SELECT> { UNION ALL <SELECT> } [ORDER BY var [DESC] {, var [DESC]]

    Так же поддерживаются

    UPDАTЕ table SET field=var {,field=var} WHERE var
    DELЕTЕ FROM table WHERE var
    INSERT INTO table(field {,field} ) values ( var {,var} )

    Служебные слова:
    "select","as","from","where","group","by","order","desc","having",
    "union","all","update", "set","delete","insert","into",
    "values","and","or","not","xor","like","in","sum","avg",
    "min","max","count","cast","in","integer","string","when",
    "datetime","float","currency","case","when","then","else",
    "end","ifnull","is","null"

  32. 13
    Deltd Deltd ответил:

    Дебагер работает пока в общих чертах, не до него.
    Пока работает только с байт-кодом.

    Сборка мусора на подсчете ссылок… Тут сложнее все:

    A := CreateObject('Record'); // Это массив, с закосом под класс
    B := CreateObject('Record');
    A.X = B;
    B.X = A;
    A := null;
    B := null;

    Оба обьекта указывают друг на друга, при этом от них никакого толка.

  33. 12
    Жека Кирпичев ответил:

    Нихера ж себе, сколько оно всего умеет. Если оно действительно все это умеет, то выражаю свое большое уважение. Если оно это действительно умеет удобно, то верю в коммерческий успех.
    Но я не представляю, как столько написать и отладить с нуля за 2 года. Один только "Транслятор SQL диалектов", если он не примитивный, *правильно* написать – совсем нелегко. Как он странслирует оракловый select ntile(salary) over (partition by dept order by salary) from employee в код для mysql?
    Я уж не говорю про сборку мусора и дебаггер. Сборка мусора на подсчете ссылок или похитрее? Дебаггер работает с откомпилированными в машинный код программами?

    Сколько исходники весят, если не секрет? :)

  34. 11
    Дима Мироводин ответил:

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

    Хотя опыт вы безусловно получили.

  35. 10
    Евгений Гаврин ответил:

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

  36. 9
    Deltd Deltd ответил:

    Остальные языки (JAVA (или С#, только он (r)), BASIC) отличаются лишь синтаксисом, возможности те же.

    Еще я упростил SQL 92, выкинув оттуда JOIN.

    Если какое то поле связано (реляцией, отношением) в другой талицей, то можно писать SELECT CLIENT.NAME FROM ORDERS, транслятор сам расширит до SELECT C.NAME FROM ORDERS O LEFT OUTER JOIN CLIENTS C ON C.CODE=O.CLIENTS. Только попробуйте сказать мне, что мой способ не проще.

    Ну и типов в SQL столько же, сколько и в Паскале. Только есть две разновидности строк STRING и MEMO. STRING имеет ограниченную длинну, а MEMO не может учавствовать в арифметических операциях при выполнении запроса.

  37. 8
    Deltd Deltd ответил:

    Опен сорса не будет, я планирую немного денег заработать на программе. А вот многие (все мной написанные) программы написанные на най, будут OpenSource.

    Я приследовал две цели при написании этой среды:

    1) На ней будут писаться программы для накопления данных и
    последующих расчетах на их основе. (Я еще анализ не заскриншотил, будет похоже на Statistica только проще.)

    2) Что бы программа была как можно проще. Что бы программу можно было написать как можно меньшими способами, что бы программист не тратил времени на интерфейс. Я использовал самые популярные языки программирования, и максимально их упростил. Я надеюсь, это позволит проще поддерживать чужие проекты.

    ***

    В текущей версии я поодерживаю в работоспособном варианте Pascal (точнее Delphi, только он (R)), который упростил следующим образом:

    Набор типов:
    boolean, byte, char, integer, float, string, datetime, currency, variant

    Нет ассемблера

    Нет заголовков (IMPLEMENTATION, INTERFACE, UNIT, USES…)

    Нет фишек дельфи (FILE, PACKED, THREADVAR, OBJECT)

    Функции не требуют перварительного описания. (FORWARD)

    Статичесских строк нет (STRING[1]).

    Указателей нет, для обьектов вместо NIL испольузется NULL (NIL)

    Нет классов ошибок. Используется RAISE со строкой ''. (Exception)

    Нет вложенных функций в функции

    Нет (непосредствено) описания классов.

    Каждый тодуль (кроме GLOBAL) является классом, а
    вложенных классов нет. Есть структуры, которые не
    могут содержать методов.

    Нет процедурных типов (OF OBJECT, ASSIGNED)
    Обьекты на форме связываются жестко по имени.

    Нельзя выводить своих собственных типов данных (type my = integer)

    Все массивы начинаются с нуля.

    И доработал:

    Добавил сборку мусора

    Все типы данных (втч ARRAY OF, RECORD) можно привести к VARIANT

    Добавил свойства по умолчанию, как в Visual Basic
    Edit1.Text = 'A'
    Edit1 = 'A'

    Добавил встроенный SQL
    D : Dataset;
    D := (select code,name from clients)

    N : string;
    C : integer;
    N := (single name from clients where code=:C);

    Добавил блок TRANSACTION END. Если внутри происходит исключение, БД изменения откатывается назад и во время действия блока TRANSACTION база данных _как_бы_ переходит в монопольный режим.

    TRANSACTION
    A := (single max(code) from clients);
    B := (single max(code) from clients);
    IF A<>B THEN Raise('Никогда не выполнится');
    END

    Еще добавил класс DАТАSET OF X, почти полностью аналогичный ARRAY OF X. Как и у массивов OF – это аналог шаблонов С++ (ARRAY OF INTEGER = vector<int>), но пользвоатель не может описывать собственные шаблоны, так как это лишь усложнит программу.

  38. 7
    Евгений Гаврин ответил:

    В общем ждем блога с первой бетой =)
    А еще лучше опен сорсный проект )

  39. 6
    Коля Зверев ответил:

    Скрины, конечно, хорошо, но хочется "пощупать" ))
    Выложи запускаемые (exe) демки, если не влом…

  40. 5
    Дэ По ответил:

    Круто!
    Предлагаю выдернуть отрисовку ГУИ в отдельную самостоятельную библиотеку, аля Qt, и продавать.

  41. 4
    Евгений Гаврин ответил:

    Интересная идея. Хотелось бы по ближе глянуть.

  42. 3
    Евгений Гаврин ответил:

    Под себя писали?

    Скрины поглядел – круто.

  43. 2
    Deltd Deltd ответил:

    Тут я не сказал, что сама среда нужна для работы программы.

    Я собираюсь зарабатывать на продаже самой среды клиентам (подобно 1С, или фирмам продающим SQL-сервера), а программистам раздавать их бесплатно, а так же помогать им и дорабаывать под них среду.

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

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

  44. 1
    Deltd Deltd ответил:

    Я тут cкриншотов набросал, кому интересно:
    //vkontakte.ru/photos.php?gid=4922029

    Справкой так и не занимался, есть только наброски годовалой давности. :(

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.