Здравствуйте, Mr.Cat, Вы писали:
MC>2)Рефлекшн — полезная штука как ни крути. Кстати, думаю, во многом благодаря оному Java и .NET неплохо чувствуют себя в сфере веб-программирования, в отличие от неуправляемых языков. Ну-ка как будет выглядеть шаблонизатор, навроде Velocity на неуправляемом языке? Это к вопросу о...
Velocity как-раз от управляемой среды толку мало, по-моему.
Сила рефлексии проявляется в первую очередь в различных O/RM, DI/IoC, unit тестах и т.п.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, hattab, Вы писали:
H>>Давай не будем углубляться в эту тему. В вопросе о цене владения перевес будет явно не на стороне .Net (но мне эту тему развивать не сильно интересно) G>Хо-хо-хо. Сколько стоит экспресс версия Visual С#? Не поверишь — нисколько. А продуктивность программистов на шарпе гораздо выше, чем на делфях (сравниваю с 7 версией, но из написанного понятно что даже современные версии не догоняют). G>Как раз языки и платформы имеет смысл сравнивать не в формате нравится\не нравится, а в количественном измерении: "стоимость" программистов, стоимость обучения программистов, среднее время разработки, средняя плотность багов.
Ты знаешь, TurboDelphi Explorer так же абсолютно бесплатна. С полноценным гуй-дизайнером и новыми фичами среды. Pro версия стоила кажется, что-то около $400. Цен на 2007 к сожалению не знаю, но думаю там все в тех же рамках.
H>>Ты знаешь, для меня веб-разработка, где-то очень далеко за горизонтом G>А зря. Дядька Фаулер еще в 2003 году сказал что если нет особых причин разрабатывать desktop клиент для корпоративного приложения, то лучше сразу заниматься веб-мордой. Web уже давно не только сайты знакомств и порнуха. Ты отстатешь от прогресса.
Т.е. все не веб-девелоперы сидят в глубокой #опе прогресса... Я говорю, WebSnap был уже в 6 версии (ты говоришь сидел на 7 и не знаешь об этом?) И вообще, не сотвори себе кумира.
Здравствуйте, hattab, Вы писали:
H>>>Дженерики есть в 2007 под .Net. В 2008 обещают и для нативного кода. G>>Мда... Это на фоне того, что появилось в C# 3.0 в 2007 году. Делфи тут оооочень сильно отстает.
H>Уж не про LINQ ли ты говоришь Ну в 2008 или 2009 обещают анонимные методы добавить еще.
H>Заметь, не я тут на языки наезжал не имея представления о текущем положении дел.
немного улыбнуло ... ты в каком году живешь, раз у тебя это уже текущее состояние дел?
Здравствуйте, Sinclair, Вы писали:
MC>>Не знал . А пример можно? S>На всякий случай напомню, что автор Delphi (точнее, Object Pascal) перешел из инпрайз в майкрософт и последние много лет занимается разработкой языка C# и оказывает влияние на всю .Net платформу.
Здравствуйте, hattab, Вы писали:
H>>>Ты знаешь, для меня веб-разработка, где-то очень далеко за горизонтом G>>А зря. Дядька Фаулер еще в 2003 году сказал что если нет особых причин разрабатывать desktop клиент для корпоративного приложения, то лучше сразу заниматься веб-мордой. Web уже давно не только сайты знакомств и порнуха. Ты отстатешь от прогресса.
H>Т.е. все не веб-девелоперы сидят в глубокой #опе прогресса... Я говорю, WebSnap был уже в 6 версии (ты говоришь сидел на 7 и не знаешь об этом?) И вообще, не сотвори себе кумира.
Что на этом WebSnap`е хоть было написано? Урлы сайтов плиз.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, hattab, Вы писали:
H>>Ну во прикинь на каких машинках захочет работать .Net FW 3.0, а 4.0? А потом захочет Висту. Ну дальше развивать не буду пожалуй G>.NET Framework бесплатен, кто мешает положить вместе с дистрибутевом фреймворк?
Причем тут цена фреймвока? Слабают гуй на WPF и опа, попали на мощное видео или будут тормоза. Апгрейд. Захочет какая-то фенька хоститься под IISx.x, а IISx.x захочет Win2010 c Enterprise лицензией. Попали на апгрейд сервера. Ну в общем аналогии можно продолжать и продолжать. Майкрософт деньги вытягивать умеет.
H>>SOAP-сервис Delphi чем-то хуже SOAP-сервиса на .Net/Java? G>Хуже. В WCF можно параметры сервиса (протоколы и пр.) поменять в конфиге, не трогая код.
Кто-то недавно эту феню материл из-за шаловливых ручек юзеров. Да и вообще прикол: пропали конфиги -- отвалились протоколы
Здравствуйте, misha_irpen, Вы писали:
_>Все-таки я смотрю на синтаксис тоже много наездов. Но тут мои взгляды крайне противоположные. Мне очень не нравится write-only код всех сиподобнх языков, пусть он и дает большую гибкость, но цель не ИМХО оправдывеет средства.
_>Хоть ныне я уже не програмлю так много как раньше, тем не менее нахожусь в глухой оппозиции ко всему C-подомному и когда меня заставляют (люди или обстоятельства) писать на таком языке (чаще всего это PHP, JS и т.п. скрипты), то я становлюсь очень злой и использую все сишные синтаксические штучки-дрючки везде где это хоть малость оправдвно. Если конструкция типа a[i]+=(j=++i) сэкономит мне хоть одну строчку кода, то я использую ее без зазрений совести. Ибо нефиг. И пусть потом тот сишник, который будет этот код читать, прочувствует на собственной шкуре смысл поговорки "за что боролся, на то и напоролся".
Конечно, про ROCS, видимо, ни Вы, ни Ваши "заказчики" и слыхом не слыхивали.
Поэтому вот и получается write-only код, который с большим успехом можно и на паскале наваять. Но все же многое зависит от степени знания языка у читающего код, так как есть люди, которые и такой код могут легко читать.
Здравствуйте, iiice, Вы писали:
DR>>Не нравится Дельфи из за типично чрезвычайно низкого качества написанных на ней программ.
I>Так и запишем: QIP и Total Commander — низкого качества.А мужики-то не знают
Это такое опровержение?
— в общем случае, справедливо X.
— неправда! Иногда не X!
Здравствуйте, hattab, Вы писали:
kuj>>>>Называется: слышал звон, да не знаю где он?
H>>>А ты думал я сейчас побегу на хобот искать Я же не пытаюсь тебе чего-то доказать.
kuj>>Хотя это и повсеместная практика на КСВ, но все-таки это не хорошо кидаться безосновательными утверждениями...
H>Прикольная практика это ссылки просить по всякому поводу. Где же мне их помнить, истории уж полгода если не больше...
А что прикажешь делать? Верить тебе на слово про звон?
kuj>>>>Человеческий фактор это не отмазка, а основной мотивирующий момент при разработке языков программирования.
H>>>Сильно спорный тезис.
kuj>>Ты это серьезно?
H>Я же упомянул о сигналящем менеджере. Что еще фактору нужно? Нужно в смирительную рубашку погрузить тело бренное, чтоб не дай бог глаз вилкой не выколол... Есть инструмент контроля. О чем тут спорить еще?
Ты хоть понял о чем речь? В человеческой натуре допускать ошибки. Задача современного языка программирования создать максимально гибкий и удобный инструмент с минимальной вероятностью допустить ошибку по вине данного человеческого фактора.
kuj>>>>Все познается в сравнении.
H>>>И чего теперь, роадмапами меряться?
kuj>>При чем тут роадмапы? kuj>>В OP речь шла о сравнении Delphi с современными управляемыми средами типа Java и .Net
H>Так ты перечислил что будет в C# 4.0. Вот когда оно будет, и когда в Delphi будет то о чем я тут говорил, тогда и можно мечами побряцать.
Да какая разница что будет? Да и откуда мне знать, если C# 3.0 вышел совсем не так давно.
Не надо сравнивать сферических коней.
H>>>Ну, по личным ощущениям. Хотя мне идея дженериков нравится. Но есть идею которые нравятся больше
kuj>>При чем тут идеи? Generics это вполне конкретный механизм, значительно повышающий читабельность и эффективность (производительность, качество) кода.
H>Есть другие идеи улыбающиеся мне сильнее чем дженерики и дающие не меньше пользы. Ну вот честно скажу, дженерики это хорошо и привлекательно.
Не понял при чем тут другие идеи, которые тебя привлекают больше? Мне вот игра в снукер нравится больше, чем яблоки и что?
H>Но! Но, встроенный параллелизм мне улыбается больше. Параметрические итераторы мне улыбаются больше. Да много чего еще. Дженерики это не то из-за чего я бы ушел с языка.
Мда.
kuj>>Поясняю: препроцессорная реализация это костыль. Имея generics на языковом уровне я получаю все плюшки статически типизированной среды разработки: intellisense, refactoring и прочее.
H>Все это понятно и никто не оспаривает собственно идеи дженериков Чего на этом так заостряться? Будут они у нативных дельфистов во второй половине этого года
Угу, в Вилариба еще моют, а в Вилабаджа уже празднуют.
Здравствуйте, kuj, Вы писали:
H>>Ну во прикинь на каких машинках захочет работать .Net FW 3.0, а 4.0? А потом захочет Висту. Ну дальше развивать не буду пожалуй
kuj>Ну захочет Висту и что? К тому времени XP давно уже не будет продаваться и скорее всего уже будет Windows 7...
Если так то ладно, а если нет?
kuj>.NET 2.0 работает себе на древней Windows 98, которой уже ОЙ как много лет...
kuj>К тому же все это копейки на фоне стоимости разработки и сопровождения.
У нас сервер аппликух работал в пилотном варианте на машинке 486DX2 с 12 метрами на борту + WinNT4.0 + MSSQL6.5. (5-8 клиентов. и это трехзвенка на MIDAS) И что?
kuj>Как в Delphi обстоят дела с unit test`ами? О каком scalability приложения может вообще идти речь, когда нет ни unit test`ов, ни DI/IoC?...
Юнит-тесты есть. С 2005 вроде. Устаревшая у тебя информация
H>>SOAP-сервис Delphi чем-то хуже SOAP-сервиса на .Net/Java?
kuj>Web-приложения это далеко не только SOAP и таки да — хуже, так как сложнее в разработке и сопровождении. По вышеозначенным причинам.
Такие выводы интересные? Ты чтоль разработкой под Delphi занимался и веб сервисы писал, чтоб такое говорить? А если писал, давай по пунктам . Или ты снова про дженерики будешь говорить
Здравствуйте, hattab, Вы писали:
H>>>SOAP-сервис Delphi чем-то хуже SOAP-сервиса на .Net/Java?
G>>Хуже. В WCF можно параметры сервиса (протоколы и пр.) поменять в конфиге, не трогая код.
H>Кто-то недавно эту феню материл из-за шаловливых ручек юзеров. Да и вообще прикол: пропали конфиги -- отвалились протоколы
Здравствуйте, kuj, Вы писали:
I>>>Так и запишем: QIP и Total Commander — низкого качества.А мужики-то не знают CC>>Дык факт! :P
kuj>Забыли еще The Bat!
Вот бат как раз приятное исключение
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, DOOM, Вы писали:
DOO>Тем и читабельнее. Почему-то в исходники самбы, написанной на C я могу въехать за пару тройку часов, а в среднестатистическую C++'ную программу и за пару дней не въеду. DOO>Временные переменные при этом есть везде — но вот возможность на каждый блок объявить свою, как ни странно, сильно захламляет код.
Ой, то есть Вы ещё и помните, что вот эту временную переменную уже можно использовать заново, а вот эту не стоит?
L>>Во-вторых — оно в каких случаях нужно-то? DOO>Что конкретно? Понять, что это перегруженный оператор? Это нужно когда читаешь/модифицируешь чужой код.
Писать в каких слуаях это нужно: когда нужно явно вызывать неявное приведение типов?
L>>>>4. Препроцессор. Да его ругают, но лучше иметь возможность его использовать. DOO>>>Используй внешний (и отлаживаться проще). L>>Так тут вопрос в том, что есть выбор. DOO>Дак тут замечание о том, что препроцессор к языку отношения не имеет (хотя к IDE имеет, не спорю).
Ну вот сколько бы я не видел реализаций С++ везде был препроцессор. А в Дельфи?
DOO>А каким основным? DOO>Про деструкторы? Что-то есть — я просто сейчас уже точно не смогу грамотно на эту тему поспорить. DOO>Про обязательность вызова конструктора как-то не понял, что имелось ввиду.
Сразу про оба отвечу:
class ABigComplexData
{
public:
ABigComplexData(...){...};
~ABigComplexData(){...};
void Go(){...};
...
}
void use()
{
//тут с abcd ничего делать нельзя, его ещё нет
ABigComplexData abcd(...);
//тут он уже сконструирован
abcd.Go();
...
if(...)
return;//деструктор вызван автоматически
...
//тут тоже
}
На дельфи не писал очень давно, пишу по памяти, если что поправляйте.
class ABCD
begin
constructor Init();
destructor Done();
procedure Go();
...
end;
procedure Use
var abcd:ABCD;{уже написал и понял что так там тоже писать нельзя ;)}begin
abcd.Go; - кто мешает?
abcd.Init(...);
...
if(...)
exit;{Done кто вызывать будет?}
abcd.Done;//опять же ручками :(end;
DOO>Шаблоны — на вкус и цвет. Мне они как-то не нравились в свое время.
Ну хорошо, вопрос в лоб — нужен список элементов T, которые мы только что придумали. Аналог std::list<T> какой?
DOO>Про оптимизатор на уровне Intel C++ — ну и сколько процентов народу используют этот компилятор? А у остальных тоже не такие уж выдающиеся результаты по сравнению с ним.
А фокус в том, что он есть. И если нужно — можно использовать. А в дельфи — нужно, не нужно, а про качественную машинную оптимизацию можно забыть.
H>>>Ну во прикинь на каких машинках захочет работать .Net FW 3.0, а 4.0? А потом захочет Висту. Ну дальше развивать не буду пожалуй
kuj>>Ну захочет Висту и что? К тому времени XP давно уже не будет продаваться и скорее всего уже будет Windows 7...
H>Если так то ладно, а если нет?
А кабы, да кабы во рту вырасли грибы...
Неконструктивный спор получается.
kuj>>.NET 2.0 работает себе на древней Windows 98, которой уже ОЙ как много лет...
kuj>>К тому же все это копейки на фоне стоимости разработки и сопровождения.
H>У нас сервер аппликух работал в пилотном варианте на машинке 486DX2 с 12 метрами на борту + WinNT4.0 + MSSQL6.5. (5-8 клиентов. и это трехзвенка на MIDAS) И что?
Выложить пару штук зеленых на железку или выложить пару сотен штук зеленых на разработку и сопровождение... Вот тебе и что.
kuj>>Как в Delphi обстоят дела с unit test`ами? О каком scalability приложения может вообще идти речь, когда нет ни unit test`ов, ни DI/IoC?...
H>Юнит-тесты есть. С 2005 вроде. Устаревшая у тебя информация
Ок, согласен.
Но это только state-based тесты. Хочу interaction-based test.
Типа:
public interface IWithEvents
{
event EventHandler Blah;
void RaiseEvent();
}
[Test]
public void VerifyingThatEventWasAttached()
{
MockRepository mocks = new MockRepository();
IWithEvents events = (IWithEvents)mocks.CreateMock(typeof(IWithEvents));
events.Blah+=new EventHandler(events_Blah);
mocks.ReplayAll();
MethodThatSubscribeToEventBlah(events);
mocks.VerifyAll();
}
public void MethodThatSubscribeToEventBlah(IWithEvents events)
{
events.Blah+=new EventHandler(events_Blah);
}
H>>>SOAP-сервис Delphi чем-то хуже SOAP-сервиса на .Net/Java?
kuj>>Web-приложения это далеко не только SOAP и таки да — хуже, так как сложнее в разработке и сопровождении. По вышеозначенным причинам.
H>Такие выводы интересные? Ты чтоль разработкой под Delphi занимался и веб сервисы писал, чтоб такое говорить? А если писал, давай по пунктам . Или ты снова про дженерики будешь говорить
Занимался. Буду говорить и про дженерики, и про O/RM, и про MVC, и про Unit tests, и про extension methods, и про многое другое.
Здравствуйте, kuj, Вы писали:
kuj>>>То, чего пользователь не видит для него не существует. Это только то, что имеет значение.
H>>Я в WindowsLiveWriter наблюдаю периодические фризы. Не стану утверждать, что это GC или JIT. Но они есть.
kuj>Я тебе как разработчик .Net с 99% вероятностью скажу, что фризы эти, если они и имеют место, не имеют отношения к GC.
Мне как пользователю этой пердульки мало интересно отчего она замерзает время от времени. Я виже результат. Мне если честно лень мониторить перфкоунтеры .Net GC, чтоб сказать точно.
kuj>>>В том, что GC один на всех. Если один процесс пнет его — очисти кучу в то время, как другой процесс нагружает его alloc`ами, то что произойдет? GC сам должен регулировать этот процесс, чтоб для пользователя он был абсолютно незаметным.
H>>Мы точно о Delphi говорим? kuj>Конечно нет. В Delphi (не .NET) нет GC.
В таком случае о каких процессах шла речь и что это за минусы тут приписали Delphi?
H>>Какие там разные процессы? Или ты про разные Delphi-процессы? Там же нет такого отдельного понятия, как GC в .Net/Java. Просто есть типы с управляемым временем жизни. Вышла переменная из области видимости -- компилер ее тут же зафиналил. Все просто и эффективно.
kuj>Ты не путай GC и недо- smart pointers. kuj>В C++, например, есть реализация smart pointers (в boost), базирующаяся на подсчете ссылок. Это куда эффективнее области видимости.
Я и не путаю. Я ясность внес. Ты сказал что типы с управляемым временм жизни в Delphi это ее минус. Я вот уже на протяжении больше половины топика пытаюсь из тебя истуну выудить -- почему?
kuj>>>>>Без полноценного DI в Delphi толку от интерфейсов куда как меньше.
H>>>>Чего-то не улавливаю связи...
kuj>>>Я писал где-то в этом топике. Вся сила интерфейсов раскрывается при наличии полноценного DI/IoC контейнера.
H>>Все это сильно зависит от способа применения и изобретательности
kuj>Не понял. Поясни.
Интерфейсы удобно рассматривать, как часть некого API. Отрыв от реализации и все такое. Зная, как они реализованы в Delphi, и в купе с агрегированием и делегированием можно получить приличные бенефиты используя эти знания. Блин, как я сегодня писать запарился...
Здравствуйте, hattab, Вы писали:
H>Причем тут цена фреймвока? Слабают гуй на WPF и опа, попали на мощное видео или будут тормоза. Апгрейд. Захочет какая-то фенька хоститься под IISx.x, а IISx.x захочет Win2010 c Enterprise лицензией. Попали на апгрейд сервера. Ну в общем аналогии можно продолжать и продолжать. Майкрософт деньги вытягивать умеет.
В общем случае — не воя головная боль. Если заказчик готов платить деньги, то делай на чем проще. Если продукт коробочный, то изначально известно на какую аудиторию расчитано и какие технологии будут задействованы.
Тем более WPF при простом рисовании окошек и двумерной графики практически не тормозит на современных компах.
H>>>SOAP-сервис Delphi чем-то хуже SOAP-сервиса на .Net/Java? G>>Хуже. В WCF можно параметры сервиса (протоколы и пр.) поменять в конфиге, не трогая код. H>Кто-то недавно эту феню материл из-за шаловливых ручек юзеров. Да и вообще прикол: пропали конфиги -- отвалились протоколы
Когда я аботал на делфях клиент умудрился поудалять ini файлы с настройками.
От пользователя-дурака никто не застрахован.
Здравствуйте, kuj, Вы писали:
kuj>.NET куда больше взяла из мира Java все-же.
А язык C# взял очень много от языка Delphi. А развитие языка C# оказывает влияние на всю платформу.
Здравствуйте, hattab, Вы писали:
kuj>>>>То, чего пользователь не видит для него не существует. Это только то, что имеет значение.
H>>>Я в WindowsLiveWriter наблюдаю периодические фризы. Не стану утверждать, что это GC или JIT. Но они есть.
kuj>>Я тебе как разработчик .Net с 99% вероятностью скажу, что фризы эти, если они и имеют место, не имеют отношения к GC.
H>Мне как пользователю этой пердульки мало интересно отчего она замерзает время от времени. Я виже результат. Мне если честно лень мониторить перфкоунтеры .Net GC, чтоб сказать точно.
Ну и при чем тут был наезд на .NET`овский GC? Ляпнул наобум? Или ты думаешь, что на Делфи нельзя написать так, чтоб не было фризов и прочих глюков? Ой-вэй...
kuj>>>>В том, что GC один на всех. Если один процесс пнет его — очисти кучу в то время, как другой процесс нагружает его alloc`ами, то что произойдет? GC сам должен регулировать этот процесс, чтоб для пользователя он был абсолютно незаметным.
H>>>Мы точно о Delphi говорим? kuj>>Конечно нет. В Delphi (не .NET) нет GC.
H>В таком случае о каких процессах шла речь и что это за минусы тут приписали Delphi?
Речь шла о том, что в Delphi нет ни полноценного GC, ни нормальной реализации smart pointer типа boost::auto_ptr<>.
H>>>Какие там разные процессы? Или ты про разные Delphi-процессы? Там же нет такого отдельного понятия, как GC в .Net/Java. Просто есть типы с управляемым временем жизни. Вышла переменная из области видимости -- компилер ее тут же зафиналил. Все просто и эффективно.
kuj>>Ты не путай GC и недо- smart pointers. kuj>>В C++, например, есть реализация smart pointers (в boost), базирующаяся на подсчете ссылок. Это куда эффективнее области видимости.
H>Я и не путаю. Я ясность внес. Ты сказал что типы с управляемым временм жизни в Delphi это ее минус. Я вот уже на протяжении больше половины топика пытаюсь из тебя истуну выудить -- почему?
Я такого не говорил. Давай не будем перекручивать слова, ага?
kuj>>>>Я писал где-то в этом топике. Вся сила интерфейсов раскрывается при наличии полноценного DI/IoC контейнера.
H>>>Все это сильно зависит от способа применения и изобретательности
kuj>>Не понял. Поясни.
H>Интерфейсы удобно рассматривать, как часть некого API. Отрыв от реализации и все такое. Зная, как они реализованы в Delphi, и в купе с агрегированием и делегированием можно получить приличные бенефиты используя эти знания. Блин, как я сегодня писать запарился...
В конечном итоге это костыль на фоне того, как применяются интерфейсе в управляемых средах типа .NET и Java
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, kuj, Вы писали:
I>>>>Так и запишем: QIP и Total Commander — низкого качества.А мужики-то не знают CC>>>Дык факт! :P
kuj>>Забыли еще The Bat! CC>Вот бат как раз приятное исключение