Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Форум группы: delphi > Delphi умирает? |
Автор: Гость_Максим 20.7.2004, 10:35 |
Я слышал мнение о том, что Delphi постепенно отмирает. Какие инструменты и технологии наиболее перспективны в области разработки приложений баз данных? Я интересуюсь потому, что серьезно взялся за изучение Delphi, а тут мне вдруг заявляют, что Delhi отмирает, а Java перспективнее. Что же теперь бросать и начинать осваивать Java? Обидно как-то ![]() Заранее благодарен за ответ. |
Автор: Pakshin A. S. 20.7.2004, 10:44 |
СОВЕТ: Изучай всё!!! Лично я начал с Pascal, потом Object Pascal + Delphi (тут же работа с БД через SQL и стандартные компоненты), сейчас C++, затем Java и Assembler (для развлечения)... Про отмирание: на этом форуме раздел с Delphi один из самых популярных и многочисленных... вывод сделай сам. |
Автор: Georg4 20.7.2004, 10:55 |
Ява перспективная вещь но никто не говорил что Делфи умирает. Я учил вначале Визуал Басик, потом Делфи и потом пошло поехало С++, Пролог, Ява, РНР, Перл. Но Дельфи осталась самой любимой. Как-то нравится она мне или может из-хза того что препод преподававший программирование на Делфи был хороший |
Автор: Pakshin A. S. 20.7.2004, 11:10 |
Ещё: по-моему, для Delphi и в самой Delphi больше различного инструментария... |
Автор: Kurt 20.7.2004, 11:16 | ||
Не хочется подливать масла в огонь, но посмотрите на Delphi 8! Это уже не наш Delphi - это .NET. Т.е., имхо, "классический" Delphi все-таки.. хм.. ну если не умирает, то болеет. ![]() |
Автор: Pakshin A. S. 20.7.2004, 11:48 |
ОФФТОП про Delphi: Никому не нужен раритетная Delphi v1.0... Работает быстро, вроде без глюков, компоненты есть (которых я не видал в D5 и т. п.). Пошел диск покупать для с C++, а там Pascal с Delphi оказались... забавно. ![]() |
Автор: Cheba 20.7.2004, 15:17 | ||
А про Delphi, так в релизе Delphi 8 идет в качестве бонуса Delphi 7. ![]() |
Автор: Pakshin A. S. 20.7.2004, 18:12 |
![]() ![]() ![]() ![]() ![]() ![]() |
Автор: Петрович 21.7.2004, 08:37 | ||||
Я бы сказал иначе: "... что Delphi постоянно отмирает ..." Ответ, как в анекдоте: "Недождетесь" ![]()
А вот и пример. ![]() |
Автор: foRaver 21.7.2004, 08:52 |
Pakshin A. S., 20 мб говоришь? Найдёшь куда залить? Очень поиметь хочся...![]() Наверное многие будут тебе благодарны ;) |
Автор: Гость_Максим 21.7.2004, 09:14 |
Спасибо за ответы. Но все таки, как насчет приложений баз данных? Существуют ли преимущества Java перед Delphi если говорить о разработке приложений баз данных: A. Клиент-сервер среднего масштаба под Win32 Б. Трехзвенных клиент-сервр В. Приложений для Web Иными словами проще ли по сравнению с Delphi создавать такие приложения с помощью Java? |
Автор: foRaver 21.7.2004, 10:03 |
A: думаю что Delphi очень даже актуальный инструмент для данного выбора. В: Для web я-бы всётаки доверился-бы Java. Незнаю как тебе это толком объяснить... просто Java справляется с этим в коем роде лучше, ну а тем более если говорить о кроссплатформенности и движках, то наверное под Java выбора больше, в том числе и в RTFM. Если я не прав, просьба меня просто поправить. ![]() |
Автор: chipset 21.7.2004, 10:38 | ||
А вы бы в C++ сунули ![]() Разве могут Delphi'сты сказать что Delphi умирает;) Я вот мимо только пробегал... Для веб-приложений имхо лучше ASP.NET и C#, если честно я не представлю куда там всунуть Дельфи..
А я уже давно заметил ![]() Но это не аргумент ![]() |
Автор: <Spawn> 21.7.2004, 11:37 | ||||
chipset В Дельфи для этого есть, например, DataSnap.
Добавлено @ 11:41 Еще добавлю на это:
|
Автор: Pakshin A. S. 21.7.2004, 13:28 |
На выходных Delphi V1.0 будет доступна для всех желающих!!! |
Автор: Gorcer 22.7.2004, 14:31 |
Если Delphi умрет, то это произойдет только с появлением более удобной и мощной, т.к. он может отмереть если вы программеры перестанете им пользоваться, а я думаю вы врядли пойдете в ущерб своим возможностям и удобству. ![]() И вообще, какая разница на чем учиться, получив приличный опыт в программировании можно овладеть любым языком, а получать его можно на чем угодно, советую паскаль! |
Автор: LSD 11.5.2011, 13:30 |
Конечно! Пока еще не слишком поздно ![]() |
Автор: CodeMonkey 11.5.2011, 13:50 |
OMG ![]() |
Автор: mniip 11.5.2011, 20:21 |
Я наблюдаю что то типа отмирания. Но искренне надеюсь что фирма Borland соберется с силами и что то смастерит. Я начинал с паскаля, дальше HTML+javascript, Flash+ActionScript, Delphi, C++ Но я предпочитаю pascal и delphi как САМЫЕ ОПРЕДЕЛЁННЫЕ языки. Ну и соответственно среди них выбираю delphi тк под windows |
Автор: bems 11.5.2011, 21:07 | ||
|
Автор: AKATAN 11.5.2011, 23:15 |
Боже! Тема открыта 20.7.2004. т.е. ей почти 7 лет! раритет! артефакт. з.ы. а Delphi то все еще умирает... семь лет уже умирает... умирая - дает нам работу умирая - дает реализовывать крупные проекты умирая - даже умудряется развиваться! (в предсмертных конвульсиях) однозначно скоро умрет. всего пару десятков годиков - и Дельфи труп. адназначнА. |
Автор: cemick 12.5.2011, 00:35 |
адский ад какой то и да, надо запомнит, что делфи самый ОПРЕДЕЛЕННЫЙ ЯЗЫК пора уже роботом вычленять слова "умирает" в топиках и заменять на http://www.isdelphidead.com/ |
Автор: AKATAN 12.5.2011, 08:49 | ||
Гггггг )) Улыбнул! |
Автор: LSD 12.5.2011, 18:41 |
А ты знаешь сколько может прожить больной спидом? ![]() Это ты про Скайп? Так мы уже выяснили что он http://forum.vingrad.ru/forum/topic-329132.html ![]() Это ты про то, что вначале замутили поддержку Linux, потом забили на нее, аналогично .NET? |
Автор: cemick 12.5.2011, 19:55 | ||
слишком толсто, элегантнее надо тролить |
Автор: bems 12.5.2011, 19:58 |
а чо, нормально продался. после таких денег пусть хоть с нуля переписывают ![]() |
Автор: CodeMonkey 12.5.2011, 20:11 |
Новость дня: Microsoft открывает тысячу вакансий на Delphi программистов ![]() |
Автор: cemick 13.5.2011, 09:16 |
А тем временем на других форумах обсуждают возможный ренесанс C++ в MS навеянное статьей http://www.zdnet.com/blog/microsoft/what-is-winc-and-how-does-it-figure-in-microsofts-bid-to-make-tools-a-2-billion-business/9359 |
Автор: AKATAN 18.5.2011, 16:24 | ||||
Не-а. Это я про МОИ проекты. Два года Delphi кормит меня и моих подчиненных. Заказчик доволен. Пример. while true do begin Задача: дистанционный сбор данных с тепловодосчетчиков (250 объектов). Реализовать надо как и программную, так и "физическую" часть. Бюджет: 300 000$ Клиенту не надо ваши мультиплатформенности. У него нету мака. Он не знает что такое Линукс. Ему надо: Надежность, ДЕШЕВИЗНА, свистелки_и_перделки в диспетческом приложении. Аппаратка на Си, сервер Дельфи. Приложение клиента - Дельфи. Я не буду искать себе в штат Java девелопера, который хочет ЗП от 4-5К мертвых американских президентов. Я возьму ТРЕХ молодых программистов Delphi за 4К на всех троих. Я не буду использовать Oracle для малой БД. Я возьму фришный Firebird. Я не буду сцать кипятком, доказывая что использование глобальных переменных это моветон. Я сдам проект. Заработаю. Немного дострою дом под Киевом. Точка. end; А что лучше, хуже, умирает, оживает – мне сердечно П.О.Х.
|
Автор: Akella 18.5.2011, 20:31 |
AKATAN, браво ![]() |
Автор: Frees 20.5.2011, 20:23 |
Java нынче в институтах учат, эти ТРОЯ и на Java с тем же успехом писать будут. а разве Delphi дешевле Java? |
Автор: Rohoss 21.5.2011, 20:51 | ||
Уважаемый, такой фирмы давно нет ![]() Интересно, а кто нибудь в Европе или США заказывает софт на Делфи? |
Автор: Frees 22.5.2011, 17:51 | ||
заказывают как правило решение, инструмент не важен. |
Автор: Rohoss 22.5.2011, 17:55 | ||
Но покупают исходный код. |
Автор: Frees 22.5.2011, 18:07 |
покупают решение своей проблемы!!исходный код, зачем, он вторичен...? |
Автор: Keeper89 5.6.2011, 12:48 |
AKATAN, все бы это хорошо, вот только с каких торрентов ты будешь скачивать Delphi, чтобы это было дешевле? |
Автор: Rohoss 5.6.2011, 18:36 | ||||
Клиентам нужны решения, которые будут интегрироваться с решениями, которые у них уже есть. Поэтому важен и язык разработки и исходный код. Возможно на территории пост-советского пространства всё по другому, но наша компания работает с клиентами в основном из США, поэтому поставляется так же большая часть исходного кода и документация. Про проекты на Делфи не слышал.
Ну не верю я что такое сообщение мог написать руководитель проекта ![]() И потом, для таких "проектов" наверное можно и VB6 использовать ![]() Калькулятор пишется одинаково на любом ЯП, но если это серьёзный проект, который поддерживается и расширяется, то Делфи тут, уж простите ![]() |
Автор: Keeper89 5.6.2011, 20:35 | ||
Чем плох Delphi с точки зрения "поддержки и расширения"? |
Автор: Rohoss 5.6.2011, 21:36 |
Keeper89, ну на такие вопросы даже отвечать не хочется, так как приходится рассказывать что солнце излучает свет и тепло ![]() ![]() |
Автор: Rohoss 5.6.2011, 23:34 | ||||||||||||
Вот я не поленился, и раз уж на то пошло, сделал расширяемый калькулятор ![]() Конечно, пример надуманный и функционал мог бы быть куда серьёзней, но что у нас есть: Сборка Contracts. Название говорит само за себя, тут определено два интерфейса и один класс
Как видите, кода используется очень мало ![]() Дальше, у нас есть основное приложение, здесь есть реализация интерфейса IOperationContainer
и сама инициализация механизма состыковки модулей и привязки к гую
На этом всё, наш калькулятор готов, правда функционал калькулятора у нас ещё не готов, но он будет содержатся в других модулях ![]() Что интересно, в проекте у нас есть папка Modules, там мы и будем содержать наши модули, в которых хранится реализация логики подсчётов. Что нужно для создания модуля? Всё предельно просто, покажу на примере создания модуля для суммирования двух чисел. Итак, нам нужно создать проект, в проект добавляем ссылку на сборку System.ComponentModel.Composition и соответственно на наш контракт Contracts. Добавляем новый класс, который будет реализовывать интерфейс IOperation, и метим атрибутом [Export(typeof(IOperation))]. Это всё что нужно, далее логика подсчёта сумы, вот весь код данного модуля
Вот и всё. Теперь, запустив построенное приложение, мы увидим три текстовых поля (два для ввода данных, одно для результата), и список кнопок. Каждая кнопка будет содержать текст (Description модуля) и будет вызывать логику обработки данных. При чём, нам не нужно добавлять кнопку вручную, всё происходит автоматически. Мы создаём модуль, компилируем в dll и бросаем в папку Modules. При чём в одной dll может быть сколько угодно модулей, так же как и dll в папке Modules может быть сколько угодно ![]() Проект приаттачел. Необходимы, VS210 + .Net 4.0 Просьба повторить всё так же легко и культурно на Делфи Добавлено через 14 минут и 24 секунды И давайте в дальнейшем поменьше флейма и побольше кода и доказательств. Я когда то был делфистом, а теперь дотнетчик. И пускай я был не крутым делфистом, а сейчас я не крутой дотнетчик, но обе технологии я на себе испытал, и сделал окончательный и бесповоротный вывод. В общем после дотнета использовать Делфи ни малейшего желания нет ![]() |
Автор: Rohoss 5.6.2011, 23:56 |
Для тех, кому не хочется качать весь проект, может скачать только приложение. Нужен .Net 4.0 ![]() |
Автор: Rohoss 6.6.2011, 00:11 |
Для тех кто не верит сделал простенькую dll, которую вы можете бросить в папку Modules, будь это приложение или проект, и сами можете наблюдать изминения ![]() |
Автор: Akella 6.6.2011, 08:48 |
и чооо |
Автор: Zloxa 6.6.2011, 09:41 | ||||
Rohoss,
Не удачный пример. Емнип, в Делфях подобная шнаяга реализуется с той же непринужденностью. Вероятно мы по разному понимаем понятие поддержки. По мне так разработка и поддержка имеют очень мало общего. Предложенная тобой схема расширения функционала, призвана облегчить(удешевить) дальнейшую разработку, развитие. Однако же, с точки зрения поддежки - чем гибче система, тем сложнее ее эксплуатация, тем больше компетенций требуется обслуживающему персоналу, тем более он дорог. Получается ты размазиваешь затраты на развитие проекта в области его эксплуатаци, пытаешься удешевить проект в одной, более краткосрочной фазе, за счет удорожания в другой - более долгосрочной. Но и удешевление разработки - вопрос так же - не очевидный. Разработка интерфейса предполагает документирование, усложняется процесс тестирования и поддержания тестовой среды в рабочем состоянии, увеличиваетя порог входа в проект новичков, что увеличивает риски и стоимость разработки.
Это может показаться странно, но с тезисом я согласен. Просто нахожу что приведенные пример не бесспорно этот тезис демонстрирует. |
Автор: Rohoss 6.6.2011, 10:22 | ||||||
Вроде как нет ![]()
Вообще да, я больше имел ввиду дальнейшее развитие. Потому, что скажем если это корпоративный софт - то его постоянно приходится развивать. Но с точки зрения поддержки тоже всё прекрасно, имхо. А с точки зрения эксплуатации пользователю пофиг что там за система. И если мы обнаружим баги в приложении, то в модульном приложении они правятся намного быстрее, это я отношу к поддержке.
Zloxa, ну так извини, если у нас не будет интерфейса и документации мы вообще не имеем права соваться в большие проекты ![]() ![]() |
Автор: Zloxa 6.6.2011, 10:48 | ||||||
Это верно подмечено. Гибкость действительно не нужна там, где не нужна. А в случае инхауз разработки, она не нужна практически никогда. И приведенный тобой пример модульности врядли окажется полезен, если ты собираешься эти модули разрабатывать самостоятельно. Обычно этот подход используют для того, чтобы успокоить заказчика, предоставив возможность заниматься развитием системы третьим лицам. Это якобы должно минимизировать его риски.
Под эксплуатацией я подразумевал службу эксплуатации. Т.е тех, кто настраивает пользователю окружение, принимает заявки на обслуживание, выполняет первичную диагностику проблем.
Именно по этому не стоит мельчить и называть модулем то, что таковым не является. В отдельную библиотеку, мне думается, целесообразно выносить тот функционал, который может оказаться востребован более чем одним модулем, но целесообразность использования динамических библиотек для расширения функционала, для меня не очевидна. Увы, я пять лет уже не писал на делфях, но точно помню, когда я был юн и глуп, тоже пытался реализовать эту концепцию средствами bpl, и, в первом приближении, это тоже казалось легко, просто и нужно. |
Автор: Rohoss 6.6.2011, 11:37 | ||||||||||
Тут я с тобой согласен ![]()
А тут нет ![]() ![]()
Ну уж простите, если такая служба есть, то есть, это не просто сисадмины, а служба внедрения, которая занимается установкой продукта, обучением персонала, то тут вообще проблем быть не должно. Людям за это деньги платят в конце то концов, они должны их хоть как-то отрабатывать.
Я думаю зависит от ситуации. Возьмём к примеру прикреплённый мной проект. У нас есть модуль, который умеет суммировать два числа, и тут нам понадобился функционал, который будем множить и вычитать. Вместо того, чтобы менять существующую библиотеку (которая суммирует), правильней будет создать ещё один отдельный модуль с функциями умножения и вычитания. Причины: документация по модулю уже написана и передана третьим лицам, персонал уже умеет обращаться с софтом. В таком случае, мы не изменяем приложения - мы его обновляем ![]()
Может через bpl что-то отдалённо подобное и можно реализовать, вот только они чего-то не прижились. А через dll всё это выйдет такими геморроями, что и расширяемости не захочется ![]()
Во всяком случае подобными схемами софт разрабатывают много команд. В общем, почти весь "крутой" софт модульный ![]() |
Автор: Zloxa 6.6.2011, 12:31 | ||||||||
![]()
Да. Много мух не может ошибаться. Это тезис. ![]()
Целесообразность вноса в обособленное звено прикладного слоя, физическое отделение его от презентативного, это, мне кажесятся - совсем другой случай, не надо его сюда подмешивать. Ты говорил исключительно о расширении функционала. Я о том, собственно, и толкую. Полезность продемонстрированного тобой подхода - сомнительна.
Тут ты не прав. Очень даже прижилось, даже сильнее чем следует, со всеми вытекающими. А вытекает, поверь мне, столько, что только успевай подтирать. ![]() Желание придать гибкости каким бы то ни было системам, обуславливается, как правило, не полным представлением об их целевом назначении на этапе проектирования. В случае производства массового, коробочного софта - это стремление понятно, целевая аудитория многогранна, предоставление средств кастомизации призвано ее расширить. Но это исключительно марктинговая потребность, не техническая. С технической точки зрениея, требование универсализации, в этом случае, повлечет за собой серьезные издержки. В случае же производства штучного софта, требование универсализации должно бы диктоваться извне, от заказчика, как я уже говорил, имея целью снизить его риски... С технической же точки зрения, профит от суррогатного усложнения системы с целью обеспечения дополнительных степеней свободы, при условии ясного понимания целевого назначения продукта и требований к нему.... мне совершенно не ясен. Ведь даже, казалось бы не значительная проблема, которая выстреливает единожды в год, умноженная уже на 350 инсталляций, становится повседневной рутиной и черезмерная гибкость в таких случаях, из великого блага превращается в проклятье. А гибкость всегда достигается потерей прочности. Резюмируя эти много букв, я пытался сказать что-то вроде : Требования универсализации практически всегда усложняют реализацию, потому они практически никогда не могут быть обусловлены технически. Технический специалист должен понимать, что реализуя универсалный подход, он всякий раз прогибается. Под аналитика ли, который не доделал свою работу до конца, под заказчика ли, который бздит что его кинут, под РПшника ли, который туп и не понимает как правильно распоряжаться бюджетом. Технический специалист должен стремиться производить все максимально просто и железобенно. Реализуюя требования универсализации, разраб уступает, соглашается на компромисс, потому в праве требовать компенсацию. Самостоятельно же стремиться к универсализации.... пожалуй, если только забавы ради, от скуки, ради красивой картинки. |
Автор: Akella 6.6.2011, 13:02 |
От синтаксиса C, C++, C# в глазах рябит. Я имел ввиду от этих всех скобочек. Я смотрю на код C# и вижу, что несколько строчек кода приходтся размазывать на пол экрана по вертикали и горизонтали, чтобы код был более мнее читалбельным и нормально воспринимался мозгом. |
Автор: Rohoss 6.6.2011, 13:07 | ||||||||||
Тогда я не понимаю в чём проблема? Какая им разница что эксплуатировать, они всё равно не понимают что там Тут, имхо, дело в другом. Сложный софт стоит очень дорого, простой софт - очень дёшево или вообще ничего не стоит. Но разрабатывать сложный софт очень тёжело, и чтобы пойти на его разработку нужно много чем вооружится: хорошая среда разработки, хороший набор библиотек, хороший набор паттернов и возможности системы их использовать, ну и список можно продолжать... .net + vs + m$ даёт набор куда покруче чем делфи. Или фирма, которая за ним стоит
Не другой случай, а более расширенный вариант данного случая. Расширения функционала это самый простой вариант использования, я ведь говорил, что мой пример это даже не верхушка айсберга. Я понимаю, что разделения функционала и презентационного слоя может показаться абсолютно разными вещами, но на самом всё состыковывается довольно логично и красиво.
В большинстве случаев эти модули включаются статически. Но это не сильно меняет мой пример. В данном случаи, в примере нужно заменить только пару строчек кода, и будут использоваться только те библиотеки, которые мы вручную прописали. Это может быть очень удобно, так как во время разработки мы можем решить заменить один модуль на другой, и просто изменим пару строк кода и у нас всё будет прекрасно работать.
Ну а тебя это удивляет? ![]() требования заказчика могут меняться даже во время разработки, зачастую заказчик хочет несколько новых фич, когда система готова, софт нужно развивать
Модульный софт имеет меньше проблем, нежели монолитный, проблемы в модульном софте решаются быстрее нежели в монолитном. Например, в приведённом мною примере мы попытаемя умножить и приложение упадёт, мы сразу, с большой степенью уверенности будем знать где искать проблему. Добавлено через 2 минуты и 13 секунд Это дело привычки. Мне наоборот Делфи кажется расфуфыренным и мало информативным ![]() |
Автор: Zloxa 6.6.2011, 13:20 | ||
![]() И окажется она где-то в районе стыка. При накате версии кто-то где-то накосячил. Опыт показывает что 80% говна сочится именно в местах стыков. )) |
Автор: Rohoss 6.6.2011, 13:34 |
То то и оно, что я так понимаю, этот опыт с Делфи. А вот эти "стыки" в .нете очень хорошо продуманы и проблема несостыковки весьма незначительна. Вот за что мне и нравится .нет, что ты можешь сконцентрироваться на разработки функционала, а всю срань за тебя делает инфраструктура .нет. Однако, среди делфистов находится много умников, которые считают, что они будут управлять памятью лучше чем это делает GC и реализовывать прочую "крутизну" которая уже реализованная грамотными разработчиками серьёзных компаний. Однако эти навороченные делфисты считают что они всё сделают лучше. Вот откуда это говнище и течёт ![]() |
Автор: Akella 6.6.2011, 14:12 | ||||
В чем же выражается расфуфыренность и малоинформативность? Добавлено @ 14:13 ты просто хотел сказать что-то плохое, но нужных слов не нашёл ![]() Добавлено @ 14:14
Я ПОНЯЛ ![]() ![]() ![]() ![]() ![]() Добавлено @ 14:15 Потому что там его столько, что программы на дотнете тормознутее. Вот у меня программа Samsung Kies, мне непривычно с ней работать, т.к. она подторможивает. Добавлено через 5 минут и 13 секунд даже при том, что проц двухъядерный и памяти 2 гига |
Автор: Zloxa 6.6.2011, 14:40 |
![]() ![]() ![]() Я сейчас говорил ни о делфи, ни о доднете. Я сейчас говорил исключительно о подходе. И целью имел не что либо дискредетировать, а предупредить и уберечь, заставить задуматься, скорректировать свою позицию относительно полезности универсальности. В профильных разделах я постоянно остерегаю новичков от использования EAV - с первого взгляда офигенно универсальной концепции хранения данных. Однако фиг кто убережется. Все предпочитают отгрести самостоятельно. Зато потом таки безумно приятно читать нечто вроде "http://zendframework.ru/forum/index.php?topic=1999.msg12927#msg12927", от своих былых опонентов. |
Автор: Rohoss 6.6.2011, 14:42 | ||||
Ещё один считающий что .нет тормозит
Хочешь на делфи программу которая будет тормозить на 10Гб оперативы? Это когда уже нечего сказать ![]() В том, что место {} пол экрана занимают begin end :bed но думаю эту тему развивать не стоит, так как у каждого свои предпочтения. Я лишь хочу сказать, что привыкше к синтаксису C# делфистский синтаксис кажется плохим... Похоже приехали ![]() ![]() ![]() Добавлено через 5 минут и 26 секунд А я говорю о делфи и о дотнете, и говорю о том, что в местах в которых в делфи течёт говнище в дотнете всё прекрасно работает
При чём тут универсальность? ![]() |
Автор: Zloxa 6.6.2011, 15:05 | ||
Ты создал универсальный модуль калькулятора, функционал которого наращивается модулями. Средствами унифицированного интерфеса. И, по неопытности, полагаешь что это удобно.
Мне показалось, или ты уже припомнил что bplками предложенный тобой подход реализуется просто и не принужденно. Подход схожий,решения схожи. Проблемы - одинаковы. И, в своей сути, не имеют отношение к платформе. Исключительно к паттерну проектирования. |
Автор: Rohoss 6.6.2011, 15:31 | ||||
Нет, я такого не говорил так же как и не отрицал что это возможно. Мне просто сделайте тоже и покажите как оно будет выглядеть. Я не удивлюсь если кто-то уже реализовал но стыдится показать ![]()
Возможно наши с тобой понятия об универсальности не совпадают. Я не считаю что я создал универсальный калькулятор, я считаю что я создал расширяемый калькулятор. Да, и я полагаю что это удобно. Может это и по неопытности, но видишь ли, я использовал подход (точнее подобии шаблона подхода), который используется разработчиками мирового уровня. По большому счёту это не моё изобретение (как в делфи постоянно изобретают велосипед) и поэтому обвиняя меня в неопытности - ты обвиняешь в неопытности специалистов которые создали эти паттерны, поздравляю ![]() И потом, никакого "унифицированного интерфеса" я не создавал. Это всё с делфи. В .нете это просто интерфейс. И "унифицированный" от слова уникальный а не универсальный. |
Автор: Zloxa 6.6.2011, 15:49 | ||
Я лишь предложил тебе задуматься о причинах, побуждающих использовать этот подход, сопоставить профит с издержками, и оценить применимость к стоящим перед тобой задачами. И рекомендую задумываться над подобными вещами почаще. В предложенном тобой примере явного профита от подхода - нет. Область применения этого подхода ты явным образом не ограничиваешь, и мне не удается судить, слепо ли ты следуешь подсмотренным паттернам или же твое движение в этом направление обдуманно и осознано. Потому пытаюсь представить тебе к осмыслению несколько тезисов. К сожалению, мне не удается подобрать сколь нибудь внятный пример в рамках твоего кругозора, и ты просто не понимаешь о чем я толкую. Ну и на счет аппеляции к мировым бестпрактис.... Сразу чувствуется, мало тебе доводилось в них окунатсья ![]() Добавлено через 4 минуты и 21 секунду Интерфейс подразумевает унификацию работы с объектом. Посредством одного интерфейса ты можешь единообразно взаимодействовать с различного рода объектами, принадлежащих разным иерархиям и не состоящим в родстве. Разве в доднете это не так? |
Автор: Rohoss 6.6.2011, 16:22 | ||||||
Так ![]() ![]()
Не о том ли что не нужно использовать петтерны для написания hello, world? Или о том что слишком много свободы - это зло? Это всё мы знаем ![]()
Возможно, однако остались только положительные воспоминания ![]() ![]() |
Автор: Dik0n 6.6.2011, 17:37 | ||
Конечно тормозной, особенно если много графики в окне, все мельтешит и перерисовывается долго, твой пример из трех Edit кушает памяти больше чем проводник в Windows, а ты посмотри сколько он расширений загружает COM, ActiveX и т.д. Дак это я запустил только одну программу, которая ничего не делает уже 25 метров сожрала. Я представляю если все проги на NET будут, один Фотошоп если его на нет перевести гига 4 будет жрать, про игры я вообще молчу. ЗЫ: не знаю как у Вас, а у меня на компе не стоит по 8 гигов оперативки. |
Автор: Frees 6.6.2011, 18:54 |
Dik0n, каждые 2 года производительность удваивается, тормоза, если они даже есть - временное явление.. |
Автор: Dik0n 6.6.2011, 20:49 | ||
Ну да, если так пойдет, скоро напишут Net 2, который будет написан на Net и что-бы запустить обычную прогу, для распечатки документов на принтере, понадобится 6 ядерный комп с 16 гагами оперативки ![]() |
Автор: Rohoss 6.6.2011, 21:04 |
Специально для умников, которым не нравится производительность в .нет: Можете почитать эту тему http://forum.vingrad.ru/forum/topic-283805/unread-1/hl/java+delphi/index.html . Там автор предлагает по соревноваться, вы пишете на Delphi/C++ а он Java/.Net . Правда автора уже нет на форуме, но при желании его можно найти ![]() ![]() |
Автор: Keeper89 6.6.2011, 21:14 | ||
CodeMonkey уже как-то обсуждал "тормознутось". Чисто теоретически .NET-программы должны работать даже быстрее после первого запуска. Добавлено через 1 минуту и 8 секунд
Вот Nokia PC Suite у меня тормозит жутко. Но это же не значит что C++&QT отстой ![]() |
Автор: Akella 7.6.2011, 12:02 | ||||||||
Я не сказал, что я так считаю, я сказал, что у меня личный опыт "общения" с программами, написанными на дотнете. Только не надо говорить, что те тормознутые программы были написаны тупыми программистами. Добавлено через 2 минуты и 37 секунд Ты меня так и не понял. Сами скобочки места не занимают. Но если код форматировать, как в дельфи, сравнительно компактно, то код C# будет читаем с трудом. От этих скобочек будет мельтишить в глазах. А чтобы не мельтишило приходится код растягивать. Ну это я уже писал. Прошу - перечитай. Наверное опять не понял, да? Добавлено через 4 минуты и 43 секунды
Я тоже пытался сделать так, чтобы программа была напичкана плагинами, aka модулями. Неудобно. Легче дописать что-то в программе и отправить новый экзешник. Хотя преимущество плагинов тоже имеет место быть. Добавлено через 6 минут и 7 секунд Что первое появилось, яйцо или курица дельфи или дотнет? Добавлено через 8 минут и 47 секунд
Нет, я же говорил, что будет в IDE только одна кнопка "Сделать программу". Далее просто выбор типа программы с помощью небольшого мастера. ![]() Добавлено через 9 минут и 22 секунды Программисты не нужны будут как класс. Только Рохос и кнопка ![]() Добавлено через 10 минут и 21 секунду Да, можно сказать, что все перешли с бейсика и ассемблера на языки высокого уровня и правильно сделали. Но что будет дальше .... хз... веб наверное. |
Автор: Akella 7.6.2011, 12:22 | ||||
Читал, но от этого используемые мною дотнет-программы НЕ стали работать быстрее. Я не спорю, что какой-то там цикл на миллион итераций, может быть в дотнете отработает быстрее, чем дельфи, но я вижу и чувствую, что программы на дотнете тормознутее и жрут непомерное количество ресурсов ![]() ![]() ![]() Добавлено через 1 минуту и 8 секунд
А что это значит? Добавлено через 1 минуту и 23 секунды поясни уж тогда |
Автор: Keeper89 7.6.2011, 12:46 |
Это значит, что надо соблюдать чистоту эксперимента - брать абсолютно идентичные (хотя бы по функционалу) приложения и сравнивать. В частности, я сомневаюсь, что если написать эту весчь от Нокии на Делфи, что-то сильно будет быстрее. З.Ы. Ну, кто уже рискнет написать калькулятор? ![]() |
Автор: Akella 7.6.2011, 13:21 |
Никто, нам главное потрындеть ![]() |
Автор: Rohoss 7.6.2011, 13:38 | ||||
Я не говорю, но думаю ты сам догадался
Понятно что это совсем неудобно в Делфи. И потом, я ничего не говорил про плагины. Для плагинов в .нете отдельная, довольно мощная инфраструктура, которая позволяет приложению работать дальше правильно при падении плагина. А тот калькулятор это разработка на основе модулей. В данном случае не предусмотрена разработка третьими лицами. Хотя никто и не запрещает это делать я говорил что у многих делфистов склонность к изобретению велосипедов. ты опять не понял ![]() Я не против. И представь, сколько я заработаю если буду писать программу за несколько минут. И пусть программа хоть и 5 Гб ОЗУ жрёт, оперативу купить дешевле чем содержать программистов. Кроме того, то о чём ты говоришь уже давно существует. Тот же интернет магазин или форум тебе не надо самому писать, ты его настраиваешь под себя тупо кнопками. Причём настроить можно насколько по разному, что может показаться что это совсем другой софт + в большинстве случаев в нём можно также редактировать код. |
Автор: Zloxa 7.6.2011, 14:03 |
![]() Неудобно не писать. Неудобно - обслуживать такую хрень. И для того чтобы мириться с этими неудобствами, как правило, нужны более веские основания нежели удобство отдельно взятого программиста и прикольность подхода. Как следствие, эта фишка весьма специфична и нисколь не показательна, а потому никак не может служить аргументом что доднет лучше. Не ну правослово, до чего ж доднетчики таки твердолобы и близоруки, дальше своего носа ну ни зги не видят, а ударившись бошкой раз, продолжают добить снова и снова. Это мировой бестпрактис такой штоле? Добавлено через 11 минут и 10 секунд Кстати, а никто не может подскзать, кому надо отдаться чтобы можно было заходить в форумы групп не по парямой ссылке? |
Автор: Rohoss 7.6.2011, 14:18 | ||
Ну понятно, что может быть лучше сотни человек работающих над одним .exe ![]() Добавлено через 3 минуты и 3 секунды
Я тебя уже вроде как просил назвать неудобство пользователя, который понятие не имеет, монолитное это приложение или составное. Добавлено через 5 минут и 54 секунды Ещё я бы попросил открыть папку Program Files (иногда она ещё называется Program Files (x86)), обычно она на компьютере есть, и внимательно посмотреть, сколько там составных приложений, а сколько монолитных. |
Автор: Rohoss 7.6.2011, 14:38 | ||
В разделе делфи есть "клуб делфистов", так можно попасть в данную группу. А вообще, насколько я понимаю, очень сложно. Надо вступать в группу, потом искать этот список где-то в профиле. Жёстко в общем всё ![]() |
Автор: Keeper89 7.6.2011, 14:40 |
Rohoss, надо переписать форум на C#&ASP.NET и сразу станет заходить удобнее ![]() |
Автор: Rohoss 7.6.2011, 14:52 | ||
Лучше на делфи, тогда будет быстрее работать и меньше оперативы жрать ![]() |
Автор: Keeper89 7.6.2011, 14:54 |
Или так ![]() |
Автор: Zloxa 7.6.2011, 15:05 | ||||||
А я тебе уже пояснял, что использование и обслуживание - разные вещи. Как я тебе могу это объяснить, если тебе просто не доводилось сталкивался с этим аспектом деятельности, для тебя он абстрактен и не понятен?
Я упоминал, и не раз, но повторю еще, специально для тех, кто в доднете. Разделение на модули может быть обоснованным, однако удобство и изысканность подхода - не достаточные основания для того. В общем же случае разработка модульного приложения, это жертва удобством, насущная необходимость в том, не столь уж и часта, по этой причине приведенный тобой пример не может быть показателен, он затрагивает узкий, частный аспект разработки. Даже если бы на этом участке и стало бы очевидным преимущество, этот частный случай не может быть обобщен. Добавлено через 7 минут и 26 секунд А вот, кстати, подобия упомянутого тобой движка управления плугинами, я в базе делфи не припомню. Здесь можно было бы поговорить о преимуществах. Опять же, если бы не были столь редки случаи, когда профит от испльзования плугинов покрвывал бы издержки. |
Автор: Keeper89 7.6.2011, 15:26 |
Автор Тоталкомандера говорил как-то, что у него прибыль покрыла неудобства, чему он был несказанно рад. |
Автор: AKATAN 7.6.2011, 15:28 | ||||||||
С тех, где присылают запороленные архивы, что открываются посредством платных СМС. ![]() Если заказчик в ТЗ (документ, подписанный обеими сторонами, а не бумажка "Я хочу...") не требует
то пиши на краденом ПО, краденом компе с проклятой ОС украденной у младенца в полночь, даже мышку и клаву укради - никому это не интересно. Я не знаю как обстоят дела с продажей ПО и программно-аппаратных комплексов в РФ. Может налоговой надо показывать и доказывать соблюдение лицензионного соглашения с разработчиком аудио-драйвера, который вы использовали для прослушивания музыки, во время написания кода. Но в Украине это не так. Добавлено через 1 минуту и 8 секунд
Java нынче в институтах учат... Хе! ![]() Знаете как ТЯЖЕЛО найти адекватного программиста... Хороших специалистов много. Стаж работы, мышление, навыки. Все на уровне! Также как и запросы по з/п. А так сложилось что наши/ваши собратья по Delphi довольно не прихотливы к з/п, не смотря на довольно не плохие навыки (плюс большая страсть к "смежным" специальностям). Может быть это мои предубеждения, может быть я жутко не прав и гореть мне в аду.
Понятия не имею. Не сравнивал. Кадры же дешевле. оффтоп: А что такое $1000 за лицензию? Вы завезите радиомодем, производства NoName. В количестве 50 шт. На таможне вам любезно расскажут, что сертификаты производителя не соответствуют Украинским, что оборудование должно пройти сертификацию - 2-3 мес, $4000. Аааа... ЭМС не прошли? Давай еще $2000... Вот на таких вещах и можно сделать себестоимость единицы продукта с $100 до $500 лишь на формальностях. И именно тут идет война, а не на экономии трехстах баксов... |
Автор: Rohoss 7.6.2011, 15:34 | ||||||
Похоже тех, кто имел с этим проблемы днём с огнём не с ищешь. Ты не путай .нет и сом. Это в сом бока с засираниям реестра и использованием не тех что нужно библиотек. В .нете проблема решена в частности за счёт жёсткой версионности. Приведённый мной пример надуманный и мега упрощённый, понятное дело нет смысла разделять маленький калькулятор < 100 строчек кода на модули.
Ну ты хоть согласен что модульное приложение проще разрабатывать, если конечно это большой проект?
А я говорил про делфи? ![]() |
Автор: Zloxa 7.6.2011, 15:43 | ||
Дык тотал командеры и иже с ними - какой процент от всего понаписанного? Подавляющее большинство изветных мне программистов делфи, шрапа и даже жавы занимаются разработкой шедеврально уникальных биллингов, шедеврально уникальных собственных ЕРП, шедеврально уникального банковского софта... Массового продукта, для которого расширяемость третьимми лицами может являться конкурентным преимуществом, из моих, не пишит никто. Потому, экстраполируя, я полагаю, что доля таких разработок черезвычайно низка. Rohoss, дружище, прости. Я тут фигни понаговорил, а, подумав, вдруг понял что, возможно я не до конца понял суть твоего примера. Скажи пожалуйста, чтобы твой калькулятор начал понимать операцию умножения и деления, нужно ли перекомпилить основной модуль? Или достаточно добавить новую библиотечку? Я думал что - второе. Добавлено @ 15:45 ты говорил о доднете, а я не припомнил в делфе. Возможно есть наработки третьих сторон.... но тут хотя бы намек на преимущество есть, есть что обсудить, в отличии от того, что ты привел. |
Автор: Rohoss 7.6.2011, 15:55 | ||||||||||
нет. но если его перекомпилить, он всё равно будет их понимать ![]() Ты считаешь это излишним?
Добавлено через 4 минуты и 34 секунды
А много мух не может ошибаться (c. Zloxa) |
Автор: Zloxa 7.6.2011, 16:49 |
Откуда основное приложение узнает что появился новый модуль? нет, я просто понял что я не понял того что ты пытался преподнести. Добавлено через 1 минуту и 15 секунд и к чему ты привел мою цитату я тоже не понял. |
Автор: Keeper89 7.6.2011, 16:53 |
Там в какой-то специальный контейнер загружаются все длл из папки. |
Автор: Rohoss 7.6.2011, 17:07 |
То, что модульное приложение в делфи и .нете это разные вещи. И что разработка модульных приложений на .нете ведётся легко и не принуждённо, но если ты будешь разрабатывать модульное приложение, то скорее всего ты получишь сколько гемора и г0внища, что пожалеешь что всё это затеял. что ты и пытался доказать, а я тебе пытался доказать что делфи это .нет, и что в .нете модульное приложение - это нормальная, здоровая практика. Есть специальный контейнер, в который можно добавить как физические папки (которые будут сканироваться при старте аппа), так и прописать загрузку модулей с кода. |
Автор: Zloxa 7.6.2011, 17:11 | ||
Откуда контейнер узнает какой экземпляр класса нужно создать? Я правильно понимаю что имя dll прописано в тэге буттона? |
Автор: Rohoss 7.6.2011, 17:26 | ||
нет, опять мыслишь как делфист ![]() Добавлено через 2 минуты и 29 секунд нужные классы метятся специальным атрибутом
|
Автор: Keeper89 7.6.2011, 17:30 |
![]() |
Автор: Zloxa 7.6.2011, 19:23 | ||||||
Ничегошеньки не понял. Пожалуйста разъясни как делфисту. ![]() Когда вызывается
На каком основании создается экземпляр AddOperation? Добавлено через 2 минуты и 14 секунд черт.. у мну дома делфи не стоит (((( |
Автор: Rohoss 7.6.2011, 19:47 | ||
Итак, есть некий http://msdn.microsoft.com/ru-ru/library/dd460648.aspx , который мы используем в нашем приложении подключив сборку System.ComponentModel.Composition к проекту. При старте приложения, он сканирует определённые места (всё это конфигурируется) и загружает сборки (длл). В них он ищет классы, помеченные атрибутом [Export(typeof(IOperation))] . Именно они (классы а не длл) и являются модулями для MEF. Когда уже прошла всё инициализация, список всех модулей, которые наследуют интерфейс IOperation мы можем получить в свойстве Operations нашего контейнера. Следующий момент, мы привязываем список классов, которые наследуют к свойству ItemsSource Листбокса. Так как у нас гуй WPFный, мы определяем шаблон для элементов лист бокса, у нас он очень простой в виде кнопки. Но в шаблоне мы также определяем, что для каждой сгенереной кнопки будет привязываться свойство Description интерфейса IOperation, и сам класс, который наследует этот интерфейс, и соответственно для него генерится кнопка, будет привязан к свойству тег кнопки. Вот так всё выглядит
Соответственно, здесь мы не создаём AddOperation, а его получаем в виде интерфейса. И соответственно с ним работаем ![]() Добавлено через 10 минут и 58 секунд Собственно говоря, мы можем ещё более извратится и в Description наследников IOperation содержать элементы управления и даже в этих модулях с ними работать, но это излишнее... |
Автор: Akella 7.6.2011, 21:57 | ||||
скажи это программистам корпорации Самсунг ![]() Добавлено через 2 минуты и 2 секунды
ты тоже не будешь нужен любой тупорылый юзверь зайдет на сайт майкрософт и нажмёт кнопку ![]() а то я сказал, что бы не расстаривался |
Автор: Rohoss 7.6.2011, 22:11 | ||
На самом деле, не смотря на то, что разработка становится всё проще, и казалось бы, пора уже написать весь софт, который можно представить. Только нужда в ПО всё больше и больше, но уже другие требования к качеству и функционалу. Хз, мож они просто аппарат глючный сделали, откуда мне знать где у них там бока ![]() |
Автор: Zloxa 7.6.2011, 22:26 |
Rohoss, спасибо за интересный, познавательный рассказ. ![]() Хоть мне, на этом хеловорде, и сложно оценить полезность и применимость подхода, но эффектность демонстрации отрицать нелепо. Уговорил, когда передо мною встанет задача разработки модульного приложения со сроком сдачи от года, я обязательно попробую ее реализовать на доднете. ![]() |
Автор: Keeper89 7.6.2011, 22:26 |
Rohoss, а можешь сам привести альтернативу на Delphi? Ну мне просто интересно (сама реализация, а не можешь ли конкретно ты) ![]() |
Автор: Akella 7.6.2011, 22:53 | ||||||
в самом низу http://forum.vingrad.ru/forum/delphi-kylix-pascal.html или подведи курсор к ссылке (еще) Добавлено @ 22:54
ПРИ ЧЕМ ЗДЕСЬ АППАРАТ я о тормознутой программе, которая написана на дотнете!!!!! для винды, для компьютера, для обычного ноута или десктопа! Добавлено @ 23:00
само собой, плюс надо учесть производительнось я админю крупное агентсво, которое сидело на десктопных программах, написанных на дельфи, при чем некоторые формы были очень, очень, очень сильно перегружены компонентами. Представь, что на одной форме кроме обычных кнопок и эдитов, было 4 грида, в которых было одновременно по несколько тысяч записей и всё это летало на довольно скромных конфигах железа (речь не о правильности проектирования, а о производительности программы). и учти что программа работала, начиная от Win98, до win7 включительно сомневаюсь, что программа, написанная на дотнете нормально бы работала теперь переползли в веб (php+js) и база (веб-программа, так сказать) конечно же стала тормозить, как при создании форм, так и при загрузке записей, при том, что элементов было в несколько раз меньше и пользователи (а их очень много) сразу это заметили и проявили большое недовольство все хотели назад, в старую программу пришлось тратить деньги на доп. железо, чтобы увеличить память компьютеров, которых немало и заказчик тоже оказался не очень доволен так что тормознутость программы имеет немаловажную роль и пользователю пофиг на чем оно там написано т.е. дотнетчик должен это учитывать этот факт и предупредить пользователя о том, что железо должно быть соответствующее а я об этом не беспокоюсь и спокойно отдаю пользователю программу, пусть у него там хоть 64 метра памяти |
Автор: Keeper89 7.6.2011, 23:06 | ||
Хватит уже сомневаться, напишите с Rohoss'ом на выходных маленькое приложение. например, для рядовых операций с БД и сравните. Это 2 часа, не больше. |
Автор: Akella 7.6.2011, 23:09 |
да я ваще не понял, чё там надо писать и вообще нужно ли мне оно? ну да, расширяемость - это круто, но я нонял, в чем крутизна для пользователя и программиста, поясните на пальцах, всю тему по диагонали, многабукаф |
Автор: Keeper89 7.6.2011, 23:28 |
На пальцах - Rohoss говорит на C# можно писать лечге, гибче и универсальнее, ты говоришь, что все это не стоит той тормознутости, которая имеет место в каком то там Самсунге. Пример, что привел он - просто показатель интересного подхода, и мне, кстати, скажу еще раз, интересно увидеть это на Delphi. Я вообще не вижу предмета спора, т.к. Вы спорите о том, что белое белее, а черное чернее, а еще и пытаетесь из разных цветов найти эталон. C# лучше в одном, Delphi в другом. И на мой взгляд (и не только), в целом первый лучше второго по многим показателям. Я предлагаю. чтобы избежать бесполезных холиваров, сделайте тестовое приложение (типа для бизнеса) и мы посмотрим (по разным параметрам - производительности, сложности кода, времени разработки, простоты поддержки и т.д.). |
Автор: Akella 7.6.2011, 23:31 | ||||
вот тебе и карты в руки ![]() Добавлено через 1 минуту и 32 секунды
ну я же выше уже сказал - что мы тут только потрындеть ![]() мне лень разбираться, что там нужно написать на дельфи, чтобы получилось, как у Рохоса ![]() Добавлено через 2 минуты и 20 секунд
и кто за это будет платить? время - деньги Добавлено через 5 минут и 51 секунду кстати, представь что платить будут двое заказчиков, ты один из них ![]() программа на дельфи будет дешевле, т.к. у дельфиста меньше зарплата ![]() на чем ты закажешь программу, на дельфи или на дотнете? мысль: если на дотенет всё так круто, быстро и красиво, то почему программисты на дотнете больше получают? ведь там легче программировать. И то, что разработчик на дельфи будет писать день, разработчик на сишарпе напишет за час... и где справедливость? |
Автор: Keeper89 7.6.2011, 23:56 | ||||
Подтверждение своих слов бесценно ![]() Честно говоря, мне будет пофиг, на чем оно написано. Зависит от приложения, но в основном если я не буду сам ее поддерживать дальше, то закажу на C#.
Только если ты подразумеваешь фриланс. Укомплектовать фирму с лицензией Delphi обойдется в немалую сумму.
Чтобы не быть голословным, вот последние вакансии с хедхантера. ![]() ![]() Это обманчивая простота. ПРофессионалы есть как в Delphi, так и в C# и их труд стоит дорого, а как показано на рисунках, примерно одинаково. Расскажу секрет. По собственному опыту основная среда - Delphi 5-7 (ибо бизнес не покупает завтраки от Codegear/Embarcadero за большие деньги), а если и покупает, то чрезвычайно сложно сделать апгрейд своей крупной системы. Практически во всех вакансиях по есть 2 варианта - переписывание их шедевральной ИС (кучи макарон) на C# или поддержка этих макарон до победного конца со всевозможными затычками всяких там Юникодов и прочего. Много, кстати, вакансий в банках - и там за эту **** мозгов предлагают хорошие деньги. Только появляются они на удивление часто, наверное не все выдерживают ![]() C# дешевле, документированнее. современнее и т.п. и главное (!) с ним есть уверенность в завтрашнем дне, а это важно для крупного бизнеса. И еще о тенденциях: за последний год сумма, предлагаемая за вакансии по Delphi возросла, а C# - это личное наблюдение. |
Автор: Rohoss 8.6.2011, 00:19 | ||||||||||
ты сам ответил на свой вопрос ![]()
Нет, я делфи года два не открывал ![]()
Я всё, сдаюсь. Злоха уже по крайней мере с одной позицией согласился - а это уже достижения. Не могу же я всех делфистов перевербовать. И тем более, чем больше будет программистов на .нете, тем меньше будет у них зп, так что я копаю себе могилу ![]() ![]()
Ну а что вы хотели, что вебстраница будет лучше работать чем гуй? ![]() ![]() |
Автор: Rohoss 8.6.2011, 00:40 | ||||||
В общем давайте ещё маленький примерчик возможностей C# и на этом прекратим ![]() В http://forum.vingrad.ru/forum/topic-310936/view-all.html делфисты пытаются локализировать своё приложения, они качают сотни мегабайт компонентов, пробуют, подключают. У них что-то глючит, не работает, виснит. Теперь о том, как мы в дотнете решаем эту проблему: легко, быстро, удобно, беспощадно и без сторонних компонентов. И что мы получаем: 1. приложение, которое может сменить язык на лету, без необходимости перезагрузки приложения. 2. элементы управления выравниваются в зависимости от размера текста 3. кто угодно сможет создать новый язык для приложения. Что нам для этого нужно: два класса Language
и LanguageManager
а так же всё это мы инициализируем
Собственно практически и всё. Далее, в папке Languages у нас находятся переводы. Теперь, если мы будем расширять наш гуй, единственное что нам нужно это привязка к ключу, который должен быть в файлах перевода. Короче, что-то я запутался в рассказах, проще посмотреть на примере. Прикрепил архив с приложением и проектом отдельно |
Автор: Rohoss 8.6.2011, 00:53 | ||||
В общем, если вы хотите добавить новый язык к приложению, вы можете просто открыть папку Languages, скопировать или же en.xaml или ru.xaml, назвать его как-то откредактировать в текстовом редакторе и оставить в той же папке. Вот и всё, новый язык готов. Вот так будет выглядеть новый файл для Украинского языка
Если вам нужно добавить новый элемент управления, который будет локализироватся, вам всего лишь нужно в определить для него динамический ресурс
Ну и дальше привязать ему значение в словарях <sys:String x:Key="SuperButtonName">Да, вот текст кнопки на соответствующем языке</sys:String> Вот и всё, и независимо в какой части приложения будет элемент управления, всё будет работать. При чём, если ключа не будет найдено в словаре соответствующему вашему языку, будет использоваться ключ из словаря по умолчанию. Кроме того, если язык вашей системы будет в списке определённых языков, он и будет использоваться по умолчанию ![]() |
Автор: bems 8.6.2011, 05:21 |
простите за оффтоп, а как перестать получать топик в списке новых сообщений, когда имел неосторожность написать в него? |
Автор: Dik0n 8.6.2011, 07:03 | ||||||||
В своем профиле отпишись от темы... Дальше по теме с переводом, не знаю чего у них там глючит, не охото вникать, все делается довольно просто, с написания небольшого класса, например в программе которая кстати, писалась для вас сишники, кто помнит Dev-C++ делается это вот так
Use
Теперь по поводу тормознутости C# а тормозит он из за отстойной медленной скорости в работе GUI Вот давайте сравним добавление 1000000 записей в таблицу с 3 колонками тут я конечно пошол на хитрость и использовал не стандартный контролл из VCL Вы тоже можете взять самый лучший контролл для таблиц.
Быстрое добавление(1 секунда с небольшим), плавный скроллинг, там сами на своем компе затестируете, жрет примерно 55 метров ![]() Для БД не буду ничего писать, так как программирование не заканчивается толко работой с базами данных. В архиве исходник и .exe |
Автор: Akella 8.6.2011, 09:58 | ||
ты не понял вопроса - а вопрос был в цене, перечитай внимательно ещё раз условие. Вслух! |
Автор: Zloxa 8.6.2011, 10:10 | ||
Да, согласен. ![]() ![]() ![]()
Увы, мало мальски подкованый технический специалист это понимает. Но менеджеры же.... . ![]() У нас все чаще наличие веб интерфейса появляется в требованиях к модулям. Почти все новые приложения штампуются двуличными - гуевыми и вебовыми. Пользоваться юзери предпочитают гуем, но без веба не происодит приемки заказчиком. Я попытался в тот веб окунутся, у меня опустились руки и я впал в уныние. В этом участвовать у меня нет никакошенького желания. Много рутины при весьма малоудовлетворительном выхлопе. К тому еще, жавно уже витает в воздухе идея перевести фронтофисы на никсы+жабу+постгр+оо заместо винды+делфя+mssql+ms office. Якобы экономия на лицензиях составит шестизначную цифру дорарев в год и игра стоит свеч в жопе дирекции айти. В общем управляющее звено стремится делаеть все, чтобы рядовой айтишник побольше заманался и ну никак не стремится оплачивать его комфорт и удобство ![]() |
Автор: Keeper89 8.6.2011, 12:22 | ||
bems, В опциях темы - Подписка на тему - не это? Добавлено через 3 минуты и 26 секунд
А что, все ценой определяется? Мне молоко, которое просрочено будет завтра не нужно и за полцены. А если без абстракций - на Веблансере, например, цены примерно одинаковы. |
Автор: Rohoss 8.6.2011, 12:34 | ||||||||
Вот если не охота вникать, то тогда не стоит и говорить. Потому как требования там совсем другие нежели ты привёл. По поводу тормознутости гуя - это вообще лол. Я не ходил по интернетах и не качал всякие компоненты, как ты, я просто использовал стандартный ЛисВью с ВПФ. Отрисовка милиона записай у меня заняла 00:00:00.0010000 (одну сотую секунды), десяти миллионов 00:00:00.0030002 (три сотых секунды) Не знают в делфи что такое виртуализация Вот код
И сам проект прикреплю.(с ошибкой в названии) Просто вот не понятно Dik0n, нафига триндеть если ты ничего не знаешь про данную систему?
Ну я так понимаю это вообще мировая тенденция ![]()
Угу, просто некоторым ещё не дошло, что покупаю дорогие инструменты можно экономить. А им нужно бабло отложить прямо сейчас, и этим они ставят большие палки в колёса разработчикам. Добавлено через 2 минуты и 55 секунд нет это не сработает ![]() ![]() |
Автор: Zloxa 8.6.2011, 12:56 |
Знают. Делфийский листвю, тоже умеет быть виртуальным. Правда связвать данные с контролом придется ивентом. Для тривью такой же перфоманс достигаем? |
Автор: cemick 8.6.2011, 12:59 |
Rohoss Подскажи как в дотнете быстро написать БД приложение, состоящие из двух таблиц, где отношение между таблицами мастер-деталь. Таблицы очень большие, миллионы записей, соответственно не хочется все прогружаться, и потому записи из детали подгружать по мере необходимости. Причем выходит так, что на этапе компиляции мы не знаем ни мастера, ни детали, запросы подгружаются в момент выполнения программы. Я думаю в делфи с этим справлю за 4 минуты. |
Автор: Zloxa 8.6.2011, 13:01 | ||||
Судя по тому что идет тенденция отказа от "удобства" в сторону дешевезны, до "некоторых" дошло как раз таки обратное. Однако не исключено что эта тенденция через некоторое время может опять изменить направление. Добавлено @ 13:09
Я прекрасно знаю о чем ты толкуешь, но, во первых, если я не ошибаюсь, даже на делфи ты не получишь десять миллионов записей от MS SQLя по мере надобности. На сколько я знаю, так не умеет сам MS SQL, он отдает набор в фетч только после того как он полностью сформирован, чтобы как можно меньше держать блокировки по чтению. Выдавать фетч по запросу клиента могут не многие системы. Я знаю лишь об оракле. Возможно постгр и ФБ так умеют, они - версионники, у них блокировок по чтению нет. Так что эта плюха скорее к платформе БД и средствам доступа, но не к платформе разработки. Во вторых - сам посуди, сколько времени понадобится пользователю, чтобы доскроллировать хотя бы до сотой тысячи, почему бы выборку и не ограничить, хоть и суррогатно? |
Автор: Rohoss 8.6.2011, 13:18 |
Нет, вообще я никогда его не использовал, но только что посмотрел. Виртуализация по умолчанию отключена, её надо включать. При включенной миллион записей добавляется так же быстро, но при скролинге он ужасно тупит. Но собственно говоря и цели у тривью немного другие ![]() |
Автор: Zloxa 8.6.2011, 13:21 |
Dik0n продемонстриовал именно тривью. |
Автор: Rohoss 8.6.2011, 13:22 |
Кстати, по бд, а есть вообще для делфи адекватные ORM? |
Автор: Zloxa 8.6.2011, 13:29 |
Rohoss, ОRM это вечный холивор между жабистами и датабазниками. Зачем ты эту тему приплетаешь к этому холивору? Он не принесет твоей стороне очков. ![]() |
Автор: Rohoss 8.6.2011, 13:29 |
Ну я его пример не смотрел, поскольку у меня нигде нет установленного делфи. Но я догадываюсь, какой именно он использовал компонент, когда-то сам немого с ним сталкивался. Если это он, то он может работать и как тривью и как листвью... хотя какая в принципе разница. При желании в листвью ВПФ можно и раскрывающие списки делать и тд, потому я никогда и не использую тривью, мне он кажется просто номинальным... |
Автор: cemick 8.6.2011, 13:36 | ||||
Что это за жесть??? Где тут тестирование ГУИ? Сначала формируется список потом присваивается ItemSource. Вот пример аналогичный делфовому на тест гуи: [code=С#] private void button1_Click(object sender, RoutedEventArgs e) { list = new List<MyData>(); DateTime dt1 = DateTime.Now; CreateMillion(); DateTime dt2 = DateTime.Now; TimeSpan ts = dt2 - dt1; textBox1.Text = ts.ToString(); } private List<MyData> CreateMillion() { MyData myData = null; for (int i = 0; i < 1000000; i++) { myData = new MyData() {X = i, Y = i + 1, Z = i + 2}; lv.Items.Add(myData); } return list; } [/code] 6 секунд, в 6!!! раз дольше Добавлено через 6 минут и 44 секунды
В слишком глубоко подумали, а говорил не про порционную загрузку. А про клиентские средства. В делфи связать TDataSet'а раз плюнуть, при этом компоненты будут заботиться о рефреше детали. Кинул две таблицы, кинул DataSet, DataSoource, присвоил запросы, указал мастердасет и ключ. Компиляция. Приложение готово. |
Автор: Keeper89 8.6.2011, 13:45 |
cemick, мне кажется только ненормальный будет так заполнять в делфи список. |
Автор: Akella 8.6.2011, 13:47 | ||
это было образно сказано ;) не льсти себе |
Автор: Rohoss 8.6.2011, 13:49 | ||
да нет, ты ошибаешься, это как раз и есть тестирования гуя. Сначала я создаю данные, а отрисовываются они во время привязки при lv.ItemsSource = list; А твой пример это создание данных в перемешку с прорисовкой гуя. |
Автор: Akella 8.6.2011, 13:50 | ||
БЛИИИААААА ДА ВЫ ЧЁ РЕБЯТА, ИЗВИНИТЕ ЗА ВЫРАЖЕНИЕ, ТУПИТЕ!!!??! Я О ДРУГОМ ![]() ![]() ![]() ![]() ![]() ![]() РЕЧЬ ШЛА О ПРОИЗВОДИТЕЛЬНОСТИ И ТОМ, ЧТО ЮЗЕРУ ПОХ НА ЧЁМ НАПИСАНО. ГЛАВНОЕ ЧТОБЫ РАБОТАЛО БЕЗ ГЛЮКОВ И БЫСТРО! |
Автор: Keeper89 8.6.2011, 13:52 |
Rohoss в последнем посте сказал верно |
Автор: Akella 8.6.2011, 13:52 | ||
За то у нас есть выбор! Мало того, в дельфи встроен ITE, если ты забыл ![]() Только я не понял,о каких СОТНЯХ идёт речь? |
Автор: cemick 8.6.2011, 13:53 | ||||
ну там же зашел разговор про тест ГУИ, а то что было первоначально не имеет ни какого отношения к
|
Автор: Akella 8.6.2011, 13:54 |
Не всё! Нужно дать пользователю удобный и готовый инструмент для перевода. Возможность хранить данные в базе. И др. |
Автор: Zloxa 8.6.2011, 13:57 |
Вот, кстати, в демухах видел, на практике же ни разу не удавалось пользовать )) На сколь нибудь реальных объемах, скролл мастера становится непооротливым, не эргономичным, приходится детали рефрешить ассинхронно и лапами. Я бы не стал это использовать как аргумент.... Судя по всему Вы действительно что-то понимаете в доднете? Там действительно все плохо с датааварью? Я слышал в адо.нет наконец то дорос до отмершего с БДЕ ништякового ништяка вроде ТUpdateSQL, позволяющего для набора данных самостоятельно сформировать запросы на добавление, модификацию, обновление и удаление записи. Мне этого так не хватало в обычном АДО. (( |
Автор: cemick 8.6.2011, 13:57 | ||
Глупость какая, там всегда отрисовываются только видимые записи, хоть миллиард захерачте |
Автор: Keeper89 8.6.2011, 13:58 |
Akella, быстро и работало можно сделать и там и там, в чем вопрос? |
Автор: Akella 8.6.2011, 13:58 | ||
уныние - это смертный грех ![]() |
Автор: Zloxa 8.6.2011, 14:01 | ||
ПОХ НА ЮЗЕРА. РАБОТУ ОПЛАЧИВАЕТ ЗАКАЗЧИК. А УДОБСТВО МАРТЫШЕК - НЕ САМЫЙ СУЩЕСТВЕННЫЙ КРИТЕРИЙ ДЛЯ ТОГО, КТО ПЛАТИТ ДЕНЬГИ. МАСШТАБИРУЕМОСТЬ, ПОТДЕРЖИВАЕМОСТЬ, СТОИМОСТЬ РЕАЛИЗАЦИИ И ВЛАДЕНИЯ - КУДА БОЛЕЕ ВАЖНЫЕ КРИТЕРИИ. ЭТО ИНТЕРПРАЙЗ, ДЕТКА. ЗДЕСЬ ЮЗЕР - РЕСУРС. |
Автор: Akella 8.6.2011, 14:02 | ||
оно? http://www.instantobjects.org/ http://www.macrobject.com/en/dobject/ http://tiopf.sourceforge.net/Doc/overview/index.shtml http://code.google.com/p/g-framework/ http://tiopf.sourceforge.net/ http://www.remobjects.com/da/delphi.aspx |
Автор: Frees 8.6.2011, 14:08 | ||
aimp, skype - писались для пользователя а не заказчика(хотя для делфи программ это скорее исключение чем правило).... |
Автор: Akella 8.6.2011, 14:09 |
http://code.google.com/p/jazz-sdk/ http://code.google.com/p/delphiorm/ |
Автор: Frees 8.6.2011, 14:10 |
А кто правда думает, что однозначно лучший только 1 язык? |
Автор: Rohoss 8.6.2011, 14:14 | ||||||
Ну вот. А замем делать то что не нужно? Зачем отрисовывать то, что за пределема видимости? Там чёрти что ![]() http://www.instantobjects.org/
http://ru.wikipedia.org/wiki/ORM
![]() |
Автор: cemick 8.6.2011, 14:14 |
Может быть вы сможете доказать что Delphi не лучший язык? ![]() Добавлено через 1 минуту и 25 секунд Rohoss Хрен с ним с ORM, вы на мой ответ про простое приложение БД с Мастер-Деталью не ответили)) |
Автор: Zloxa 8.6.2011, 14:16 |
Akella, ты даешь гарантию адекватности приводимых тобой ОРМ? /*ОРМ вообще это адекватно?*/ ![]() |
Автор: Rohoss 8.6.2011, 14:17 |
Я например не утверждаю что однозначно. Просто для реализации большинства современных требований больше подходит .нет. Преимущества делфи над .нетом конечно же есть и их много, но со временем они просто становятся не актуальными ![]() |
Автор: Keeper89 8.6.2011, 14:19 |
Точнее чем сказал Zloxa и не скажешь ![]() |
Автор: Rohoss 8.6.2011, 14:20 | ||||||
Это пост появился до того как я запостил ![]() Добавлено через 42 секунды
Мля, ну вы и постите реактивно ![]() Добавлено через 3 минуты и 44 секунды
Я ответ на этот вопрос не знаю и знать не хочу. Потому что примеры, которые я приводил основываются на реальных требованиях, а кто громче пёрднит, вы уж простите, меня мало интересует. Решение инопланетных задач - это не задача .нета. ![]() |
Автор: Zloxa 8.6.2011, 14:28 |
Я не знаю кто как, в результате длительных холиворов с моими опонентами, я пришел к выводу, что за десять лет разрыва между делфей и доднетом, доднет смог пока лишь предложить интересную для меня, как разраба технологию - WPF. Причем интересна она мне лишь по той причине, что я не в зуб ногой о чем там, но все говорят что она весьма и весьма инновационна. Все остальные ставшие известными мне свистелки и перделки, конечно интересны, но не позволяют однозначно рассудить, что доднет, как платформа решений уровня предприятия - лучше. ![]() |
Автор: cemick 8.6.2011, 14:33 |
Инопланетных задач? Если это считать инопланетной задачей, тогда Дот.Нет только и годиться что писать калькулятор, покажите мне десктопное энтерпраиз решение на дот.нете? Все .NET десктоп продукты которые я знаю жуткие тормоза: VS, Evenote 3.5, Seesmic Добавлено @ 14:39 WPF круто, но для бизнес приложений она как собаке пятая лапа, а то что сейчас есть это жуткий комок багов и глюков, в 5 фреймворке наконец то сделают дебагер для WPF, может ситуация измениться. Вообще это в стиле МС куча всего сделать клевого, но все до конца не довести. |
Автор: Rohoss 8.6.2011, 14:50 |
Всё, Рохосс всё что сказать хотел уже сказал, и дальше прекращает тут что-то доказывать, ибо у него тоже есть ещё чем заняться ![]() |
Автор: Akella 8.6.2011, 14:55 | ||||||||||
в каком смысле? Добавлено через 1 минуту и 29 секунд
мастер-деталь - это инопланетная задача ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Добавлено через 1 минуту и 49 секунд инопланетная задача - это то, что ты привел про какую-то там расширяемость Добавлено через 3 минуты и 11 секунд
РАСШИРЯЕМЫЙ КАЛЬКУЛЯТОР ![]() Добавлено через 5 минут и 10 секунд
Не успевают. Примером тому: Windows 95, Millenium, Vista, Office 2007. Это только самые распространённые. Добавлено через 5 минут и 59 секунд
Да, во флейме и в песочнице работы много. А в пятницу за тебя всё сделает сама MS Studio ;) |
Автор: cemick 8.6.2011, 15:35 |
Кто с мечом к нам прийдет, тот от меча и погибнет.(с) ![]() Закидали камнями тухлыми помидорами, победа!))) |
Автор: Rohoss 8.6.2011, 15:57 |
Вот почему-то, когда с одними людьми можно всё обсудить, другие пытаются всё обосрать выдвигая свои неконструктивные умозаключений и убеждения Я не знаю как подгружать данные с бд по надобности, и этот вопрос меня мало волнует, потому что через БД в основном работаю с http://ru.wikipedia.org/wiki/Language_Integrated_Query а работу с бд в делфи считаю вообще анекдотом, но это моё личное мнение ![]() Ещё офис обосри ![]() Добавлено через 1 минуту и 16 секунд Вот почему-то, когда с одними людьми можно всё обсудить, другие пытаются всё обосрать выдвигая свои неконструктивные умозаключений и убеждения Я не знаю как подгружать данные с бд по надобности, и этот вопрос меня мало волнует, потому что через БД в основном работаю с http://ru.wikipedia.org/wiki/Language_Integrated_Query а работу с бд в делфи считаю вообще анекдотом, но это моё личное мнение ![]() Ещё офис обосри ![]() Добавлено через 1 минуту и 20 секунд Вот почему-то, когда с одними людьми можно всё обсудить, другие пытаются всё обосрать выдвигая свои неконструктивные умозаключений и убеждения Я не знаю как подгружать данные с бд по надобности, и этот вопрос меня мало волнует, потому что через БД в основном работаю с http://ru.wikipedia.org/wiki/Language_Integrated_Query а работу с бд в делфи считаю вообще анекдотом, но это моё личное мнение ![]() Ещё офис обосри ![]() |
Автор: Zloxa 8.6.2011, 16:03 |
Линкью, кстати тоже вещ забавная. Я прально понимаю, им можно жойнить коллекции? Но вот как прослой между клиентским кодом и датабазой, он меня как то больно шибко уж сильно настораживает. |
Автор: cemick 8.6.2011, 16:10 | ||
+100500 Вещь клевая, но легко можно прострелить себе ногу. И очень осторожно и уместно надо использовать. |
Автор: Rohoss 8.6.2011, 16:39 |
Конечно ![]() |
Автор: Dik0n 8.6.2011, 17:04 | ||||||
Ну так то и у нас доли секунды
Вот и хорошо что у нас есть кучи компонентов, вот небольшой списочег VirtualStringTree только published свойств компонента ![]() ![]() http://my-soft.ucoz.ru/1.png |
Автор: AKATAN 8.6.2011, 17:26 | ||||
![]() Смотря где, с кем и когда. т.к. занимаюсь СКАДА системами, то говорю из собственного опыта: мартышка, в виде главного инженера (уполномоченного лица заказчика) диктует условия очень и очень жестко. Там кнопка, там график, а там ее быть не должно (часто приходится писать компоненты именно под нужды ОДНОГО заказчика). Прибыль от продажи такого ПО не меньше, чем от продаж "серийного" ПО, где, как Вы сказали юзер - ресурс. |
Автор: Rohoss 8.6.2011, 17:47 | ||
Считаешь такой набор свойств есть гуд? Значит мало опыта ещё ![]()
Работал я когда-то, давным давно с вашим VT, вроде так вы его называете. Компоненты хороши (если не ошибаюсь их там два), однако они рядом не стояли с ListView в WPF |
Автор: Dik0n 8.6.2011, 18:20 |
Пустые слова, где доказательства, вот зацени демку из стандартного набора, и сделай на WPF хоть что нибуть, что невозможно там. |
Автор: cemick 8.6.2011, 18:43 | ||
На самом деле легко можно сделать что невозможно в VT. Но не в этом дело же. Концепция WPF: xaml +DataTemplate+ DataBinding сильна. Дело то в сырости WPF и инструментов разработки, общей заторможенности .Net. |
Автор: Rohoss 8.6.2011, 18:44 |
Всё давным давно доказано, почитай интернету. Я уже писал, что больше не буду тут примеры приводить, но если тебя этот вопрос действительно интересует, то ты можешь посмотреть как может выглядеть гуй с помощью ВПФ на просторах интернета. |
Автор: cemick 8.6.2011, 18:54 | ||
Да но в энтерпрайзе он не нужен, в энерпрайзе не нужны эффекты вот в чем дело, нужно стандартное Windows приложение. |
Автор: Dik0n 8.6.2011, 19:14 | ||
Ну да полазил по гуглу посмотрел интерфейсы, ничего особенного, я тоже самое на VT делал. Я даже VT под дизассемблер приспособил, дизассембелирование и отрисовка на лету с любого виртуального адреса. http://my-soft.ucoz.ru/images/gg_dissasm_big.png |
Автор: Frees 8.6.2011, 19:23 |
VT это GDI, а WPF - DirectX. свистелки и пирделки тут гораздо красивее можно сделать... |
Автор: Rohoss 8.6.2011, 19:25 | ||
Тут вопрос спорный. Дело в том, что если софт разрабатывается для внутреннего заказчика, то понятное дело руководство не хочет тратится на красивый гуй и тд, так как ему пофиг на какие кнопки будет жать подчинённый. Однако, если софт для другой организации, или ещё лучше если для массовой продажи, то тут важный фактор человеческая психология. То есть, если человеку софт визуально понравится, он найдёт сам для себя обоснования чтобы его купить, даже пренебрегая при этом некоторый полезным функционалом. |
Автор: Frees 8.6.2011, 19:26 | ||
Сейчас еще модно стало Веб и всякие облака SaaS - тут Delphi совсем никак (или я неправ?) |
Автор: Rohoss 8.6.2011, 19:29 | ||
Хотя, тут вопрос тоже спорный. Человеку более приятно будет работать с более красивым софтом, а значит и уважение к компании будет выше и человек навряд ли перейдёт на другую работу, где он будет работать с унылым гуем. На самом деле это тоже играет роль, однако я не думаю что работодатели пост советского пространства это будут учитывать. Добавлено через 2 минуты и 16 секунд Однако, среди известных мне проектов (десктопа), которые разрабатываются в данный момент для западных компаний 80% это WPF |
Автор: Akella 8.6.2011, 23:20 | ||||
;) http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=delphi+%D0%BE%D0%B1%D0%BB%D0%B0%D0%BA%D0%B0#sclient=psy&hl=ru&source=hp&q=delphi+cloud&aq=3&aqi=g5&aql=&oq=&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=8a96674a9faec679&biw=1366&bih=649 |
Автор: Zloxa 9.6.2011, 09:22 | ||
Тут вопрос в действительности не такой уж и спорный. Ты наверно слышал о такой штуке, как пирамида потребностей? Так вот эстетические потребности находятся у вершины пирамиды, а физиологические потребности - в основании. Эта та самая причина, почему эстетиеский аспект рассматривается в последнюю очередь. Возьмем, к примеру, 1С Бухгалтерию и ОЕБС. 1С эргономичен, удобен, гибок. На нем и буху работать приятно и разрабатывать под него - легко и непринужденно, не даром в этой нише пригрелось столько бездарностей от программирования. ОЕБС - ужасен, не удобен, гибок как железобетон и грациозен как гипопотам. Бухи пьют валерьяну, работая на нем, разрабы зубовно скрежещут, допиливая его. А стоит ОЁБС не на один порядок дороже - почему? Потому что он масштабируем. И тот, для кого масштабируемость - базовая потребность, будет терпеть его таким, какой он есть. Жертвовать масштабируеостью ОЕБС ради эстетической привлекательности 1С, душевного здоровья бухгалтеров и удобства программистов, как - то нелепо, нет? Потому я и говорю, эргономика безусловно важна, но она - отнюдь не главное и сравнивать эргономические характеристики следует далеко не в первую очрередь. |
Автор: Keeper89 9.6.2011, 10:16 |
Ну не знаю, версии 1С что я видел (7.7), на мой взгляд те еще крокодилы. |
Автор: Zloxa 9.6.2011, 10:20 |
Keeper89, оебс уёбснее даже семерки ![]() Добавлено через 1 минуту и 35 секунд Восьмерншный интерфейс 1Ски я нахожу достаточно милым и удобненьким. |
Автор: Rohoss 9.6.2011, 10:53 |
Я в пользу ВПФ приведу ещё один пример. Дело в том, что создавать на нём приложения, уровня вин-форм, совсем не сложно и это похоже на создание приложений в винформ. Так же кликнув два раза на кнопке вы создадите обработчик событий, так же вам доступен список свойств и событий в дизайнере. Буквально потратив пару дней по пару часов вы уже сможете на ВПФ делать ничем не хуже гуй чем на винформ. В таком случае, целесообразней будет выбрать платформу, которая имеет больший потенциал, а вдруг понадобится ![]() Добавлено через 6 минут и 35 секунд Кстати, вот специально для таких как Dik0n http://dl.dropbox.com/u/5353609/Site3DTemplate.html , которые могут сделать на VT всё что возможно на ВПФ (правда в данном случае это сильвелат, младший брат ВПФа), попробуйте повторить. Там внизу, где News, Company - это листбокс |
Автор: Zloxa 9.6.2011, 11:08 |
против ВПФ вэтой ветке, на сколько я помню, двигался только один тезис - глючность низкая стабильность. В пользу делфи у меня есть такой спорный довод - исходники vcl. Я на практике не однократно сталкивался с ситуацией, когда не могу добиться необходимого мне функционала от компонент. Походив по их исходному коду под отладчиком я, как правило, рассеивал свои недоумения. Зачастую эти недоумения возникали в виду недодосканального изучения документации, но бывало и такое, что мне казалось что недостаток вызыван ошибкой проектирования или же ошибкой реализации. Тогда я брал исходник нужного мне компонента, приводил его к должному для себя виду, пристегивал его к проекту. Тому, конечно, есть риск - неудобопортируемость. Но в 2011м году ожидать что доведется кудато портировать исходники для седьмй делфи - не приходится. Полагаю на доднете, если вдруг, по каким то причинам не удается добиться ожидаемого функционала от компонента, найдется куда меньше пространства для маневра. Придется смириться с тем, что есть. |
Автор: cemick 9.6.2011, 11:10 | ||
Там какашка какая то, которую просто стыдно показывать. В делфи куча компонентов есть которые могут сделать вам красиво. Если уж решили показывать интерфейсы, то приведи например вот такой http://demos.telerik.com/silverlight Но в данном случае можно тогда посмотреть DevExpress VCL, и я бы уже не сказал что между ними огромная пропасть |
Автор: Zloxa 9.6.2011, 11:10 |
ссыль битый ![]() Добавлено через 1 минуту и 30 секунд Если не ошибаюсь, девэкспрессы есть и для доднета... ![]() |
Автор: cemick 9.6.2011, 11:13 |
Zloxa И полностью поддерживаю. В Делфи НЕТ МАГИИ. Можно докапаться до самого низкого уровня, до ASM или WinAPI, контроль приложения полный. И при разработке это большой плюс. Добавлено через 1 минуту и 31 секунду Ссылка нормальная но туда лучше не заглядывать, я досих пор хочу это развидеть |
Автор: Rohoss 9.6.2011, 11:20 | ||||||
В дотнете тоже есть отладчик и я бы не сказал что хуже чем в делфи. И исходники можно смотреть, есть утилита специальная.
Ты имеешь ввиду высказывания семика? Я на это даже отвечать не захотел. На самом деле, в вс2010 нет проблем, в вс2008 они были. Есть маленькие неудобства, например, определив элементы управления в ХАМЛе дебагер нам не укажет строчку, в которой произошло исключение. Однако, из самого исключения можно более менее адекватно определить что не так. Короче, никаких глюков, которые мешали бы разрабатывать проект любой сложно - там нет. Что касается сильвелата, то там да, баг на баге и багом погоняет ![]() Добавлено через 2 минуты и 24 секунды нет, проверил. возможно у тебя просто плагин сильверлата не установлен Добавлено через 4 минуты и 40 секунд
ты пробовал кликнуть на кубик? |
Автор: cemick 9.6.2011, 11:29 | ||||
Я думаю в этом большой опыт? Во первых не исходники получаем, во вторых отладить часто их не возможно, и далеко не все можем отдисассемблировать
О-да, если в конструкторе контрола выскачил экспешен, то в дебагере мы получим сообщение не правильаная XAML разметка, я бы не сказал что это помогает адекватно определить что нет так. О да! |
Автор: Rohoss 9.6.2011, 12:21 | ||||||
Извини, но мне тут всё понятно. Мало того, дизайнер нам отображает ошибку до того, как мы попытаемся его скомпилировать |
Автор: cemick 9.6.2011, 13:21 |
Видать поправили в SP1, действительно сейчас ОК. Ну и вообще в принципе с SP1 студия стала гораздо стабильнее. Что не может не радовать. Но все равно есть куча досадных вещей которые раздражают, взять хотя бы отсутствие вменяемого UML для студии. И вообще к чему только не прикоснешься везде траблы, хочешь использовать Unit тесты, выясниться что через CreateUnitTest нельзя создать тест для метода который был реализован в классе предке, но не перекрыт в текущем. И так к чему не прикоснешься. А без решарпера студия вообще пустышка, а с ним еще больший тормоз и падает. |
Автор: Rohoss 9.6.2011, 13:39 |
Я уже Злохе когда то говорил, что в .нете надо писать на .нете а не на делфи, и будет вам счастья ![]() Добавлено через 3 минуты и 49 секунд .нет, это не какой-то навороченный делфи - это совсем другое, пока будете использовать .нет как делфи большой отдачи вы не добьётесь |
Автор: cemick 9.6.2011, 13:53 | ||
Извините это как? |
Автор: Dik0n 9.6.2011, 13:57 |
Программирование это искусство, а NET не дает свободы, а писать всю жизнь говн*код для баз данных, это не по мне... Даешь http://wasm.ru/ ![]() |
Автор: Zloxa 9.6.2011, 13:59 |
Увы, это заблуждение школоты. Добавлено через 7 минут и 25 секунд А я тебе тоже уже когда-то говорил, что когда я в 95м(или 96м) году впервые увидел делфи, я сразу понял что он лучше борланд паскаля и msvc. Это было очевидно. Чтобы понять это, не надо было писать на делфе год, как ты предлагаешь, чтобы понять преимущества доднета. Вывод. Преимущества доднета - не очевидны. Что тут не понятного? ![]() |
Автор: cemick 9.6.2011, 14:15 | ||
Я бы не стал так уж про школоту, вот скажите рисование художником-аниматором-дизайнером рекламного плаката для заказчика для искусство или нет? Когда программирование становится драйвом и приносит удовольствие я думаю оно превращается в искусство, что с того, что ты зажат патернами и требованиями заказчика? Если драйва и страсти нет, то надо что то менять. |
Автор: Zloxa 9.6.2011, 14:35 | ||
cemick, на тему является ли программирование искусством, уже много нахоливарено. Суть моей позиции сводится к тому, что предмет искусства тем более ценен, чем несет больший отпечаток субъективизма автора. Наличие же суъективного отпечатка в программном коде это его недостаток, он обесценивает результат. В идеале, одна задача, решенная двумя хорошими программистами, с одинаковаыми критериями и исходными данными, должна решаться одинаково. Если же задача имеет более одного решения, она просто не достаточно четко поставлена.
Если это и искуство, то искуством занимается скорее заказчик, используя художника как инструмент. |
Автор: Dik0n 9.6.2011, 14:44 | ||
Zloxa, ну ну, я бы никогда не стал изучать программирование, если бы оно мне не приносило удовлетворение, с таким же успехом можно стоять за станком, работать менеджером, работать в банке и тд. и делать изо дня в день одно и тоже. cemick, +++++ PS: Delphi тут не причем, низкоуровневое программирование намного интереснее... Zloxa, Вы изучали программирование что-бы тупо зарабатывать деньги ? тогда мне Вас жаль... |
Автор: Zloxa 9.6.2011, 14:46 | ||
Нет, что вы.. Когда я, будучи романтично настроенным школьником учился программированию, я тоже наивно полагал, что это - исскусство. ![]() |
Автор: Rohoss 9.6.2011, 14:51 | ||||
Не многие изучают программирования чтобы зарабатывать. Однако, приходят к этому в процессе.
Кому как. Для меня низкоуровневое программирование это не интересное занятие, а вот когда результат твоего труда приносит радость людям, это радует. Вообще, программирование, имхо, становится искусством при очень громадном объеме знаний, опыту и способностям. Когда люди разрабатывают что-то вроде ВПФ, ВСЛ, то это да - искусство. Однако же искусство с менее богатыми навыками разработки приводит к созданию глючного ###кода и изобретению никому ненужных велосипедов. |
Автор: Dik0n 9.6.2011, 15:56 | ||
![]() ЗЫ: если бы небыло операционных систем, драйверов - как бы Вы приносили радость людям ? |
Автор: Akella 9.6.2011, 15:58 |
зато удалив код из обработчика события, Delphi сам удаляет событие и ссылку на событие у компонента, а в сишарпе студия не удаляет, приходится искать самому и удалять |
Автор: cemick 9.6.2011, 16:42 | ||
А еще там нельзя перекрыть конструтор, т.е. он не может быть виртуальным. ..овно же ваш дот нет. Вот такой еще вброс))) |
Автор: Zloxa 9.6.2011, 16:55 |
![]() |
Автор: cemick 9.6.2011, 17:29 | ||||
Причем тут искусство и опыт, студент на худграфе рисует картину это не искусство? Или потом вдруг через 30 лет, процесс который он выполняет при рисование картины внезапно становиться искусством. Цитата их вики:
Чем же не программирование? Очень часто смотря на код некоторых проектов думаешь, OMG, что в голове было у этого человека))) Очень даже отражение внутренного мира. |
Автор: Frees 9.6.2011, 19:30 |
программирование не дает свободы, все делается в рамках технологий, правил, требований .... свобода есть только в начале карьеры, когда делаешь для себя и не ограничен правилами(т.к. их не знаешь), а потом просто работа.... |
Автор: cemick 9.6.2011, 20:48 | ||
Просто работа? Просто не повезло |
Автор: Dik0n 9.6.2011, 20:54 |
cemick, Полностью с тобой согласен ![]() ![]() |
Автор: Zloxa 9.6.2011, 21:00 | ||||
Картину можно написать оптимально? Термин "оптимальность" вообще к исскуству применим?
Т.е. отражает субъективизм и рождает рефлексию. И как это применимо к программированию? Критерии оценки результатов деятельности программиста - формальны, а значит они не субъективны, объективны. Открывшаяся форма не должна побуждать пользователя к переживанию, он не должен задумываться над вопросом, что этим хотел сказать автор. Представляемая формой информация должна трактоваться исключительно однозначно. Где тут может быть уместна рефлексия - не понятно ![]() |
Автор: Keeper89 9.6.2011, 21:01 | ||
Сижу смеюсь уже 5 минут =) |
Автор: Dik0n 9.6.2011, 21:09 |
Что то мы отвлеклись, скоро мы будем писать под мак, линукс и кодегир нас не подведет... так что мы в минусе полюбому не окажемся. |
Автор: Keeper89 9.6.2011, 21:13 | ||
Думаю что жить в это время не доведется ни мне, ни тебе ![]() Там 64-бита все никак не прикрутят. |
Автор: Dik0n 9.6.2011, 21:17 |
Не надо быть таким писимистом, тестирование идет полным ходом, осталось чуточку потерпеть ![]() |
Автор: Rohoss 9.6.2011, 21:19 | ||
Да откуда ты знаешь что там идёт ![]() |
Автор: Keeper89 9.6.2011, 21:21 |
Rohoss, про доят подмечено верно. Dik0n, я оптимист, просто жду более-менее законченный продукт, но не думаю что раньше XE3 он появится. |
Автор: Rohoss 9.6.2011, 21:21 | ||
Я вот думаю, если бы делфи поддерживал множественное наследование, это был бы вообще супер аргумент в руках семика ![]() |
Автор: Dik0n 9.6.2011, 21:36 | ||
Множественное наследование зло, во многих ли проектах оно тебе понадобилось ? Мне достало слушать, на делфи дрова не напишешь, операционку тоже, будто вы каждый день операционки пишите ![]() |
Автор: Rohoss 9.6.2011, 21:52 | ||||
Вопрос не в том, просто от виртуального конструктора примерно же такой толк как и от множественного наследования. Добавлено через 38 секунд
Ты же вроде как низкоуровневым программированием собрался заниматься? |
Автор: bems 9.6.2011, 22:10 |
Там что, действительно нет виртуальных конструкторов?! |
Автор: Rohoss 9.6.2011, 22:21 |
В C# их нет, но они могут быть в других яп .нета, так как это искусственное ограничение C#. |
Автор: bems 9.6.2011, 22:34 |
И не стесняются же ![]() |
Автор: Dik0n 9.6.2011, 23:03 | ||
Не собрался а занимаюсь!!!, и даже на делфи все прекрасно получается, асм вставки есть... |
Автор: bems 9.6.2011, 23:07 |
Dik0n, не нужно писать драйвера на дельфи. Можно, но не нужно. |
Автор: Dik0n 9.6.2011, 23:10 |
Вобщем давайте замутим что нибуть конструктивное, надоело языком чесать ![]() Добавлено через 1 минуту и 46 секунд Писал и работало не хуже чем на Ц++ просто функции надоело переволить вотъ.... |
Автор: Rohoss 9.6.2011, 23:17 |
Похоже в .нете виртуальных конструкторов нет, но некоторые .нет яп за счёт извратов их таки используют http://prismwiki.embarcadero.com/en/Class_References |
Автор: bems 9.6.2011, 23:18 |
ну дельфи призм-то ясно. Короче прогресс дутый, что впрочем и было известно |
Автор: Rohoss 9.6.2011, 23:20 | ||
Ты уже придумал как реализовать http://dl.dropbox.com/u/5353609/Site3DTemplate.html на ВТ? |
Автор: Dik0n 10.6.2011, 00:04 |
мне предлагает установить какуето фигню не буду! ![]() |
Автор: Keeper89 10.6.2011, 00:09 |
У меня там вертятся пустые прямоугольники, так и должно быть? |
Автор: Rohoss 10.6.2011, 00:18 |
не ведись, а то вдруг тебе мелкософт троя впарит ![]() ну они не пустые, и не прямоуголиники а кубы. На них есть надписи. Нужен плагин для сильверлайта |
Автор: Keeper89 10.6.2011, 00:22 | ||
Да он у меня стоит, но вижу вот такое: ![]() |
Автор: Rohoss 10.6.2011, 00:27 |
ну да, так и есть. только у тебя кубы не полностью видно, но может это скрин просто такой. интересно само поведение этих кубов, если на них кликнуть. хотя на самом деле это ВПФовский листбокс. представь какая там содержится логика и как всё это реализовать ![]() |
Автор: Dik0n 10.6.2011, 00:28 | ||
Как все сложно, а в чем фишка, ДиректХ типа рулит для десктоп приложений ? или что там ? |
Автор: Keeper89 10.6.2011, 00:31 |
А, ну все ясно, вижу, в IE все работает, мой Firefox отказался это воспроизводить видимо ) |
Автор: cemick 10.6.2011, 09:27 | ||||||||
Ну а кто сказал что мы говорим про интерфейсы, да даже там не все так однозначно. Хороши те картины где не надо долго задумываться, что хотел сказать автор, это относиться что Шишкину что к Ван Гогу. Одного взгляда достаточно что бы прочувствовать момент, понять настроение автора, но это ли является ключевым признаком искусства? Я бы больше акцентировал на
Добавлено @ 09:31
Множественное наследование вещь удобная, но вредная и опасная. Но вот чем же вам не угодил виртуальный конструктор? Добавлено @ 09:39
Высокий уровень абстракции вообще в дот.нете является как его достоянием так и бедой. Никто вообще не отрицает что WPF в принципе как идея клевая, но на практике его преимущества часто не востребованы или даже вредны. У него гибкость только в том, что любой объект может являться контейнером для любого другого объекта, а все эффекты анимация и прочее так же нуждается в программирование. А часто ли в команде разработчиков десктоп WPF приложений работает и дизайнер в бленде? Когда потребуется на практике создать интерфейс с вращающимися кубами, я думаю это будет не самой большой проблемой в Delphi. |
Автор: Zloxa 10.6.2011, 09:50 | ||||
Выходит Мона Лиза - не хороша. Ее улыбка на столько не формальна, что даже не до конца ясно есть ли она, не говоря уже о том, что она означает.
Еще раз повторю тезис. Десять идеальных программистов, решающих одну идеальную задачу, имеющую одно идеальное решение, должны решить ее одинаково. Любое отклонение от идеального решения - признак не компетентности программиста. О каком исскустве тут может идти речь? В тоже время десять пейзажистов, рисуя пейзаж, в идеале, нарисуют десять разных картин, и каждая будет иметь свое настроение. Да что уж говорить, десять домохозяек, варя борщ по одному рецепту, из одних продуктов сварят десять разных борщей. Получается даже в борще больше простора для творчества и самовыражении, нежели в программировании. |
Автор: cemick 10.6.2011, 09:57 | ||
Идеальных решений не бывает, как и идеальных программистов. Если бы 10 программистов идеально бы решали задачи, уверен что уже бы запрограмили бы идеального робота, который всегда бы идеально решал задачу. [Задумался] А бывают идеальные художники? |
Автор: Zloxa 10.6.2011, 10:12 |
Да. И именно по этому овнокод.ру постоянно пополняется самыми высокохудожественными произведениями программистского искусства. Ведь это действительно творческий процесс - делать не как надо, так, как никому нормальному в голову не прийдет, но чтоб, тем не менее, еще и работало. И это тот самый случай, когда произведение несет отпечаток субъекта автора. И этот тот самый случай, когда созерцающий задумается "а что этим хотел сказать автор". |
Автор: cemick 10.6.2011, 10:24 |
Ладно, вернем разговор в прежнее русло))) Rohoss В доказательство предыдущих слов что VS овно, создаем у класса свойство, в геттере организуем, например, бесконечную рекурсию. В коде вызов созданного свойства не делаем. Запускаем дебагер, случайно наводим мышкой на свойство. Получаем обрушение дебагера. Вообще "Unable step" это моя одна из любимых ошибок в студии. |
Автор: Rohoss 10.6.2011, 10:25 | ||
Я их никогда не использовал, но разве нельзя догадаться про подводные камни? Конструктор существует чтобы инициализировать класс, если вы перекрываете его в наследнике, вам нужно держать в голове реализацию предка. А класс предок должен быть в некотором смысле чёрным ящиком для наследника. В методе это куда ни шло, но на конструктор, как я уже говорил, возлагается инициализация. Вы не согласны что его перекрывать опасно? Да, я понимаю, если над этими двумя классами будет работать один разработчик да ещё и в один период времени, то всё ок, но так бывает далеко не всегда. Какой-то вася перекроет инициализацию вашего виртуального конструктора и где-то это такими боками вылезет. Неужели только я понимаю что виртуальный конструктор - зло? Нет бы, если бы ещё он представлял функционал, который неудобно или невозможно заменить, а нет же. Если вы посмотрите, то даже в с++ их нет. Что то мне подсказывает, что в делфи на уровне машинного кода они имеют такую же извращённую реализацию как в делфи призм на уровне ил.
О ВПФ я с вами дискутировать не буду ![]() |
Автор: Zloxa 10.6.2011, 10:27 | ||
cemick,
Значит ли это что оракл - овно? |
Автор: Rohoss 10.6.2011, 10:29 | ||
Вот вот ![]() |
Автор: Zloxa 10.6.2011, 10:30 |
Вспомилось вдруг вот вспоминаю какой глючный и тормозной был четвертый делфи. ![]() Добавлено через 24 секунды Rohoss - посторвун ![]() |
Автор: Rohoss 10.6.2011, 10:35 | ||
Хз, я не занимаюсь изобретением способов завалить дебагер - это наверное удел искусства ![]() Добавлено через 1 минуту и 24 секунды Ты тоже ![]() Добавлено через 2 минуты и 24 секунды Вообще наверное надо свалить с винграда хотя бы на недельку, а то дела совсем не идут ![]() Добавлено через 6 минут и 21 секунду А интересно, как назвать искусством то, когда ты получаешь задание через ТФС, а менеджер даже не поднимет ж0пу чтобы прийти тебе рассказать что ему надо ![]() |
Автор: cemick 10.6.2011, 10:48 | ||
Я так понимаю вопрос не требует ответа? Доказательство вы привели сами))
Не то что бы я специально изобретаю, но бывает так что когда за день получишь 20 раз Unable Step, то это начинает напрягать. |
Автор: Akella 10.6.2011, 11:04 |
Лет 5-6 назад мой товарищ, просидевший на дельфи 14! лет, перешёл на дотнет. За собой потянул ещё 2х своих программеров. Все довольны как слоны! Я тоже думал перейти. Но 5 моих проектов на дельфи я бы не смог перенести на дотнет. При том, что нужно было поддерживать существующих пользователей. Просто не смог бы разорваться, при том что я ещё и сисьадминю ![]() Я бы на дотнет перешёл бы ради веба. Т.к. чувствую, что основные свои проекты нужно переносить в веб. Почему на дотнет, а не на php? Да всё просто: для дотнета есть такие замечательные вещи, как FastRepors и DevExpress ![]() Добавлено через 4 минуты и 22 секунды И да, я считаю, что Delphi - это действительно RAD! |
Автор: Rohoss 10.6.2011, 11:10 | ||
От фаст-репорта только положительные ощущения, а вот от DevExpress воротит ![]() Веб ещё не плохой в джаве, вроде получше дотнета ![]() Добавлено через 1 минуту и 9 секунд А пхп имхо не серьёзно, я бы не стал с ним связываться ![]() |
Автор: Akella 10.6.2011, 11:17 |
но там нет ни фаста, ни девок Добавлено через 51 секунду а для дельфи девки очень даже хороши, стабильно, красиво, быстро ![]() |
Автор: Rohoss 10.6.2011, 11:44 |
вот уж мне делфисты, ни шага без компонент ![]() там я их как раз и видел. а для .нета перед переустановкой винды установил посмотреть, после переустановки их уже не ставил. Может там для АСП.НЕТа что то нормальное и есть, но за них платить придётся... Нужно сначала разобраться, стоит ли оно того... |
Автор: Rohoss 10.6.2011, 12:27 | ||||
Ещё по поводу виртуального конструктора, если уж на то пошло, правильно делается таким образом: Внутри конструктора вызываем виртуальный метод, и если надо то мы перегружаем этот метод. Таким образом, логика инициализации, необходимая всегда для работы класса у нас всегда присутствует, а специальная инициализация определяется отдельно, вот пример
Вот это правильно ![]() Добавлено через 4 минуты и 9 секунд А если уж у нас совсем кровь из носа, так хочется заставить разработчика наследников реализовывать логику инициализации, мы можем закрыть конструктор по умолчанию и в доступном конструкторе передавать делегат
Добавлено через 4 минуты и 48 секунд Так что существование виртуального конструктора в делфи является его бесспорным минусом ![]() |
Автор: Zloxa 10.6.2011, 12:48 |
забавно, получается товарищ подсел на делфи 19-20 лет назад. А первый резлиз делфи был, емнип в 95м ![]() Добавлено через 2 минуты и 51 секунду Он должен вызываться у предка. Если же предок не подсуетился - како быть? С делегатом, я так понимаю то же самое? Вызов делегата должен происходить в конструкторе предка? Добавлено через 7 минут и 27 секунд С другой стороны.. что-то я на вскидку не могу припомнить, где это можно использовать. Емнип эта шняга используется в проекте при инициализации формы, но чем вызвана необходимость такого подхода, почему нельзя сделать просто form.creatе, хоть убей припомнить не могу ![]() |
Автор: Rohoss 10.6.2011, 12:58 | ||||
никак. нужно проектировать заранее. вот скажи мне пожалуйста, какое ты имеешь право убить базовую реализацию инициализации? Может вам ещё дать возможность убивать приватные методы? Ведь программирование - это не только возможности но и ограничения, если мы будем убивать что попало то получится какая-то каша. А способ, как менять логику конструктора, если есть необходимость я привёл. Добавлено через 4 минуты и 9 секунд
А ты когда на них смотришь не появляется желание убить их? Когда то я работал с одним коллегой в делфи, потом мы с ним больше года не виделись, а я за это время перелез на .нет полностью, когда встретил этого человека и когда сказал ему что ушёл на .нет, он посмотрел на меня так, как вроде хотел забить меня на смерть камнями, ну и дальше общение не состоялось ![]() |
Автор: Zloxa 10.6.2011, 13:09 |
Rohoss, ну да.. ты тоже горазд использовать тот самый риторический прием, когда то,что не знаешь как использовать преподносишь как ненужное. И тут я с тобой полностью согласен. Друзья, сравнивая различные инструменты надо сравнивать их эффективность решения задач. Когда мы сравниваем две дрели, нам имеет смысл обратить внимание на длину кабеля питания, но если срвнивать дрель и шуруповерт, нелепо утверждать что шуруповерт хуже потому что у него нет кабеля. Так и тут. Важно не столько наличие/отсутствие какогото механизама, а его целевое назначение. Я вот не смог припомнить случая, когда без виртуального конструктора не обойтись. Иначе, я бы обязательно спросил у Рохосса как ту же самую проблему решить срдествами шарпа. Может быть кто нибудь другой сможет нормально сформулировать вопрос? |
Автор: cemick 10.6.2011, 13:15 | ||
Rohoss Ну всегда можно как то обойти проблему, кто бы спорил, но отсутствие виртуального конструктора идет в разрез общей логики. А вот это
вообще ни чем не обоснованное заявление. Всегда использовалось, никогда проблем не вызывало. Я так и не понял чем плох виртуальный конструктор, и чем это отличается от обычного виртуального метода, и там и там можно набедакурить при желание. А уж приводить С++ в пример, что там это его нет, дак это вообще ![]() |
Автор: Zloxa 10.6.2011, 13:25 | ||
Не можешь показать на пальцах, где может оказаться полезным создание экзепляра неведомого класса? ![]() Добавлено через 34 секунды В смысле... если я конечно правильно понимаю назначение виртуального констрктора. |
Автор: cemick 10.6.2011, 13:30 | ||||
Ну скажем такой код
|
Автор: Zloxa 10.6.2011, 13:35 |
cemick, увы, я не понял твоего примера... ((( Во первых он слишком абстрактен, а во вторых я таки делфист а не шарпист. Мне интересна не синтаксическая конструкция, мне интересна причина, по какой это удобно и полезна. Если ты еще не понял, для меня крайняя польза этой фичи - не очевидна. Решая задачи на делфи с 95го по 2007й год, не могу припомнить, чтобы у меня возникала потребность в пдобном. Вот виртуальные деструкторы то - да. Но конструкторы же ![]() |
Автор: Akella 10.6.2011, 13:56 | ||||
а паскаль? Добавлено через 2 минуты и 9 секунд Rohoss,
да, с предателями всегда так ![]() не, я с ними общаюсь нормально, пару лет назад приходил к ним в контору с пивком, но пивко они не пили, потому как были все в программировании ![]() ![]() ![]() |
Автор: Zloxa 10.6.2011, 13:58 | ||||
ну надо же.. еще не совсем делфи забыл. ![]() Я так понимаю речь идет о чем то подобном. О возможности создавать экзепляр класса, абстрагируясь от типа класса средствами переменной классового типа.
Эта фишка используется в VCL. Как минимум, при создании формы приложения:
Я помню были времена, когда я мог ответить на вопрос, почему именно так, почему нельзя было сделать просто Form1.Create. Сейчас я на этот вопрос ответить затруднился бы ((( Добавлено @ 13:59 А паскаль это не Делфи. Паскаль и делфи это очень большая разница. |
Автор: Akella 10.6.2011, 14:04 |
Кстати это человек тоже у нас на форуме был и звали его Balu ![]() Добавлено через 24 секунды http://forum.vingrad.ru/users/Balu ![]() Добавлено через 2 минуты и 48 секунд Rohoss, скажи, а на WPF можно написать веб приложение. Например, онлайн программу для риэлторов? Можно ли там использовать фаст и девок? Добавлено через 7 минут и 38 секунд Не бейте меня братья-дельфисты, но однажды я даже читал Троелсена ![]() |
Автор: cemick 10.6.2011, 14:17 | ||
Да! Добавлено @ 14:20
Там будет не совсем WEB, там будет файлик браузером грузиться и запускаться как декстоп приложение. Если про веб, тогда уж SL. Концепция та же, только все "лишнее" обрезано. Добавлено @ 14:24 Rohoss Ну а то что статические классы не могут быть виртуальными? Позор! |
Автор: Zloxa 10.6.2011, 14:32 | ||
Ну это я, как бы, - не спрашивал. Спрашивал я - другое. На другое ответа нет. Коли так, чем вызваны сокрушения остутствием фичи? ![]() |
Автор: Akella 10.6.2011, 15:05 | ||
мну интересует установка доп. компонент, как в delphi, например, FastReports, DevExpress, etc. |
Автор: cemick 10.6.2011, 15:07 | ||
Все ОК с этим. У FR вроде даже есть вебовский редактор шаблонов. |
Автор: Akella 10.6.2011, 15:27 |
Т.е. для сильверлайт можно установить и девок и фаст? ![]() |
Автор: Zloxa 10.6.2011, 15:43 |
Понял, спасибо большое. /*не буду акцентироать на том, что радикальное изменения содержимого поста не только напоминает отказ от ранее сказанного, но и еще может оказатья незамеченным для той целевой аудитории, ради которой он пишется.*/ Может быть я уже отупел со временем, но я не сразу понял в чем фишка, и маленький коментарий к коду, с вашей стороны - о том, что, при создании типа С, в конструкторе TBClass.Create(value1,Value2) вызывается конструктор Create(value) класса C а не класса B, как было бы, будь он не виртуален - не повредила бы )) |
Автор: bems 10.6.2011, 21:25 | ||||
И это должно что-то означать? ![]() В си++ вообще фигово с объектной моделью. При эксцепшне в конструкторе (например) там сразу вешайся
Полная аналогия с виртуальными методами объектов, и проблемы тут только у новичков, которые вообще не догнали еще зачем нужны виртуальные методы (любые) Ну а то что ты считаешь что это не нужно, потому что в дотнете этого нет, так это типичная точка зрения дотнетчика ![]() |
Автор: Akella 12.6.2011, 08:42 |
Про множественное наследование. А разве его нельзя реализовать через интерфейсы? Я таким не занимался, поэтому только спрашиваю. |
Автор: bems 12.6.2011, 09:55 |
Akella, не совсем. С интерфейсами можно добиться тех же удобств при использовании класса, но не получить всех тех противоречий и неопределенностей. |
Автор: Keeper89 12.6.2011, 14:58 |
Вот еще что. Т.к. в последних версиях много классов слизано с НЕТа, прискорбно отметить, что я вот сижу и читаю справку по ним где бы вы думали - не в справке Embarcadero, а в MSDN. Вот так. |
Автор: Akella 13.6.2011, 09:55 |
Значит можно применить последовательное наследование? Сначала унаследовать от класса А, а потом от класса В. |
Автор: bems 13.6.2011, 13:06 |
Немного не понял, можно на примере? |
Автор: Akella 13.6.2011, 19:11 | ||
Наверное нельзя ![]() Добавлено через 6 минут и 30 секунд хотя...
Теперь TForm6 наследует всё от TForm4 и TForm5. Или это не то? |
Автор: bems 13.6.2011, 19:30 |
Это не множественное. Множественное это TForm6 = class(TForm5, TForm4) Это не предусмотрено, только реализация интерфейсов |
Автор: cemick 13.6.2011, 21:47 | ||
У MSFT всегда была неплохая справка. Хотя вот тут вполне достаточно информации http://docwiki.embarcadero.com/VCL/en/SysUtils.TStringBuilder, правда они сами отсылают на MSDN. |
Автор: k0rvin 14.6.2011, 01:04 | ||
о каких противоречиях и неопределенностях речь? |
Автор: Akella 14.6.2011, 09:49 |
Тем не менее получилось так, что TForm6 наследует всё от TForm4 и TForm5. Разве нет? Просто написано по другому ![]() |
Автор: Keeper89 14.6.2011, 10:25 |
Akella, пример, что ты привел, не совсем удачный. Попробуй сделать вот такой: ru.m.wikipedia.org/wiki/Множественное_наследование |
Автор: Akella 14.6.2011, 10:45 |
Какой "вот такой"? Добавлено через 49 секунд Ну используйте тогда Class Helpers |
Автор: bems 14.6.2011, 10:51 | ||
Гибрид ужа и ежа уже не сделать ![]() Например есть родитель А, потомки B1 и B2 и внучек С унаследованный и от B1 и от B2, и нужно вызвать метод объявленный в А на объекте С. Enjoy ur multiple inheritance Да, да, в плюсах можно указать явно какой метод имеется в виду. Но это нужно делать все время при использовании! лютая жесть |
Автор: Akella 14.6.2011, 10:55 |
Class Helpers или нет? |
Автор: bems 14.6.2011, 10:58 |
Akella, да речь о языках где есть множественное наследование. В хелперах запрещены поля и виртуальные методы, они почти ничего не могут. Просто функция, которая оперирует только членами некоего объекта, но не может быть сделана методом этого класса (например когда класс чужой) гораздо красивше смотрится объявленной в хелпере, тогда её можно вызывать как метод объекта. На большее хелперы не претендуют |
Автор: Akella 14.6.2011, 11:02 |
Мне множественное наследование пока не пригодилось, да и Class Helpers тоже. Наверное я пока не дорос до такого уровня ![]() |
Автор: Keeper89 14.6.2011, 12:52 |
Я хелперы использовал, мне пригодилось и понравилось ) |
Автор: Keeper89 14.6.2011, 17:56 |
Rohoss, а что там в шарпе с настройками? Есть какое то общее и красивое решение? |
Автор: cemick 14.6.2011, 20:44 |
С удивлением обнаружил что вот это http://www.auslogics.com/en/software/ похоже написано на Delphi http://spb.job.ru/seeker/job/detail/default.aspx?jadid=2139075 |
Автор: Keeper89 14.6.2011, 21:20 | ||
Это фирма так часто имеет вакансии, что их текучка кадров пугает сразу ![]() |
Автор: Akella 14.6.2011, 22:41 |
cemick, а что удивительного? |
Автор: cemick 14.6.2011, 22:59 |
Наверное ничего, какими то продуктами давно пользовался, а тут первый раз увидел их вакансию. Да и не так много приличных Delphi вакансий в Петербурге. Практически все приличные компании в которые можно напроситься делфи программистом перечисляются на пальцах одной руки. |
Автор: Keeper89 14.6.2011, 23:50 |
cemick, а что ты понимаешь под приличностью? |
Автор: Akella 14.6.2011, 23:51 |
да, все хотят жабу и дотнет |
Автор: k0rvin 15.6.2011, 07:04 | ||
так а в чем проблема-то? в C этот метод перекрывается? |
Автор: bems 15.6.2011, 10:07 |
Он может быть перекрыт и в В1 и в В2 |
Автор: Rohoss 15.6.2011, 13:05 | ||||||
По поводу виртуального конструктора. Раз вы ему находите применения - это замечательно, однако я бы не хотел чтобы он существовал в C#, потому как язык программирования - это не только набор возможностей, а и набор ограничений. Причём последние не менее важны. И насколько хорош яп - зависит от того, в каком месте возможности, а в каком ограничения. Ну а как могут быть виртуальными методы не экземпляра а класса? Где логика? ![]() Вообще, у меня тут не было цели доказывать что .нет круче делфи, так как имхо, тут даже говорить не о чём. Я хотел просто указать на одно из преимуществ .нета (да и наверное и жабы тоже), такое как модульность, которое почему-то все упускают из виду - а это очень важно и позволяет разрабатывать приложения уже другого уровня. Единственный кто высказывался на этом форуме по этому поводу, так это Лазин, царство ему небесное. Вообще, для использования модульности в .нете не обязательно использовать меф, юнити или тому подобные, даже простая ссылка на сборку в вс даёт возможность работать с библиотекой как и с часть своего приложения.
С какими настройками? Ты такое имеешь ввиду? Что то вроде такого
А в в .нет 4.0, с появлением DLR появилось сколько возможностей для подобных издевательств над членами класса, что мало не покажется ![]()
Вообще для веба в .нете предполагается сильверлайт. Это облегчённая версия ВПФа - ориентированная на веб. Однако, я бы на твоём месте использовал бы АСП.НЕТ вот по каким причинам: 1. Для сильверлайта нужен плагин, и не каждый юзер его установит, кто-то не захочет, у кого-то мозгов не хватит - а ты потеряешь клиента. 2. Сильверлайт глючный, и сильвелайт это не .нет (то что он разрабатывается на c# in vs ещё не делает его .нетом). Если слой представления на нём создать можно - то бизнес логику я бы не рискнул. 3. Поисковые боты очень плохо работают с СЛ, поэтому раскрутка твоего сайта будет проблематичной. Что касается АСП.НЕТ то на нём конечно трудно сделать такое же красивое и интерактивное приложение как на СЛ, но зато оно будет работать с любом браузере и в любой ОС (хоть с андроида), на нём свободно можно реализовывать бизнес-логику любого уровня и в нём можно использовать девок. Что касается репортинга, то тут не могу ничего сказать, так как .нете с ним не сталкивался. А вот существуют ли девки для СЛ я не знаю, но я бы их там не использовал. Так что если хочешь дёшево и сердито - тогда АСП.НЕТ, однако, если хочешь круто и нафуфыренно, можно было бы сделать так: Делаешь WCF сервис - он как раз и будет содержать логику работы твоего приложения и работать с бд. Дальше - создаёшь сайт на АСП.НЕТ, который использует бизнес логику с WCF сервиса. На сайте делаешь кнопку "Сильверлайт версия". То есть, при желании пользователь сможет использовать сильверлайт версию сайта, которая будет использовать логику с WCF. Так как обработка данных СЛ приложения будет происходить в WCF, СЛ будет использоваться только для взаимодействия с пользователем, а с этим, даже не смотря на свою глючность справится. Кроме того, ты можешь ещё и сделать ВПФ приложение, которое так же будет использовать WCF сервис ![]() ![]() |
Автор: cemick 15.6.2011, 13:27 | ||
Вообще то VMT принадлежит не объекту а классу, если мне память не изменяет. |
Автор: Rohoss 15.6.2011, 13:38 | ||
Кстати, ещё очень удобная штука есть, модификатор класса partial, позволяющей классу быть реализованным в нескольких файлах. Практический смысл я нахожу в двух случаях: 1. кодогенераторы. то есть, когда твой класс генерится самой вс или сторонними утилитами. В таком случае кодогенератор при каждой кодогенерации не будет перезаписывать весь класс, а только часть класса, содержащаяся в определённом файле, и твои изменения не будут перезаписанные при каждой кодогенерации. 2. когда нужна своя версия класса для каждой платформы. Например, есть класс для вывода сообщения, расположенный в файле Messager.cs. В таком случае, если я разрабатываю для платформы WPF, мне нужно будет включить в проект файл Messager.WPF.cs, если консольное приложение то Messager.Console.cs и тд... Добавлено через 6 минут и 28 секунд
Скорее всего да, но дело не в этом. Само определение "метод класса" о чём говорит? |
Автор: cemick 15.6.2011, 13:47 | ||
"Метод класса" говорит что это метод класса ![]() |
Автор: Rohoss 15.6.2011, 13:48 |
в .нете запрещено наследовать статические классы... Добавлено через 1 минуту и 10 секунд Именно, класса а не его наследника |
Автор: Keeper89 15.6.2011, 15:07 |
Под настройками я имел ввиду настройки приложения ![]() |
Автор: Rohoss 15.6.2011, 15:17 | ||
Конечно vs и инфраструктура .нет предлагает очень красивое решение, но писать мне тут уже влом ![]() Добавлено через 7 минут и 25 секунд
Это вам не ини-файлы ![]() |
Автор: cemick 15.6.2011, 16:32 |
Вот это к чему было сказано? Или вы думаете что в делфи все через ini файлы? Добавлено @ 16:33 Сами то поняли что сказали? |
Автор: Rohoss 15.6.2011, 17:22 | ||
нет, не думаю. думаю, что в делфи рантайм никуда не годится. и думаю, раз никуда не годится рантайм то и сериализация никуда не годится. а раз никуда не годится сериализация - значит нет красивого способа хранить сложные типы в файлах/потоках. а если нет возможности легко хранить в файлах/потоках сложные типы - то с хранением настроек получим лишнюю головную боль и лишние телодвижения. |
Автор: bems 15.6.2011, 19:28 |
дотнетчики не слышали что "унаследован значит является"? |
Автор: k0rvin 15.6.2011, 19:52 | ||
так а чем тут поможет одиночное наследование (A -> B -> C)? |
Автор: bems 16.6.2011, 10:22 |
в нем такая противоречивая ситуация невозможна в принципе. |
Автор: cemick 16.6.2011, 10:34 | ||
Что значит никуда не годится рантайм, что под этим подразумеваете? А на счет сериализации зря вы так думаете, хотя я в делфи практически не сталкивался с надобностью сериализации, но вроде как если имеем TPersistant и TComponent то проблем нет, плюс есть DBXJSONReflect или TJvAppXMLFileStorage. Я думаю есть, кто на счет этого может больше сказать. Что касаться .NET, ну да, там более красиво это сделано, возможности атрибутов плюс продуманные готовые интерфейсы делают сериализацию проще и непринужденнее, но вот со сложными типами тоже можно намучаться(что называется плавали, знаем). Хотя вот даже просто возможность скопировать поток в поток появилась только в 4 фреймворке. |
Автор: k0rvin 16.6.2011, 12:42 | ||||
так, еще раз
как одиночное наследование поможет вызвать метод, объявленный в A? |
Автор: bems 16.6.2011, 15:12 |
k0rvin, или это я плохо объясняю, или не знаю даже... В классе А объявлен виртуальный метод. Он или публичный, или вызывается из какого-то публичного метода. Он наследуется всеми потомками и может быть вызван как метод потомка - прямо если публичный или косвенно, если нет. Унаследуем от А классы В1 и В2, в каждом из которых метод перекрыт по своему. Можно вызывать B1.Method() или B2.Method() и получить разное поведение. При наличии множественного наследования, возможно унаследовать класс С от двух родителей B1 и B2. Поскольку А является предком С, то имея экземпляр С можно вызвать наш метод. Противоречие заключается в том, что не понятно какая реализация должна быть вызвана: из В1 или из В2 При отсутствии множественного наследования С наследуется или от В1 или от В2, но не от обоих сразу, поэтому противоречия не возникает. |
Автор: k0rvin 16.6.2011, 18:02 |
и компилятор укажет на это противоречие и потребует от программиста явно указать какой из методов должен использоваться в C. так в C++. так в Delphi при реализации классом двух интерфейсов с одинаковыми методами. а в CLOS, например, используется precedence-list, т.е. по-умолчанию в данном случае будет использоваться B1 |
Автор: cemick 16.6.2011, 20:27 | ||
Из вики я узнал что это называется проблемой ромба)) Вообще вот список проблем множественного наследования, из вики:
И правильно в сад его, слишком много неопределенностей вносит |
Автор: Keeper89 16.6.2011, 21:27 |
Тут холивар, а вы теории обсуждаете =) |
Автор: k0rvin 16.6.2011, 21:59 | ||
как хорошо, что CLOS лишена этих проблем =) |
Автор: Akella 16.6.2011, 22:58 |
да нафиг нужно это множественное наследование |
Автор: Keeper89 16.6.2011, 23:44 |
Затем чтобы удобнее делать некоторые вещи, как с интерфейсами в Делфи. |
Автор: Akella 19.6.2011, 08:41 |
а ещё кроме обновлений самой винды, нужно тянуть сотни мегабайт обновлений дотнета, причем для разных версий. Добавлено через 26 секунд ну конечно... это уже ведь не забота программиста ))) |
Автор: Keeper89 19.6.2011, 17:24 |
Akella, это такой вброс сейчас был? =) Если есть инет, размер установщика крайне мал (http://www.microsoft.com/downloads/ru-ru/details.aspx?displaylang=ru&FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992), если же обычный - http://www.microsoft.com/downloads/ru-ru/details.aspx?familyid=0a391abd-25c1-4fc0-919f-b21f31ab88b7&displaylang=ru. Я это все к тому, что не так уж и много ;) |