На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 224 225 [226] 227 228 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата Мяут-Настоящий @
    Кстати korvin еще N страниц назад предлагал реализовать что-то ORM-подобное на дельфи-сиплюсплюс.

    Удаленный вызов объектов? Или мэппинг структруры БД на объекты?
      Цитата Romkin @
      Или мэппинг структруры БД на объекты?

      Ога. А потом цепляешь что-нить вроде манифеста, а оно еще и формочками плюется
        Цитата Мяут-Настоящий @
        Ога. А потом цепляешь что-нить вроде манифеста, а оно еще и формочками плюется

        Для Delphi это не так уж нужно, средства работы с БД развиты, причем немного с другим подходом, код не генерируется.
        Не слишком ли много писать?
          Цитата Romkin @
          Не слишком ли много писать?

          Ну для задания наверное хватило бы Proof-of-concept =)
          Цитата Romkin @
          Для Delphi это не так уж нужно, средства работы с БД развиты, причем немного с другим подходом, код не генерируется.

          Что значит не так уж нужно? Это позволило бы отделить логику приложения от кода (формочек и хранилища).

          Ну тут правда другой момент интересен - если выстроить ряд C - C++ - Java, можно видеть как происходит переход от чисто системного языка к чисто прикладному (собственно ORM и формочкагенерилка - это все я у явистов узнал). Куда из этого метит Delphi - мне лично непонятно =)

          Добавлено
          Цитата Romkin @
          Для Delphi это не так уж нужно

          Формочко-генерилка не нужна? Наверное рисовать на каждый чих новую формочку нравится, да? :D
            Почитал, врубился. Код не генерируется, объявляется только мэппинг.

            Добавлено
            Цитата Мяут-Настоящий @
            Формочко-генерилка не нужна? Наверное рисовать на каждый чих новую формочку нравится, да?

            А зачем? Брр.
            1. Я могу нарисовать фрейм как мне хочется и совать его везде. При необходимости вполне нормально наследуется.
            2. Этот фрейм я могу сохранить в виде простого текста и считать.
            А если генерить автоматом, то как? Задавать правила где что лежит? Так оно есть.
            3. Я люблю data-aware компоненты.

            Цитата Мяут-Настоящий @
            Что значит не так уж нужно? Это позволило бы отделить логику приложения от кода (формочек и хранилища).

            Ну тут правда другой момент интересен - если выстроить ряд C - C++ - Java, можно видеть как происходит переход от чисто системного языка к чисто прикладному (собственно ORM и формочкагенерилка - это все я у явистов узнал). Куда из этого метит Delphi - мне лично непонятно =)

            Логика и так отделяется, при наличии модуля данных, визуаьного проектироания таблиц и дата-аваре контролов мэппинг данных на объекты, потом мэппинг этих объектов на контролы формы а потом обратно выглядит нудно.
            Сейчас делается просто: объект данных - это модуль данных, потомок. У него есть свойства и методы. Строится визуально, запросы там тоже автоматом генерятся в рантайме если что. Он и выступает объектом данных. Это проще, чем выстраивать цепочку с объектами переноса данных. Еще можно учесть, что выдать таблицу в виде xml (или ее строку) - даже кода писать особо не надо.
            Добавляй к этому передачу объектов JSON, плюс RPC через tcp & http - и что еще нужно?

            Впрочем, замепить простой объект на табличку - это тоже быстро.
              Romkin, ну смотри. Есть xml-ина с описанием логики (условно). Из нее генерится как код работы с данными так и конечные формочки для юзеров.

              Идея кстати взята отсюда: http://www.ozon.ru/context/detail/id/5430638/
              Сообщение отредактировано: Мяут-Настоящий -
                Цитата Мяут-Настоящий @
                Romkin, ну смотри. Есть xml-ина с описанием логики (условно). Из нее генерится как код работы с данными так и конечные формочки для юзеров.

                Знаешь, я привык отделять описание интерфейса от описания данных. А тут все в одном.
                Вот вопрос: а контролы-то на форме как генерятся? То есть, как задается какой контрол, какие координаты и т.д.?
                Да и код я привык генерировать в дизайне.
                Вот, кстати, насчет форм:
                ExpandedWrap disabled
                  program FormLoad;
                   
                  uses
                    Forms,
                    FMain in 'FMain.pas' {frmMain},
                    FLoaded in 'FLoaded.pas' {frmCustom};
                   
                  {$R *.res}
                   
                  begin
                    Application.Initialize;
                    Application.MainFormOnTaskbar := True;
                    Application.CreateForm(TfrmMain, frmMain);
                    Application.Run;
                  end.

                ExpandedWrap disabled
                  unit FMain;
                   
                  interface
                   
                  uses
                    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
                    Dialogs, StdCtrls;
                   
                  type
                    TfrmMain = class(TForm)
                      edtDefFile: TEdit;
                      btnGenForm: TButton;
                      procedure btnGenFormClick(Sender: TObject);
                      procedure FormShow(Sender: TObject);
                    private
                      { Private declarations }
                    public
                      { Public declarations }
                    end;
                   
                  var
                    frmMain: TfrmMain;
                   
                  implementation
                   
                  uses FLoaded;
                   
                  {$R *.dfm}
                   
                  procedure TfrmMain.btnGenFormClick(Sender: TObject);
                  var
                    frm: TComponent;
                    TextDFM, BinaryDFM: TStream;
                  begin
                    TextDFM := TFileStream.Create(edtDefFile.Text, fmOpenRead);
                    try
                      BinaryDFM := TMemoryStream.Create;
                      try
                        ObjectTextToBinary(TextDFM, BinaryDFM);
                        BinaryDFM.Position := 0;
                        frm := BinaryDFM.ReadComponent(nil);
                        Application.InsertComponent(frm);
                        (frm as TCustomForm).Show;
                      finally
                        BinaryDFM.Free;
                      end;
                    finally
                      TextDFM.Free;
                    end;
                  end;
                   
                  procedure TfrmMain.FormShow(Sender: TObject);
                  begin
                    edtDefFile.Text := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)))
                      + 'hello.dfm';
                  end;
                   
                  initialization
                    RegisterClass(TfrmCustom);
                  end.

                ExpandedWrap disabled
                  unit FLoaded;
                   
                  interface
                   
                  uses
                    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
                    Dialogs, ExtCtrls, StdCtrls;
                   
                  type
                    TfrmCustom = class(TForm)
                      procedure ButtonClick(Sender: TObject);
                    private
                      { Private declarations }
                    public
                      { Public declarations }
                    end;
                   
                  var
                    frmCustom: TfrmCustom;
                   
                  implementation
                   
                  {$R *.dfm}
                   
                  procedure TfrmCustom.ButtonClick(Sender: TObject);
                  begin
                    ShowMessage((Sender as TButton).Caption);
                  end;
                   
                  initialization
                    RegisterClasses([TLabel, TButton, TPanel]);
                  end.

                Файл hello.dfm:
                ExpandedWrap disabled
                  object frmCustom: TfrmCustom
                    Left = 0
                    Top = 0
                    Caption = 'Custom form'
                    ClientHeight = 110
                    ClientWidth = 271
                    Color = clBtnFace
                    Font.Charset = DEFAULT_CHARSET
                    Font.Color = clWindowText
                    Font.Height = -11
                    Font.Name = 'Tahoma'
                    Font.Style = []
                    OldCreateOrder = False
                    PixelsPerInch = 96
                    TextHeight = 13
                    object Label1: TLabel
                      Left = 20
                      Top = 8
                      Width = 52
                      Height = 13
                      Caption = 'Hello world'
                    end
                    object Panel1: TPanel
                      Left = 0
                      Top = 69
                      Width = 271
                      Height = 41
                      Align = alBottom
                      TabOrder = 0
                      object Button1: TButton
                        Left = 12
                        Top = 8
                        Width = 75
                        Height = 25
                        Caption = 'OK'
                        TabOrder = 0
                        OnClick = ButtonClick
                      end
                    end
                  end


                Хочешь экзешник вложу поиграться?
                  Цитата Romkin @
                  Для Delphi это не так уж нужно, средства работы с БД развиты

                  ой ли? как DBGrid научить не перемещать курсор позиции при прокрутке? =)
                  какой компонент-модель (Table/Query) умеет отдавать набор (список/массив) объектов, представляющих записи?
                  как насчет вменяемых открытых драйверов для PostgreSQL, Sqlite?

                  (сторонние компоненты не предлагать -- дорого)

                  Добавлено
                  Цитата Romkin @
                  Да и код я привык генерировать в дизайне.

                  дерьмовый подход, кстати
                    Цитата korvin @
                    ой ли? как DBGrid научить не перемещать курсор позиции при прокрутке? =)
                    какой компонент-модель (Table/Query) умеет отдавать набор (список/массив) объектов, представляющих записи?
                    как насчет вменяемых открытых драйверов для PostgreSQL, Sqlite?

                    (сторонние компоненты не предлагать -- дорого)

                    Ну, во-первых, DBGrid - это не "средство работы с БД". Это просто компонент отображения таблицы, не более. Во-вторых, есть сторонние и бесплатные, jvcl посмотри.
                    В-третьих, зачем тебе список-массив объектов, представляющих записи? С какой целью? Готового компонента нет и быть не может, поскольку отображение объекта на запись - крайне тупо. Способов отображения объекта на БД много, в каждом случае ты создаешь объект и мэппишь его на таблицы. Индивидуально. Трудоемкость примерно та же, что xml описание сделать.
                    Открытые драйвера? Почему именно открытые надо, и именно под эти БД? SQLite вообще надо выкинуть за ненадобностью, Postgre - сядь и напиши, спецификация есть.

                    Добавлено
                    Цитата korvin @
                    как насчет вменяемых открытых драйверов для PostgreSQL, Sqlite?

                    Postgre Ole DB - вот бери и пользуй :)
                      Цитата Romkin @
                      поскольку отображение объекта на запись - крайне тупо

                      вовсе нет, это очень удобно, так реализовано в Rails, например.

                      Добавлено
                      Цитата Romkin @
                      Postgre Ole DB - вот бери и пользуй :)

                      Цитата
                      This is PostgreSQL OLE DB Provider project. OLE DB is the default ADO driver technology, and is used by many programs
                      ...
                      PgOleDb 1.0.0.20 April 17, 2006

                      нет, спасибо, я так и просто через ODBC могу

                      хотел заюзать ZEOSlib, но не понял как его устанавливать.

                      Добавлено
                      Цитата Romkin @
                      SQLite вообще надо выкинуть за ненадобностью

                      весьма громогласное заявление, учитывая, что многие OpenSource-проеграммы его используют в качестве встроенной БД

                      Цитата Romkin @
                      Postgre - сядь и напиши, спецификация есть.

                      у меня нет на это времени, это не входит в мои обязанности, в отличие от разработчиков "развитых средств работы с БД". рекомендую, кстати, посмотреть NeXTSTEP 3.0 demo, последние минут десять =)
                        Цитата korvin @
                        вовсе нет, это очень удобно, так реализовано в Rails, например.

                        Да? Может, там и удобно. И в чем разница? Как в Rails?

                        Цитата korvin @
                        весьма громогласное заявление, учитывая, что многие OpenSource-проеграммы его используют в качестве встроенной БД

                        Вот пусть и используют. Я использую в качестве встроенной Firebird.

                        Цитата korvin @
                        у меня нет на это времени, это не входит в мои обязанности, в отличие от разработчиков "развитых средств работы с БД".

                        Ну да, ну да. То есть ты считаешь, что в Эмбаркадеро должны сесть и написать нативный драйвер для Postgre? С чего вдруг? Они пишут нативные драйвера для распространенных БД, таких как Oracle, MSSQL, DB2, Firebird, MySQL...
                        Для остального - плиз, есть работа с ADO и ODBC, задача разработчиков БД написать драйвера.
                        Или ты считаешь, что MS, например, вот должна кинуться и написать .NET провайдеры для всех БД?
                          Цитата Romkin @
                          То есть ты считаешь, что в Эмбаркадеро должны сесть и написать нативный драйвер для Postgre?

                          А что бесплатные библиотеки предоставляет только Эмбаркадеро? У Delphi нет развитой экосистемы?
                            Цитата Romkin @
                            поскольку отображение объекта на запись - крайне тупо.

                            :blink: А как же ActiveRecord?

                            Добавлено
                            Цитата Romkin @
                            Ну да, ну да. То есть ты считаешь, что в Эмбаркадеро должны сесть и написать нативный драйвер для Postgre? С чего вдруг? Они пишут нативные драйвера для распространенных БД, таких как Oracle, MSSQL, DB2, Firebird, MySQL...

                            :D С каких пор postgresql стал нераспространенной СУБД?

                            Добавлено
                            Romkin, а как же(или даже "где же") сообщество? Вообще ничего не пишет?
                              Цитата Мяут-Настоящий @
                              А что бесплатные библиотеки предоставляет только Эмбаркадеро? У Delphi нет развитой экосистемы?

                              Цитата korvin @
                              у меня нет на это времени, это не входит в мои обязанности, в отличие от разработчиков "развитых средств работы с БД".

                              :whistle:
                              Это к этому. В Delphi реализована очень неплохая структура, когда все идет через единый набор объектов, независимо от вида доступа: ADO, или нативно, или ODBC или DBX. Какие проблемы-то? Драйвер для доступа должен писать разработчик БД, это мое мнение.
                                Цитата Romkin @
                                Драйвер для доступа должен писать разработчик БД, это мое мнение.

                                Даже если так, то зачем им писать что-то для Delphi? Подозреваю, что они о ней даже не задумывались... :'(
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 224 225 [226] 227 228 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.3665 ]   [ 15 queries used ]   [ Generated: 1.08.26, 18:34 GMT ]