Здравствуйте, hattab, Вы писали:
H>VCL это далеко не только гуй. VCL это прежде всего поддержка "визуального программирования", но это совсем не синоним формоклепательства.
"визуального программирования" — программирование мышкой? тогда чем оно принципиально от формоклепательства отличается?
Кстати что в VCL есть за пределами "визуального программирования" ?
Здравствуйте, gandjustas, Вы писали:
H>>VCL это далеко не только гуй. VCL это прежде всего поддержка "визуального программирования", но это совсем не синоним формоклепательства. G>"визуального программирования" — программирование мышкой? тогда чем оно принципиально от формоклепательства отличается?
Принципиально ничем. Тот же дизайнер, те же приемы. Только выходом не обязательно является гуй. Скажем, берешь компонент от Indy, TIdCmdTCPServer, и дизайнишь его биндинги, команды/действия, отклики, обработчики ввода/вывода, перехватчики, определяешь потоковую модель ну и так далее. Все кроме реализации команд делается в дизайнере. Собственно, эту цель (минимум кодирования) VCL и преследует (по большей части это все же относится именно к гую), странно, что я тебе это объясняю
G>Кстати что в VCL есть за пределами "визуального программирования" ?
Базы данных, трехзвенка, веб-сервисы, интернет, COM/COM+, автоматизация (OLE Automation), мультитач/жесты (D2010)... Однако, не стоит думать, что VCL претендует на звание решателя всех проблем. Вовсе нет. Зато у нее есть компонентная модель, которая позволяет не ограничиваться рамками библиотеки.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
H>>>VCL это далеко не только гуй. VCL это прежде всего поддержка "визуального программирования", но это совсем не синоним формоклепательства. G>>"визуального программирования" — программирование мышкой? тогда чем оно принципиально от формоклепательства отличается?
H>Принципиально ничем. Тот же дизайнер, те же приемы. Только выходом не обязательно является гуй. H>... H>Собственно, эту цель (минимум кодирования) VCL и преследует (по большей части это все же относится именно к гую), странно, что я тебе это объясняю
Действительно стрнанно, ибо ты подверждаешь мои слова, что VCL — GUI-centric библиотека. И остается такой по сей день
H>Скажем, берешь компонент от Indy, TIdCmdTCPServer, и дизайнишь его биндинги, команды/действия, отклики, обработчики ввода/вывода, перехватчики, определяешь потоковую модель ну и так далее. Все кроме реализации команд делается в дизайнере.
1)Что значит "берешь" ?? Ведь его надо разместит на форме Ах да, гениальные люди придумали контейнеры для компонент без визульной формы (как он называется уже не помню). Все остальные люди для этого обычныи классами пользуются.
2)Байндинги, отклики, потоковая модель — это конфигурация сервиса. В нормальном фреймворке, типа WCF, это хранится в конфигах и может быть измененено без перекомпиляции. Кроме того конфиг не привязан к конкретному объекту (как свойства компонента в делфи), а значит может подвергаться различным полезным преобразованиям и анализу (например для кодогенерации).
G>>Кстати что в VCL есть за пределами "визуального программирования" ?
H>Базы данных, трехзвенка, веб-сервисы, интернет, COM/COM+, автоматизация (OLE Automation), мультитач/жесты (D2010)...
И после этого некоторые считают что делфи не претендует на звание "платформы".
H>Однако, не стоит думать, что VCL претендует на звание решателя всех проблем.
А вот это плохо.
H>Зато у нее есть компонентная модель, которая позволяет не ограничиваться рамками библиотеки.
Посмнится в одном из холиваров выяснили что "компонентная модель" гораздо менее гибка чем сборки и классы в том же .NET.
Здравствуйте, gandjustas, Вы писали:
H>>Собственно, эту цель (минимум кодирования) VCL и преследует (по большей части это все же относится именно к гую), странно, что я тебе это объясняю G>Действительно стрнанно, ибо ты подверждаешь мои слова, что VCL — GUI-centric библиотека. И остается такой по сей день
Бред. Где тут GUI? И где тут VCL?
Uses Windows;
begin
MessageBox(0,'NO GUI!','Info',mb_Ok or mb_IconInformation or mb_ApplModal or MB_DEFBUTTON1);
end.
H>>Скажем, берешь компонент от Indy, TIdCmdTCPServer, и дизайнишь его биндинги, команды/действия, отклики, обработчики ввода/вывода, перехватчики, определяешь потоковую модель ну и так далее. Все кроме реализации команд делается в дизайнере. G>1)Что значит "берешь" ?? Ведь его надо разместит на форме Ах да, гениальные люди придумали контейнеры для компонент без визульной формы (как он называется уже не помню). Все остальные люди для этого обычныи классами пользуются.
Бред.
var CmdTCP:TIdCmdTCPServer;
begin
CmdTCP:=TIdCmdTCPServer.Create;
try
CmdTCP.OnXXXXXXCommand := DoXXXXXCommand; //<- назначаем обработчики, устанавливаем свойстваfinally CmdTCP.Free; end;
end;
Контейнеры говоришь? Или форма?
G>2)Байндинги, отклики, потоковая модель — это конфигурация сервиса. В нормальном фреймворке, типа WCF, это хранится в конфигах и может быть измененено без перекомпиляции. Кроме того конфиг не привязан к конкретному объекту (как свойства компонента в делфи), а значит может подвергаться различным полезным преобразованиям и анализу (например для кодогенерации).
Перекомпиляция для переустановки свойств говоришь? Вах, дарагой, а мы и не подозревали, что есть конфиги. Савсэм.
G>>>Кстати что в VCL есть за пределами "визуального программирования" ?
H>>Базы данных, трехзвенка, веб-сервисы, интернет, COM/COM+, автоматизация (OLE Automation), мультитач/жесты (D2010)... G>И после этого некоторые считают что делфи не претендует на звание "платформы".
Ох... Пожалуйста, ну погугли в сторону определения, что такое платформа.
H>>Однако, не стоит думать, что VCL претендует на звание решателя всех проблем. G>А вот это плохо.
Наличие других библиотек плохо... Конечно, миллион лемингов не могут ошибаться и МС их пророк.
Здравствуйте, DarkMaster, Вы писали:
DM>Здравствуйте, gandjustas, Вы писали:
H>>>Собственно, эту цель (минимум кодирования) VCL и преследует (по большей части это все же относится именно к гую), странно, что я тебе это объясняю G>>Действительно стрнанно, ибо ты подверждаешь мои слова, что VCL — GUI-centric библиотека. И остается такой по сей день
DM>Бред. Где тут GUI? И где тут VCL?
DM>
DM>Uses Windows;
DM>begin
DM> MessageBox(0,'NO GUI!','Info',mb_Ok or mb_IconInformation or mb_ApplModal or MB_DEFBUTTON1);
DM>end.
DM>
Что сказать то хотел?
H>>>Скажем, берешь компонент от Indy, TIdCmdTCPServer, и дизайнишь его биндинги, команды/действия, отклики, обработчики ввода/вывода, перехватчики, определяешь потоковую модель ну и так далее. Все кроме реализации команд делается в дизайнере. G>>1)Что значит "берешь" ?? Ведь его надо разместит на форме Ах да, гениальные люди придумали контейнеры для компонент без визульной формы (как он называется уже не помню). Все остальные люди для этого обычныи классами пользуются.
DM>Бред.
DM>
И если я запущу такое что получится?
DM>Контейнеры говоришь? Или форма?
Именно.
G>>2)Байндинги, отклики, потоковая модель — это конфигурация сервиса. В нормальном фреймворке, типа WCF, это хранится в конфигах и может быть измененено без перекомпиляции. Кроме того конфиг не привязан к конкретному объекту (как свойства компонента в делфи), а значит может подвергаться различным полезным преобразованиям и анализу (например для кодогенерации).
DM>Бред.
DM>
Моя плакать... ini-файлы, да еще и ручками параметры вытаскивать...
DM>Перекомпиляция для переустановки свойств говоришь? Вах, дарагой, а мы и не подозревали, что есть конфиги. Савсэм.
Ты в когфиге сможешь задать какой интерфейс будет поддерживать твой сервис?
Здравствуйте, gandjustas, Вы писали:
D>>>>А вообще, действительно с аргументацией неважно. D>>>>Лучше покажи, что ты сделал красивого на C#, чего нам, убогим, не осилить на дельфи. G>>>State monad
D>>Ну так покажи
G>Ну держи.
Отлично, много кода с комментариями.
А теперь покажи продукт, на котором можно зарабатать хотя бы $1000, в котором этот код используется и даёт какое-то преимущество перед другими подходами.
G>Если разберешься — появится желание забить на делфи и пойти учить цацкель.
Зачем мне забивать на дельфи, если я на нём прекрасно зарабатываю себе и моей семье на хлеб, на масло и на отдохнуть. И из-за какого-то монада, переходить на что-то модное с уже отлаженного процесса совсем нет желания.
Здравствуйте, gandjustas, Вы писали:
G>>>Действительно стрнанно, ибо ты подверждаешь мои слова, что VCL — GUI-centric библиотека. И остается такой по сей день DM>>Бред. Где тут GUI? И где тут VCL?
G>Что сказать то хотел?
Разве великий и уважаемый специалист не видит, что в приведенном исходнике не используется VCL и GUI? Странно.
G>>>1)Что значит "берешь" ?? Ведь его надо разместит на форме Ах да, гениальные люди придумали контейнеры для компонент без визульной формы (как он называется уже не помню). Все остальные люди для этого обычныи классами пользуются.
DM>>Бред.
DM>>
Будет работать. Хотя сомневаюсь, что ты сможешь откомпилировать . Тут же НЕТ нэту
DM>>Контейнеры говоришь? Или форма? G>Именно.
ГДЕ? НУ ГДЕ ТУТ ФОРМА? ХОТЬ ОДНА? Очередные проблемы со зрением.
G>Моя плакать... ini-файлы, да еще и ручками параметры вытаскивать...
Извините, как-то о модности XML я не задумывался. Кстати, сэр может привести пример того, как он сам задает параметры из конфига? Или хотя бы командную строку разбирает?
Нужно же учится у великих
DM>>Перекомпиляция для переустановки свойств говоришь? Вах, дарагой, а мы и не подозревали, что есть конфиги. Савсэм. G>Ты в когфиге сможешь задать какой интерфейс будет поддерживать твой сервис?
А что мне мешает?
G>Парень, ты смешен.
Мальчик, не приставай к взрослым дядям — лучше пойди и почитай книжечку. Вот закончишь институт, скомпилишь что-то отличное от примеров — приходи.
Здравствуйте, Dimonka, Вы писали:
D>Здравствуйте, gandjustas, Вы писали:
D>>>>>А вообще, действительно с аргументацией неважно. D>>>>>Лучше покажи, что ты сделал красивого на C#, чего нам, убогим, не осилить на дельфи. G>>>>State monad
D>>>Ну так покажи
G>>Ну держи.
D>Отлично, много кода с комментариями. D>А теперь покажи продукт, на котором можно зарабатать хотя бы $1000, в котором этот код используется и даёт какое-то преимущество перед другими подходами.
Такой красивый код нигде не используется, для заработывания бабла код вообще пишется по минимуму.
Например базоморда (типичное приложение на delphi) с помощью .NET делается в десяток кликов для любого количества таблиц в БД.
G>>Если разберешься — появится желание забить на делфи и пойти учить цацкель. D>Зачем мне забивать на дельфи, если я на нём прекрасно зарабатываю себе и моей семье на хлеб, на масло и на отдохнуть. И из-за какого-то монада, переходить на что-то модное с уже отлаженного процесса совсем нет желания.
Так ты не программист, ты кодер.
Здравствуйте, gandjustas, Вы писали:
D>>Отлично, много кода с комментариями. D>>А теперь покажи продукт, на котором можно зарабатать хотя бы $1000, в котором этот код используется и даёт какое-то преимущество перед другими подходами. G>Такой красивый код нигде не используется, для заработывания бабла код вообще пишется по минимуму. G>Например базоморда (типичное приложение на delphi) с помощью .NET делается в десяток кликов для любого количества таблиц в БД.
Моя плакать. Красивый код не используется для зарабтывания бабла. Для чего тогда используется красивый код? Для самоудовлетворения?
И что такое типичное приложение на Delphi?
G>>>Если разберешься — появится желание забить на делфи и пойти учить цацкель. D>>Зачем мне забивать на дельфи, если я на нём прекрасно зарабатываю себе и моей семье на хлеб, на масло и на отдохнуть. И из-за какого-то монада, переходить на что-то модное с уже отлаженного процесса совсем нет желания. G>Так ты не программист, ты кодер.
Вот и новое толкование понятия "кодер" — это тот, кто зарабатывает себе и своей семье на хлеб, на масло и на отдохнуть
А ты кто? Хакер? Искусство ради искусства?
Здравствуйте, DarkMaster, Вы писали:
DM>Здравствуйте, gandjustas, Вы писали:
G>>>>Действительно стрнанно, ибо ты подверждаешь мои слова, что VCL — GUI-centric библиотека. И остается такой по сей день DM>>>Бред. Где тут GUI? И где тут VCL?
G>>Что сказать то хотел?
DM>Разве великий и уважаемый специалист не видит, что в приведенном исходнике не используется VCL и GUI? Странно.
Ну не используется. Что с того?
G>>>>1)Что значит "берешь" ?? Ведь его надо разместит на форме Ах да, гениальные люди придумали контейнеры для компонент без визульной формы (как он называется уже не помню). Все остальные люди для этого обычныи классами пользуются.
DM>>>Бред.
DM>>>
G>>И если я запущу такое что получится?
DM>Будет работать. Хотя сомневаюсь, что ты сможешь откомпилировать . Тут же НЕТ нэту
отработает метод и приложение завершится.
DM>>>Контейнеры говоришь? Или форма? G>>Именно.
DM>ГДЕ? НУ ГДЕ ТУТ ФОРМА? ХОТЬ ОДНА? Очередные проблемы со зрением.
Нет, чтобы превратить этот куско кода во что-то ребочее тебе с большой долей вероятности придется создавать форму или что-то подобное.
Вообще если постишь код, который не компилируется, то сопровождай его описанием что он делает и как использоваться будет.
G>>Моя плакать... ini-файлы, да еще и ручками параметры вытаскивать...
DM>Извините, как-то о модности XML я не задумывался. Кстати, сэр может привести пример того, как он сам задает параметры из конфига? Или хотя бы командную строку разбирает? DM>Нужно же учится у великих
Кто он?
DM>>>Перекомпиляция для переустановки свойств говоришь? Вах, дарагой, а мы и не подозревали, что есть конфиги. Савсэм. G>>Ты в когфиге сможешь задать какой интерфейс будет поддерживать твой сервис? DM>А что мне мешает?
Ну давай. Есть у тебя интерфейс IService с реализацией в классе Service, напиши компонент, который будет из кофига получать интерфейс и реализацию и создавать сервис (с любым транспортом), который будет вызывать методы указанного класса. А на клиенте при этом по IService генерировать обертку длдя вызова удаленных методов.
Здравствуйте, Dimonka, Вы писали:
D>Здравствуйте, gandjustas, Вы писали:
D>>>Отлично, много кода с комментариями. D>>>А теперь покажи продукт, на котором можно зарабатать хотя бы $1000, в котором этот код используется и даёт какое-то преимущество перед другими подходами. G>>Такой красивый код нигде не используется, для заработывания бабла код вообще пишется по минимуму. G>>Например базоморда (типичное приложение на delphi) с помощью .NET делается в десяток кликов для любого количества таблиц в БД.
D>Моя плакать. Красивый код не используется для зарабтывания бабла. Для чего тогда используется красивый код? Для самоудовлетворения?
Для обучения, узнавания новых концепций и подходов.
D>И что такое типичное приложение на Delphi?
Форма + DataSource+Table\Query+Grid+пара кнопок. Иногда вречается дерево для навигации между формами.
G>>>>Если разберешься — появится желание забить на делфи и пойти учить цацкель. D>>>Зачем мне забивать на дельфи, если я на нём прекрасно зарабатываю себе и моей семье на хлеб, на масло и на отдохнуть. И из-за какого-то монада, переходить на что-то модное с уже отлаженного процесса совсем нет желания. G>>Так ты не программист, ты кодер. D>Вот и новое толкование понятия "кодер" — это тот, кто зарабатывает себе и своей семье на хлеб, на масло и на отдохнуть
Кодер — тот кто зарабатывает сейчас, программист — тот кто зарабатывает сейчас, думает о том как будет зарабатывать в будущем и может других этому обучить.
Здравствуйте, gandjustas, Вы писали:
D>>Моя плакать. Красивый код не используется для зарабтывания бабла. Для чего тогда используется красивый код? Для самоудовлетворения? G>Для обучения, узнавания новых концепций и подходов.
Прекрасно. Это похоже на начало темы о кодерах/программистах.
D>>И что такое типичное приложение на Delphi? G>Форма + DataSource+Table\Query+Grid+пара кнопок. Иногда вречается дерево для навигации между формами.
Похоже у тебя богатый опыт по общению с "типичными" приложениями на Delphi. Вопрос только в том, на сколько меньше кликов мышкой ты сделаешь для создания нетипичного приложения с помощью своих монад.
G>>>>>Если разберешься — появится желание забить на делфи и пойти учить цацкель. D>>>>Зачем мне забивать на дельфи, если я на нём прекрасно зарабатываю себе и моей семье на хлеб, на масло и на отдохнуть. И из-за какого-то монада, переходить на что-то модное с уже отлаженного процесса совсем нет желания. G>>>Так ты не программист, ты кодер. D>>Вот и новое толкование понятия "кодер" — это тот, кто зарабатывает себе и своей семье на хлеб, на масло и на отдохнуть G>Кодер — тот кто зарабатывает сейчас, программист — тот кто зарабатывает сейчас, думает о том как будет зарабатывать в будущем и может других этому обучить.
Я зарабатываю сейчас, я зарабатывал 5 лет назад и даже 8 лет назад, когда же наконец я перестану зарабатывать как "кодер" и достигну великого звания "программист"?
Здравствуйте, gandjustas, Вы писали:
DM>>Разве великий и уважаемый специалист не видит, что в приведенном исходнике не используется VCL и GUI? Странно. G>Ну не используется. Что с того?
Читаем твои слова о GUI-centric библиотеке. Убеждаемся, что ты ошибся. Идем дальше.
G>>>>>1)Что значит "берешь" ?? Ведь его надо разместит на форме Ах да, гениальные люди придумали контейнеры для компонент без визульной формы (как он называется уже не помню). Все остальные люди для этого обычныи классами пользуются.
DM>>>>Бред.
DM>>>>
G>>>И если я запущу такое что получится?
DM>>Будет работать. Хотя сомневаюсь, что ты сможешь откомпилировать . Тут же НЕТ нэту G>отработает метод и приложение завершится.
Опс... Ну какой к бабаям метод? Где ты видишь выполнение хоть чего-то? Это ПРИМЕР УСТАНОВКИ СВОЙСТВ И/ИЛИ ОБРАБОТЧИКА. И все.
DM>>>>Контейнеры говоришь? Или форма? G>>>Именно.
DM>>ГДЕ? НУ ГДЕ ТУТ ФОРМА? ХОТЬ ОДНА? Очередные проблемы со зрением. G>Нет, чтобы превратить этот куско кода во что-то ребочее тебе с большой долей вероятности придется создавать форму или что-то подобное.
Давай не будем гадать на кофейной гуще,а?
Uses ..........
{$APPTYPE CONSOLE}type
TExample=class
private
FPOP3:TIdPOP3;
public
Constructor Create; virtual;
Destructor Destroy; override;
procedure OnPOP3Status(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String);
procedure DoWork;
end;
Constructor TExample.Create;
begin
FPOP3 := TIdPOP3.Create; // POP3
FPOP3.OnStatus := OnPOP3Status; // обработчик события
FPOP3.Host := CfgReader.GetStringValue('POP3','Host'); // извини, но код этого класса приводить не буду...end;
Destructor TExample.Destroy;
begin
FreeAndNil(FPOP3); // чистим за собой ненужноеend;
procedure TExample.OnPOP3Status(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String);
begin
writeln(AStatusText); // на консоль выводим статусend;
Procedure TExample.DoWork;
begin
try
FPOP3.Connect; // пытаемся соединитсяexcept on E:Exception do
writeln(Format('Connection error to host "%s"! '+E.Message,[POP3.Host])); // на консоль выведем ошибку, если что не такend;
if FPOP3.Connected then// соединились?begin
writeln('Messages count:',POP3.CheckMessages); // проверили, сколько там сообщений
FPOP3.Disconnect; // отсоединилисьend;
end;
var Example:TExample;
begin
Example:=TExample.Create; // создаем экземпляр классаtry
Example.DoWork; // заставляем работатьfinally Example.Free; end; // чистим уже ненужноеend.
Со 100% долей вероятности я обошелся без форм. Очевидно — с формами ты облажался. Ну просто поразительно
G>Вообще если постишь код, который не компилируется, то сопровождай его описанием что он делает и как использоваться будет.
То-то я вижу огромное количество примеров у тебя.... Ладно, смотрим код выше.
G>>>Моя плакать... ini-файлы, да еще и ручками параметры вытаскивать...
DM>>Извините, как-то о модности XML я не задумывался. Кстати, сэр может привести пример того, как он сам задает параметры из конфига? Или хотя бы командную строку разбирает? DM>>Нужно же учится у великих G>Кто он?
Пример. Хоть один. Маленький. С комментариями. От тебя. Я. Могу. Увидеть? Про конфиги?
DM>>>>Перекомпиляция для переустановки свойств говоришь? Вах, дарагой, а мы и не подозревали, что есть конфиги. Савсэм. G>>>Ты в когфиге сможешь задать какой интерфейс будет поддерживать твой сервис? DM>>А что мне мешает? G>Ну давай. Есть у тебя интерфейс IService с реализацией в классе Service, напиши компонент, который будет из кофига получать интерфейс и реализацию и создавать сервис (с любым транспортом), который будет вызывать методы указанного класса. А на клиенте при этом по IService генерировать обертку длдя вызова удаленных методов.
Только после вас. Пример конфига в студию и его чтение. Я примеры уже приводил. Не впечатлило.
Здравствуйте, Dimonka, Вы писали:
D>Моя плакать. Красивый код не используется для зарабтывания бабла. Для чего тогда используется красивый код? Для самоудовлетворения?
Открою секрет, красивый код пишется для уменьшения стоимости разработки и поддержки. Он пишется не для зарабатывания бабли, а для уменьшения времени на разработку, отладку, и поддержку. Так как в нормально оформленном, структурированном коде, ошибки если и есть, то быстро исправляются, причем не обязательно быть автором творчества, чтобы определить причину. А подход "быстренько нашлепаем формочек" — это в конечном счете выливается в очень большие потери бабла. Если только приложение не уровня CD Ejector.
Здравствуйте, elmal, Вы писали:
D>>Моя плакать. Красивый код не используется для зарабтывания бабла. Для чего тогда используется красивый код? Для самоудовлетворения? E>Открою секрет, красивый код пишется для уменьшения стоимости разработки и поддержки. Он пишется не для зарабатывания бабли, а для уменьшения времени на разработку, отладку, и поддержку. Так как в нормально оформленном, структурированном коде, ошибки если и есть, то быстро исправляются, причем не обязательно быть автором творчества, чтобы определить причину.
Открой секрет, в Delphi красивый ко принципиально невозможен? Мой вопрос был конкретно о монадах. Где они успешно используются и экономят деньги на разработку, отладку, и поддержку? А оформления кода я просто похвалил.
E>А подход "быстренько нашлепаем формочек" — это в конечном счете выливается в очень большие потери бабла. Если только приложение не уровня CD Ejector.
Т.е. Delphi изначально ассоциируется с "быстренько нашлепаем формочек" или это претензия лично ко мне?
Вообще-то все началось с того, как hattab сказал вот это:
H>Скажем, берешь компонент от Indy, TIdCmdTCPServer, и дизайнишь его биндинги, команды/действия, отклики, обработчики ввода/вывода, перехватчики, определяешь потоковую модель ну и так далее. Все кроме реализации команд делается в дизайнере.
Здравствуйте, Dimonka, Вы писали:
D>Здравствуйте, gandjustas, Вы писали:
D>>>Моя плакать. Красивый код не используется для зарабтывания бабла. Для чего тогда используется красивый код? Для самоудовлетворения? G>>Для обучения, узнавания новых концепций и подходов. D>Прекрасно. Это похоже на начало темы о кодерах/программистах.
D>>>И что такое типичное приложение на Delphi? G>>Форма + DataSource+Table\Query+Grid+пара кнопок. Иногда вречается дерево для навигации между формами.
D>Похоже у тебя богатый опыт по общению с "типичными" приложениями на Delphi. Вопрос только в том, на сколько меньше кликов мышкой ты сделаешь для создания нетипичного приложения с помощью своих монад.
Лучше спрашивать не насколько, а во сколько. Linq в C# — это монады, в частности с помощью Linq можно в трехзвенке на клиенте типизировано формировать запрос, который будет выполняться на севрере.
В .NET 4 появилась еще одна монада — Continuation, реализуемая классами IObservable\IObserver, которая позволяет писать линейно код, который требует асинхроноого взаимодействия (ожидания событий, асинхронный IO)
G>>>>>>Если разберешься — появится желание забить на делфи и пойти учить цацкель. D>>>>>Зачем мне забивать на дельфи, если я на нём прекрасно зарабатываю себе и моей семье на хлеб, на масло и на отдохнуть. И из-за какого-то монада, переходить на что-то модное с уже отлаженного процесса совсем нет желания. G>>>>Так ты не программист, ты кодер. D>>>Вот и новое толкование понятия "кодер" — это тот, кто зарабатывает себе и своей семье на хлеб, на масло и на отдохнуть G>>Кодер — тот кто зарабатывает сейчас, программист — тот кто зарабатывает сейчас, думает о том как будет зарабатывать в будущем и может других этому обучить.
D>Я зарабатываю сейчас, я зарабатывал 5 лет назад и даже 8 лет назад, когда же наконец я перестану зарабатывать как "кодер" и достигну великого звания "программист"?
Нет, оставаясь кодером сейчас ты программистом не станешь никогда.
Здравствуйте, gandjustas, Вы писали:
G>>>"визуального программирования" — программирование мышкой? тогда чем оно принципиально от формоклепательства отличается?
H>>Принципиально ничем. Тот же дизайнер, те же приемы. Только выходом не обязательно является гуй. H>>... H>>Собственно, эту цель (минимум кодирования) VCL и преследует (по большей части это все же относится именно к гую), странно, что я тебе это объясняю G>Действительно стрнанно, ибо ты подверждаешь мои слова, что VCL — GUI-centric библиотека. И остается такой по сей день
Как ты увязал визуальный дизайнинг с гуй-центричностью, для меня вопрос
H>>Скажем, берешь компонент от Indy, TIdCmdTCPServer, и дизайнишь его биндинги, команды/действия, отклики, обработчики ввода/вывода, перехватчики, определяешь потоковую модель ну и так далее. Все кроме реализации команд делается в дизайнере. G>1)Что значит "берешь" ?? Ведь его надо разместит на форме Ах да, гениальные люди придумали контейнеры для компонент без визульной формы (как он называется уже не помню). Все остальные люди для этого обычныи классами пользуются.
Ну да, есть дата-модули, вполне себе классы, что тут такого? Есть наследники дата-модулей, те же TService (windows service), TIW... (intraweb/vcl for web), TSoapDataModule (компоненты SOAP сервисов), TWebDataModule (websnap), TDSServerModule (datasnap). Есть возможность самому сделать свой собственный дата-модуль и навернуть на его основе какой угодно функционал.
G>2)Байндинги, отклики, потоковая модель — это конфигурация сервиса. В нормальном фреймворке, типа WCF, это хранится в конфигах и может быть измененено без перекомпиляции. Кроме того конфиг не привязан к конкретному объекту (как свойства компонента в делфи), а значит может подвергаться различным полезным преобразованиям и анализу (например для кодогенерации).
Ну так и тут можно конфигами пользоваться, кто не дает? Ну да, прям из коробки этого нет, но это что проблема? В JVCL, если я не ошибаюсь, давно есть компоненты для конфигов (на основе RTTI).
G>>>Кстати что в VCL есть за пределами "визуального программирования" ?
H>>Базы данных, трехзвенка, веб-сервисы, интернет, COM/COM+, автоматизация (OLE Automation), мультитач/жесты (D2010)... G>И после этого некоторые считают что делфи не претендует на звание "платформы".
VCL это библиотека, это даже не framework, и уж совсем без претензий на платформенность. Просто библиотека с неплохим охватом.
H>>Однако, не стоит думать, что VCL претендует на звание решателя всех проблем. G>А вот это плохо.
Это наоборот очень хорошо. Разработчикам можно концентрировать усилия на генеральной линии (гуй + БД), а все остальное решается сторонними компонентами. Просто идеология другая, не платформенная.
H>>Зато у нее есть компонентная модель, которая позволяет не ограничиваться рамками библиотеки. G>Посмнится в одном из холиваров выяснили что "компонентная модель" гораздо менее гибка чем сборки и классы в том же .NET.
Здравствуйте, DarkMaster, Вы писали:
DM>Здравствуйте, gandjustas, Вы писали:
DM>>>Разве великий и уважаемый специалист не видит, что в приведенном исходнике не используется VCL и GUI? Странно. G>>Ну не используется. Что с того?
DM>Читаем твои слова о GUI-centric библиотеке. Убеждаемся, что ты ошибся. Идем дальше.
Еще раз. Я говорю VCL — GUI-centric библиотека.
Ты показываешь код без VCL и как-будто опровергаешь мое утверждение.
Надо тебе логикой занимться, а не риторикой.
DM>Опс... Ну какой к бабаям метод? Где ты видишь выполнение хоть чего-то? Это ПРИМЕР УСТАНОВКИ СВОЙСТВ И/ИЛИ ОБРАБОТЧИКА. И все.
Вот с этого и надо было начинать. А теперь попробуй приведи минимально рабочий вариант приложения с этим кодом.
G>>>>Моя плакать... ini-файлы, да еще и ручками параметры вытаскивать... DM>>>Извините, как-то о модности XML я не задумывался. Кстати, сэр может привести пример того, как он сам задает параметры из конфига? Или хотя бы командную строку разбирает? DM>>>Нужно же учится у великих G>>Кто он?
DM>Пример. Хоть один. Маленький. С комментариями. От тебя. Я. Могу. Увидеть? Про конфиги? http://msdn.microsoft.com/ru-ru/netframework/bb499684.aspx
Там конфигов хоть обавляй. Мне лень примеры писать, а код рабочих проектов выкладывать нельзя.
DM>>>>>Перекомпиляция для переустановки свойств говоришь? Вах, дарагой, а мы и не подозревали, что есть конфиги. Савсэм. G>>>>Ты в когфиге сможешь задать какой интерфейс будет поддерживать твой сервис? DM>>>А что мне мешает? G>>Ну давай. Есть у тебя интерфейс IService с реализацией в классе Service, напиши компонент, который будет из кофига получать интерфейс и реализацию и создавать сервис (с любым транспортом), который будет вызывать методы указанного класса. А на клиенте при этом по IService генерировать обертку длдя вызова удаленных методов. DM>Только после вас. Пример конфига в студию и его чтение. Я примеры уже приводил. Не впечатлило. http://msdn.microsoft.com/ru-ru/netframework/bb499684.aspx
Здравствуйте, hattab, Вы писали:
H>>>Однако, не стоит думать, что VCL претендует на звание решателя всех проблем. G>>А вот это плохо. H>Это наоборот очень хорошо. Разработчикам можно концентрировать усилия на генеральной линии (гуй + БД), а все остальное решается сторонними компонентами. Просто идеология другая, не платформенная.
А вот зря. Потому что разработчики компонент наследуют идеологию стандартной библиотеки.