Здравствуйте, snaphold, Вы писали:
S>Странно... S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
Да хз. Есть в нем что то такое. Мне в свое время на нем нравилось писать. И к тому же это действительно ощущается как RAD. Шлеп кнопку, менюшку и какой нибудь TSuperComponent. Мгновенная сборка за пару секунд и готово.
Здравствуйте, snaphold, Вы писали:
S>Странно... S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
можно выпилить Дельфи в прямом смысле, но софт который на нем написан никуда не денется. и по этому иногда лучше что-то доуродовать чем переписать на C#, Java — банально дешевле.
Здравствуйте, nullptr_t, Вы писали:
_>Здравствуйте, snaphold, Вы писали:
S>>Странно... S>>5 лет назад думал, что дни его сочтены. Ан нет. S>>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
_>можно выпилить Дельфи в прямом смысле, но софт который на нем написан никуда не денется. и по этому иногда лучше что-то доуродовать чем переписать на C#, Java — банально дешевле.
Здравствуйте, blackhearted, Вы писали:
B>А еще есть тулзы типа InnoSetup.
безусловно, есть хорошие вещи написанные на дельфи. очевидно же, что дело не в самом языке, а в тех мудаках которые на нем пишут. просто у дельфи последних очень много
Здравствуйте, blackhearted, Вы писали:
B>Здравствуйте, nullptr_t, Вы писали:
_>>Здравствуйте, snaphold, Вы писали:
S>>>Странно... S>>>5 лет назад думал, что дни его сочтены. Ан нет. S>>>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
_>>можно выпилить Дельфи в прямом смысле, но софт который на нем написан никуда не денется. и по этому иногда лучше что-то доуродовать чем переписать на C#, Java — банально дешевле.
B>А еще есть тулзы типа InnoSetup.
а на чем разработчики InnoSetup зарабатывают? он же опенсорс
Здравствуйте, snaphold, Вы писали:
S>Здравствуйте, blackhearted, Вы писали:
B>>Здравствуйте, nullptr_t, Вы писали:
_>>>Здравствуйте, snaphold, Вы писали:
S>>>>Странно... S>>>>5 лет назад думал, что дни его сочтены. Ан нет. S>>>>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
_>>>можно выпилить Дельфи в прямом смысле, но софт который на нем написан никуда не денется. и по этому иногда лучше что-то доуродовать чем переписать на C#, Java — банально дешевле.
B>>А еще есть тулзы типа InnoSetup.
S>а на чем разработчики InnoSetup зарабатывают? он же опенсорс
Мне сложно сказать. Наверно, на Donations. И, вроде как, он там один вообще...
Здравствуйте, nullptr_t, Вы писали:
_>Здравствуйте, blackhearted, Вы писали:
B>>А еще есть тулзы типа InnoSetup.
_>безусловно, есть хорошие вещи написанные на дельфи. очевидно же, что дело не в самом языке, а в тех мудаках которые на нем пишут. просто у дельфи последних очень много
Здравствуйте, snaphold, Вы писали:
S>Странно... S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
1. Очень много софта.
2. Это фактически единственное RAD под Win32 дающее возможность ручного управления памятью
3. Довольно низкий порог вхождения: можно писать не зная что такое указатели, WinMain()
4. Паскаль и как следствие Delphi преподается практически во всех ПТУ и ВУЗах бывшего СССР, что обуславливает огромное количество хоть как-то знающих его людей.
У буржуев эту нишу занимает VB.
5. Сейчас, когда наконец прикрутили юникод, у него есть шанс жить и дальше
Здравствуйте, nullptr_t, Вы писали:
n> B>А еще есть тулзы типа InnoSetup.
n> безусловно, есть хорошие вещи написанные на дельфи. очевидно же, что дело не в самом языке, а в тех мудаках которые на нем пишут. просто у дельфи последних очень много
Хорошо хоть, что огромная часть мудачья убежала на шарпы с формулировкой "дельфи мертв"
Здравствуйте, snaphold, Вы писали:
s> Странно... s> 5 лет назад думал, что дни его сочтены. Ан нет. s> Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, snaphold, Вы писали:
s>> Странно... s>> 5 лет назад думал, что дни его сочтены. Ан нет. s>> Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
H>Он крут нереально. Я гарантирую это.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, snaphold, Вы писали:
s>> Странно... s>> 5 лет назад думал, что дни его сочтены. Ан нет. s>> Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
H>Он крут нереально. Я гарантирую это.
крутость дальше компилируемости, делешатов и VCL не идет
Здравствуйте, TimurSPB, Вы писали:
TSP>Да хз. Есть в нем что то такое. Мне в свое время на нем нравилось писать. И к тому же это действительно ощущается как RAD. Шлеп кнопку, менюшку и какой нибудь TSuperComponent. Мгновенная сборка за пару секунд и готово.
Про "шлеп кнопку" я не очень согласен, т.к. именно на Delphi учил многое из WinAPI по части GUI, но вот очень поддерживаю касательно нравилось писать и мгновенная сборка. Очень жаль, что Borland не смогла тащить это проект. Эх. До сих пор вспоминаю Delphi только добрым словом
Под дельфи полно компонентов. ФастРепорт, фибплюс, скины, devexpress, ехлиб, да тонны их
Многие сделаны на территории exussr и бесплатны\дешевы для местных жителей.
Мой сосед по кабинету пишет на дельфи сервисные программы — для настройки различного оборудования нашего производства. Программы должны иметь гуй, быть небольшими, не требовать установки и работать под любой виндой. Какие у него альтернативы дельфи?
С++ + qt — простая прога + qtgui.dll в архиве — порядка 4 метров, против ~800k неупакованного дельфевого exe (а упакованный — порядка 400k)
С#, java — нужен фреймворк, далеко не у всех он есть; кто-то сидит на объекте с ноутом и gprs интернетом и выкачать его не сможет
python + pygtk/pyqt — нужно ставить, большой размер дистра
MFC — намного менее удобно, чем дельфевый vcl
Здравствуйте, nullptr_t, Вы писали:
n> s>> Странно... n> s>> 5 лет назад думал, что дни его сочтены. Ан нет. n> s>> Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
n> H>Он крут нереально. Я гарантирую это.
n> крутость дальше компилируемости, делешатов и VCL не идет
Здравствуйте, nullptr_t, Вы писали:
n> s>> Странно... n> s>> 5 лет назад думал, что дни его сочтены. Ан нет. n> s>> Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
n> H>Он крут нереально. Я гарантирую это.
n> он нереально примитивен. я гарантирую это
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, nullptr_t, Вы писали:
n>> s>> Странно... n>> s>> 5 лет назад думал, что дни его сочтены. Ан нет. n>> s>> Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
n>> H>Он крут нереально. Я гарантирую это.
n>> он нереально примитивен. я гарантирую это
H>Ты путаешь простоту с примитивностью. Это ошибка.
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, nullptr_t, Вы писали:
_>>очевидно делегаты MM>Не было там такого. Совсем не было. Делегаты круче того, что было (или есть).
о_О
а
type TNotifyEvent = procedure (Sender: TObject) of object
Здравствуйте, hattab, Вы писали:
MM>> Не было там такого. Совсем не было. Делегаты круче того, что было (или есть). H>Как это нет? Процедурные типы Или ты считаешь, что делегатами может называться только шарповая реализация?
Под делегатами я подразумеваю типы, умеющие "суммировать обработчики". В Delphi насколько я помню, был не больше чем указатель на метод. Если двое подписываются на одно и то же событие — вызовется только один. Или нет?
Здравствуйте, MxMsk, Вы писали:
MM> MM>> Не было там такого. Совсем не было. Делегаты круче того, что было (или есть).
MM> H>Как это нет? Процедурные типы Или ты считаешь, что делегатами может называться только шарповая реализация?
MM> Под делегатами я подразумеваю типы, умеющие "суммировать обработчики". В Delphi насколько я помню, был не больше чем указатель на метод. Если двое подписываются на одно и то же событие — вызовется только один. Или нет?
Нет, только один. Это однако не значит, что это не делегаты. Сейчас уже (с версии 2005, в принципе) есть возможность делать мульти-делегаты (в смысле языковые возможности это позволяют), но в VCL они не используются.
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, TimurSPB, Вы писали:
TSP>>Да хз. Есть в нем что то такое. Мне в свое время на нем нравилось писать. И к тому же это действительно ощущается как RAD. Шлеп кнопку, менюшку и какой нибудь TSuperComponent. Мгновенная сборка за пару секунд и готово. MM>Про "шлеп кнопку" я не очень согласен, т.к. именно на Delphi учил многое из WinAPI по части GUI, но вот очень поддерживаю касательно нравилось писать и мгновенная сборка. Очень жаль, что Borland не смогла тащить это проект. Эх. До сих пор вспоминаю Delphi только добрым словом
Во времена Win3.11 — NT4 — 98 вещь была незаменимая. Но сейчас, ИМХО, все плюсы Delphi есть в C#. А в дополнение к ним — edit'n'continue, мощный отладчег и прочие плюшки. Что не мудрено, т.к. проектировал это главный борландовскйи архитект, перекупленный M$.
Здравствуйте, enji, Вы писали:
E>С#, java — нужен фреймворк, далеко не у всех он есть; кто-то сидит на объекте с ноутом и gprs интернетом и выкачать его не сможет
Серьезно? 2010 год на дворе, .Net ставится с кучей софта, идет через Windows Update и поставляется с новыми операционками. И у кучи народа его до сих пор нет? КАК???
Здравствуйте, пыщьх, Вы писали:
E>>С#, java — нужен фреймворк, далеко не у всех он есть; кто-то сидит на объекте с ноутом и gprs интернетом и выкачать его не сможет П>Серьезно? 2010 год на дворе, .Net ставится с кучей софта, идет через Windows Update и поставляется с новыми операционками. И у кучи народа его до сих пор нет? КАК???
Да ладно. Это известная параноя прогеров, считающих, что писать что-то на Шарпе — это ниже плинтуса. По их же рассказам пользователям тоже влом качать .Net. Как показывает практика, это, конечно же, гонево, но чем бы дитя не тешилось
Здравствуйте, hattab, Вы писали:
H>Нет, только один. Это однако не значит, что это не делегаты. Сейчас уже (с версии 2005, в принципе) есть возможность делать мульти-делегаты (в смысле языковые возможности это позволяют), но в VCL они не используются.
В этом и заключается их главная проблема. События в Delphi — классная идея, но с какой-то недоделанной реализацией. Не буду утверждать, что делегаты в C# самые правильные — они тоже не идеальны, но именно как встроенный в компилятор механизм множественной подписки (в том числе с учетом многопоточности), они лучше Делфийских.
Здравствуйте, MxMsk, Вы писали:
MM> В этом и заключается их главная проблема. События в Delphi — классная идея, но с какой-то недоделанной реализацией. Не буду утверждать, что делегаты в C# самые правильные — они тоже не идеальны, но именно как встроенный в компилятор механизм множественной подписки (в том числе с учетом многопоточности), они лучше Делфийских.
Честно говоря, никогда не ощущал потребности в мульти-делегатах
Здравствуйте, TimurSPB, Вы писали:
TSP>Да хз. Есть в нем что то такое. Мне в свое время на нем нравилось писать. И к тому же это действительно ощущается как RAD. Шлеп кнопку, менюшку и какой нибудь TSuperComponent. Мгновенная сборка за пару секунд и готово.
Кроме этого, нравился очень контекстно-зависимый автокомплит.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Здравствуйте, MxMsk, Вы писали:
MM> Да ладно. Это известная параноя прогеров, считающих, что писать что-то на Шарпе — это ниже плинтуса. По их же рассказам пользователям тоже влом качать .Net. Как показывает практика, это, конечно же, гонево, но чем бы дитя не тешилось
Ага. Дотнетовских SDK уже больше чем дельфовых, а клиентов и прог всё нет и нет. Как-бы.
Здравствуйте, snaphold, Вы писали:
S>Много уже написанного крупного софта?
Всегда считал, что Дельфи это для студентов и школьников, и ничего серьезного на нем не пишется, а оказывается "Много уже написанного крупного софта", можно примеры этого крупного софта?
Здравствуйте, пыщьх, Вы писали:
E>>С#, java — нужен фреймворк, далеко не у всех он есть; кто-то сидит на объекте с ноутом и gprs интернетом и выкачать его не сможет П>Серьезно? 2010 год на дворе, .Net ставится с кучей софта, идет через Windows Update и поставляется с новыми операционками. И у кучи народа его до сих пор нет? КАК???
Вы не поверите Но это так — есть чел, который сидит на объекте в 300 км от города с ноутом, на котором стоит win98 и gsm модемом. Как обычно сроки горят, все надо запустить еще вчера. И чего ему сказать — чтобы поменять параметры оборудования вам нужно скачать 30 метров с сайта микрософт или sun?
Здравствуйте, hattab, Вы писали:
H>Честно говоря, никогда не ощущал потребности в мульти-делегатах
Допустим хочу подписаться на событие Application.OnException. Могу ли я гарантировать, что мое присваивание не затрет чужой, ранее подписанный обработчик? По хорошему, придется запоминать значение в приватном поле и звать его из своего обработчика. Жить можно, но не шибко удобно.
Здравствуйте, enji, Вы писали:
E>Вы не поверите Но это так — есть чел, который сидит на объекте в 300 км от города с ноутом, на котором стоит win98 и gsm модемом. Как обычно сроки горят, все надо запустить еще вчера. И чего ему сказать — чтобы поменять параметры оборудования вам нужно скачать 30 метров с сайта микрософт или sun?
E>И такие случаи не редкость...
Так если не редкость, может пора уже научить этих людей, как скачать несчастные 30 метров до командировки? Или Винду обновить. Это тоже не редкость
Здравствуйте, winston, Вы писали:
W>Всегда считал, что Дельфи это для студентов и школьников, и ничего серьезного на нем не пишется, а оказывается "Много уже написанного крупного софта", можно примеры этого крупного софта?
Ну, скажем для железных дорог есть крупный софт на Делфи, который постепенно планируется заменять связкой .Net + Java.
Здравствуйте, ylem, Вы писали:
MM>>Ну, скажем для железных дорог есть крупный софт на Делфи, который постепенно планируется заменять связкой .Net + Java.
Y>Я вот такой софт для ЖД знаю http://kaprem.com/ Y>А Вы какой?
АСУ Станции примерно половины железных дорог России.
Здравствуйте, пыщьх, Вы писали:
TSP>>>Да хз. Есть в нем что то такое. Мне в свое время на нем нравилось писать. И к тому же это действительно ощущается как RAD. Шлеп кнопку, менюшку и какой нибудь TSuperComponent. Мгновенная сборка за пару секунд и готово. MM>>Про "шлеп кнопку" я не очень согласен, т.к. именно на Delphi учил многое из WinAPI по части GUI, но вот очень поддерживаю касательно нравилось писать и мгновенная сборка. Очень жаль, что Borland не смогла тащить это проект. Эх. До сих пор вспоминаю Delphi только добрым словом П>Во времена Win3.11 — NT4 — 98 вещь была незаменимая. Но сейчас, ИМХО, все плюсы Delphi есть в C#. А в дополнение к ним — edit'n'continue, мощный отладчег и прочие плюшки. Что не мудрено, т.к. проектировал это главный борландовскйи архитект, перекупленный M$.
Так да не так. Микрософт сама запуталась в дотнете. Они в начале 2000-х думали одно, а вышло совсем другое. Пример: многие абстракции и библиотеки не успевают дожить даже до N+2-й версии. Например, Windows.Forms стала почти deprecated уже в .NET 3.0, с появлением WPF. То же самое и про первую реализацию веб-сервисов. И система компонент (System.ComponentModel) тоже как-то не взлетела. Проблема микрософта в том, что у них не получается сделать long-running API в .NET. В WinAPI — без вопросов, а в .NET-е, при всей его объектно-ориентированности, как-то не получается. В итоге они просто бросают код и начинают заново. Так появился ASP.NET MVC, EF, ну много еще примеров.
А вот в Дельфи таких проблем почти не было. Код, написанный давно, можно заставить работать и сейчас и не нужно ничего переписывать.
Я вот что скажу по поводу .NET-а. Сейчас, в 2010, уже стало понятно, что это тупик. WPF не взлетел, Silverlight не взлетел, Entity Framework не взлетел. ASP.NET давят со всех сторон динамические языки. Ну а что остается от дотнета? Автоматическое управление памятью и реализация парсинга дат? Слабовато как-то. Даже вот бизнес-приложения Микрософт так и не перевела на .NET. Был такой Project Green, типа объединение, фактически переписывание всей линейки Dynamics. Был да сплыл. Не осилили. А вот Оракл — осилила, выпустив месяц назад Oracle Fusion Applications.
Здравствуйте, MxMsk, Вы писали:
Y>>Я вот такой софт для ЖД знаю http://kaprem.com/ Y>>А Вы какой? MM>АСУ Станции примерно половины железных дорог России.
так вот почему они мне летом не могли найти станцию на собственной железной дороге! (повбывав бы)
Здравствуйте, iHateLogins, Вы писали:
HL>Я вот что скажу по поводу .NET-а. Сейчас, в 2010, уже стало понятно, что это тупик. WPF не взлетел, Silverlight не взлетел, Entity Framework не взлетел. ASP.NET давят со всех сторон динамические языки. Ну а что остается от дотнета?
Здравствуйте, Antikrot, Вы писали:
MM>>АСУ Станции примерно половины железных дорог России. A>так вот почему они мне летом не могли найти станцию на собственной железной дороге! (повбывав бы)
Я думаю мы говорим о разном ПО. АСУ станции — это не то, что крутится на сайте РЖД. Это то, с помощью чего люди на местах контролируют движение.
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, enji, Вы писали:
E>>Вы не поверите Но это так — есть чел, который сидит на объекте в 300 км от города с ноутом, на котором стоит win98 и gsm модемом. Как обычно сроки горят, все надо запустить еще вчера. И чего ему сказать — чтобы поменять параметры оборудования вам нужно скачать 30 метров с сайта микрософт или sun?
E>>И такие случаи не редкость... MM>Так если не редкость, может пора уже научить этих людей, как скачать несчастные 30 метров до командировки? Или Винду обновить. Это тоже не редкость
Далеки вы от народа
Как вы предлагаете их обучать? Это же не наш человек там сидит, а "сервисный инженер" клиента... А они встречаются очень разные — как прошаренные, так и нет. Ноуты у многих рабочие и старые, фреймворка там нет. Ставить фреймворк до выезда на объект? Надо знать, что он нужен — т.е. прочитать руководство. А их никто не читает Да и не всегда вообще наперед известно, что такая программа понадобится.
В общем, необходимость что-то ставить дополнительно в данном случае — ОЧЕНЬ большой минус.
Здравствуйте, iHateLogins, Вы писали:
HL>Здравствуйте, пыщьх, Вы писали:
TSP>>>>Да хз. Есть в нем что то такое. Мне в свое время на нем нравилось писать. И к тому же это действительно ощущается как RAD. Шлеп кнопку, менюшку и какой нибудь TSuperComponent. Мгновенная сборка за пару секунд и готово. MM>>>Про "шлеп кнопку" я не очень согласен, т.к. именно на Delphi учил многое из WinAPI по части GUI, но вот очень поддерживаю касательно нравилось писать и мгновенная сборка. Очень жаль, что Borland не смогла тащить это проект. Эх. До сих пор вспоминаю Delphi только добрым словом П>>Во времена Win3.11 — NT4 — 98 вещь была незаменимая. Но сейчас, ИМХО, все плюсы Delphi есть в C#. А в дополнение к ним — edit'n'continue, мощный отладчег и прочие плюшки. Что не мудрено, т.к. проектировал это главный борландовскйи архитект, перекупленный M$.
HL>Так да не так. Микрософт сама запуталась в дотнете. Они в начале 2000-х думали одно, а вышло совсем другое. Пример: многие абстракции и библиотеки не успевают дожить даже до N+2-й версии. Например, Windows.Forms стала почти deprecated уже в .NET 3.0, с появлением WPF. То же самое и про первую реализацию веб-сервисов. И система компонент (System.ComponentModel) тоже как-то не взлетела. Проблема микрософта в том, что у них не получается сделать long-running API в .NET. В WinAPI — без вопросов, а в .NET-е, при всей его объектно-ориентированности, как-то не получается. В итоге они просто бросают код и начинают заново. Так появился ASP.NET MVC, EF, ну много еще примеров.
Я вижу ровно обратную ситуацию. SL, EF, ASP.NET MVC набирают популярность вытесняя конкурентов на других платформах. WPF и WinForms существуют параллельно, для разных задач предназначаются.
Здравствуйте, MxMsk, Вы писали:
MM> H>Честно говоря, никогда не ощущал потребности в мульти-делегатах
MM> Допустим хочу подписаться на событие Application.OnException. Могу ли я гарантировать, что мое присваивание не затрет чужой, ранее подписанный обработчик? По хорошему, придется запоминать значение в приватном поле и звать его из своего обработчика. Жить можно, но не шибко удобно.
Я же не отрицаю, что мульти-делегаты могут быть удобны. Просто, настолько ли часто они требуются, чтоб их отсутствие считать проблемой
Здравствуйте, winston, Вы писали:
w> S>Много уже написанного крупного софта?
w> Всегда считал, что Дельфи это для студентов и школьников, и ничего серьезного на нем не пишется, а оказывается "Много уже написанного крупного софта", можно примеры этого крупного софта?
Здравствуйте, enji, Вы писали:
E>Вы не поверите Но это так — есть чел, который сидит на объекте в 300 км от города с ноутом, на котором стоит win98 и gsm модемом. Как обычно сроки горят, все надо запустить еще вчера. И чего ему сказать — чтобы поменять параметры оборудования вам нужно скачать 30 метров с сайта микрософт или sun?
E>И такие случаи не редкость...
Бедный чувак. Но я, если честно, не понмаю, почему его нежелание брать с собой 30 метров фреймворка на флешке (и дистр нормальной операционки) должно усложнять вашу работу как программиста. Я бы сказал: хотите качественный софт — используйте качественные тулзы. Не знаете? Спросите меня как
Delphi — это старый добрый Pascal со всеми вытекающими последствиями:
— низкая производительность (хуже .Net 4.0 минимум в 3 раза);
— неудобная среда разработки (нет элементарного resharper);
— отсутствие средств для написания и использования snippet'ов (на момент 2004 года, сейчас может что и поменялось).
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, winston, Вы писали:
w>> S>Много уже написанного крупного софта?
w>> Всегда считал, что Дельфи это для студентов и школьников, и ничего серьезного на нем не пишется, а оказывается "Много уже написанного крупного софта", можно примеры этого крупного софта?
H>Проследуй
ого скока програмулек, практически ни одной не знаю, но вот Altium Designer и FL Studio действительно крупный софт, пользовался, добро
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, hattab, Вы писали:
MM>>> Не было там такого. Совсем не было. Делегаты круче того, что было (или есть). H>>Как это нет? Процедурные типы Или ты считаешь, что делегатами может называться только шарповая реализация? MM>Под делегатами я подразумеваю типы, умеющие "суммировать обработчики". В Delphi насколько я помню, был не больше чем указатель на метод. Если двое подписываются на одно и то же событие — вызовется только один. Или нет?
Извини, но суммирование — далеко не то, что главное в делегате. На любом языке класс, суммирующий обработчики(при их наличии в нем) пишется за пару минут. А вот возможность иметь ссылку на метод — это фича языка.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, MxMsk, Вы писали:
MM>> В этом и заключается их главная проблема. События в Delphi — классная идея, но с какой-то недоделанной реализацией. Не буду утверждать, что делегаты в C# самые правильные — они тоже не идеальны, но именно как встроенный в компилятор механизм множественной подписки (в том числе с учетом многопоточности), они лучше Делфийских.
H>Честно говоря, никогда не ощущал потребности в мульти-делегатах
Иногда нужно. Но реализация мультиделегата довольно проста, если подумать.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, iHateLogins, Вы писали:
HL>Так да не так. Микрософт сама запуталась в дотнете. Они в начале 2000-х думали одно, а вышло совсем другое. Пример: многие абстракции и библиотеки не успевают дожить даже до N+2-й версии. Например, Windows.Forms стала почти deprecated уже в .NET 3.0, с появлением WPF.
Не-а, у MS такая политика — каждую пару лет выкатывать новую технологию и создавать вокруг нее рынок. Не было бы этой политики, был бы MS там, где сейчас Borland. HL>То же самое и про первую реализацию веб-сервисов. И система компонент (System.ComponentModel) тоже как-то не взлетела. Проблема микрософта в том, что у них не получается сделать long-running API в .NET. В WinAPI — без вопросов, а в .NET-е, при всей его объектно-ориентированности, как-то не получается. В итоге они просто бросают код и начинают заново. Так появился ASP.NET MVC, EF, ну много еще примеров.
Про веб сервисы не в теме.
HL>А вот в Дельфи таких проблем почти не было. Код, написанный давно, можно заставить работать и сейчас и не нужно ничего переписывать.
Да, но удобство разработки новых приложений сильно уступало C#.
HL>Я вот что скажу по поводу .NET-а. Сейчас, в 2010, уже стало понятно, что это тупик.
Альтернативы для пердосвистелоксвистоперделок а-ля "база пациентов с диагнозами, управление каким-нибудь меддевайсом и рисование красивых графиков пульса, чтобы у ПОЦиента возникало ощущение мегакрутости клиники и оборудования и больше желания 'платить исчо'"? QT? Оно не managed, там на ручную работу с памятью и прочие мелочи будет 20% времени уходить. WTL? Еще хуже для таких задач. Java? Чем оно лучше C# для десктопа? C? Только если заказчик впал в кому лет на 20. HL>WPF не взлетел, Silverlight не взлетел, Entity Framework не взлетел. ASP.NET давят со всех сторон динамические языки. Ну а что остается от дотнета? Автоматическое управление памятью и реализация парсинга дат? Слабовато как-то.
WinForms designer чего только стоит. Автоматическое управление памятью как физическая невозможность вещей а-ля "AccessViolation in FuckYou.VCL at address 0xDEADBEEF. Please restart everything you can while you can". HL>Даже вот бизнес-приложения Микрософт так и не перевела на .NET. Был такой Project Green, типа объединение, фактически переписывание всей линейки Dynamics. Был да сплыл. Не осилили. А вот Оракл — осилила, выпустив месяц назад Oracle Fusion Applications.
Узкая ниша.
Здравствуйте, wety, Вы писали:
W>Здравствуйте, gandjustas, Вы писали:
W>Delphi — это старый добрый Pascal со всеми вытекающими последствиями: W>- низкая производительность (хуже .Net 4.0 минимум в 3 раза); W>- неудобная среда разработки (нет элементарного resharper); W>- отсутствие средств для написания и использования snippet'ов (на момент 2004 года, сейчас может что и поменялось).
W>Так? Так!
А если учесть что более 50% delphi даже сейчас это Delphi 7, то становится очень даже смешно.
Здравствуйте, Antikrot, Вы писали:
A>Здравствуйте, MxMsk, Вы писали:
Y>>>Я вот такой софт для ЖД знаю http://kaprem.com/ Y>>>А Вы какой? MM>>АСУ Станции примерно половины железных дорог России. A>так вот почему они мне летом не могли найти станцию на собственной железной дороге! (повбывав бы)
АСУ станции и система продажи билетов(я так понимаю, через нее станцию искали?) — это очень разные вещи. Последняя(Экспресс 3) крутится на юниховых IBM мэйнфреймах(приходилось с ней работать), так что Делфей там точно нет. А проблема с поиском — это скорее или некомпетентность кассира(интерфейс системы ни разу не интуитивный, и неопытный кассир мог тупить легко), или того, кто вводил описание станции, так что спокойнее, без паники .
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, wety, Вы писали:
W>Здравствуйте, gandjustas, Вы писали:
W>Delphi — это старый добрый Pascal со всеми вытекающими последствиями: W>- низкая производительность (хуже .Net 4.0 минимум в 3 раза);
Тесты в студию
W>- неудобная среда разработки (нет элементарного resharper);
Вы 2010/XE(2011) видели? Ничем не уступает MS VS 2008
W>- отсутствие средств для написания и использования snippet'ов (на момент 2004 года, сейчас может что и поменялось).
Автокомплита вполне достаточно.
Все остальное долно быть вынесено в функции. Если очень критично по производительности, то функция должна быть inline
W>Так? Так!
Не так!
Здравствуйте, пыщьх, Вы писали:
П>Здравствуйте, iHateLogins, Вы писали:
HL>>Так да не так. Микрософт сама запуталась в дотнете. Они в начале 2000-х думали одно, а вышло совсем другое. Пример: многие абстракции и библиотеки не успевают дожить даже до N+2-й версии. Например, Windows.Forms стала почти deprecated уже в .NET 3.0, с появлением WPF. П>Не-а, у MS такая политика — каждую пару лет выкатывать новую технологию и создавать вокруг нее рынок. Не было бы этой политики, был бы MS там, где сейчас Borland. HL>>То же самое и про первую реализацию веб-сервисов. И система компонент (System.ComponentModel) тоже как-то не взлетела. Проблема микрософта в том, что у них не получается сделать long-running API в .NET. В WinAPI — без вопросов, а в .NET-е, при всей его объектно-ориентированности, как-то не получается. В итоге они просто бросают код и начинают заново. Так появился ASP.NET MVC, EF, ну много еще примеров. П>Про веб сервисы не в теме.
HL>>А вот в Дельфи таких проблем почти не было. Код, написанный давно, можно заставить работать и сейчас и не нужно ничего переписывать. П>Да, но удобство разработки новых приложений сильно уступало C#.
HL>>Я вот что скажу по поводу .NET-а. Сейчас, в 2010, уже стало понятно, что это тупик. П>Альтернативы для пердосвистелоксвистоперделок а-ля "база пациентов с диагнозами, управление каким-нибудь меддевайсом и рисование красивых графиков пульса, чтобы у ПОЦиента возникало ощущение мегакрутости клиники и оборудования и больше желания 'платить исчо'"? QT? Оно не managed, там на ручную работу с памятью и прочие мелочи будет 20% времени уходить. WTL? Еще хуже для таких задач. Java? Чем оно лучше C# для десктопа? C? Только если заказчик впал в кому лет на 20.
В Delpi можно писать не используя ручного управления памятью! Чем он и хорош: где нет работы с железом и не критична производительность можно и не знать что такое pointer.
А при желании можно писать в C++ стиле с указателами, PChar вместо string и т.д.
HL>>WPF не взлетел, Silverlight не взлетел, Entity Framework не взлетел. ASP.NET давят со всех сторон динамические языки. Ну а что остается от дотнета? Автоматическое управление памятью и реализация парсинга дат? Слабовато как-то. П>WinForms designer чего только стоит. Автоматическое управление памятью как физическая невозможность вещей а-ля "AccessViolation in FuckYou.VCL at address 0xDEADBEEF. Please restart everything you can while you can".
NullPointer exception ничем не хуже HL>>Даже вот бизнес-приложения Микрософт так и не перевела на .NET. Был такой Project Green, типа объединение, фактически переписывание всей линейки Dynamics. Был да сплыл. Не осилили. А вот Оракл — осилила, выпустив месяц назад Oracle Fusion Applications. П>Узкая ниша.
Здравствуйте, BlackEric, Вы писали:
W>>Delphi — это старый добрый Pascal со всеми вытекающими последствиями: W>>- низкая производительность (хуже .Net 4.0 минимум в 3 раза); BE>Тесты в студию
Хм. Для начала надо придумать как и что тестировать. Есть идеи?
Хотя бы примерный тест на C# подскажите, а я его тогда и реализую окончательно и на C# и на Delphi.
А ещё надо будет скачать эту 2010/XE(2011) (если только такая есть на торрентах).
W>>- неудобная среда разработки (нет элементарного resharper); BE>Вы 2010/XE(2011) видели? Ничем не уступает MS VS 2008
Нет, не видел. Как-то уже не слежу за этим Delphi.
W>>- отсутствие средств для написания и использования snippet'ов (на момент 2004 года, сейчас может что и поменялось). BE>Автокомплита вполне достаточно. BE>Все остальное долно быть вынесено в функции. Если очень критично по производительности, то функция должна быть inline
W>>Так? Так! BE>Не так!
Как же так???
Поможешь написать тест для прогонки на C# и Delphi? Просто нужна идея, а не код.
Здравствуйте, Eugeny__, Вы писали:
E__>Извини, но суммирование — далеко не то, что главное в делегате.
Извиню без проблем. Оказалось, что делегат — это именно указатель на метод, не обязательно со список подписчиков. Так что в такой терминологии делегаты в Delphi есть.
E__>На любом языке класс, суммирующий обработчики(при их наличии в нем) пишется за пару минут. А вот возможность иметь ссылку на метод — это фича языка.
А вот здесь поспорю. "Пишется за пару минут" и встроена в язык, в том числе с почти lock free подпиской — это все-таки разные вещи.
Здравствуйте, Eugeny__, Вы писали:
H>>Честно говоря, никогда не ощущал потребности в мульти-делегатах E__>Иногда нужно. Но реализация мультиделегата довольно проста, если подумать.
Хех.
Здравствуйте, Eugeny__, Вы писали:
Y>>>>Я вот такой софт для ЖД знаю http://kaprem.com/ Y>>>>А Вы какой? MM>>>АСУ Станции примерно половины железных дорог России. A>>так вот почему они мне летом не могли найти станцию на собственной железной дороге! (повбывав бы) E__>АСУ станции и система продажи билетов(я так понимаю, через нее станцию искали?) — это очень разные вещи.
я уж понял... но осадочек остался
E>Последняя(Экспресс 3) крутится на юниховых IBM мэйнфреймах(приходилось с ней работать), так что Делфей там точно нет.
делфей нет на мэйнфреймах??? Delphi НЕ НУЖЕН
E>А проблема с поиском — это скорее или некомпетентность кассира(интерфейс системы ни разу не интуитивный, и неопытный кассир мог тупить легко), или того, кто вводил описание станции, так что спокойнее, без паники .
да нормально всё — я ж туда как-то добрался просто когда станция везде по разному пишется (я знаю 4 варианта!!!) — могли бы сделать поиск похитрее.
Здравствуйте, wety, Вы писали:
W>Здравствуйте, BlackEric, Вы писали:
W>>>Delphi — это старый добрый Pascal со всеми вытекающими последствиями: W>>>- низкая производительность (хуже .Net 4.0 минимум в 3 раза); BE>>Тесты в студию
W>Хм. Для начала надо придумать как и что тестировать. Есть идеи? W>Хотя бы примерный тест на C# подскажите, а я его тогда и реализую окончательно и на C# и на Delphi. W>А ещё надо будет скачать эту 2010/XE(2011) (если только такая есть на торрентах).
Trial?
низкая производительность (хуже .Net 4.0 минимум в 3 раза); — А на чем же это утверждение основано?
W>>>- неудобная среда разработки (нет элементарного resharper); BE>>Вы 2010/XE(2011) видели? Ничем не уступает MS VS 2008
W>Нет, не видел. Как-то уже не слежу за этим Delphi.
Зра. После прикрутки юникода в Delphi 2009 весьма неплох.
W>>>- отсутствие средств для написания и использования snippet'ов (на момент 2004 года, сейчас может что и поменялось). BE>>Автокомплита вполне достаточно. BE>>Все остальное долно быть вынесено в функции. Если очень критично по производительности, то функция должна быть inline
W>>>Так? Так! BE>>Не так!
W>Как же так??? W>Поможешь написать тест для прогонки на C# и Delphi? Просто нужна идея, а не код.
Идеи:
1. Факториал, Фибонначи
2. Хэши MD5, Sha-1 (крипто API и криптопровайдеры не юзать)
3. Генерация preview для каталога изображений (использовать одинаковую технологию обработки изображений: GDI+, OpenGL, DirectX)
Здравствуйте, Cadet, Вы писали:
C>Здравствуйте, BlackEric, Вы писали:
BE>>NullPointer exception ничем не хуже
C>Конечно не хуже. Лучше, глянув на StackTrace я сразу определяю место ее возникновения, иду и исправляю. Вот AV это жопа, тяжело искать.
Аналогично: смотрю на StackTrace либо ищу утечки через MemCheck
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, enji, Вы писали:
E>>Вы не поверите Но это так — есть чел, который сидит на объекте в 300 км от города с ноутом, на котором стоит win98 и gsm модемом. Как обычно сроки горят, все надо запустить еще вчера. И чего ему сказать — чтобы поменять параметры оборудования вам нужно скачать 30 метров с сайта микрософт или sun?
E>>И такие случаи не редкость... MM>Так если не редкость, может пора уже научить этих людей, как скачать несчастные 30 метров до командировки? Или Винду обновить. Это тоже не редкость
ну да. у меня, бывало, командировки за 40 минут организовывались и ноутбук находился. с тем, что на нем оказалось. Какие там нафик дотнеты или фреймворки? Дай боже мысли в кучу собрать и ничего не забыть просто слить на винт для последующей разборки в паровозе.
Здравствуйте, BlackEric, Вы писали:
BE>В Delpi можно писать не используя ручного управления памятью! Чем он и хорош: где нет работы с железом и не критична производительность можно и не знать что такое pointer. BE>А при желании можно писать в C++ стиле с указателами, PChar вместо string и т.д.
И часто такие подходы используются вместе, в одном блоке кода? Кто мешает использовать C# там, где нужна простота и C++ — где нужна производительность? PInvoke или COM для объединения.
BE>NullPointer exception ничем не хуже
Null Pointer легко локализуем. Access Violation зачастую возникает после повреждения какого-нибудь куска памяти и понять, где первоисточник, зачастую, очень сложно.
Могу привести еще кучу примеров:
Edit-n-continue. Идеально работает в Visual Studio, и не снился Delphi.
Нормальный отладчик с нормальной визуализацией типов (в т.ч. коллекций).
Рефакторринг, автоматическая генерация методов, переименование, поиск зависимостей.
Визуализация классов в виде диаграмм.
Родная поддержка Regexp и XML.
Совместимость с Linux (Mono жив, Kylix забыт).
Совместимость x86/x64.
Наличие упрощенной Compact Framework для WinMobile.
Наличие кучи сторонних плагинов для студии (VisualAssist тот же).
Иерархическая организация классов через namespace. Достаточно помнить "что-то в System.IO", чтобы быстро найти нужный класс, не тратя времени на обзор справки.
E>>А проблема с поиском — это скорее или некомпетентность кассира(интерфейс системы ни разу не интуитивный, и неопытный кассир мог тупить легко), или того, кто вводил описание станции, так что спокойнее, без паники . A>да нормально всё — я ж туда как-то добрался просто когда станция везде по разному пишется (я знаю 4 варианта!!!) — могли бы сделать поиск похитрее.
Они туда, как я понимаю, стараются не лезть. Система страрая, но сама по себе работает очень хорошо. А то, что некоторые работники-идиоты не могут правильно написать название станции...
Кстати, поиск там не такой и плохой.
А опытные кассиры коды большинства станций, куда можно ехать из этого города, вообще наизусть знают.
Кстати, можно варианты написания станции в студию?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, пыщьх, Вы писали:
П>Здравствуйте, BlackEric, Вы писали:
BE>>В Delpi можно писать не используя ручного управления памятью! Чем он и хорош: где нет работы с железом и не критична производительность можно и не знать что такое pointer. BE>>А при желании можно писать в C++ стиле с указателами, PChar вместо string и т.д. П>И часто такие подходы используются вместе, в одном блоке кода? Кто мешает использовать C# там, где нужна простота и C++ — где нужна производительность? PInvoke или COM для объединения.
И зарплату платим за C# и C++
BE>>NullPointer exception ничем не хуже П>Null Pointer легко локализуем. Access Violation зачастую возникает после повреждения какого-нибудь куска памяти и понять, где первоисточник, зачастую, очень сложно.
Есть такое. Но это неизбежная плата за прямой доступ к памяти. П>Могу привести еще кучу примеров:
П>
П>Edit-n-continue. Идеально работает в Visual Studio, и не снился Delphi.
хз что такое П>Нормальный отладчик с нормальной визуализацией типов (в т.ч. коллекций).
В Делфи2010 вроде ничем не хуже П>Рефакторринг, автоматическая генерация методов, переименование, поиск зависимостей.
Есть П>Визуализация классов в виде диаграмм.
Вроде есть. Не использовал ни разу нигде П>Родная поддержка Regexp и XML. нету П>Совместимость с Linux (Mono жив, Kylix забыт).
FreePascal/Lazarus. П>Совместимость x86/x64.
Есть во FreePascal. Но это серьезный недостаток П>Наличие упрощенной Compact Framework для WinMobile. нету П>Наличие кучи сторонних плагинов для студии (VisualAssist тот же).
Дохрена и больше П>Иерархическая организация классов через namespace. Достаточно помнить "что-то в System.IO", чтобы быстро найти нужный класс, не тратя времени на обзор справки.
Нет. Но это не критично. П>
Здравствуйте, BlackEric, Вы писали:
BE>И зарплату платим за C# и C++
Не зарплату, а лицензионные отчисления
Если "зарплатама", то споры о языке программирования бессмысленны. Какой язык насяльника назовет, на таком и писатама.
BE>>>NullPointer exception ничем не хуже П>>Null Pointer легко локализуем. Access Violation зачастую возникает после повреждения какого-нибудь куска памяти и понять, где первоисточник, зачастую, очень сложно. BE>Есть такое. Но это неизбежная плата за прямой доступ к памяти.
Угу. А нафига он нужен в большинстве UI-ориентированных свистоперделок?
П>>Edit-n-continue. Идеально работает в Visual Studio, и не снился Delphi. BE> хз что такое
Это когда в середине работы программы видишь баг, исправляешь код и продолжаешь выполнение пофиксенного кода без перезапуска. Де-факто можно набросать сигнатуру метода, запустить выполнение и реализовывать его пошагово, выполняя каждую строчку сразу после написания, убеждаясь в корректности кода.
BE>...
Ну вот, C# — Delphi 4:0. А что нужное есть в Delphi, чего нет в C#?
Здравствуйте, snaphold, Вы писали:
S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
Конечно. Точно так же живы фортран, кобол, лисп и даже ассемблер. Ничего странного в этом нет.
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, BlackEric, Вы писали:
П>>Ну вот, C# — Delphi 4:0. А что нужное есть в Delphi, чего нет в C#?
BE>1. Работает на голом Win32.
0.0001% юзкейсов, где это действительно нужно BE>2. Ручное управление памятью.
IDisposable BE>3. И там где нужны первые 2 пункта гораздо проще в работе чем C++
COM/PInvoke
Пока Номер <= 50 Цикл
//.. тело цикла...
КонецЦикла;
Я понимаю, почему 1С так распространен, в чем его преимущества, но убежден что писать на нем это насилие над своим мозгом. Вот старый добрый делфи это другое дело.
Здравствуйте, Eugeny__, Вы писали:
E__>А опытные кассиры коды большинства станций, куда можно ехать из этого города, вообще наизусть знают.
какой интерес тестить систему в таком примитивном случае? естественно, мы заказывали билеты на поезд из Питера на вокзалах в Москве и Нижнем Новгороде ответ был один — "а это вообще что и где?"
E__>Кстати, можно варианты написания станции в студию?
пофиксить хочешь?
вот: ст.Найстен?ярви
варианты:
— если смотреть расписание поезда 350А, будет "найстен'яр" (они там режут названия, за что им отдельное спасибо! )
— если выбирать из списка у них, то там "найстен'ярви"
— непосредственно на станции (опустим момент что я там вообще забыл, ибо там вообще ничего нет) есть два станционных домика с надписями "найстеньярви" и "найстенъярви". ыыы...
допустим, мы посмотрели название на станции или скажем на гугломапе (там с твёрдым знаком).
вводим в поиск... а вот фигу! мало того что оно там твёрдый знак в мягкий конвертит, так ещё ведь и не находит — у них же в базе используется "'"! ну тему sql inject-а я проверять не стал...
П>Визуализация классов в виде диаграмм. П>
Вообще эту штуку Борланд придумал куда раньше МС. Был у них такой тул — Together назывался, кажется. Вот диаграмма классов в студии как раз по его мотивам.
Здравствуйте, Трурль, Вы писали:
W>>ого скока програмулек, практически ни одной не знаю, но вот Altium Designer и FL Studio действительно крупный софт, пользовался, добро Т>А слова Skype, The Bat!, Total Commander ничего не напоминают?
ничего хорошего
-_*>Здравствуйте, snaphold, Вы писали:
S>>5 лет назад думал, что дни его сочтены. Ан нет. S>>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
-_*>Конечно. Точно так же живы фортран, кобол, лисп и даже ассемблер. Ничего странного в этом нет.
Здравствуйте, nullptr_t, Вы писали:
_>-_*>Конечно. Точно так же живы фортран, кобол, лисп и даже ассемблер. Ничего странного в этом нет.
_>вы норкоман — всё есть ассемблер
Здравствуйте, MxMsk, Вы писали:
E__>>На любом языке класс, суммирующий обработчики(при их наличии в нем) пишется за пару минут. А вот возможность иметь ссылку на метод — это фича языка. MM>А вот здесь поспорю. "Пишется за пару минут" и встроена в язык, в том числе с почти lock free подпиской — это все-таки разные вещи.
То, что делегаты организованы как списки не очень-то и хорошо. Во-первых, криво с точки зрения дизайна. Возьмем делегат вида:
delegate int CallBack();
Что он будет возвращать?
Во-вторых, приходится жертвовать производительностью ради этой списочности.
При этом единственный сценарий, при котором мультиделегаты востребованы — это события. Не говоря уж о том, что я вообще не вижу строгой необходимости именно в делегатах для реализации событий (в конце концов у нас ООП язык), без мульти-делегатов уж точно можно обойтись. Делается простенький хелпер для подписки, который сохраняет старый делегат и вызывает его тоже. Этот хелпер при желании можно "встроить" в библиотеку, хоть в сам класс Delegate.
И все. Сделали бы в Шарпе так — было бы лучше.
А вообще, если бы товарищ Хейлсберг не написал в свое время письмо в МС про то, как ему нравятся Джава и Дельфи, но как не нравится то, что там нет/неправильно реализованы делегаты, и делегаты бы в C# не добавили вообще, то сейчас вместо этого говна был бы скорее всего полноценный функциональный тип, которого при работе с лямбдами очень не хватает.
В общем отсутствие мульти-делегатов — это плюс.
Отсутствие делегатов вообще — два плюса.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, nullptr_t, Вы писали:
_>>-_*>Конечно. Точно так же живы фортран, кобол, лисп и даже ассемблер. Ничего странного в этом нет.
_>>вы норкоман — всё есть ассемблер
L>любитель норок?
E__>>А опытные кассиры коды большинства станций, куда можно ехать из этого города, вообще наизусть знают. A>какой интерес тестить систему в таком примитивном случае? естественно, мы заказывали билеты на поезд из Питера на вокзалах в Москве и Нижнем Новгороде ответ был один — "а это вообще что и где?"
E__>>Кстати, можно варианты написания станции в студию? A>пофиксить хочешь?
Не, у меня правей таких нету .
A>вот: ст.Найстен?ярви A>варианты: A>- если смотреть расписание поезда 350А, будет "найстен'яр" (они там режут названия, за что им отдельное спасибо! ) A>- если выбирать из списка у них, то там "найстен'ярви" A>- непосредственно на станции (опустим момент что я там вообще забыл, ибо там вообще ничего нет) есть два станционных домика с надписями "найстеньярви" и "найстенъярви". ыыы... A>допустим, мы посмотрели название на станции или скажем на гугломапе (там с твёрдым знаком). A>вводим в поиск... а вот фигу! мало того что оно там твёрдый знак в мягкий конвертит, так ещё ведь и не находит — у них же в базе используется "'"! ну тему sql inject-а я проверять не стал...
В Москве используется какая-то кривая надстройка под Винду. Которая тормозит работу кассира раза в 3 по сравнению с оригинальным интерфейсом, и тупит. Видимо, кому-то черное окно с буквами не понравилось, захотелось посовременнее.
Как это выглядит в оригинальном Экспрессе(только учти, что у меня доступ к Украиской части, там нет нас. пунктов, до которых не ходят укр. поезда, потому конкретно твой город посмотреть не могу), так, для примера — нужны поезда из Москвы в Питер, вводим по паре букв нужного города:
Жмакаем ентер, видим:
Так что хватило бы просто первых двух-трех букв названия, остальные не важны. Но какой-то идиот решил "моддернизировать" это дело в Москве, и налабали кривую хрень, рассчитанную на возюканье мышкой и тупых кассирш. Изначальная система позволяет оформлять билеты куда быстрее, и без затыков.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
E__>>Кстати, можно варианты написания станции в студию? A>пофиксить хочешь? A>вот: ст.Найстен?ярви
Кстати, вот как это в украинском веб-интерфейсе выглядит:
Вобщем, ты столкнулся с проблемой "тупая кассирша + хреновый интерфейс".
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, wety, Вы писали:
w> Delphi — это старый добрый Pascal со всеми вытекающими последствиями: w> — низкая производительность (хуже .Net 4.0 минимум в 3 раза); w> — неудобная среда разработки (нет элементарного resharper); w> — отсутствие средств для написания и использования snippet'ов (на момент 2004 года, сейчас может что и поменялось).
w> Так? Так!
Здравствуйте, Eugeny__, Вы писали:
E__>Вобщем, ты столкнулся с проблемой "тупая кассирша + хреновый интерфейс".
мне на самом деле ещё интересно чем провинились твёрдый и мягкий знаки, что к ним такое отношение
Здравствуйте, winston, Вы писали:
W>Всегда считал, что Дельфи это для студентов и школьников, и ничего серьезного на нем не пишется, а оказывается "Много уже написанного крупного софта", можно примеры этого крупного софта?
Здравствуйте, BlackEric, Вы писали:
W>>Хм. Для начала надо придумать как и что тестировать. Есть идеи? W>>Хотя бы примерный тест на C# подскажите, а я его тогда и реализую окончательно и на C# и на Delphi. W>>А ещё надо будет скачать эту 2010/XE(2011) (если только такая есть на торрентах). BE>Trial?
Весьма вероятно, что в Trial может быть урезано что-то и по масштабируемости и быстроте работы (например только можно разрабатывать однопоточные приложения). Они ведь хитрые в Borland!
BE>низкая производительность (хуже .Net 4.0 минимум в 3 раза); — А на чем же это утверждение основано?
Смотрел видеоролик на вебинаре тут.
W>>>>- неудобная среда разработки (нет элементарного resharper); BE>>>Вы 2010/XE(2011) видели? Ничем не уступает MS VS 2008
А всё-таки Visual Studio 2010 будет ещё пошустрее и понадёжнее. Разве не так?
W>>>>- отсутствие средств для написания и использования snippet'ов (на момент 2004 года, сейчас может что и поменялось). BE>>>Автокомплита вполне достаточно. BE>>>Все остальное долно быть вынесено в функции. Если очень критично по производительности, то функция должна быть inline
Да, про inline читал, но не применял. У меня на Delphi 4,5 было разработано немного — штук 6 небольших простеньких проектов:
— обработка режимов движения затвора при различных принципах работы автоматики оружия (сложные многоэтажные формулы, дифференциальные уравнения);
— обработка результатов финансово-аналитического комплекса по управлению рисками и планированием (делал для кафедры в целях защиты от нападения профессоров с других кафедр);
— GUI для FastEcho, T-mail, Голого Деда и прочих хитрых оснасток сисопа BBSки, владельца ноды;
— зачатки механизма автоматизации маршрутных карт некоторых изделий МашЗавода.
И т.д.
Вообще как-то непонятно с этим Delphi. О нём остались смутные воспоминания. Аналога Reflection что-то в Delphi 4 и 5 я не обнаружил (может плохо искал?).
W>>Как же так??? W>>Поможешь написать тест для прогонки на C# и Delphi? Просто нужна идея, а не код. BE>Идеи: BE>1. Факториал, Фибонначи BE>2. Хэши MD5, Sha-1 (крипто API и криптопровайдеры не юзать) BE>3. Генерация preview для каталога изображений (использовать одинаковую технологию обработки изображений: GDI+, OpenGL, DirectX)
Хм. А на сколько это по времени выйдет, учитывая что с Delphi я лет 6 не работкал, да и общий стаж на нём небольшой? Будет ли востребована такая идея? Или кроме нас с тобой это никому не интересно?
Есть.
п> Совместимость с Linux (Mono жив, Kylix забыт).
Показать, как WinForms выглядит под Mono? Поблюешь хоть. А ты мне покажи WPF под Mono. У Delphi планируются версии для MacOS и Linux.
п> Совместимость x86/x64.
В первой половине 2011 года будет 64битный компилер.
п> Наличие упрощенной Compact Framework для WinMobile.
WinMobile уже мертв и никому не интересен, даже МС
п> Наличие кучи сторонних плагинов для студии (VisualAssist тот же).
Есть.
п> Иерархическая организация классов через namespace. Достаточно помнить "что-то в System.IO", чтобы быстро найти нужный класс, не тратя времени на обзор справки.
Здравствуйте, squid, Вы писали:
S>Здравствуйте, BlackEric, Вы писали:
BE>> Вы 2010/XE(2011) видели? Ничем не уступает MS VS 2008
S>Ты чо издеваешся? Рядом не стоял.
W>Вообще как-то непонятно с этим Delphi. О нём остались смутные воспоминания. Аналога Reflection что-то в Delphi 4 и 5 я не обнаружил (может плохо искал?).
А как ты собираешься рефлектить экзешник? Байты не имеют цвета и запаха!
W>Всегда считал, что Дельфи это для студентов и школьников, и ничего серьезного на нем не пишется, а оказывается "Много уже написанного крупного софта", можно примеры этого крупного софта?
http://www.tillypad.ru/ — Давно была сделана на трехзвенке,
FrontEnd на turbo pascal 7.0 + turbovision (рабочее место официанта — терминал)
Backend — на Delphi 7.0
Сейчас (прошло 5 лет как тружусь в другой сфере) так понимаю переписана на BDS и стала еще круче.
Знаю о чем говорю, т.к. разрабатывал аналогичную систему, но двух-звенку и на C++Builder 6.0.
E__>>Кстати, вот как это в украинском веб-интерфейсе выглядит:
E__>>Вобщем, ты столкнулся с проблемой "тупая кассирша + хреновый интерфейс".
S>На WPF проблемы с локализацией и размерами кнопок решаются "на раз".
S>Кста, а есть уже в Дельфи ORM'ы и Generic's?
Промазал?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, skodnik, Вы писали:
s> W>Вообще как-то непонятно с этим Delphi. О нём остались смутные воспоминания. Аналога Reflection что-то в Delphi 4 и 5 я не обнаружил (может плохо искал?).
s> А как ты собираешься рефлектить экзешник? Байты не имеют цвета и запаха!
Здравствуйте, пыщьх, Вы писали:
П>Здравствуйте, enji, Вы писали:
E>>Вы не поверите Но это так — есть чел, который сидит на объекте в 300 км от города с ноутом, на котором стоит win98 и gsm модемом. Как обычно сроки горят, все надо запустить еще вчера. И чего ему сказать — чтобы поменять параметры оборудования вам нужно скачать 30 метров с сайта микрософт или sun?
E>>И такие случаи не редкость... П>Бедный чувак. Но я, если честно, не понмаю, почему его нежелание брать с собой 30 метров фреймворка на флешке (и дистр нормальной операционки) должно усложнять вашу работу как программиста.
Вы серьезно полагаете, что переход с дельфи на Нет сильно упростит ему жизнь или улучшит работу утилит? Меня берут сильные сомнения.
П>Я бы сказал: хотите качественный софт — используйте качественные тулзы. Не знаете? Спросите меня как
Вы думаете, что если тулза написана на Нет, то она качественнее своего собрата на плюсах\дельфи? Ну вместо аксесс виолатион будут вываливаться анхендлед эксепшены. Плавали, знаем. Да, не будет утечек памяти. Однако на том же дельфи \ куте, если оставаться в рамках стандартных вещей, можно вообще не управлять памятью — каждому элементу назначен родитель, при уничтожении которого будут автоматом убиты все предки. Напрягать мозг понадобится, только если надо выйти за пределы этой модели. А с точки зрения ошибок логики — что дельфи, что Нет — нет совершенно никакой разницы
Здравствуйте, Трурль, Вы писали:
W>>ого скока програмулек, практически ни одной не знаю, но вот Altium Designer и FL Studio действительно крупный софт, пользовался, добро
Т>А слова Skype, The Bat!, Total Commander ничего не напоминают?
больше примеров, как я понимаю, нет? три исключения из правила его только подтверждают.
а если ткнуть пальцем в небо и взять первую попавшуюся программу на дельфи — это будет тупое, унылое, глючное убожество. программист на дельфи это ж приговор почти как программист на 1С
А вообще, популярность дельфи в россии — лучшая диверсия ЦРУ
Здравствуйте, enji, Вы писали:
E>Вы серьезно полагаете, что переход с дельфи на Нет сильно упростит ему жизнь или улучшит работу утилит? Меня берут сильные сомнения.
А зря. Упростит, вернее выведете на более высокий уровень. И улучшит. Говорю, как человек перешедший с Delphi на .Net.
Здравствуйте, hattab, Вы писали:
п>> Edit-n-continue. Идеально работает в Visual Studio, и не снился Delphi.
H>Delphi нативная, там такое в принципе невозможно.
Возможно, в нативном Visual C++ есть, притом давно вроде уже с шестой студии.
Приветствую, MxMsk, вы писали:
MM> А зря. Упростит, вернее выведете на более высокий уровень. И улучшит. Говорю, как человек перешедший с Delphi на .Net.
Это переход к более тяжелым наркотикам, а не на новый уровень
Приветствую, пыщьх, вы писали:
п> Серьезно? 2010 год на дворе, .Net ставится с кучей софта, идет через Windows Update и поставляется с новыми операционками. И у кучи народа его до сих пор нет? КАК???
Вые жжал за кольцевую хоть раз? ))
Это я образно. Вот к примеру ПФР. Лично у нас в управлении еще пара машин с 98 виндой стоит, потому как другие винды уже не тянет. Интернета нет, запрещено и закрыто. Винда в основном — xp. Никаких вист и 7, даже в планах. МСофис на 2х компах из ~80, на остальных опенофис.
Приветствую, Eugeny__, вы писали:
E> ... Но какой-то идиот решил "моддернизировать" это дело ...., и налабали кривую хрень, рассчитанную на возюканье мышкой и тупых кассирш. Изначальная система позволяет .... куда быстрее, и без затыков.
Оооооо, ты оказывается понимаешь, за что я винды не люблю!!
Приветствую, MxMsk, вы писали:
MM> Да ладно. Это известная параноя прогеров, считающих, что писать что-то на Шарпе — это ниже плинтуса. По их же рассказам пользователям тоже влом качать .Net. Как показывает практика, это, конечно же, гонево, но чем бы дитя не тешилось
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, hattab, Вы писали:
п>>> Edit-n-continue. Идеально работает в Visual Studio, и не снился Delphi.
H>>Delphi нативная, там такое в принципе невозможно.
FR>Возможно, в нативном Visual C++ есть, притом давно вроде уже с шестой студии.
Нуу, по-строгости говоря, оно тогда таким глючным было...
Если честно, то я даже в жабе и шарпе предпочитаю перезапуск. В однопоточном приложении оно еще как-то работает, но таковые что-то в моей карьере редки.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, master_of_shadows, Вы писали:
Т>>>А слова Skype, The Bat!, Total Commander ничего не напоминают? A>>ничего хорошего __>Вот и выросло поколение...
ой таки не надо. пользовался я этим говнософтом на предыдущей работе постоянно (кстати, не уверен за лицензионную чистоту). до сих пор вспоминать противно (особенно тотал).
Здравствуйте, Sheridan, Вы писали:
E>> ... Но какой-то идиот решил "моддернизировать" это дело ...., и налабали кривую хрень, рассчитанную на возюканье мышкой и тупых кассирш. Изначальная система позволяет .... куда быстрее, и без затыков. S>Оооооо, ты оказывается понимаешь, за что я винды не люблю!!
я кстати эту фигню в web-based виде (одинаково отстойном что под линухом, что под виндой) имел в виду, но человеку близкому к данной системе конечно виднее
E>> ... Но какой-то идиот решил "моддернизировать" это дело ...., и налабали кривую хрень, рассчитанную на возюканье мышкой и тупых кассирш. Изначальная система позволяет .... куда быстрее, и без затыков.
S>Оооооо, ты оказывается понимаешь, за что я винды не люблю!!
Понимаешь, Шеридан. Тут не в Винде даже проблема. Изначальный интерфейс написан хрен знает когда для ОЧЕНЬ платного Юникса, более того, изначально продавались аппаратные терминалы(которые подороже топовых компов сейчас тогда были). Мои скрины — это с эмулятора того аппаратного терминала. Собственно, сейчас вся украинская жд использует эмуляторы, но в фуллскрине, и в ус не дует. Да, на обучение кассиров надо тратить время и силы(талмуд по обучению занимает 10 метров в архиве. Да, это инструкция "для идиотов", но оно того стоит). Обучившийся совершенно неинтуитивной проге(но писавшейся умными инженерами IBM) кассиры способны очень быстро продавать билеты. Система бесполезна для новичка, но очень красива с точки зрения юзабилити опытного кассира. У нас даже непонятно зачем во многих кассах есть вторые мониторы, повернутые к покупателям, отображающие вывод этого терминала.
Под винду же наваяли нечто, где вместо N щелчков по клавише, дабы добраться до нужного поля(с навыками спинного мозга дорабатывается до автоматизма за пару недель работы кассира, и занимает миллисекунд 400 максимум), нужно тянуться к мыше, выделять поле. Ну и похерили нормальный поиск, который "экспрессом" выполняется гораздо лучше. И это не проблема винды как таковой. Проблема, что написали говно вместо конфетки, хотя могли бы и просто облагородить эту же конфетку, но более привычным интерфейсом, да еще и свистелок добавить.
Кстати, знаете, чем примечателен протокол этого терминала от IBM? Он чудесен просто. Там передаются только отдельные байты, измененные в текстовом интерфейсе. Как результат: если все 50(или сколько их там) касс центрального киевского вокзала пересадить на один канал жпрс, они толком ничего не заметят. Этого канала с головой хватит для всех — спасибо инженерам IBM. Блягодаря этому билеты через родную оболочку могут максимально быстро заказываться даже там, где связь хреновая до беспредела.
А вот для Москвы(надеюсь, это не распространилось на всю Россию) написали кошмарное унылое говно, которое для профессиональной работы не подходит никак.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, FR, Вы писали:
FR> п>> Edit-n-continue. Идеально работает в Visual Studio, и не снился Delphi.
FR> H>Delphi нативная, там такое в принципе невозможно.
FR> Возможно, в нативном Visual C++ есть, притом давно вроде уже с шестой студии.
Каким образом это возможно без перекомпиляции? Он эту фичу описывает, как:
Это когда в середине работы программы видишь баг, исправляешь код и продолжаешь выполнение пофиксенного кода без перезапуска. Де-факто можно набросать сигнатуру метода, запустить выполнение и реализовывать его пошагово, выполняя каждую строчку сразу после написания, убеждаясь в корректности кода.
Здравствуйте, Sheridan, Вы писали:
MM>> А зря. Упростит, вернее выведете на более высокий уровень. И улучшит. Говорю, как человек перешедший с Delphi на .Net. S>Это переход к более тяжелым наркотикам, а не на новый уровень
Был бы ты более менее компетентен, спор с тобой бы интересен. Но, к сожалению, "ты все такой же одноклеточный", так что "оставайся при своем мнении".
Приветствую, MxMsk, вы писали:
MM> Был бы ты более менее компетентен, спор с тобой бы интересен. Но, к сожалению, "ты все такой же одноклеточный", так что "оставайся при своем мнении".
Ну да, уж извини меня, но в наркотиках я некомпетентен, да
Единственный мой проект, набросанный на дотнете на коленке за недельку — сейчас качают гдето пару раз в сутки.
Здравствуйте, Antikrot, Вы писали:
A> ой таки не надо. пользовался я этим говнософтом на предыдущей работе постоянно (кстати, не уверен за лицензионную чистоту). до сих пор вспоминать противно (особенно тотал).
Я правильно понимаю, что речь идет про это чудо с интерфейсом windows 3.11 за которое еще и денег просят?
Здравствуйте, Anton Batenev, Вы писали:
AB> A> ой таки не надо. пользовался я этим говнософтом на предыдущей работе постоянно (кстати, не уверен за лицензионную чистоту). до сих пор вспоминать противно (особенно тотал).
AB> Я правильно понимаю, что речь идет про это чудо с интерфейсом windows 3.11 за которое еще и денег просят?
AB> http://wincmd.ru/images/my_general.gif
Вообще-то, это интерфейс не 3.11 Но таки да, это он. Самый популярный файловый менеджер под винды И чего люди в нем находят...
Здравствуйте, snaphold, Вы писали:
S>Странно... S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
Дельфи — несомненно гамно! Ни одного толкового софта не видел на нём написанного, а то что есть — кривое и глючное! Но это ни для кого и не секрет! Не об этом хотел сказать.
Но мне всегда нравились идеи Borland, вот это действительно круто, и зачастую бывают передовые. Object Pascal и Turbo Vision — до сих пор балуюсь иногда на стареньком ноуте... ляпота!
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
W>>>ого скока програмулек, практически ни одной не знаю, но вот Altium Designer и FL Studio действительно крупный софт, пользовался, добро
Т>>А слова Skype, The Bat!, Total Commander ничего не напоминают?
R>больше примеров, как я понимаю, нет? три исключения из правила его только подтверждают.
Да я просто удивился, что из длинного списка winston выделил Altium Designer и FL Studio и не заметил скайпа.
R>а если ткнуть пальцем в небо и взять первую попавшуюся программу на дельфи — это будет тупое, унылое, глючное убожество. программист на дельфи это ж приговор почти как программист на 1С
Вот я ткнул в первую попавшуюся программу на шарпе и это оказалось тупое, унылое, глючное убожество. Программ тупее и унылее, написанных на дельфи (и даже на фокспро), я не встречал.
Здравствуйте, hattab, Вы писали:
H>Вообще-то, это интерфейс не 3.11 Но таки да, это он. Самый популярный файловый менеджер под винды И чего люди в нем находят...
Ну не проводником же пользоваться.
Здравствуйте, Трурль, Вы писали:
Т> H>Вообще-то, это интерфейс не 3.11 Но таки да, это он. Самый популярный файловый менеджер под винды И чего люди в нем находят...
Т> Ну не проводником же пользоваться.
Здравствуйте, Sheridan, Вы писали:
S>Ну да, уж извини меня, но в наркотиках я некомпетентен, да S>Единственный мой проект, набросанный на дотнете на коленке за недельку — сейчас качают гдето пару раз в сутки.
Странно, что его вообще качают, ведь все знают, что .Net есть только у Microsoft в разделе Downloads, а у пользователей его нет и не будет.
FR>>Возможно, в нативном Visual C++ есть, притом давно вроде уже с шестой студии.
E__>Нуу, по-строгости говоря, оно тогда таким глючным было...
Угу, но в 7.1 уже вполне нормально работало.
E__>Если честно, то я даже в жабе и шарпе предпочитаю перезапуск. В однопоточном приложении оно еще как-то работает, но таковые что-то в моей карьере редки.
Ну в многопоточке часто и просто отладчик бесполезен.
Здравствуйте, hattab, Вы писали:
FR>> Возможно, в нативном Visual C++ есть, притом давно вроде уже с шестой студии.
H>Каким образом это возможно без перекомпиляции? Он эту фичу описывает, как:
Там и происходит перекомпиляция, но только изменившейся функции, она компилируется в память и подменяет
оригинал.
Здравствуйте, FR, Вы писали:
FR> FR>> Возможно, в нативном Visual C++ есть, притом давно вроде уже с шестой студии.
FR> H>Каким образом это возможно без перекомпиляции? Он эту фичу описывает, как:
FR> Там и происходит перекомпиляция, но только изменившейся функции, она компилируется в память и подменяет FR> оригинал.
Хм... А если есть завязка на адрес функции, как это разруливается? Или в таких сценариях эта фича не работает?
Здравствуйте, hattab, Вы писали:
H>Хм... А если есть завязка на адрес функции, как это разруливается? Или в таких сценариях эта фича не работает?
Скорее всего вызовы всех функций идут через заглушки, вроде даже просто в режиме отладки так делается, так что
с точки зрения остального кода адрес функции не изменится, единственно поменяется пара байт в заглушке после jmp.
Здравствуйте, FR, Вы писали:
FR> H>Хм... А если есть завязка на адрес функции, как это разруливается? Или в таких сценариях эта фича не работает?
FR> Скорее всего вызовы всех функций идут через заглушки, вроде даже просто в режиме отладки так делается, так что FR> с точки зрения остального кода адрес функции не изменится, единственно поменяется пара байт в заглушке после jmp.
Приветствую, squid, вы писали:
s> никому не нужный или просто плохой проект можно написать на любом языке. ои поздравления
Он отнюдь не для пользователей писался, а очень даже для админов. Причем для той узкой прослойки, которые с виндой работают только потому, что она популярна, а все основное поднимают и настраивают в линупсах.
Я вообще удивлен, что его качают.
Второго подобного опенсорц проекта с такими гибкими настройками ты врядли найдешь.
Здравствуйте, 4UBAKA, Вы писали:
UBA> UBA>> H>FAR forever!
UBA> UBA>> Низкое разрешение.
UBA> H>Моя непонимать 80x25 это не предел для консоли.
UBA> Да хоть 125 на 80 — меньше 1920 на 1080 и точка.
На семерке максимизируется на вес экран без проблем. У тотала какой-то жутко аляповатый интерфейс, который ни как не совмещается с моей тонкой душевной организацией и чувством прекрасного.
UBA> Единственное преимущество перед тоталом — наличие консоли.
Здравствуйте, snaphold, Вы писали:
S>Странно... S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
99.99% новых проектов в его нише начинают на .NET/Java/C++
Практически все вакансии, что я видел в своем городе и миллионниках Украины на Delphi — поддержка старых проектов. Отсюда — отсутствие перспектив и тенденции к переучиванию программистов на вышеозначенные платформы...
Здравствуйте, hattab, Вы писали:
UBA>> Да хоть 125 на 80 — меньше 1920 на 1080 и точка.
H>На семерке максимизируется на вес экран без проблем.
Ой я не могу. Какая разница? Всё равно текст и выше этого не прыгнешь.
H>У тотала какой-то жутко аляповатый интерфейс, который ни как не совмещается с моей тонкой душевной организацией и чувством прекрасного.
Какой?
UBA>> Единственное преимущество перед тоталом — наличие консоли.
H>Да это такой плюс, что ого-го
Чего тут ого-го? Насколько часто нужна консоль именно в связке с файловым менеджером.
Здравствуйте, 4UBAKA, Вы писали:
UBA> Ой я не могу. Какая разница? Всё равно текст и выше этого не прыгнешь.
Блин, а у тотала на панелях не текст, нет (основная информация, я имею ввиду)? Подумаешь картинки в миниатюрах можно У меня в FAR'е просмотр картинок есть Кстати, вот посмотри еще (это на счет 80x25).
UBA> H>У тотала какой-то жутко аляповатый интерфейс, который ни как не совмещается с моей тонкой душевной организацией и чувством прекрасного.
UBA> Какой?
Просвящяйся
UBA> UBA>> Единственное преимущество перед тоталом — наличие консоли.
UBA> H>Да это такой плюс, что ого-го
UBA> Чего тут ого-го? Насколько часто нужна консоль именно в связке с файловым менеджером.
Я вообще постоянно пользуюсь То svn (ининада про тортиллу), то скрипт какой стартануть.
Здравствуйте, 4UBAKA, Вы писали:
UBA>>>Да хоть 125 на 80 — меньше 1920 на 1080 и точка. SD>>а давно у вас по пикселю на символ?
UBA>Читать не умеешь?
UBA>125 на 80 символов FARа — меньше 1920 на 1080 пикселов тотала. Так понятней?
А 1920 на 1080 пикселов это сколько будет в пересчете на символы?
Здравствуйте, hattab, Вы писали:
UBA>> Чего тут ого-го? Насколько часто нужна консоль именно в связке с файловым менеджером.
H>Я вообще постоянно пользуюсь То svn (ининада про тортиллу), то скрипт какой стартануть.
Можно cmd забиндить, а для большинства случаем хватает командной строки тотала.
Здравствуйте, ambel-vlad, Вы писали:
UBA>>125 на 80 символов FARа — меньше 1920 на 1080 пикселов тотала. Так понятней?
AV>А 1920 на 1080 пикселов это сколько будет в пересчете на символы?
Я о минимальном управляемом элементе. Пикселов всегда будет больше.
Нарисуй в ФАРе пользовательскую панель инструментов, чтобы она была на экране, а не в меню.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Вообще эту штуку Борланд придумал куда раньше МС. Был у них такой тул — Together назывался, кажется.
Тугеза была сама по себе, совершенно отдельная питерская контора. Борланд ее купил и в очень короткие сроки похоронил. Да, тугеза с джавой работала, а не с паскалем, что как бы намекает.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС> п>> Совместимость с Linux (Mono жив, Kylix забыт).
НС> H>Показать, как WinForms выглядит под Mono? Поблюешь хоть.
НС> Есть биндинги под GTK, Wx и Qt.
Ну если сторонние продукты рассматриваются, тогда я голосую за FPC + Lazarus.
НС> H> А ты мне покажи WPF под Mono.
НС> Есть сабсет в Moonlight.
Не совсем то. Кроме того, он даже сильверлайт толком не показывает Недавно на хабре показывали новый сайт Московского метро (он на сильверлайте), линуксоиды, говорят, негодовали.
НС> п>> Совместимость x86/x64.
НС> H>В первой половине 2011 года будет 64битный компилер.
НС>
Правда-правда
НС> п>> Наличие упрощенной Compact Framework для WinMobile.
НС> H>WinMobile уже мертв и никому не интересен, даже МС
НС> Под Windows Phone 7 CF тоже есть.
Здравствуйте, 4UBAKA, Вы писали:
UBA> H>Я вообще постоянно пользуюсь То svn (ининада про тортиллу), то скрипт какой стартануть.
UBA> Можно cmd забиндить, а для большинства случаем хватает командной строки тотала.
Да, в cmd очень удобно по файловой системе шастать.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС> ВВ>Вообще эту штуку Борланд придумал куда раньше МС. Был у них такой тул — Together назывался, кажется.
НС> Тугеза была сама по себе, совершенно отдельная питерская контора. Борланд ее купил и в очень короткие сроки похоронил. Да, тугеза с джавой работала, а не с паскалем, что как бы намекает.
Почему похоронил? До сих пор в свои IDE встраивает
Здравствуйте, hattab, Вы писали:
UBA>> Можно cmd забиндить, а для большинства случаем хватает командной строки тотала.
H>Да, в cmd очень удобно по файловой системе шастать.
А зачем там по ФС шастать? Просто запускать при необходимости.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС> НС>> Есть биндинги под GTK, Wx и Qt.
НС> H>Ну если сторонние продукты рассматриваются
НС> GTK# входит в базовую поставку Моно.
Здравствуйте, 4UBAKA, Вы писали:
UBA> UBA>> Можно cmd забиндить, а для большинства случаем хватает командной строки тотала.
UBA> H>Да, в cmd очень удобно по файловой системе шастать.
UBA> А зачем там по ФС шастать? Просто запускать при необходимости.
Я исходниками управляю исключительно из FAR'а + svn из его консоли. Ты же понимаешь, что не все лежит в одной папке.
Здравствуйте, hattab, Вы писали:
H>Вообще-то, это интерфейс не 3.11 Но таки да, это он. Самый популярный файловый менеджер под винды И чего люди в нем находят...
Вспомним про FAR и выделим эту ветку в отдельную тему?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC> H>Вообще-то, это интерфейс не 3.11 Но таки да, это он. Самый популярный файловый менеджер под винды И чего люди в нем находят...
CC> Вспомним про FAR и выделим эту ветку в отдельную тему?
Боюсь, что в понедельник любители тотала шапками закидают
Здравствуйте, 4UBAKA, Вы писали:
UBA>>>125 на 80 символов FARа — меньше 1920 на 1080 пикселов тотала. Так понятней?
AV>>А 1920 на 1080 пикселов это сколько будет в пересчете на символы?
UBA>Я о минимальном управляемом элементе. Пикселов всегда будет больше.
А толку от этого? Тебе все равно необходима куча пикселей на что-то полезное для человека.
UBA>Нарисуй в ФАРе пользовательскую панель инструментов, чтобы она была на экране, а не в меню.
Оба-на. А это обязательно? А то в разных программах разные подходы.
Здравствуйте, hattab, Вы писали:
H>Я исходниками управляю исключительно из FAR'а + svn из его консоли. Ты же понимаешь, что не все лежит в одной папке.
Вот. Я и хотел подвести к тому, что Far и Total вообще не конкуренты.
Здравствуйте, 4UBAKA, Вы писали:
UBA> H>Я исходниками управляю исключительно из FAR'а + svn из его консоли. Ты же понимаешь, что не все лежит в одной папке.
UBA> Вот. Я и хотел подвести к тому, что Far и Total вообще не конкуренты.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС> НС>> GTK# входит в базовую поставку Моно.
НС> H>Mono продукт сторонний
НС> Сторонний от чего? От МС? Ну так что?
Ничего. Что ты хотел сказать, говоря о GTK# в поставке Mono?
Здравствуйте, hattab, Вы писали:
h> Не совсем то. Кроме того, он даже сильверлайт толком не показывает Недавно на хабре показывали новый сайт Московского метро (он на сильверлайте), линуксоиды, говорят, негодовали.
интересно как он у Медведева на iPad будет выглядеть. Подозреваю что никак.
Здравствуйте, Трурль, Вы писали:
R>>а если ткнуть пальцем в небо и взять первую попавшуюся программу на дельфи — это будет тупое, унылое, глючное убожество. программист на дельфи это ж приговор почти как программист на 1С
Т>Вот я ткнул в первую попавшуюся программу на шарпе и это оказалось тупое, унылое, глючное убожество. Программ тупее и унылее, написанных на дельфи (и даже на фокспро), я не встречал.
в одну? а Вы несколько возьмите. и не только на C#, но и на C++. угадаете как результаты распределятся? я, лет 5-6 назад, реально такой эксперимент ставил .
да сам дельфи (по крайней мере какие-то далеко не самые старые версии) при запуске на двухмониторной машине рисовал сплэш промежь мониторов -- театр начинается с вешалки так сказать.
типичный программист на дельфи — безмозглый формошлеп ни хрена не понимающий что там происходит (исключения, безусловно, есть, я двоих знаю).
иллюзия простоты развращает и отупляет.
Совсем вопиющий пример: мое исходное сообщение заминусовали три человека, но выразить суть претензий словами сумели только Вы (фигню правда написали, но хоть что-то). Вы только вдумайтесь, выразить на родном языке свои неглубокие мысли способны не более 33.3(3)% дельфистов! у остальных в мозгу не нашлось нужной компоненты... вот реально — lost generation
Здравствуйте, vitasR, Вы писали:
R> Совсем вопиющий пример: мое исходное сообщение заминусовали три человека, но выразить суть претензий словами сумели только Вы (фигню правда написали, но хоть что-то). Вы только вдумайтесь, выразить на родном языке свои неглубокие мысли способны не более 33.3(3)% дельфистов! у остальных в мозгу не нашлось нужной компоненты... вот реально — lost generation
очивидный бред комментировать вообще не стоит. как и этот ваш пост. впрочем, вы очень просили поэтому я это сделал.
Здравствуйте, vitasR, Вы писали:
Т>>Вот я ткнул в первую попавшуюся программу на шарпе и это оказалось тупое, унылое, глючное убожество. Программ тупее и унылее, написанных на дельфи (и даже на фокспро), я не встречал.
R>в одну? а Вы несколько возьмите.
Здравствуйте, vitasR, Вы писали:
R> в одну? а Вы несколько возьмите. и не только на C#, но и на C++. угадаете как результаты распределятся? я, лет 5-6 назад, реально такой эксперимент ставил .
R> да сам дельфи (по крайней мере какие-то далеко не самые старые версии) при запуске на двухмониторной машине рисовал сплэш промежь мониторов -- театр начинается с вешалки так сказать.
R> типичный программист на дельфи — безмозглый формошлеп ни хрена не понимающий что там происходит (исключения, безусловно, есть, я двоих знаю). R> иллюзия простоты развращает и отупляет.
R> Совсем вопиющий пример: мое исходное сообщение заминусовали три человека, но выразить суть претензий словами сумели только Вы (фигню правда написали, но хоть что-то). Вы только вдумайтесь, выразить на родном языке свои неглубокие мысли способны не более 33.3(3)% дельфистов! у остальных в мозгу не нашлось нужной компоненты... вот реально — lost generation
А зачем тебе возражать, да еще по сути? Ты даже по приведенной ссылке сходить не осилил, о чем с тобой вообще говорить можно На тявканье каждой моськи не наоборачиваешься
Здравствуйте, squid, Вы писали:
s> h> Не совсем то. Кроме того, он даже сильверлайт толком не показывает Недавно на хабре показывали новый сайт Московского метро (он на сильверлайте), линуксоиды, говорят, негодовали.
s> интересно как он у Медведева на iPad будет выглядеть. Подозреваю что никак.
Здравствуйте, 4UBAKA, Вы писали:
UBA>Да хоть 125 на 80 — меньше 1920 на 1080 и точка.
У тебя что, в шрифте в тотале каждая буква с межбуквенныи интервалом занимает 1 пиксель?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, 4UBAKA, Вы писали:
UBA>Ой я не могу. Какая разница? Всё равно текст и выше этого не прыгнешь.
А что ещё надо для файлового манагера то? Иконки? Нафиг не нужны.
UBA>Чего тут ого-го? Насколько часто нужна консоль именно в связке с файловым менеджером.
Всегда.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, 4UBAKA, Вы писали:
UBA>Можно cmd забиндить, а для большинства случаем хватает командной строки тотала.
CMD неудобно — он отдельно работает и использовать функционал панелей манагера не может.
Комстрока тотала не позволяет увидеть результат исполнения команды
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, 4UBAKA, Вы писали:
UBA>Читать не умеешь?
Это у тебя в голове больки.
UBA>125 на 80 символов FARа — меньше 1920 на 1080 пикселов тотала. Так понятней?
Ты ещё метры с киллограмами сравни, ага.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, hattab, Вы писали:
CC>> Вспомним про FAR и выделим эту ветку в отдельную тему? H>Боюсь, что в понедельник любители тотала шапками закидают
"А нас рать!" (С)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
UBA>>125 на 80 символов FARа — меньше 1920 на 1080 пикселов тотала. Так понятней? CC>Ты ещё метры с киллограмами сравни, ага.
Как в FAR сделать пользовательскую панель инструментов?
Здравствуйте, CreatorCray, Вы писали:
UBA>>Можно cmd забиндить, а для большинства случаем хватает командной строки тотала. CC>CMD неудобно — он отдельно работает и использовать функционал панелей манагера не может. CC>Комстрока тотала не позволяет увидеть результат исполнения команды
Здравствуйте, nullptr_t, Вы писали:
_>ставлю на то что на ~250 посте флейм прекратится
новое поколение а спор всё тот же
1 сначала спорили о сях с паскалем
2 потом о плюсах с паскалем
3 потом о вижал студио с дельфи
4 потом о вижал бейсике с дельфи
5 потом опять о вижал студио с дельфи
6 теперь шарп с дельфи
собственно только во втором пункте паскаль претерпел революционные изменения,
а потом только эволюция, зато спорщики дохнут и появляются новые
ну а как ещё, новые студиозы пороху понюхают и уже знают что круче.
так что флейм утихнет, но он ещё возродится, такова пока тенденция
[...] CC>>CMD неудобно — он отдельно работает и использовать функционал панелей манагера не может. CC>>Комстрока тотала не позволяет увидеть результат исполнения команды
UBA>А как часто это необходимо?
Нет, ну если результат выполнения команды совершенно не интересует, да и вообще правильно ли команда написана, то конечно...
Здравствуйте, 4UBAKA, Вы писали:
CC>>Гуи чего? CC>>что ты тут понимаешь под GUI?
UBA>Graphical user interface, а ты что?
А применительно к файловому менеджеру?
Грубо говоря "Нафига козе баян"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, 4UBAKA, Вы писали:
UBA>Здравствуйте, CreatorCray, Вы писали:
UBA>>>125 на 80 символов FARа — меньше 1920 на 1080 пикселов тотала. Так понятней? CC>>Ты ещё метры с киллограмами сравни, ага.
UBA>Как в FAR сделать пользовательскую панель инструментов?
Не переводи тему.
240х98 символов в fullscreen FAR это как с 1920х1200 пикселями соотносится по твоему?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, vitasR, Вы писали:
R>Здравствуйте, Трурль, Вы писали:
W>>>ого скока програмулек, практически ни одной не знаю, но вот Altium Designer и FL Studio действительно крупный софт, пользовался, добро
Т>>А слова Skype, The Bat!, Total Commander ничего не напоминают?
R>больше примеров, как я понимаю, нет? три исключения из правила его только подтверждают. R>а если ткнуть пальцем в небо и взять первую попавшуюся программу на дельфи — это будет тупое, унылое, глючное убожество. программист на дельфи это ж приговор почти как программист на 1С R>А вообще, популярность дельфи в россии — лучшая диверсия ЦРУ
Здравствуйте, AleksandrN, Вы писали:
AN>Здравствуйте, 4UBAKA, Вы писали:
UBA>>125 на 80 символов FARа — меньше 1920 на 1080 пикселов тотала. Так понятней?
AN>В Фаре пробовал Alt-F9 нажимать?
Тссс, зачем ты все испортил? =)
Здравствуйте, hattab, Вы писали:
UBA>> Можно cmd забиндить, а для большинства случаем хватает командной строки тотала.
H>Да, в cmd очень удобно по файловой системе шастать.
Вот для консоли можно вынести фар на тулбар тотала, и будет очень круто.
Здравствуйте, hattab, Вы писали:
UBA>> А зачем там по ФС шастать? Просто запускать при необходимости.
H>Я исходниками управляю исключительно из FAR'а + svn из его консоли. Ты же понимаешь, что не все лежит в одной папке.
Как говорится, сам себе злобный буратино Судя по всему, луноход это только следствие.
Здравствуйте, CreatorCray, Вы писали:
UBA>>Ой я не могу. Какая разница? Всё равно текст и выше этого не прыгнешь. CC>А что ещё надо для файлового манагера то? Иконки? Нафиг не нужны.
Пока я не пересел на тотал, тоже так думал.
UBA>>Чего тут ого-го? Насколько часто нужна консоль именно в связке с файловым менеджером. CC>Всегда.
Не всегда, а только при определенной деятельности, которая нынче встречается достаточно редко. Я вынес кое какие команды в шорткаты, консоль запускать приходится крайне редко и то обычно под рдп, где нет никакого полезного софта.
Здравствуйте, CreatorCray, Вы писали:
UBA>>Как в FAR сделать пользовательскую панель инструментов? CC>Не переводи тему. CC>240х98 символов в fullscreen FAR это как с 1920х1200 пикселями соотносится по твоему?
Он и не переводит. Про символы и пиксели он пояснил вполне понятно.
Что тебе с 240х98 символов в фаре ?
Символы — это говенный способ использования пространства экрана.
Вроде бы текста можно показать много.
А если не текст, а тулбар для удобства — уже капут, нельзя.
Навигация шорткатами — уже капут, тоже нельзя.
Контекстное меню — говно.
В итоге сколько бы ни было символов, а в графике пространство экрана используется более эффективно.
Об этом и говорит Чубака и не надо валять дурку, все тебе было понятно и без этого коментария.
Здравствуйте, ambel-vlad, Вы писали:
UBA>>Я о минимальном управляемом элементе. Пикселов всегда будет больше.
AV>А толку от этого? Тебе все равно необходима куча пикселей на что-то полезное для человека.
Конечно. Тулбар — это очень полезно. Шорткаты — это очень полезно.
UBA>>Нарисуй в ФАРе пользовательскую панель инструментов, чтобы она была на экране, а не в меню.
AV>Оба-на. А это обязательно? А то в разных программах разные подходы.
Людям, привыкшим к консоли и хоткеям никогда не понять, что такое мыша.
Ты, вероятно, скоро выдашь свой мега аргумент что де "в иконки надо целиться"
Здравствуйте, AleksandrN, Вы писали:
UBA>>125 на 80 символов FARа — меньше 1920 на 1080 пикселов тотала. Так понятней?
AN>В Фаре пробовал Alt-F9 нажимать?
Ну нажмешь, и что, в фаре тулбар появится, шорткаты и прочие возможности ?
Здравствуйте, Dzirt2005, Вы писали:
D>Нет, ну если результат выполнения команды совершенно не интересует, да и вообще правильно ли команда написана, то конечно...
Результат выполнения команды нужен крайне редко. У меня вот есть кучка шорткатов, я даже не смотрю, что там, все само работает.
Но разумеется, когда создавал шорткаты, то проверял что и как работает.
Здравствуйте, пыщьх, Вы писали:
П>>>Edit-n-continue. Идеально работает в Visual Studio, и не снился Delphi. BE>> хз что такое П>Это когда в середине работы программы видишь баг, исправляешь код и продолжаешь выполнение пофиксенного кода без перезапуска. Де-факто можно набросать сигнатуру метода, запустить выполнение и реализовывать его пошагово, выполняя каждую строчку сразу после написания, убеждаясь в корректности кода.
Здравствуйте, пыщьх, Вы писали:
П>Здравствуйте, enji, Вы писали:
E>>С#, java — нужен фреймворк, далеко не у всех он есть; кто-то сидит на объекте с ноутом и gprs интернетом и выкачать его не сможет П>Серьезно? 2010 год на дворе, .Net ставится с кучей софта, идет через Windows Update и поставляется с новыми операционками. И у кучи народа его до сих пор нет? КАК???
Как-то скачал прогу бесплатную майкрософтовскую для склейки панорам. Весила метра 4 вроде. Начал ставить — она захотела 4-й .Net Framework — это 200 метров качать и потом на 600 ставить. Как результат, на прогу забил. Другие версии фреймворка вроде стоят, но прога хотела именно 4-ю.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Тугеза была сама по себе, совершенно отдельная питерская контора. Борланд ее купил и в очень короткие сроки похоронил. Да, тугеза с джавой работала, а не с паскалем, что как бы намекает.
По поводу интимных деталей, кто кого купил и похоронил, я не в курсе, но Together точно предлагалась для .NET/C#. Это я помню лично, т.к. был на презентации, и у меня даже где-то валяется диск. Причем было это в году 2004, когда никаких class diagram в самой студии еще не было. А сам Together AFAIR как раз в студию (на тот момент 2003-ю) и интегрировался.
Здравствуйте, Ikemefula, Вы писали:
I>Грубо говоря, что бы работали все УИ-возможности безо всякого геморроя.
I>Захотел файл перетащить из тотала — пожалуйста.
Есть плуг, но реально не нужно.
I>Захотел меню открыть — пожалуйста.
Какое меню тебе надо открыть?
I>Захотел на тулбар накидать шорткатов — пожалуйста.
там есть юзерменю.
Более того в фаре за мышь браться вообще не приходится. Он заточен на быструю работу с клавиатуры.
I>Захотел фолдеры быстрого доступа — пожалуйста.
Есть на хоткеях
I>Захотел перетащить чего то в тотал — пожалуйста.
тоже есть плуг, но реально никогда не пользовался.
I>А с фаром надо для всего этого ставить плагины(например).
А какая разница плагином это сделано или в ядре?
I>Ну и геморрой никуда не денется — в фаре мышь коряво сделана.
Поподробнее, в чём там корявость мыши?
По right-click контекстное меню на файле там открывается.
Drag-n-drop сделали плугом, чтоб только кому надо ставили.
Что тебе ещё надобно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
UBA>>>Чего тут ого-го? Насколько часто нужна консоль именно в связке с файловым менеджером. CC>>Всегда. I>Не всегда, а только при определенной деятельности, которая нынче встречается достаточно редко. Я вынес кое какие команды в шорткаты, консоль запускать приходится крайне редко и то обычно под рдп, где нет никакого полезного софта.
Эт потому что не системщик ты ни разу.
Задачи у тебя совсем другие.
Тебе поди и explorer-а хватит.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
UBA>>>Как в FAR сделать пользовательскую панель инструментов? CC>>Не переводи тему. CC>>240х98 символов в fullscreen FAR это как с 1920х1200 пикселями соотносится по твоему? I>Он и не переводит. Про символы и пиксели он пояснил вполне понятно.
Ну может ты тогда переведёшь что он понятного объяснил? Потому как в его исполнении это было всё что угодно, кроме внятного объяснения.
I>Что тебе с 240х98 символов в фаре ? I>Символы — это говенный способ использования пространства экрана.
Для вывода текста это говёный способ???
А как надо выводить текст по твоему?
Файловый менеджер это файлы в первую очередь. С текстовой информацией об имени, размере, дате и прочих параметрах.
I>Вроде бы текста можно показать много.
Собственно текста там и надо много.
I>А если не текст, а тулбар для удобства — уже капут, нельзя.
Тулбара нет, но и потребности в нём тоже нет.
Вместо тулбара — есть меню под F2
И это в контексте клавиатурной заточенности FAR в разы удобнее тулбара — не надо снимать руки с клавы и тянуться за мышой.
В тотале ты можешь пользоваться всеми его фичам только с клавиатуры или надо тратить время на дёргание мыши?
I>Навигация шорткатами — уже капут, тоже нельзя.
Чего? Ctrl+0-9 это уже не шорткат?
I>Контекстное меню — говно.
Выкидывается стандартное графическое виндовое.
Или оно же, только в текстовом варианте — выбирай какое тебе больше нравицо в настройках.
I>В итоге сколько бы ни было символов, а в графике пространство экрана используется более эффективно.
Да шо ви говорите
I>Об этом и говорит Чубака и не надо валять дурку, все тебе было понятно и без этого коментария.
Мне то всё давно понятно, да он какую то ерунду запрягает.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
I>>Захотел на тулбар накидать шорткатов — пожалуйста. CC>там есть юзерменю. CC>Более того в фаре за мышь браться вообще не приходится. Он заточен на быструю работу с клавиатуры.
I>>Захотел фолдеры быстрого доступа — пожалуйста. CC>Есть на хоткеях
Ну все, ты попал. Сейчас тебя запишут в стан линуксоидов. Считай тебе повезло, если только Икемфула скажет, что ты поклонник противной консоли.
S>Как-то скачал прогу бесплатную майкрософтовскую для склейки панорам. Весила метра 4 вроде. Начал ставить — она захотела 4-й .Net Framework — это 200 метров качать и потом на 600 ставить. Как результат, на прогу забил. Другие версии фреймворка вроде стоят, но прога хотела именно 4-ю.
Чего уж там 200 мегабайт, напишите 20 Гб 4-й фреймворк для 32-битной ОС весит 35Мб.
Здравствуйте, MxMsk, Вы писали:
E>>Вы серьезно полагаете, что переход с дельфи на Нет сильно упростит ему жизнь или улучшит работу утилит? Меня берут сильные сомнения. MM>А зря. Упростит, вернее выведете на более высокий уровень. И улучшит. Говорю, как человек перешедший с Delphi на .Net.
Ну смотрите:
сервисная прога =
1 несложный гуй
2 работа с СОМ-портом / иногда — TCP/IP
3 уникальный или неслишком распространенный протокол оборудования
Первые два пункта полностью закрываются vcl и сторонними компонентами. Третий пункт — пишется руками.
Здравствуйте, QrystaL, Вы писали:
S>>Как-то скачал прогу бесплатную майкрософтовскую для склейки панорам. Весила метра 4 вроде. Начал ставить — она захотела 4-й .Net Framework — это 200 метров качать и потом на 600 ставить. Как результат, на прогу забил. Другие версии фреймворка вроде стоят, но прога хотела именно 4-ю.
QL>Чего уж там 200 мегабайт, напишите 20 Гб 4-й фреймворк для 32-битной ОС весит 35Мб.
Здравствуйте, enji, Вы писали:
E>Ну смотрите:
E>сервисная прога = E> 1 несложный гуй E> 2 работа с СОМ-портом / иногда — TCP/IP E> 3 уникальный или неслишком распространенный протокол оборудования
E>Первые два пункта полностью закрываются vcl и сторонними компонентами. Третий пункт — пишется руками.
E>Что из этого упростится при переходе на net?
Разработка и поддержка всего этого упроститься. Потому что библиотека .Net лучше продумана, а как язык, C# куда более развит, чем Delphi. К тому же .Net предлагает больше языков: F#, Nemerle, VB. Если проект перспективный, то почему бы не обеспечить его перспективной платформой.
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, enji, Вы писали:
E>>Ну смотрите:
E>>сервисная прога = E>> 1 несложный гуй E>> 2 работа с СОМ-портом / иногда — TCP/IP E>> 3 уникальный или неслишком распространенный протокол оборудования
E>>Первые два пункта полностью закрываются vcl и сторонними компонентами. Третий пункт — пишется руками.
E>>Что из этого упростится при переходе на net? MM>Разработка и поддержка всего этого упроститься. Потому что библиотека .Net лучше продумана, а как язык, C# куда более развит, чем Delphi. К тому же .Net предлагает больше языков: F#, Nemerle, VB. Если проект перспективный, то почему бы не обеспечить его перспективной платформой.
Несложный гуй на нете проще несложного гуя на дельфи? Берут меня сильные сомнения. Уж что-что, а кнопкокидательство в дельфи проще некуда.
Развитость языка — а какие именно возможности языка были бы полезны в этом случае? Подозреваю, что примерно все равно на чем писать такие проги — на дельфи, шарпе или плюсах, трудоемкость будет примерно одинаковой.
Поддержка многих языков — а зачем она? Проект ведет один человек, он знает один определенный язык и пишет на нем. Для чего ему возможность писать разные модули на разных языках?
К тому ж основной минус перспективной платформы — ее размер, никуда не девается. А плюсы как-то не особо видны...
Здравствуйте, hattab, Вы писали:
H>А зачем тебе возражать, да еще по сути? Ты даже по приведенной ссылке сходить не осилил, о чем с тобой вообще говорить можно На тявканье каждой моськи не наоборачиваешься
Во1ых, потрудитесь не хамить. тыкайте и обзывайте моськами своих родителей, которые не научили Вас элементарным нормам поведения.
Во2ых, у меня уже достаточный опыт в этой жизни, чтобы знать что дерьмо это дерьмо, не залезая на помойку.
Но специально для Вас. Идем по указанной ссылке. Честно качаем первую программу из списка. честно обламываемся — там надо регистриться для получения ссылки; емэйл тупо не приходит. Ладно, пропускаем, это не проблема дельфи. Вторую и третью программы пропускаем, слишком уж они специфичные. Качаем четвертую (Apadana), ставим, запускаем. И вуаля — курсор мыши насмерть клипируется на одном мониторе, на второй не передвинуть. Нормально? потыркался в кнопки тулбара. сходу: контролы в дизайн моде на форме не клипируются, торчат наружу (в рантайме обрезаются), флэш контрол на форму поставить не дает — говорит Flash ActiveX не установлен (на самом деле установлен, причем разных версий). дальше копаться нет ни малейшего желания.
Здравствуйте, Ikemefula, Вы писали:
I>Людям, привыкшим к консоли и хоткеям никогда не понять, что такое мыша.
Люди прекрасно знают, что на переключение между устройствами ввода тратится время.
Ты в студии неужто никогда не пользуешься клавиатурными шорткатами?
Попробуй как нить день всё что ты делал через Ctrl-C/V, F5, F10, F11 и прочие студийные действия делать строго мышой на тулбарах.
После этого расскажи нам тут как это удобно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, sambl4, Вы писали:
S>Здравствуйте, пыщьх, Вы писали:
П>>Здравствуйте, enji, Вы писали:
E>>>С#, java — нужен фреймворк, далеко не у всех он есть; кто-то сидит на объекте с ноутом и gprs интернетом и выкачать его не сможет П>>Серьезно? 2010 год на дворе, .Net ставится с кучей софта, идет через Windows Update и поставляется с новыми операционками. И у кучи народа его до сих пор нет? КАК???
S>Как-то скачал прогу бесплатную майкрософтовскую для склейки панорам. Весила метра 4 вроде. Начал ставить — она захотела 4-й .Net Framework — это 200 метров качать и потом на 600 ставить. Как результат, на прогу забил. Другие версии фреймворка вроде стоят, но прога хотела именно 4-ю.
3.5 был много метров. В 4.0 они размер пофиксили.
Здравствуйте, Ночной Смотрящий, Вы писали:
NBN>>Скорость работы наверное просто офигенная
НС>Нормальная
NBN>> За минуту оно сможет новое окно отрисовать?
НС>А в чем проблема?
Да оно в нативном-то варианте еле шевелится, интересно — как оно с дополнительным, не самым шустрым слоем работает.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>По поводу интимных деталей, кто кого купил и похоронил, я не в курсе, но Together точно предлагалась для .NET/C#. Это я помню лично, т.к. был на презентации, и у меня даже где-то валяется диск. Причем было это в году 2004, когда никаких class diagram в самой студии еще не было.
ВВ>А сам Together AFAIR как раз в студию (на тот момент 2003-ю) и интегрировался.
Та слабоват тугезер. Была же Rational XDE, которая покруче в разы как тугезы, так и всех современных недодиаграмм, встроенных в студию изначально.
Тугезер единственно чем хорош — это реалтайм-двусторонним редактированием некоторых видов диаграмм и кода. Особенно удобно для написания комментов и неспешного рефакторинга при обзоре архитектуры. Если же не лень нажимать кнопку synchronize время от времени, то и это единственное преимущество улетучивается, ибо по всех другим параметрам он слабоват.
Здравствуйте, hattab, Вы писали:
H>Каким образом это возможно без перекомпиляции?
Для задействования этой фичи компилится со специальной опцией линковщика, дабы линковать не на уровне модуля, а на уровне ф-ий. По-умолчанию стоит в дебаг-конфигурации проекта. Разумеется, в отличие от VB, скажем, эта функциональность ограничена. Например, можно делать edit and continue лишь для ф-ий/методов. Если же поменял определение типа — требуется перекомпиляция.
Здравствуйте, CreatorCray, Вы писали:
I>>Людям, привыкшим к консоли и хоткеям никогда не понять, что такое мыша. CC>Люди прекрасно знают, что на переключение между устройствами ввода тратится время.
Конечно тратится. При чем тратится не только в направлении клавиатура->мышь но и мышь->клавиатура
CC>Ты в студии неужто никогда не пользуешься клавиатурными шорткатами?
Шорткатов у меня — для дебага, кое что для решарпера, клипборд и вобщем то всё.
CC>Попробуй как нить день всё что ты делал через Ctrl-C/V, F5, F10, F11 и прочие студийные действия делать строго мышой на тулбарах. CC>После этого расскажи нам тут как это удобно.
Это все делается левой рукой. Правая у меня мыше. Переключаюсь только для _набора_ текста, который практически весь в
1. студии
2. аутлуке
3. бровзере
Здравствуйте, MxMsk, Вы писали:
MM> E>Что из этого упростится при переходе на net?
MM> Разработка и поддержка всего этого упроститься. Потому что библиотека .Net лучше продумана, а как язык, C# куда более развит, чем Delphi. К тому же .Net предлагает больше языков: F#, Nemerle, VB. Если проект перспективный, то почему бы не обеспечить его перспективной платформой.
Здравствуйте, Ikemefula, Вы писали:
I> UBA>> А зачем там по ФС шастать? Просто запускать при необходимости.
I> H>Я исходниками управляю исключительно из FAR'а + svn из его консоли. Ты же понимаешь, что не все лежит в одной папке.
I> Как говорится, сам себе злобный буратино
Работаю так, как мне удобно. Мышой махать весь день — рука отвалится.
I> Судя по всему, луноход это только следствие.
Ага, такой луноход, что сижу на виндах и пишу под винды
Здравствуйте, Ikemefula, Вы писали:
I> UBA>> Можно cmd забиндить, а для большинства случаем хватает командной строки тотала.
I> H>Да, в cmd очень удобно по файловой системе шастать.
I> Вот для консоли можно вынести фар на тулбар тотала, и будет очень круто.
Здравствуйте, enji, Вы писали:
E>Несложный гуй на нете проще несложного гуя на дельфи? Берут меня сильные сомнения. Уж что-что, а кнопкокидательство в дельфи проще некуда.
Возможно "кнопкокидательство" в Бейсике еще проше, однако, почему-то выбрали Делфи.
E>Развитость языка — а какие именно возможности языка были бы полезны в этом случае? Подозреваю, что примерно все равно на чем писать такие проги — на дельфи, шарпе или плюсах, трудоемкость будет примерно одинаковой.
Добраться из пункта А в пункт Б, что на ВАЗовской девятке, что на Фордовской Фиесте по времени будет одинаково. Но почему-то вторую машину считают явно лучше первой
E>Поддержка многих языков — а зачем она? Проект ведет один человек, он знает один определенный язык и пишет на нем. Для чего ему возможность писать разные модули на разных языках?
Ну, во-первых, этому человеку пойдет на пользу знакомство с .Net — там много вкусного, тот же Linq, то же программирование с GC. Во-вторых, поддержка многих языков дает больше возможностей для модернизации. Сейчас можно быстро перескочить на Шарп. Если действительно пойдет эра функциональщины, под рукой окажется F# с Nemerle.
E>К тому ж основной минус перспективной платформы — ее размер, никуда не девается. А плюсы как-то не особо видны...
Этот аргумент я уже сто раз оспорил. Если ваш программист или заказчик после десятка коммандировок уже несколько лет не в состоянии один раз выкачать несчастные 100-200 метров, то разговор вообще ни о чем.
Здравствуйте, CreatorCray, Вы писали:
I>>Не всегда, а только при определенной деятельности, которая нынче встречается достаточно редко. Я вынес кое какие команды в шорткаты, консоль запускать приходится крайне редко и то обычно под рдп, где нет никакого полезного софта. CC>Эт потому что не системщик ты ни разу.
Конечно. Чего тут удивляться ?
CC>Задачи у тебя совсем другие.
Конечно и не только уменя одного. Потому твое "Всегда." смотрится как минимум смешно.
Здравствуйте, NikeByNike, Вы писали:
NBN>Да оно в нативном-то варианте еле шевелится, интересно — как оно с дополнительным, не самым шустрым слоем работает.
Так тормоза в графике Линухов не в месте вызова графического АПИ, а за ним. Так что с ровно такой же скоростью и отработает.
Здравствуйте, CreatorCray, Вы писали:
I>>Захотел файл перетащить из тотала — пожалуйста. CC>Есть плуг, но реально не нужно.
Есть, да, говенный. Тебе возможно и не нужно.
I>>Захотел меню открыть — пожалуйста. CC>Какое меню тебе надо открыть?
Контекстное эксплорера. Шота челы никак не научатся открывать его толком, все время что нить да пропустят.
I>>Захотел на тулбар накидать шорткатов — пожалуйста. CC>там есть юзерменю.
Это говно, а не фича.
CC>Более того в фаре за мышь браться вообще не приходится. Он заточен на быструю работу с клавиатуры.
I>>Захотел фолдеры быстрого доступа — пожалуйста. CC>Есть на хоткеях
Хоткеи это не круто.
I>>Захотел перетащить чего то в тотал — пожалуйста. CC>тоже есть плуг, но реально никогда не пользовался.
А я вот достаточно часто пользуюсь.
I>>А с фаром надо для всего этого ставить плагины(например). CC>А какая разница плагином это сделано или в ядре?
В принципе не важно, главное что бы глюков не было.
I>>Ну и геморрой никуда не денется — в фаре мышь коряво сделана. CC>Поподробнее, в чём там корявость мыши?
Плуг, тулбары, меню
CC>По right-click контекстное меню на файле там открывается. CC>Drag-n-drop сделали плугом, чтоб только кому надо ставили. CC>Что тебе ещё надобно?
Все это как бэ есть. Когда то я даже считал это удобным. Щас это уже пройденый этап.
E__>Иногда нужно. Но реализация мультиделегата довольно проста, если подумать.
Она проста только в системе с GC. А иначе надо думать, кто чем владеет и когда, и не будет ли вызов события отправлен уже мертвому объекту. Весь aggregation в COM плясал именно вокруг этого, и там на счетчиках ссылок не так все тривиально получалось, чтобы избегать взаимного приращения счетчиков, т.е. ненужного лишнего удержания объектов в памяти.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>То, что делегаты организованы как списки не очень-то и хорошо. Во-первых, криво с точки зрения дизайна. Возьмем делегат вида:
ВВ>delegate int CallBack();
ВВ>Что он будет возвращать?
Дык, от того и есть просто делегаты и мультиделегаты. Просто кривизна в том, что мультиделегатам разрешили иметь любую сигнатуру, в т.ч. и возвращающую не void.
Здравствуйте, Ikemefula, Вы писали:
CC>>Задачи у тебя совсем другие. I>Конечно и не только уменя одного. Потому твое "Всегда." смотрится как минимум смешно.
Мы в КСВ или где? Или только тебе других подтралливать можно
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>>>Задачи у тебя совсем другие. I>>Конечно и не только уменя одного. Потому твое "Всегда." смотрится как минимум смешно. CC>Мы в КСВ или где? Или только тебе других подтралливать можно
Здравствуйте, squid, Вы писали:
BE>> Ну да. Делфя удобнее.
S>Дельфя никакая. Совсем. IDE ужасно во всех проявлениях, не говоря о куче багов.
Угу. По существу:
— эргономика очень хреновая;
— много багов (что-то падает, откуда-то лезут ошибки). Поставилась на Windows 7 64 bit только со второго раза;
— какого-либо аналога MSDN или нормальной структурированной информации нет. Весь help — это похоже на результат бредогенератора.
Здравствуйте, Ikemefula, Вы писали:
I>>>Захотел файл перетащить из тотала — пожалуйста. CC>>Есть плуг, но реально не нужно. I>Есть, да, говенный. Тебе возможно и не нужно.
Ну я его как то поставил интересу ради. Потыкал — работает. Потом через какое то время снёс за ненадобностью.
I>>>Захотел меню открыть — пожалуйста. CC>>Какое меню тебе надо открыть? I>Контекстное эксплорера. Шота челы никак не научатся открывать его толком, все время что нить да пропустят.
EMenu + биндинг его на правую кнопу мыши. Нормально работает.
I>>>Захотел на тулбар накидать шорткатов — пожалуйста. CC>>там есть юзерменю. I>Это говно, а не фича.
Для заточки под работу на клавиатуре — тулбаром вообще невозможно пользоваться.
I>>>Захотел фолдеры быстрого доступа — пожалуйста. CC>>Есть на хоткеях I>Хоткеи это не круто.
Тебе шашечки или ехать?
Впрочем да, тебе — шашечки.
I>>>Захотел перетащить чего то в тотал — пожалуйста. CC>>тоже есть плуг, но реально никогда не пользовался. I>А я вот достаточно часто пользуюсь.
I>>>Ну и геморрой никуда не денется — в фаре мышь коряво сделана. CC>>Поподробнее, в чём там корявость мыши? I>Плуг, тулбары, меню немерлетулбар — не нужен
Остальное работает без проблем.
CC>>По right-click контекстное меню на файле там открывается. CC>>Drag-n-drop сделали плугом, чтоб только кому надо ставили. CC>>Что тебе ещё надобно? I>Все это как бэ есть. Когда то я даже считал это удобным. Щас это уже пройденый этап.
Дык тогда что тебе ещё надобно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, vdimas, Вы писали:
V>Дык, от того и есть просто делегаты и мультиделегаты. Просто кривизна в том, что мультиделегатам разрешили иметь любую сигнатуру, в т.ч. и возвращающую не void.
Ну в дотнете нет "просто делегатов" и мультиделегатов. В действительности все делегаты, которые вы создаете, это мульделегаты, они наследуют MultiCastDelegate. Первоначально была идея автоматически определять тип делегата, т.е. если объявленный вами делегат возвращает void, то это всегда мультиделегат, в противном случае — обычный. Но от этой идеи тоже отказались, наверное, в виду неявности такого поведения.
Так что, пожалуй, кривизна в самой идее мультиделегатов.
Здравствуйте, wety, Вы писали:
w> BE>> Ну да. Делфя удобнее.
w> S>Дельфя никакая. Совсем. IDE ужасно во всех проявлениях, не говоря о куче багов.
w> Угу. По существу:
Здравствуйте, CreatorCray, Вы писали:
I>>>>Захотел меню открыть — пожалуйста. CC>>>Какое меню тебе надо открыть? I>>Контекстное эксплорера. Шота челы никак не научатся открывать его толком, все время что нить да пропустят. CC>EMenu + биндинг его на правую кнопу мыши. Нормально работает.
EMenu мне как раз и не понравился, но уже не помню чем именно.
I>>Это говно, а не фича. CC>Для заточки под работу на клавиатуре — тулбаром вообще невозможно пользоваться.
А для мыши тулбар самое то.
I>>Хоткеи это не круто. CC>Тебе шашечки или ехать? CC>Впрочем да, тебе — шашечки.
У меня нынче очень много софта которым нужно пользоваться. IDE только четыре штуки + RDP постоянно и виртуалки всякие. Для каждого запоминать хоткеи — умом можно тронуться. Хоткеи забываются сами собой. Исключение — универсальные хоткеи, вроде F5 — обновить.
Здравствуйте, hattab, Вы писали:
I>> Как говорится, сам себе злобный буратино
H>Работаю так, как мне удобно. Мышой махать весь день — рука отвалится.
Не нужно махать, можно пользовать иначе — кладешь её на хороший коврик и легким касанием она едет туда куда надо.
I>> Судя по всему, луноход это только следствие.
H>Ага, такой луноход, что сижу на виндах и пишу под винды
AB>> A> ой таки не надо. пользовался я этим говнософтом на предыдущей работе постоянно (кстати, не уверен за лицензионную чистоту). до сих пор вспоминать противно (особенно тотал).
AB>> Я правильно понимаю, что речь идет про это чудо с интерфейсом windows 3.11 за которое еще и денег просят?
AB>> http://wincmd.ru/images/my_general.gif
H>Вообще-то, это интерфейс не 3.11 Но таки да, это он. Самый популярный файловый менеджер под винды И чего люди в нем находят...
Да неужели? До Far-а ему далековато будет.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Ikemefula, Вы писали:
I>Людям, привыкшим к консоли и хоткеям никогда не понять, что такое мыша.
а чего тут понимать? мыша — это заменитель клавиатуры для тех, у кого только одна рука более-менее прямая, и то с двумя-тремя пальцами
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, enji, Вы писали:
E>>Несложный гуй на нете проще несложного гуя на дельфи? Берут меня сильные сомнения. Уж что-что, а кнопкокидательство в дельфи проще некуда. MM>Возможно "кнопкокидательство" в Бейсике еще проше, однако, почему-то выбрали Делфи.
В каком бейсике? В VBA например кнопкокидательство куда как сложнее, чем в дельфи
E>>Развитость языка — а какие именно возможности языка были бы полезны в этом случае? Подозреваю, что примерно все равно на чем писать такие проги — на дельфи, шарпе или плюсах, трудоемкость будет примерно одинаковой. MM>Добраться из пункта А в пункт Б, что на ВАЗовской девятке, что на Фордовской Фиесте по времени будет одинаково. Но почему-то вторую машину считают явно лучше первой
Ну а все таки? Какие особенности языка и библиотеки будут полезны? Ради чего менять? Ну например, если есть БД, то можно сравнить линк и генерируемые дельфевые датасеты. А тут что будет полезно?
E>>Поддержка многих языков — а зачем она? Проект ведет один человек, он знает один определенный язык и пишет на нем. Для чего ему возможность писать разные модули на разных языках? MM>Ну, во-первых, этому человеку пойдет на пользу знакомство с .Net — там много вкусного, тот же Linq, то же программирование с GC.
Ну дык линк рулит для баз данных; примеры для работы с коллекциями на линк, которые где-то тут я видел, сильно напомнили мне stl + boost, не в обиду будет сказано...
Сборка мусора удобна, если есть ручное управление памятью. Если его нет — в чем профит?
MM>Во-вторых, поддержка многих языков дает больше возможностей для модернизации. Сейчас можно быстро перескочить на Шарп. Если действительно пойдет эра функциональщины, под рукой окажется F# с Nemerle.
Понятно, что для самообразования можно попробовать нет, питон, хаскель, ... Но здесь спросили — почему жив дельфи — я описал применение, куда дельфи ложится прекрасно, а Нет — не ложится.
Если есть рабочий проект на дельфи, ради чего его переписывать на шарпе? Пара недель — переписывание, месяц — тестирование. Это имеет смысл в случае каких-то офигенных преимуществ, которые пока от меня ускользают
E>>К тому ж основной минус перспективной платформы — ее размер, никуда не девается. А плюсы как-то не особо видны... MM>Этот аргумент я уже сто раз оспорил. Если ваш программист или заказчик после десятка коммандировок уже несколько лет не в состоянии один раз выкачать несчастные 100-200 метров, то разговор вообще ни о чем.
Я ж уже писал, а вы никак не поймете — речь идет не о нашем программисте. И не об одном заказчике. Мы продаем железки массе народа. Вы предалагаете вместе с железкой давать болванку с фреймворком? А если у человека старый ноут? Я как-то пробовал программку для Нет1.1 на 98 винде + староватое на то время железо. Тормозило все не по дестки. Мне что-то кажется, что с каждым новым нетом требования все растут — как показывает практика, все новые программы\библиотеки\фреймворки имеют бОльшие аппетиты...
Если вы продали программу, которой нужен фреймворк — не вопрос, человек увидит это при установке, инет у большинства быстрый, скачает, поставит, профит. Максимум — матюкнется, почему ему надо качать 30 или 40 метров
А теперь представьте, что вы продали железку. Человек попробовал ее в офисе, все моргает и жужжит. ЛАдно. Поехал на объект. Подключил, ничего не работает. Открыл инструкцию (фантастика на самом деле, 90% сразу позвонят в техподдержку), узнал что надо настроить параметры. Полез на наш сайт, скачал программу. Запускает — нужно качать еще 30 метров фреймворка. У него жпрс инет полудохлый. Чего дальше?
ЗЫ я писал на дельфи, vba, c#, сейчас пишу на с++ и питоне. Да net — неплохая штука, но в каждую дырку не пихается...
Здравствуйте, Феоктистов Александр, Вы писали:
_>>ставлю на то что на ~250 посте флейм прекратится ФА>новое поколение а спор всё тот же ФА>1 сначала спорили о сях с паскалем ФА>2 потом о плюсах с паскалем ФА>3 потом о вижал студио с дельфи ФА>4 потом о вижал бейсике с дельфи ФА>5 потом опять о вижал студио с дельфи ФА>6 теперь шарп с дельфи ФА>собственно только во втором пункте паскаль претерпел революционные изменения, ФА>а потом только эволюция, зато спорщики дохнут и появляются новые
плюсы живы, си тоже никуда не делся
ЗЫ вы забыли еще спор си vs asm, кстати кое-где он все еще продолжается
Здравствуйте, enji, Вы писали:
E><skipped/>
Из пустого в порожнее. Больше не хочу
E>Я ж уже писал, а вы никак не поймете — речь идет не о нашем программисте. И не об одном заказчике. Мы продаем железки массе народа. Вы предалагаете вместе с железкой давать болванку с фреймворком? А если у человека старый ноут? Я как-то пробовал программку для Нет1.1 на 98 винде + староватое на то время железо. Тормозило все не по дестки. Мне что-то кажется, что с каждым новым нетом требования все растут — как показывает практика, все новые программы\библиотеки\фреймворки имеют бОльшие аппетиты...
С выделенного и надо было начинать! Если эта утилитка — какая-то мелочевка, не являющаяся для вас основным продуктом, то тогда понятно. Я же подумал, что вы софт разрабатываете направо и налево
E>А теперь представьте, что вы продали железку. Человек попробовал ее в офисе, все моргает и жужжит. ЛАдно. Поехал на объект. Подключил, ничего не работает. Открыл инструкцию (фантастика на самом деле, 90% сразу позвонят в техподдержку), узнал что надо настроить параметры. Полез на наш сайт, скачал программу. Запускает — нужно качать еще 30 метров фреймворка. У него жпрс инет полудохлый. Чего дальше?
Ну, если есть диск с драйверами, то можно же и дистрибутив FW туда положить.
E>ЗЫ я писал на дельфи, vba, c#, сейчас пишу на с++ и питоне. Да net — неплохая штука, но в каждую дырку не пихается...
Вопросов нет. В таком... эээ... направлении бизнеса, .Net и впрямь не всегда нужно и не всегда хорошо
Здравствуйте, Antikrot, Вы писали:
I>>Людям, привыкшим к консоли и хоткеям никогда не понять, что такое мыша. A>а чего тут понимать? мыша — это заменитель клавиатуры для тех, у кого только одна рука более-менее прямая, и то с двумя-тремя пальцами
Мышом можно сделать всё. Клавиатурой — сильно вряд ли.
Здравствуйте, Ikemefula, Вы писали:
I>>>Людям, привыкшим к консоли и хоткеям никогда не понять, что такое мыша. A>>а чего тут понимать? мыша — это заменитель клавиатуры для тех, у кого только одна рука более-менее прямая, и то с двумя-тремя пальцами I>Мышом можно сделать всё. Клавиатурой — сильно вряд ли.
а какие принципиальные ограничения у клавиатуры?
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Antikrot, Вы писали:
I>>>Людям, привыкшим к консоли и хоткеям никогда не понять, что такое мыша. A>>а чего тут понимать? мыша — это заменитель клавиатуры для тех, у кого только одна рука более-менее прямая, и то с двумя-тремя пальцами
I>Мышом можно сделать всё.
А особенно — когда результат сделанного абсолютно не интересен
Здравствуйте, Ikemefula, Вы писали: I>Результат выполнения команды нужен крайне редко. У меня вот есть кучка шорткатов, я даже не смотрю, что там, все само работает.
Здравствуйте, Ikemefula, Вы писали:
I> I>> Как говорится, сам себе злобный буратино
I> H>Работаю так, как мне удобно. Мышой махать весь день — рука отвалится.
I> Не нужно махать, можно пользовать иначе — кладешь её на хороший коврик и легким касанием она едет туда куда надо.
Это была гипербола.
I> Луноход это состояние души.
Тебе, как, практика хоть какие-то дивиденды приносит или это у тебя тоже состояние души
Здравствуйте, Eugeny__, Вы писали:
E> H>Вообще-то, это интерфейс не 3.11 Но таки да, это он. Самый популярный файловый менеджер под винды И чего люди в нем находят...
E> Да неужели? До Far-а ему далековато будет.
Ужели. Как-то читал анкетирование читателей журнала МирПК, у тотала перевес значительный был. Сомневаюсь, что с тех пор что-то изменилось т.к. революций в этой области небыло. По своему опыту могу судить — если на компе юзера есть файловый менеджер, кроме Explorer (3 раза тьфу), то это обязательно тотал. Ни у кого еще фара не встречал, кроме тех, кто пришел с нортона/волкова/дос.навигатора.
Здравствуйте, Ikemefula, Вы писали:
I>>>Мышом можно сделать всё. Клавиатурой — сильно вряд ли. A>>а какие принципиальные ограничения у клавиатуры? I>Отключи мышь, узнаешь.
у меня к тебе встречное предложение — отключи клавиатуру, потом напиши сюда сотню-другую сообщений
I>УИ нынче заточен под мышь.
расскажи это своему ипаду
и всё-таки: что такого мышиного *в принципе, технически* невозможно сделать клавиатурой? "курсор возить" не катит — я его с клавиатуры ещё на спектруме возил
Здравствуйте, enji, Вы писали: E>плюсы живы, си тоже никуда не делся
да, а вот спорщики или пропали или повзрослели
E>ЗЫ вы забыли еще спор си vs asm, кстати кое-где он все еще продолжается
да уж, а кстати что нового в асемблерах нынче? какой самый популярный, nasm ?
Здравствуйте, Феоктистов Александр, Вы писали:
ФА>Здравствуйте, enji, Вы писали: E>>плюсы живы, си тоже никуда не делся ФА>да, а вот спорщики или пропали или повзрослели
хотите поспорить?
E>>ЗЫ вы забыли еще спор си vs asm, кстати кое-где он все еще продолжается ФА>да уж, а кстати что нового в асемблерах нынче?
да как обычно, новые инструкции лезут сначал через асм, а вот когда они в мегапродвинутом дотнете появятся (ну чтоб в исходниках видеокодеков наконец не осталось асма) — это хз.
ФА>какой самый популярный, nasm ?
неа, c++ inline asm
Здравствуйте, Antikrot, Вы писали:
I>>Отключи мышь, узнаешь. A>у меня к тебе встречное предложение — отключи клавиатуру, потом напиши сюда сотню-другую сообщений
Как то разбил руку, то пришлось работать мышом в экранке. На активности в РСДН это не сказалось. Только сообщения разумеется были короче обычного.
I>>УИ нынче заточен под мышь. A>расскажи это своему ипаду
Попробуй внятно сформулировать что же ты хотел сказать.
A>и всё-таки: что такого мышиного *в принципе, технически* невозможно сделать клавиатурой? "курсор возить" не катит — я его с клавиатуры ещё на спектруме возил
Ну простой пример — у тебя открыто штук тридцать закладок в бровзере. Как быстро, в одно нажатие клавиши переключиться в ту, что нужно именно сейчас ?
Другой пример — ты зашел под RDP на комп общего пользования, где не будет твоих любимых настроек и тд и тд и тд. Тебе нужно немного — в одно-два нажатия добраться до нужной софтины.
Еще пример — ты работаешь с софтиной у которой Tab Order выставила какая нибудь обезьяна — очень частое явление. Кликая табом тем же, до нужного контрола можно и не добраться. Вот например Tab Order не является помехой мыши.
У мыши есть небольшой недостаток — она ездит только в пределах десктопа. Есть один юзкейс чисто для клавиатуры — когда какой нибудь затейник открывает окно программы так, что видна только нижняя половина окна. Вот здесь нужна именно мышь — Alt-Space + down + Enter + down и дальше можно мышом. Сдаётся эта проблема много реже, нежели кривой таб-ордер, с которым сталкивается почти каждый юзер.
Здравствуйте, hattab, Вы писали:
I>> H>Работаю так, как мне удобно. Мышой махать весь день — рука отвалится.
I>> Не нужно махать, можно пользовать иначе — кладешь её на хороший коврик и легким касанием она едет туда куда надо.
H>Это была гипербола.
Точнее это был тупо порожняк.
I>> Луноход это состояние души.
H>Тебе, как, практика хоть какие-то дивиденды приносит или это у тебя тоже состояние души
Здравствуйте, hattab, Вы писали:
H>Ужели. Как-то читал анкетирование читателей журнала МирПК, у тотала перевес значительный был. Сомневаюсь, что с тех пор что-то изменилось т.к. революций в этой области небыло. По своему опыту могу судить — если на компе юзера есть файловый менеджер, кроме Explorer (3 раза тьфу), то это обязательно тотал. Ни у кого еще фара не встречал, кроме тех, кто пришел с нортона/волкова/дос.навигатора.
Еще был file commander. Я несколько лет пользовался оным под OS/2.
Здравствуйте, Ikemefula, Вы писали:
I>>>Отключи мышь, узнаешь. A>>у меня к тебе встречное предложение — отключи клавиатуру, потом напиши сюда сотню-другую сообщений I>Как то разбил руку, то пришлось работать мышом в экранке. На активности в РСДН это не сказалось. Только сообщения разумеется были короче обычного.
twitter-style НЕ НУЖЕН
I>>>УИ нынче заточен под мышь. A>>расскажи это своему ипаду I>Попробуй внятно сформулировать что же ты хотел сказать.
чего не понятного? интерфейс ипада разве заточен под мышь? или он несовременный просто?
A>>и всё-таки: что такого мышиного *в принципе, технически* невозможно сделать клавиатурой? "курсор возить" не катит — я его с клавиатуры ещё на спектруме возил
I>Ну простой пример — у тебя открыто штук тридцать закладок в бровзере. Как быстро, в одно нажатие клавиши переключиться в ту, что нужно именно сейчас ?
тридцать у меня не открыто, в пределах девяти у меня ctrl-q-<number>. а вот сможешь ли ты переключаться по закладкам не двигая мышь?
I>Другой пример — ты зашел под RDP на комп общего пользования, где не будет твоих любимых настроек и тд и тд и тд. Тебе нужно немного — в одно-два нажатия добраться до нужной софтины.
эти примеры сводятся к передвиганию курсора. передвигание курсора с клавиатуры не является технически невыполнимой задачей.
на "одно-два нажатия" я вполне могу ответить "лучше лишнее нажатие, чем тянуть мышь через два монитора" (а потом обратно, и так километрами)
I>Еще пример — ты работаешь с софтиной у которой Tab Order выставила какая нибудь обезьяна — очень частое явление. Кликая табом тем же, до нужного контрола можно и не добраться. Вот например Tab Order не является помехой мыши.
та же обезьяна вполне способна посадить какие-либо действия исключительно на клавиатурные шоткаты. рисовать их с экранной клавиатуры будет не проще, чем двигать курсор стрелками
Здравствуйте, Ikemefula, Вы писали:
I>>>Отключи мышь, узнаешь. A>>у меня к тебе встречное предложение — отключи клавиатуру, потом напиши сюда сотню-другую сообщений I>Как то разбил руку, то пришлось работать мышом в экранке. На активности в РСДН это не сказалось. Только сообщения разумеется были короче обычного.
Слушай! Разбей ещё раз, а?
I>У мыши есть небольшой недостаток — она ездит только в пределах десктопа. Есть один юзкейс чисто для клавиатуры — когда какой нибудь затейник открывает окно программы так, что видна только нижняя половина окна. Вот здесь нужна именно мышь — Alt-Space + down + Enter
а потом жмём курсорные стрелки и окошко едед куда надо. Мыша опять таки не нужна.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, hattab, Вы писали:
H>Ужели. Как-то читал анкетирование читателей журнала МирПК, у тотала перевес значительный был.
Какая у него за аудитория?
H>Ни у кого еще фара не встречал, кроме тех, кто пришел с нортона/волкова/дос.навигатора.
Т.е. те кто сел на комп уже после 95й винды — юзают тотал.
Те кто постарше — FAR
Так что ли?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Феоктистов Александр, Вы писали:
E>>ЗЫ вы забыли еще спор си vs asm, кстати кое-где он все еще продолжается ФА>да уж, а кстати что нового в асемблерах нынче? какой самый популярный, nasm ?
Я имел ввиду всякие однокристалки, там с vs asm вполне себе актуальная тема. Да и с vs c++ тоже
Здравствуйте, пыщьх, Вы писали:
S>>Как-то скачал прогу бесплатную майкрософтовскую для склейки панорам. Весила метра 4 вроде. Начал ставить — она захотела 4-й .Net Framework — это 200 метров качать и потом на 600 ставить. Как результат, на прогу забил. Другие версии фреймворка вроде стоят, но прога хотела именно 4-ю. П>3.5 был много метров. В 4.0 они размер пофиксили.
Чета мне кажется, что пофиксили размер инсталятора — начали паковать лучше — а при установке оно распухает все больше и больше
Здравствуйте, Ikemefula, Вы писали:
I> H>Это была гипербола.
I> Точнее это был тупо порожняк.
Нет, именно гипербола.
I> I>> Луноход это состояние души.
I> H>Тебе, как, практика хоть какие-то дивиденды приносит или это у тебя тоже состояние души
I> Приносит, не расстраивайся.
Здравствуйте, CreatorCray, Вы писали:
CC> H>Ужели. Как-то читал анкетирование читателей журнала МирПК, у тотала перевес значительный был.
CC> Какая у него за аудитория?
Количественно — около 85тыс, качественно — (продвинутые и не очень) пользователи ПК.
CC> H>Ни у кого еще фара не встречал, кроме тех, кто пришел с нортона/волкова/дос.навигатора.
CC> Т.е. те кто сел на комп уже после 95й винды — юзают тотал. CC> Те кто постарше — FAR CC> Так что ли?
По моему окружению почти всегда так Хотя есть и такие, кто после нортона сели на тотал.
Здравствуйте, snaphold, Вы писали:
S>5 лет назад думал, что дни его сочтены. Ан нет.
В каком-то смысле, Дельфи как Цой — и вроде бы мёртв, но все говорят, что жив и слушают его песни.
Дельфи — единственный вразумительный инструмент под Винду для создания нативных Win32 приложений. В плане "морд к БД" вообще остался непобедимым даже навороченным ADO.NET;
Плюс сюда тонны уже существующих приложений, плюс простота инструмента и языка. Delphi как язык прекрасно гармонирует со своей же VCL. Delphi действительно _визуальный_ инструмент — в отличии от позорной VS2010, где куча действий всё ещё делается клавой, кодом и через анус. Я больше скажу — я ради Дельфи на другую работу перешёл! (с Жабы) Так что если других причин, кроме снобского "Фи, паскаль!" у вас нет, смело беритесь за Delphi. Ну, или за D!
Здравствуйте, vdimas, Вы писали:
E__>>Иногда нужно. Но реализация мультиделегата довольно проста, если подумать.
V>Она проста только в системе с GC. А иначе надо думать, кто чем владеет и когда, и не будет ли вызов события отправлен уже мертвому объекту. Весь aggregation в COM плясал именно вокруг этого, и там на счетчиках ссылок не так все тривиально получалось, чтобы избегать взаимного приращения счетчиков, т.е. ненужного лишнего удержания объектов в памяти.
Хм... Это я да, немного не подумал. Я просто сразу прикинул именно для манагед системы с GC.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, MxMsk, Вы писали:
E>>Я ж уже писал, а вы никак не поймете — речь идет не о нашем программисте. И не об одном заказчике. Мы продаем железки массе народа. Вы предалагаете вместе с железкой давать болванку с фреймворком? А если у человека старый ноут? Я как-то пробовал программку для Нет1.1 на 98 винде + староватое на то время железо. Тормозило все не по дестки. Мне что-то кажется, что с каждым новым нетом требования все растут — как показывает практика, все новые программы\библиотеки\фреймворки имеют бОльшие аппетиты... MM>С выделенного и надо было начинать! Если эта утилитка — какая-то мелочевка, не являющаяся для вас основным продуктом, то тогда понятно. Я же подумал, что вы софт разрабатываете направо и налево
Да он вроде говорил...
Ксати, такие мелкие утилитки для железяк хороши еще и тем, что они отлично пашут как под виндой, так и под линухом(в Вайне), только порты нужно в настройках Вайна прописать(они у меня всегда прописаны). Я так новые железяки тестирую прямо из-под линуха виндовым тестовым софтом, иначе пришлось бы перегружаться.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, vdimas, Вы писали:
V>>Дык, от того и есть просто делегаты и мультиделегаты. Просто кривизна в том, что мультиделегатам разрешили иметь любую сигнатуру, в т.ч. и возвращающую не void.
ВВ>Ну в дотнете нет "просто делегатов" и мультиделегатов. В действительности все делегаты, которые вы создаете, это мульделегаты, они наследуют MultiCastDelegate.
Ну это уже особенности конкретной реализации компилятора C# от MS, дотнет как раз тут не при чем. Например, я же для своей реализации Схемы создавал произвольные делегаты, которые не только наследуют тот самый "просто делегат", но и реализуют необходимые мне интерфейсы, что очень удобно для интероперабельности неких своих light weight функциональных объектов с "тяжелыми" встроенными делегатами.
ВВ>Первоначально была идея автоматически определять тип делегата, т.е. если объявленный вами делегат возвращает void, то это всегда мультиделегат, в противном случае — обычный.
Откуда дровишки?
Там не глядя ни на какую идею понятно было, что на уровне платформы мультиделегат от многих значений надо было запретить.
ВВ>Так что, пожалуй, кривизна в самой идее мультиделегатов.
Ну так мультиделегаты не являются частью внутренней реализации, в отличие от просто делегата. Там вся логика со списком подписчиков реализована уже как библиотечная. А вся кривизна заключается в том, что мультиделегат отнаследовали от делегата. Я до сих пор не понимаю — нафига? Какая-то индусская архитектура: кеды наследовать от холодильника...
Если бы не эта кривизна, в дотнете был бы уже аналог легковесного функционального объекта еще с первых версий. В отличие от того тормознутого бреда, что имеем сейчас на делегатах.
Здравствуйте, пыщьх, Вы писали:
E>>С#, java — нужен фреймворк, далеко не у всех он есть; кто-то сидит на объекте с ноутом и gprs интернетом и выкачать его не сможет П>Серьезно? 2010 год на дворе, .Net ставится с кучей софта, идет через Windows Update и поставляется с новыми операционками. И у кучи народа его до сих пор нет? КАК???
Много народа, особенно в гос-конторах, сидят еще на Win2000 (по крайней мере у нас). Со всеми вытекающими.
Здравствуйте, vdimas, Вы писали:
ВВ>>Первоначально была идея автоматически определять тип делегата, т.е. если объявленный вами делегат возвращает void, то это всегда мультиделегат, в противном случае — обычный. V>Откуда дровишки? V>Там не глядя ни на какую идею понятно было, что на уровне платформы мультиделегат от многих значений надо было запретить.
Я это помню лично, остается мне верить. В свое время даже в документации было ошибочно написано, что Multicast создается только если делегат возвращает void.
Здравствуйте, Antikrot, Вы писали:
A>хотите поспорить?
хочу, но времени нету,хотя маленький холивар так бодрит A>да как обычно, новые инструкции лезут сначал через асм, а вот когда они в мегапродвинутом дотнете появятся (ну чтоб в исходниках видеокодеков наконец не осталось асма) — это хз.
чё-то я сомневаюсь, чтоб кодеки писали на дотнете
ФА>>какой самый популярный, nasm ? A>неа, c++ inline asm
в однокристалках, си должен побеждать асм, на асме большие проги это гемор, а с++ и подавно, так как они не достаточно большие для монстра с++
Здравствуйте, CreatorCray, Вы писали:
A>>>у меня к тебе встречное предложение — отключи клавиатуру, потом напиши сюда сотню-другую сообщений I>>Как то разбил руку, то пришлось работать мышом в экранке. На активности в РСДН это не сказалось. Только сообщения разумеется были короче обычного. CC>Слушай! Разбей ещё раз, а?
Работал, кстати говоря, по корпусу Больше нет подходящих корпусов в округе
I>>У мыши есть небольшой недостаток — она ездит только в пределах десктопа. Есть один юзкейс чисто для клавиатуры - когда какой нибудь затейник открывает окно программы так, что видна только нижняя половина окна. Вот здесь нужна именно мышь — Alt-Space + down + Enter CC>а потом жмём курсорные стрелки и окошко едед куда надо. Мыша опять таки не нужна.
Слово мышь по привычке вписалось "юзкейс чисто для клавиатуры". Ты мог бы догадаться, раз "юзкейс чисто для клавиатуры" и указаны хоткеи, то мышь необязательна.
Здравствуйте, Antikrot, Вы писали:
A>>>у меня к тебе встречное предложение — отключи клавиатуру, потом напиши сюда сотню-другую сообщений I>>Как то разбил руку, то пришлось работать мышом в экранке. На активности в РСДН это не сказалось. Только сообщения разумеется были короче обычного. A>twitter-style НЕ НУЖЕН
А ты хотел, что бы я разбитой рукой вагоны текста гнал ?
I>>Попробуй внятно сформулировать что же ты хотел сказать. A>чего не понятного? интерфейс ипада разве заточен под мышь? или он несовременный просто?
Я не говорил про иПад в данном контексте.
I>>Ну простой пример — у тебя открыто штук тридцать закладок в бровзере. Как быстро, в одно нажатие клавиши переключиться в ту, что нужно именно сейчас ? A>тридцать у меня не открыто, в пределах девяти у меня ctrl-q-<number>.
И что же, прыгаешь по линкам и считаешь количество открытых окон ?
>а вот сможешь ли ты переключаться по закладкам не двигая мышь?
Для начала ответь на _мой_ ответ.
I>>Другой пример — ты зашел под RDP на комп общего пользования, где не будет твоих любимых настроек и тд и тд и тд. Тебе нужно немного — в одно-два нажатия добраться до нужной софтины. A>эти примеры сводятся к передвиганию курсора. передвигание курсора с клавиатуры не является технически невыполнимой задачей. A>на "одно-два нажатия" я вполне могу ответить "лучше лишнее нажатие, чем тянуть мышь через два монитора" (а потом обратно, и так километрами)
"Тянуть мышь через два монитора"
Лишних нажатий тебе может понадобиться несколько десятков, а не одно.
I>>Еще пример — ты работаешь с софтиной у которой Tab Order выставила какая нибудь обезьяна — очень частое явление. Кликая табом тем же, до нужного контрола можно и не добраться. Вот например Tab Order не является помехой мыши. A>та же обезьяна вполне способна посадить какие-либо действия исключительно на клавиатурные шоткаты. рисовать их с экранной клавиатуры будет не проще, чем двигать курсор стрелками
Теоретически это возможно, но на практике почти не встречается. А вот ошибки таб-ордера сдается многие фирмы за ошибки и не считают.
Обычно из косяков, как правило, клавиатурные шорткаты отсутствуют или есть, но неудобные и сменить нельзя.
Например тот же Ms Onenote. Чем люди думали — не ясно.
Здравствуйте, matumba, Вы писали:
M>Плюс сюда тонны уже существующих приложений, плюс простота инструмента и языка. Delphi как язык прекрасно гармонирует со своей же VCL. Delphi действительно _визуальный_ инструмент — в отличии от позорной VS2010, где куча действий всё ещё делается клавой, кодом и через анус. Я больше скажу — я ради Дельфи на другую работу перешёл! (с Жабы) Так что если других причин, кроме снобского "Фи, паскаль!" у вас нет, смело беритесь за Delphi. Ну, или за D!
А я поменял работу ради VS2010, Asp.Net, EF, Linq, WCF, Silverlight и тд.
H>>Ни у кого еще фара не встречал, кроме тех, кто пришел с нортона/волкова/дос.навигатора. CC>Т.е. те кто сел на комп уже после 95й винды — юзают тотал. CC>Те кто постарше — FAR CC>Так что ли?
Нет. Те, у которых первым тулом были консольные проги, на них и остались ибо ретрограды. Это могло бы ть как до, так и после виндовс95(и 98 и 2000). Те, кто начинал без консольных прог, частично пользуются тоталом, частично — эксплорером.
Эксплорер, кстати, с плагинами, просто адская вещь при хорошей настройке.
Здравствуйте, Ikemefula, Вы писали:
M>>Я больше скажу — я ради Дельфи на другую работу перешёл! I>А я поменял работу ради VS2010, Asp.Net, EF, Linq, WCF, Silverlight и тд.
парни, где вы такую работу находите? я сколько не меняю — всё линукс да линукс
Здравствуйте, пыщьх, Вы писали:
E>>С#, java — нужен фреймворк, далеко не у всех он есть; кто-то сидит на объекте с ноутом и gprs интернетом и выкачать его не сможет П>Серьезно? 2010 год на дворе, .Net ставится с кучей софта, идет через Windows Update и поставляется с новыми операционками. И у кучи народа его до сих пор нет? КАК???
Есть нюансы. Например в большой корпорации спокойно может использоваться Win2000 потому что на апгрейд нужны большие деньги.
Или компы пользуются древние, которые XP уже не тянут.
Или же железо-софт работает только под Win2000.
Кроме того, апдейтами пользуются далеко не все и далеко не все имеют нужную версию дотнета.
Здравствуйте, enji, Вы писали:
E>Развитость языка — а какие именно возможности языка были бы полезны в этом случае?
К примеру, для работы с СОМ-портом можно использовать Reactive Framework. В Дельфи аналог есть? Для асинхронности все тот же Rx или PLinq. В Дельфи аналог последнего есть?
I>>Захотел фолдеры быстрого доступа — пожалуйста. CC>Есть на хоткеях
Есть еще Named folders. Просто мегаполезняшка. В сад менюшки, в которых нужно высматривать искомый элемент, и даже хоткеи, которые нужно не интуитивно запоминать. Все проще: "cd:wp" и ты уже в рабочем проекте, "cd:md" — и перепрыгнул в "Мои документы". Плюс, если повесить на нажатие ":" (в пустой строке ввода) вставку "cd:" все становится вообще шоколадно.
CC>По right-click контекстное меню на файле там открывается.
И с клавиатуры тоже вполне хорошо открывается графическое меню оболочки.
Другая мощная штука — AltHistory, которая помогает искать по истории открытых файлов и посещенных каталогов, набирая часть имени (скрин)
Есть ли для Тотала такие плюшки? А про Тотал.. Раздражает в нем, что плодятся окошки, когда открываешь файлы на просмотр. Почему бы их не сделать в виде табов? Я уж не говорю о том, что окно создается хрен знает где — винда ж их "любит" выкладывать каскадом.
Не хватает внутреннего редактора. В FAR встроенный редактор та еще няшечка — сочетает простоту и мощь/расширяемость. Да, есть всякие Notepad++ и порты юниксовых, но всё-равно ощущения не те.
Хотя для любителей потыкать по экрану это сомнительные доводы, ага.
Хорошо хоть прилепили ограничение на ширину колонки в Brief-режиме. Но тоже лучше б ограничить количество колонок, а не их ширину.
Было еще что-то, но помнилось пока пытался кушать кактус, а щас уже подзабыл.
ВВ> Делается простенький хелпер для подписки, который сохраняет старый делегат и вызывает его тоже. Этот хелпер при желании можно "встроить" в библиотеку, хоть в сам класс Delegate.
как минимум вы упускаете критичный сценарий использования событий:
отписаться от события в произвольный момент.
это очень важный и очень неудобный для реализации сценарий.
вариант в дельфи (с построением руками цепочек) и ваш вариант — выкидывает именно этот сценарий.
зы
мне вообще не понятно, как можно использовать события без возможности отписаться.
Здравствуйте, DarkGray, Вы писали:
DG>как минимум вы упускаете критичный сценарий использования событий: DG>отписаться от события в произвольный момент. DG>это очень важный и очень неудобный для реализации сценарий. DG>вариант в дельфи (с построением руками цепочек) и ваш вариант — выкидывает именно этот сценарий. DG>зы DG>мне вообще не понятно, как можно использовать события без возможности отписаться.
А что мешает отписаться от события?
События вообще прекрасно реализуются без делегатов вообще. С возможностью множественной подписки, отписки и проч. И работать будут по кр. мере не хуже, если не лучше. Остается только добавить в язык немного сахара для работы с событиями — который в принципе и так есть — и все. Никаких мультиделегатов.
Здравствуйте, matumba, Вы писали:
M>Здравствуйте, snaphold, Вы писали:
S>>5 лет назад думал, что дни его сочтены. Ан нет.
M>В каком-то смысле, Дельфи как Цой — и вроде бы мёртв, но все говорят, что жив и слушают его песни.
M>Дельфи — единственный вразумительный инструмент под Винду для создания нативных Win32 приложений. В плане "морд к БД" вообще остался непобедимым даже навороченным ADO.NET;
Ну-ну. Берешь базу типа AdventrueWorksLT (около 20 таблиц) и делаешь для нее crud морду, скока займет?
А на Dynamic Data — 5 минут независимо от количества таблиц. А потом еще можно красивые называния подписать.
Или например LightSwitch, там и базу, и интерфейс, и разграничение доступа, и метаданные — все в дизайнере делается. Делфи нервно курит в сторонке.
M>Плюс сюда тонны уже существующих приложений, плюс простота инструмента и языка.
Простоты языка в делфи нету. там очень нетривиальная работа с COM и просто интерфейсами, много проблем возникает со строками, особенно когда надо их передавать и получать из внешних модулей.
M>Delphi как язык прекрасно гармонирует со своей же VCL.
У делфи вообще ничего кроме VCL нету.
M>Delphi действительно _визуальный_ инструмент — в отличии от позорной VS2010, где куча действий всё ещё делается клавой, кодом и через анус.
В этом сила студии, что код таки можно писать. Вот когда отбирают возможность править писать текст при программировании наступает жопа.
M>>Плюс сюда тонны уже существующих приложений, плюс простота инструмента и языка. G>Простоты языка в делфи нету. там очень нетривиальная работа с COM и просто интерфейсами, много проблем возникает со строками, особенно когда надо их передавать и получать из внешних модулей.
Достаточно просто для большинства потребностей. Что касается строк и прочего (память не только для строк выделяется), то это проблема менеджера памяти.Нельзя делать зоопарк из менеджеров памяти.
Осознавая это нужно правильно работать с памятью выделенной другим менеджером, либо приводить к одному менеджеру.
Давно уже за Delphi не слежу, но при правильном развитии вполне мог бы получиться нативный аналог шарпа. Я же сторонник аля сингулярити (Оберона) .
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, DarkGray, Вы писали:
DG>ничего не мешает, вот только предложенный вами вариант это не поддерживает. DG>покажите код(или сценарий) варианта с возможностью отписки от события, но без мультикаст-делегатов.
Эээ... подписка реализуется добавлением экземпляров специального класса Subscriber в коллекцию? Которые в свою очередь легко и просто из этой коллекции удаляются? Компилятор же в свою очередь генерит реализации Subscriber-a по аналогии с тем, как он это делает сейчас для лямбд. Равно как и коллекции у объекта, который публикует события, кода для подписки и отписки и пр. И таки да, в неком вырожденном случае, роль класса Subscriber может выполнять и делегат.
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
M>>>Плюс сюда тонны уже существующих приложений, плюс простота инструмента и языка. G>>Простоты языка в делфи нету. там очень нетривиальная работа с COM и просто интерфейсами, много проблем возникает со строками, особенно когда надо их передавать и получать из внешних модулей. S> Достаточно просто для большинства потребностей.
Для потребностей кликанья мышкой — да, а для написания программ — уже непросто получается.
S>Что касается строк и прочего (память не только для строк выделяется), то это проблема менеджера памяти.Нельзя делать зоопарк из менеджеров памяти. S>Осознавая это нужно правильно работать с памятью выделенной другим менеджером, либо приводить к одному менеджеру.
Щас заплачу... почему в .NET такие проблемы отсуствуют?
Там и COM и и передача между модулями нормально работает.
Наверное это таки недостаток делфи.
Здравствуйте, DarkGray, Вы писали:
ВВ>>Эээ... подписка реализуется добавлением экземпляров специального класса Subscriber в коллекцию? DG>и чем это тогда отличается от мультиделегатов?
У мультиделегатов проблема в том, что они используются не только для событий. Как раз к событиям-то претензий нет. Есть претензии к тому, что, к примеру, мультиделегат — единственный способ передать ту же лямбду в качестве аргумента. Т.е. их нам подсунули вместо нормальных функциональных типов.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, gandjustas, Вы писали:
M>>>>Плюс сюда тонны уже существующих приложений, плюс простота инструмента и языка. G>>>Простоты языка в делфи нету. там очень нетривиальная работа с COM и просто интерфейсами, много проблем возникает со строками, особенно когда надо их передавать и получать из внешних модулей. S>> Достаточно просто для большинства потребностей. G>Для потребностей кликанья мышкой — да, а для написания программ — уже непросто получается.
Ну это уже зависит от рук её использующих. S>>Что касается строк и прочего (память не только для строк выделяется), то это проблема менеджера памяти.Нельзя делать зоопарк из менеджеров памяти. S>>Осознавая это нужно правильно работать с памятью выделенной другим менеджером, либо приводить к одному менеджеру. G>Щас заплачу... почему в .NET такие проблемы отсуствуют? G>Там и COM и и передача между модулями нормально работает. G>Наверное это таки недостаток делфи.
Оооо работа с СОМ в Net это те еще проблемы (из за отсутствия автоматического подсчета ссылок хотя как там в 4 ке не знаю). Натив все же лучше уживается с нативом.
А Проблемы и у GC существуют (например при частой перестановке ссылок объектов старших поколений, работа с матрицами итд.) Нет серебрянной пули. Поэтому для каждой задачи свой инструмент.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, Serginio1, Вы писали:
S>>>Здравствуйте, gandjustas, Вы писали:
M>>>>>Плюс сюда тонны уже существующих приложений, плюс простота инструмента и языка. G>>>>Простоты языка в делфи нету. там очень нетривиальная работа с COM и просто интерфейсами, много проблем возникает со строками, особенно когда надо их передавать и получать из внешних модулей. S>>> Достаточно просто для большинства потребностей. G>>Для потребностей кликанья мышкой — да, а для написания программ — уже непросто получается. S> Ну это уже зависит от рук её использующих.
S>>>Что касается строк и прочего (память не только для строк выделяется), то это проблема менеджера памяти.Нельзя делать зоопарк из менеджеров памяти. S>>>Осознавая это нужно правильно работать с памятью выделенной другим менеджером, либо приводить к одному менеджеру. G>>Щас заплачу... почему в .NET такие проблемы отсуствуют? G>>Там и COM и и передача между модулями нормально работает. G>>Наверное это таки недостаток делфи. S> Оооо работа с СОМ в Net это те еще проблемы (из за отсутствия автоматического подсчета ссылок хотя как там в 4 ке не знаю). Натив все же лучше уживается с нативом.
Отсутствия где? Ты ничего не путаешь? Как раз в .NET можно вообще не париться с подсчетом ссылок в COM, ни в компонентах, ни в клиентах.
S>А Проблемы и у GC существуют (например при частой перестановке ссылок объектов старших поколений, работа с матрицами итд.)
Какие именно? Он что-то не освобождает? Максимум что существует это некоторые проблемы с перфомансом, но в типичных для delphi приложениях такие проблемы найти просто невозможно.
S>Нет серебрянной пули. Поэтому для каждой задачи свой инструмент.
Именно, нет такой задачи где бы делфи выигрывал у .NET. А там где .NET не лезет, там уже проще C использовать.
Здравствуйте, gandjustas, Вы писали:
G>Отсутствия где? Ты ничего не путаешь? Как раз в .NET можно вообще не париться с подсчетом ссылок в COM, ни в компонентах, ни в клиентах.
Э-э-э. А кто в .NET будет AddRef/Release вызывать?? В дельфи это компилятор делает.
Здравствуйте, Jack128, Вы писали:
J>Здравствуйте, gandjustas, Вы писали:
G>>Отсутствия где? Ты ничего не путаешь? Как раз в .NET можно вообще не париться с подсчетом ссылок в COM, ни в компонентах, ни в клиентах.
J>Э-э-э. А кто в .NET будет AddRef/Release вызывать?? В дельфи это компилятор делает.
Здравствуйте, gandjustas, Вы писали:
S>> Оооо работа с СОМ в Net это те еще проблемы (из за отсутствия автоматического подсчета ссылок хотя как там в 4 ке не знаю). Натив все же лучше уживается с нативом. G>Отсутствия где? Ты ничего не путаешь? Как раз в .NET можно вообще не париться с подсчетом ссылок в COM, ни в компонентах, ни в клиентах.
Поверь не путаю. Когда нужно освободить СОМ ресурсы либо вручную релизить объекты Или ждать когда вызовется GC для объектов с финализаторами. S>>А Проблемы и у GC существуют (например при частой перестановке ссылок объектов старших поколений, работа с матрицами итд.) G>Какие именно? Он что-то не освобождает? Максимум что существует это некоторые проблемы с перфомансом, но в типичных для delphi приложениях такие проблемы найти просто невозможно.
Освобождает но не по месту. Для кучи СОМ объектов это вызывает проблемы. А перфоманс это разве не проблема? Зная тонкости Delphi многие проблемы перфоманса можно обойти и выигрывать у тогоже C# на многих задачах (поверь делал тесты). Плюс в 2009 и дженерики появились. S>>Нет серебрянной пули. Поэтому для каждой задачи свой инструмент. G>Именно, нет такой задачи где бы делфи выигрывал у .NET. А там где .NET не лезет, там уже проще C использовать.
Простой пример работа с IDispatсh (например с 1С) . Зачем же С, мне проще и приятнее на Delphi. А там где действительно Net рулит там и на C#.
Мне C# очень нравится при этом у Delphi и С# много общего (один руководитель).
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
S>>> Оооо работа с СОМ в Net это те еще проблемы (из за отсутствия автоматического подсчета ссылок хотя как там в 4 ке не знаю). Натив все же лучше уживается с нативом. G>>Отсутствия где? Ты ничего не путаешь? Как раз в .NET можно вообще не париться с подсчетом ссылок в COM, ни в компонентах, ни в клиентах. S> Поверь не путаю. Когда нужно освободить СОМ ресурсы либо вручную релизить объекты Или ждать когда вызовется GC для объектов с финализаторами. http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.releasecomobject.aspx
И никаких проблем
S>>>А Проблемы и у GC существуют (например при частой перестановке ссылок объектов старших поколений, работа с матрицами итд.) G>>Какие именно? Он что-то не освобождает? Максимум что существует это некоторые проблемы с перфомансом, но в типичных для delphi приложениях такие проблемы найти просто невозможно. S>Освобождает но не по месту.
Это как?
S>Для кучи СОМ объектов это вызывает проблемы.
См выше.
S>А перфоманс это разве не проблема? Зная тонкости Delphi многие проблемы перфоманса можно обойти и выигрывать у тогоже C# на многих задачах (поверь делал тесты).
Я лучше на C напишу там где перфоманс нужен, чем на делфи. Собственно на performance-critical частях все преимущества делфи сводятся к нулю. ни тебе графических дизайнеров, ни VCL.
S>Плюс в 2009 и дженерики появились.
Все бы хорошо, но в .NET они появились на 4 года раньше. Кроме того до сих пор самая используемая версия делфей — 7
S>>>Нет серебрянной пули. Поэтому для каждой задачи свой инструмент. G>>Именно, нет такой задачи где бы делфи выигрывал у .NET. А там где .NET не лезет, там уже проще C использовать. S>Простой пример работа с IDispatсh (например с 1С) . Зачем же С, мне проще и приятнее на Delphi.
А я там вполне успешно .NET использую. Любая сборка .NET может быть выставлена как COM, только в случаях outproc серверов требуется дополнительный код.
А в делфи это создает проблемы. Управление временем жизни для COM и не-COM совсем разное (и эти люди еще ругают GC).
S>А там где действительно Net рулит там и на C#.
Я не вижу уместности применения Delphi сейчас вообще
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, gandjustas, Вы писали:
S>>>> Оооо работа с СОМ в Net это те еще проблемы (из за отсутствия автоматического подсчета ссылок хотя как там в 4 ке не знаю). Натив все же лучше уживается с нативом. G>>>Отсутствия где? Ты ничего не путаешь? Как раз в .NET можно вообще не париться с подсчетом ссылок в COM, ни в компонентах, ни в клиентах. S>> Поверь не путаю. Когда нужно освободить СОМ ресурсы либо вручную релизить объекты Или ждать когда вызовется GC для объектов с финализаторами. G>http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.releasecomobject.aspx G>И никаких проблем
А это разве не проблема? В Delphi ничего ручками релизить ненадо (за исключением неправильно написанных СОМ объектов). А ведь привыкаешь же к хорошему. S>>>>А Проблемы и у GC существуют (например при частой перестановке ссылок объектов старших поколений, работа с матрицами итд.) G>>>Какие именно? Он что-то не освобождает? Максимум что существует это некоторые проблемы с перфомансом, но в типичных для delphi приложениях такие проблемы найти просто невозможно. S>>Освобождает но не по месту. G>Это как?
Объект.ПолучитьОбъект().Получить2Объект().Выполнить(); После выполнения данной команды промежуточные объекты удалятся (По месту релиза). А бывают и очнь длинные цепочки.
S>>Для кучи СОМ объектов это вызывает проблемы. G>См выше.
S>>А перфоманс это разве не проблема? Зная тонкости Delphi многие проблемы перфоманса можно обойти и выигрывать у тогоже C# на многих задачах (поверь делал тесты). G>Я лучше на C напишу там где перфоманс нужен, чем на делфи. Собственно на performance-critical частях все преимущества делфи сводятся к нулю. ни тебе графических дизайнеров, ни VCL.
Почему же? Да нет инлайна, но писать очень быстрый код можно легко проверено. S>>Плюс в 2009 и дженерики появились. G>Все бы хорошо, но в .NET они появились на 4 года раньше. Кроме того до сих пор самая используемая версия делфей — 7
Но это не значит, что 2009 не существует. Мы же обсуждаем не NET 1.1 S>>>>Нет серебрянной пули. Поэтому для каждой задачи свой инструмент. G>>>Именно, нет такой задачи где бы делфи выигрывал у .NET. А там где .NET не лезет, там уже проще C использовать. S>>Простой пример работа с IDispatсh (например с 1С) . Зачем же С, мне проще и приятнее на Delphi. G>А я там вполне успешно .NET использую. Любая сборка .NET может быть выставлена как COM, только в случаях outproc серверов требуется дополнительный код. G>А в делфи это создает проблемы. Управление временем жизни для COM и не-COM совсем разное (и эти люди еще ругают GC).
Ну и как Тебе с Голым IDispatch работается через рефлексию? Я не знаю о каких проблемах ты говоришь, но и в Delphi на моем личном опыте нет проблем. S>>А там где действительно Net рулит там и на C#. G>Я не вижу уместности применения Delphi сейчас вообще
Я использую для расширения 1С там где Net рулит там C#, там где проще на Delphi. Хотя конечно все больше использую C#. Хотя напрмер объектный движок доступа к 1С DBF файлам на Delphi проще написать. Все же Delphi более низкоуровневей.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, std.denis, Вы писали:
SD>Другая мощная штука — AltHistory, которая помогает искать по истории открытых файлов и посещенных каталогов, набирая часть имени (скрин)
SD>Есть ли для Тотала такие плюшки?
Для тотала вагоны плагинов если ты не в курсе.
Например есть плагин, в котором на панели тотала будет консоль с фаром.
А вот найди как плагин, что бы _на_панели_ фара был запущен тотал. Слабо ?
SD>А про Тотал.. Раздражает в нем, что плодятся окошки, когда открываешь файлы на просмотр. Почему бы их не сделать в виде табов? Я уж не говорю о том, что окно создается хрен знает где — винда ж их "любит" выкладывать каскадом.
Это у тебя хрен знает где. У меня — только там где мне надо.
SD>Не хватает внутреннего редактора. В FAR встроенный редактор та еще няшечка — сочетает простоту и мощь/расширяемость.
Нахрена именно внутренний редактор ? Если например редактор нужен все время работы, что делать ? Запускать еще инстанцы фаров ?
>Да, есть всякие Notepad++ и порты юниксовых, но всё-равно ощущения не те. SD>Хотя для любителей потыкать по экрану это сомнительные доводы, ага.
Зато некоторым нужен фолдинг,
другому — always on top,
еще одному — запускать тулы,
кому то — reuse window,
а может и minimize to tray,
некоторые хотят зум,
а есть такие которые хотят transparent,
удобно когда можно выбрать шрифт для редактора
многим нравится, когда вместо notepad запускается твой редактор, даже если файловая ассоциация не та
Перечисли, что из этого умеет фар ? Расцветку синтаксиса и прочее говно не надо перечислять, это умеет любой девелоперский редактор.
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, Serginio1, Вы писали:
S>>>Здравствуйте, gandjustas, Вы писали:
S>>>>> Оооо работа с СОМ в Net это те еще проблемы (из за отсутствия автоматического подсчета ссылок хотя как там в 4 ке не знаю). Натив все же лучше уживается с нативом. G>>>>Отсутствия где? Ты ничего не путаешь? Как раз в .NET можно вообще не париться с подсчетом ссылок в COM, ни в компонентах, ни в клиентах. S>>> Поверь не путаю. Когда нужно освободить СОМ ресурсы либо вручную релизить объекты Или ждать когда вызовется GC для объектов с финализаторами. G>>http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.releasecomobject.aspx G>>И никаких проблем S> А это разве не проблема? В Delphi ничего ручками релизить ненадо (за исключением неправильно написанных СОМ объектов). А ведь привыкаешь же к хорошему.
Так и в .NET не надо. GC сам все уберет.
Вызывать надо только чтобы освободить объект раньше, чем до него доберется GC.
Такое возникает крайне редко.
S>>>>>А Проблемы и у GC существуют (например при частой перестановке ссылок объектов старших поколений, работа с матрицами итд.) G>>>>Какие именно? Он что-то не освобождает? Максимум что существует это некоторые проблемы с перфомансом, но в типичных для delphi приложениях такие проблемы найти просто невозможно. S>>>Освобождает но не по месту. G>>Это как? S> Объект.ПолучитьОбъект().Получить2Объект().Выполнить(); После выполнения данной команды промежуточные объекты удалятся (По месту релиза). А бывают и очнь длинные цепочки.
И что?
S>>>А перфоманс это разве не проблема? Зная тонкости Delphi многие проблемы перфоманса можно обойти и выигрывать у тогоже C# на многих задачах (поверь делал тесты). G>>Я лучше на C напишу там где перфоманс нужен, чем на делфи. Собственно на performance-critical частях все преимущества делфи сводятся к нулю. ни тебе графических дизайнеров, ни VCL. S> Почему же? Да нет инлайна, но писать очень быстрый код можно легко проверено.
Оптимизация в в компиляторе delphi похуже, чем в современных компиляторах С, проверено.
S>>>Плюс в 2009 и дженерики появились. G>>Все бы хорошо, но в .NET они появились на 4 года раньше. Кроме того до сих пор самая используемая версия делфей — 7 S> Но это не значит, что 2009 не существует. Мы же обсуждаем не NET 1.1
На .NET 1.1 уже никто не пишет, а на Delphi 7 — вполне.
S>>>>>Нет серебрянной пули. Поэтому для каждой задачи свой инструмент. G>>>>Именно, нет такой задачи где бы делфи выигрывал у .NET. А там где .NET не лезет, там уже проще C использовать. S>>>Простой пример работа с IDispatсh (например с 1С) . Зачем же С, мне проще и приятнее на Delphi. G>>А я там вполне успешно .NET использую. Любая сборка .NET может быть выставлена как COM, только в случаях outproc серверов требуется дополнительный код. G>>А в делфи это создает проблемы. Управление временем жизни для COM и не-COM совсем разное (и эти люди еще ругают GC). S> Ну и как Тебе с Голым IDispatch работается через рефлексию?
С dynamic — прекрасно.
S>Я не знаю о каких проблемах ты говоришь, но и в Delphi на моем личном опыте нет проблем.
Ты просто привык и не обращаешь внимание, но это не значит что проблем нет вообще.
Здравствуйте, gandjustas, Вы писали:
G>>>Отсутствия где? Ты ничего не путаешь? Как раз в .NET можно вообще не париться с подсчетом ссылок в COM, ни в компонентах, ни в клиентах. S>> Поверь не путаю. Когда нужно освободить СОМ ресурсы либо вручную релизить объекты Или ждать когда вызовется GC для объектов с финализаторами. G>http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.releasecomobject.aspx G>И никаких проблем
Т.е. париться все таки надо ?
Без этого стоит раз вызвать примерно такое Application.Documents.CurrentDocument и прога не закроется когда надо.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, gandjustas, Вы писали:
G>>>Здравствуйте, Serginio1, Вы писали:
S>>>>Здравствуйте, gandjustas, Вы писали:
S>>>>>> Оооо работа с СОМ в Net это те еще проблемы (из за отсутствия автоматического подсчета ссылок хотя как там в 4 ке не знаю). Натив все же лучше уживается с нативом. G>>>>>Отсутствия где? Ты ничего не путаешь? Как раз в .NET можно вообще не париться с подсчетом ссылок в COM, ни в компонентах, ни в клиентах. S>>>> Поверь не путаю. Когда нужно освободить СОМ ресурсы либо вручную релизить объекты Или ждать когда вызовется GC для объектов с финализаторами. G>>>http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.releasecomobject.aspx G>>>И никаких проблем S>> А это разве не проблема? В Delphi ничего ручками релизить ненадо (за исключением неправильно написанных СОМ объектов). А ведь привыкаешь же к хорошему. G>Так и в .NET не надо. GC сам все уберет. G>Вызывать надо только чтобы освободить объект раньше, чем до него доберется GC. G>Такое возникает крайне редко.
У кого как. S>>>>>>А Проблемы и у GC существуют (например при частой перестановке ссылок объектов старших поколений, работа с матрицами итд.) G>>>>>Какие именно? Он что-то не освобождает? Максимум что существует это некоторые проблемы с перфомансом, но в типичных для delphi приложениях такие проблемы найти просто невозможно. S>>>>Освобождает но не по месту. G>>>Это как? S>> Объект.ПолучитьОбъект().Получить2Объект().Выполнить(); После выполнения данной команды промежуточные объекты удалятся (По месту релиза). А бывают и очнь длинные цепочки. G>И что?
А то, что накапливаются объекты многие из которых содержат ресурсы, котрые нужно освождать чем раньше тем лучше.
S>>>>А перфоманс это разве не проблема? Зная тонкости Delphi многие проблемы перфоманса можно обойти и выигрывать у тогоже C# на многих задачах (поверь делал тесты). G>>>Я лучше на C напишу там где перфоманс нужен, чем на делфи. Собственно на performance-critical частях все преимущества делфи сводятся к нулю. ни тебе графических дизайнеров, ни VCL. S>> Почему же? Да нет инлайна, но писать очень быстрый код можно легко проверено. G>Оптимизация в в компиляторе delphi похуже, чем в современных компиляторах С, проверено.
Согласен, но можно писать зная эти нюансы и обгонять код для С с надеждой на его оптимизацию. S>>>>Плюс в 2009 и дженерики появились. G>>>Все бы хорошо, но в .NET они появились на 4 года раньше. Кроме того до сих пор самая используемая версия делфей — 7 S>> Но это не значит, что 2009 не существует. Мы же обсуждаем не NET 1.1 G>На .NET 1.1 уже никто не пишет, а на Delphi 7 — вполне.
Это только говорит о его состоятельности. Хотя честно говоря уж долго он не развивался. S>>>>>>Нет серебрянной пули. Поэтому для каждой задачи свой инструмент. G>>>>>Именно, нет такой задачи где бы делфи выигрывал у .NET. А там где .NET не лезет, там уже проще C использовать. S>>>>Простой пример работа с IDispatсh (например с 1С) . Зачем же С, мне проще и приятнее на Delphi. G>>>А я там вполне успешно .NET использую. Любая сборка .NET может быть выставлена как COM, только в случаях outproc серверов требуется дополнительный код. G>>>А в делфи это создает проблемы. Управление временем жизни для COM и не-COM совсем разное (и эти люди еще ругают GC). S>> Ну и как Тебе с Голым IDispatch работается через рефлексию? G>С dynamic — прекрасно.
И давно динамики то появились? Многие на 4 ку то не перешли. Хотя это радует. Есть еще один повод полностью перейти на C#. S>>Я не знаю о каких проблемах ты говоришь, но и в Delphi на моем личном опыте нет проблем. G>Ты просто привык и не обращаешь внимание, но это не значит что проблем нет вообще.
Поверь я вижу много проблем как в Delphi так и в C#. Но шарп развивается семимильными шагами. При этом это мои не основные языки программирования,
и держать в памяти множество нюансов становится все сложнее. Поэтому то и больше внимания уделяю Шарпу. А Delphi это первая любовь.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Ikemefula, Вы писали:
A>>>>у меня к тебе встречное предложение — отключи клавиатуру, потом напиши сюда сотню-другую сообщений I>>>Как то разбил руку, то пришлось работать мышом в экранке. На активности в РСДН это не сказалось. Только сообщения разумеется были короче обычного. A>>twitter-style НЕ НУЖЕН I>А ты хотел, что бы я разбитой рукой вагоны текста гнал ?
нет, не разбитой... но долго ли вообще получиться мышкой текст набивать?
I>>>Ну простой пример — у тебя открыто штук тридцать закладок в бровзере. Как быстро, в одно нажатие клавиши переключиться в ту, что нужно именно сейчас ? A>>тридцать у меня не открыто, в пределах девяти у меня ctrl-q-<number>. I>И что же, прыгаешь по линкам и считаешь количество открытых окон ?
я вообще плохо себе представляю нафига открывать сотни табов, там же заголовки не увидишь
>>а вот сможешь ли ты переключаться по закладкам не двигая мышь? I>Для начала ответь на _мой_ ответ.
с запросами в стиле уральского лучше обращаться в саппорт провайдеру, я так не могу
I>>>Другой пример — ты зашел под RDP на комп общего пользования, где не будет твоих любимых настроек и тд и тд и тд. Тебе нужно немного — в одно-два нажатия добраться до нужной софтины. A>>эти примеры сводятся к передвиганию курсора. передвигание курсора с клавиатуры не является технически невыполнимой задачей. A>>на "одно-два нажатия" я вполне могу ответить "лучше лишнее нажатие, чем тянуть мышь через два монитора" (а потом обратно, и так километрами) I>"Тянуть мышь через два монитора"
ещё скажи что второй монитор не нужен
I>Лишних нажатий тебе может понадобиться несколько десятков, а не одно.
с меня не убудет. я ж в основном в консоли сижу.
I>Например тот же Ms Onenote. Чем люди думали — не ясно.
да вроде нормальный он (у меня 2007). какие кривые шоткаты я пропустил?
Здравствуйте, Antikrot, Вы писали:
I>>А ты хотел, что бы я разбитой рукой вагоны текста гнал ? A>нет, не разбитой... но долго ли вообще получиться мышкой текст набивать?
Дольше чем руками, но не сильно. Правда если руки из одного места, а мыша склизкая, кнопки говенные, а сенсор залеплен волосами, то будет очень долго.
A>>>тридцать у меня не открыто, в пределах девяти у меня ctrl-q-<number>. I>>И что же, прыгаешь по линкам и считаешь количество открытых окон ? A>я вообще плохо себе представляю нафига открывать сотни табов, там же заголовки не увидишь
у тебя экран в высоту для дюйма что ли ?
>>>а вот сможешь ли ты переключаться по закладкам не двигая мышь? I>>Для начала ответь на _мой_ ответ. A>с запросами в стиле уральского лучше обращаться в саппорт провайдеру, я так не могу
Ну а мне не интересно видеть вопросы в ответ на вопрос.
A>>>эти примеры сводятся к передвиганию курсора. передвигание курсора с клавиатуры не является технически невыполнимой задачей. A>>>на "одно-два нажатия" я вполне могу ответить "лучше лишнее нажатие, чем тянуть мышь через два монитора" (а потом обратно, и так километрами) I>>"Тянуть мышь через два монитора" A>ещё скажи что второй монитор не нужен
Я все время работаю с одним монитором по RDP
I>>Лишних нажатий тебе может понадобиться несколько десятков, а не одно. A>с меня не убудет. я ж в основном в консоли сижу.
А я в консоли не сижу и люблю кода все делается в один-два клика.
I>>Например тот же Ms Onenote. Чем люди думали — не ясно. A>да вроде нормальный он (у меня 2007). какие кривые шоткаты я пропустил?
Ctrl(Shift)-1,2,3...
Я бы это дело переназначил, что бы было как в других тулах, но...
Здравствуйте, Ikemefula, Вы писали:
A>>>>тридцать у меня не открыто, в пределах девяти у меня ctrl-q-<number>. I>>>И что же, прыгаешь по линкам и считаешь количество открытых окон ? A>>я вообще плохо себе представляю нафига открывать сотни табов, там же заголовки не увидишь I>у тебя экран в высоту для дюйма что ли ?
нет, я просто считаю что интерфейсные элементы (вроде табов, заголовков окон и прочей ерунды) не особо нужны и должны занимать как можно меньше места.
I>>>Лишних нажатий тебе может понадобиться несколько десятков, а не одно. A>>с меня не убудет. я ж в основном в консоли сижу. I>А я в консоли не сижу и люблю кода все делается в один-два клика.
особенно копирование файлов...
I>>>Например тот же Ms Onenote. Чем люди думали — не ясно. A>>да вроде нормальный он (у меня 2007). какие кривые шоткаты я пропустил? I>Ctrl(Shift)-1,2,3...
прикольно, спасибо, не знал. забавные шоткаты
Здравствуйте, Antikrot, Вы писали:
I>>у тебя экран в высоту для дюйма что ли ? A>нет, я просто считаю что интерфейсные элементы (вроде табов, заголовков окон и прочей ерунды) не особо нужны и должны занимать как можно меньше места.
Они и не занимают. Навидишь мышом на бровзер и видишь список закладок, наводишь на нужную, жмешь кнопку и готово.
Итого — 1 клик. А если тебе надо только глянуть кое что, то кликов и вовсе 0 — просто уводишь мыша с табины.
I>>А я в консоли не сижу и люблю кода все делается в один-два клика. A>особенно копирование файлов...
Обычно я не копирую что попало, куда попало.
Даблклик по тулбару, клик по меню — и я уже в нужном фолдере, клик по файлу или нескольким файлам, фолдерам и тд и далее жму или копировать, или перемещать или зиповать + параметры + OK.
Естественно, я не все делаю мышом, левая рука у меня завсегда на клавиатуре, а правая почти всегда на мыше.
I>>Ctrl(Shift)-1,2,3... A>прикольно, спасибо, не знал. забавные шоткаты
Забавные, но переназначить их нельзя. Т.е. поддержка клавы урезана. Чтд.
Здравствуйте, gandjustas, Вы писали:
g> Щас заплачу... почему в .NET такие проблемы отсуствуют? g> Там и COM и и передача между модулями нормально работает. g> Наверное это таки недостаток делфи.
Когда будешь передавать строку в нативный модуль, ясень пень заплачешь, куда же ты денешься.
Здравствуйте, Serginio1, Вы писали:
S> M>>Плюс сюда тонны уже существующих приложений, плюс простота инструмента и языка.
S> G>Простоты языка в делфи нету. там очень нетривиальная работа с COM и просто интерфейсами, много проблем возникает со строками, особенно когда надо их передавать и получать из внешних модулей.
S> Достаточно просто для большинства потребностей. Что касается строк и прочего (память не только для строк выделяется), то это проблема менеджера памяти.Нельзя делать зоопарк из менеджеров памяти. S> Осознавая это нужно правильно работать с памятью выделенной другим менеджером, либо приводить к одному менеджеру.
Все уже давным-давно решено (более того, это вообще не проблема в нативном мире), ты ганджустаса меньше слушай, зря думаешь он майкрософтовскими плашками весь обвешался
Здравствуйте, gandjustas, Вы писали:
g> Ну-ну. Берешь базу типа AdventrueWorksLT (около 20 таблиц) и делаешь для нее crud морду, скока займет? g> А на Dynamic Data — 5 минут независимо от количества таблиц. А потом еще можно красивые называния подписать.
У Борладна демка про ECO была, где пятилетняя девочка базаморду делала за короткое время. Пруфов, однако, не дам, меня таким говном не возьмешь
g> Простоты языка в делфи нету. там очень нетривиальная работа с COM и просто интерфейсами, много проблем возникает со строками, особенно когда надо их передавать и получать из внешних модулей.
Ох уж эти сказки, ох уж эти сказочники (c)
g> M>Delphi как язык прекрасно гармонирует со своей же VCL.
g> У делфи вообще ничего кроме VCL нету.
Здравствуйте, Ikemefula, Вы писали:
I>>>у тебя экран в высоту для дюйма что ли ? A>>нет, я просто считаю что интерфейсные элементы (вроде табов, заголовков окон и прочей ерунды) не особо нужны и должны занимать как можно меньше места. I>Они и не занимают. Навидишь мышом на бровзер и видишь список закладок, наводишь на нужную, жмешь кнопку и готово. I>Итого — 1 клик. А если тебе надо только глянуть кое что, то кликов и вовсе 0 — просто уводишь мыша с табины.
не совсем справедливое сравнение — почему ты для мыши считаешь только клики, а перемещение мыши не считаешь?
I>>>А я в консоли не сижу и люблю кода все делается в один-два клика. A>>особенно копирование файлов... I>Обычно я не копирую что попало, куда попало. I>Даблклик по тулбару, клик по меню — и я уже в нужном фолдере, клик по файлу или нескольким файлам, фолдерам и тд и далее жму или копировать, или перемещать или зиповать + параметры + OK.
ну если "не копировать что попало куда попало", то у меня есть ctrl+\ и несколько "очень нужных папок" там
I>>>Ctrl(Shift)-1,2,3... A>>прикольно, спасибо, не знал. забавные шоткаты I>Забавные, но переназначить их нельзя. Т.е. поддержка клавы урезана. Чтд.
о как. а если я своей десятикнопочной мышью полез на remote desktop, где "нет моих любимых настроек" — все кнопки работать будут? (с возможностью их там переназначать) нет? — поддержка мыши урезана. Чтд.
Здравствуйте, Antikrot, Вы писали:
I>>Итого — 1 клик. А если тебе надо только глянуть кое что, то кликов и вовсе 0 — просто уводишь мыша с табины. A>не совсем справедливое сравнение — почему ты для мыши считаешь только клики, а перемещение мыши не считаешь?
Потому что оно ничего не стоит. Если у тебя другое мнение — поделись им.
I>>Даблклик по тулбару, клик по меню — и я уже в нужном фолдере, клик по файлу или нескольким файлам, фолдерам и тд и далее жму или копировать, или перемещать или зиповать + параметры + OK. A>ну если "не копировать что попало куда попало", то у меня есть ctrl+\ и несколько "очень нужных папок" там
Не гони. Я показал всю цепочку, а у тебя только отмазки какие то.
I>>Забавные, но переназначить их нельзя. Т.е. поддержка клавы урезана. Чтд. A>о как. а если я своей десятикнопочной мышью полез на remote desktop, где "нет моих любимых настроек" — все кнопки работать будут? (с возможностью их там переназначать) нет? — поддержка мыши урезана. Чтд.
Ты головой то думай, умник. Клавиатура то будет еще сильнее урезана. Следовательно мыша суммарно будет в плюсе.
Здравствуйте, ambel-vlad, Вы писали:
AV>Здравствуйте, CreatorCray, Вы писали:
I>>>Захотел на тулбар накидать шорткатов — пожалуйста. CC>>там есть юзерменю. CC>>Более того в фаре за мышь браться вообще не приходится. Он заточен на быструю работу с клавиатуры.
I>>>Захотел фолдеры быстрого доступа — пожалуйста. CC>>Есть на хоткеях
AV>Ну все, ты попал. Сейчас тебя запишут в стан линуксоидов. Считай тебе повезло, если только Икемфула скажет, что ты поклонник противной консоли.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> Щас заплачу... почему в .NET такие проблемы отсуствуют? g>> Там и COM и и передача между модулями нормально работает. g>> Наверное это таки недостаток делфи.
H>Когда будешь передавать строку в нативный модуль, ясень пень заплачешь, куда же ты денешься.
var foo = new Subject<string>();
using (someObject.Foo.Subscribe(s => Console.WriteLine(s)))
foo.Next("Fire");
foo.Next("Fire 2")
Единственное, чего сейчас нельзя без мультикаст делегатов получить, это возможность использования операторов += и -=, захардкожено на уровне компилятора шарпа.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, gandjustas, Вы писали:
G>>>>Отсутствия где? Ты ничего не путаешь? Как раз в .NET можно вообще не париться с подсчетом ссылок в COM, ни в компонентах, ни в клиентах. S>>> Поверь не путаю. Когда нужно освободить СОМ ресурсы либо вручную релизить объекты Или ждать когда вызовется GC для объектов с финализаторами. G>>http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.releasecomobject.aspx G>>И никаких проблем
I>Т.е. париться все таки надо ?
Нет.
I>Без этого стоит раз вызвать примерно такое Application.Documents.CurrentDocument и прога не закроется когда надо.
Закроется. Хотя может ты что-то другое имеешь ввиду.
Здравствуйте, Ikemefula, Вы писали:
I>А вот найди как плагин, что бы _на_панели_ фара был запущен тотал. Слабо ?
Можно и задницей свистнуть, но зачем?
Был плагин который на панели FAR просмотр картинок делал.
Так что можно всё.
I>Нахрена именно внутренний редактор ? Если например редактор нужен все время работы, что делать ? Запускать еще инстанцы фаров ?
Там вообще то между окнами (редактор/просмотр/панели) можно переключаться. И соотвественно редакторов и просмотров может быть много.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, Serginio1, Вы писали:
S>>>Здравствуйте, gandjustas, Вы писали:
G>>>>Здравствуйте, Serginio1, Вы писали:
S>>> А это разве не проблема? В Delphi ничего ручками релизить ненадо (за исключением неправильно написанных СОМ объектов). А ведь привыкаешь же к хорошему. G>>Так и в .NET не надо. GC сам все уберет. G>>Вызывать надо только чтобы освободить объект раньше, чем до него доберется GC. G>>Такое возникает крайне редко. S> У кого как.
У всех так, за редким исключением.
S>>> Объект.ПолучитьОбъект().Получить2Объект().Выполнить(); После выполнения данной команды промежуточные объекты удалятся (По месту релиза). А бывают и очнь длинные цепочки. G>>И что? S> А то, что накапливаются объекты многие из которых содержат ресурсы, котрые нужно освождать чем раньше тем лучше.
"чем раньше тем лучше" зачастую некорректное утверждение.
S>>>>>Плюс в 2009 и дженерики появились. G>>>>Все бы хорошо, но в .NET они появились на 4 года раньше. Кроме того до сих пор самая используемая версия делфей — 7 S>>> Но это не значит, что 2009 не существует. Мы же обсуждаем не NET 1.1 G>>На .NET 1.1 уже никто не пишет, а на Delphi 7 — вполне. S> Это только говорит о его состоятельности. Хотя честно говоря уж долго он не развивался.
Это говорит о несостоятельности новых версий.
Почему при наличии delphi 2005 и выше, до сих пор на семерке сидят?
S>>> Ну и как Тебе с Голым IDispatch работается через рефлексию? G>>С dynamic — прекрасно. S> И давно динамики то появились?
Ну в VB они и раньше были, в C# только в 4 версии.
Здравствуйте, gandjustas, Вы писали:
g> g>> Щас заплачу... почему в .NET такие проблемы отсуствуют? g> g>> Там и COM и и передача между модулями нормально работает. g> g>> Наверное это таки недостаток делфи.
g> H>Когда будешь передавать строку в нативный модуль, ясень пень заплачешь, куда же ты денешься.
g> В .NET этого недостатка нету.
Ага-ага Покажи код работающий с WinAPI на примере функции GetWindowsDirectory. Потом я покажу на Delphi и ты расскажешь мне о его недостатках
Здравствуйте, gandjustas, Вы писали:
g> Это говорит о несостоятельности новых версий. g> Почему при наличии delphi 2005 и выше, до сих пор на семерке сидят?
Если людям нафиг не уперлись ни генерики, ни юникод, ни многие другие плюшки нафиг им куда-то мигрировать? Лично для меня, все что младше 2006 уже умерло
Здравствуйте, CreatorCray, Вы писали:
CC> I>А вот найди как плагин, что бы _на_панели_ фара был запущен тотал. Слабо ?
CC> Можно и задницей свистнуть, но зачем? CC> Был плагин который на панели FAR просмотр картинок делал.
Угу-угу. Я пользуюсь, ибо очень пользительно и в архивах картинки видеть и по темп.панели оным просматривать
А еще, конечно, NamedFolders, уже поминавшиеся тут, рулят
Использование, а не декларация. Подвох в том, что ганджустас говорит о каком-то, видимо только ему одному известном, недостатке при работе со строками в Delphi, в то время, как в .NET дела с этим обстоят не лучше, в смысле в Delphi все делается ровно также, только с меньшими затратами.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС> H>Если людям нафиг не уперлись ни генерики, ни юникод
НС> То этим людям пора отправляться на пенсию, а не плодить говнокод.
Это не ответ. Кроме того, ничего военного в дженериках нет, а с юникодом можно преспокойно работать и на семерке
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> Это говорит о несостоятельности новых версий. g>> Почему при наличии delphi 2005 и выше, до сих пор на семерке сидят?
H>Если людям нафиг не уперлись ни генерики, ни юникод, ни многие другие плюшки нафиг им куда-то мигрировать? Лично для меня, все что младше 2006 уже умерло
Да твое личное мнение как всегда мало кого интересует. Большинство разработчиков в моем городе, которые до сих пор пишут на delphi, используют delphi 7.
В других городах по слухам картина такая же.
Здравствуйте, gandjustas, Вы писали:
g> g>> Это говорит о несостоятельности новых версий. g> g>> Почему при наличии delphi 2005 и выше, до сих пор на семерке сидят?
g> H>Если людям нафиг не уперлись ни генерики, ни юникод, ни многие другие плюшки нафиг им куда-то мигрировать? Лично для меня, все что младше 2006 уже умерло
g> Да твое личное мнение как всегда мало кого интересует. Большинство разработчиков в моем городе, которые до сих пор пишут на delphi, используют delphi 7. g> В других городах по слухам картина такая же.
Тебя послушать, так у тебя бюро статистики карманное Впрочем, на вопрос у тебя ответа нет Я ни чуть не сомневался.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> g>> Щас заплачу... почему в .NET такие проблемы отсуствуют? g>> g>> Там и COM и и передача между модулями нормально работает. g>> g>> Наверное это таки недостаток делфи.
g>> H>Когда будешь передавать строку в нативный модуль, ясень пень заплачешь, куда же ты денешься.
g>> В .NET этого недостатка нету.
H>Ага-ага Покажи код работающий с WinAPI на примере функции GetWindowsDirectory. Потом я покажу на Delphi и ты расскажешь мне о его недостатках
Примерно так:
[DllImport("Kernel32.dll")]
private static extern int GetWindowsDirectory(StringBuilder buffer, int cbSize);
public static string GetWindowsDirectory()
{
var sb = new StringBuilder();
var size = GetWindowsDirectory(sb, sb.Capacity);
if (size > sb.Capacity)
{
sb.Capacity = size;
GetWindowsDirectory(sb, size);
}
return sb.ToString();
}
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> g>> Это говорит о несостоятельности новых версий. g>> g>> Почему при наличии delphi 2005 и выше, до сих пор на семерке сидят?
g>> H>Если людям нафиг не уперлись ни генерики, ни юникод, ни многие другие плюшки нафиг им куда-то мигрировать? Лично для меня, все что младше 2006 уже умерло
g>> Да твое личное мнение как всегда мало кого интересует. Большинство разработчиков в моем городе, которые до сих пор пишут на delphi, используют delphi 7. g>> В других городах по слухам картина такая же.
H>Тебя послушать, так у тебя бюро статистики карманное Впрочем, на вопрос у тебя ответа нет Я ни чуть не сомневался.
Вопрос твой крайне глуп по своей постановке. Большинство программистов пишущих на этом самом делфи 7 не знают что такое генерики и с трудом понимают что такое юникод.
Я думаю если им объяснить про генерики, то многие очень захотят их использовать, но вот в vcl их применить негде.
Здравствуйте, hattab, Вы писали:
НС>> 2) Где обработка ошибок?
H>Что там сложного If GetWindowDirectory(...) = 0 Then RaiseLastOSError;
Ишь какой хитрый. Ты полностью пример приводи.
НС>> 3) Даже в таком виде дельфовый вариант все же посложнее выглядит.
H>Не смеши мои тапки. Либо в Delphi — только строка и все, либо в шарпе всякие стринг-билдеры.
В шарпе StringBuilder это точно так же просто mutable строка.
H> Да потом еще и в строку переводить.
Здравствуйте, gandjustas, Вы писали:
g> Вопрос твой крайне глуп по своей постановке. Большинство программистов пишущих на этом самом делфи 7 не знают что такое генерики и с трудом понимают что такое юникод.
Да-да, только передовые шарпеи знают о генериках, и даже не бояться слова юникод
g> Я думаю если им объяснить про генерики, то многие очень захотят их использовать, но вот в vcl их применить негде.
Генерики вообще полезны лишь в алгоритмических частях, в прочем от них мало пользы.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> Вопрос твой крайне глуп по своей постановке. Большинство программистов пишущих на этом самом делфи 7 не знают что такое генерики и с трудом понимают что такое юникод.
H>Да-да, только передовые шарпеи знают о генериках, и даже не бояться слова юникод
Слава богу о генериках многие знают, но среди делфистов таких меньшинство.
Ты вместе оперирования фактами, статистикой и другими более-менее объективными вещами начинаешь какой-то фигней заниматься.
g>> Я думаю если им объяснить про генерики, то многие очень захотят их использовать, но вот в vcl их применить негде. H>Генерики вообще полезны лишь в алгоритмических частях, в прочем от них мало пользы.
И где ты такой бред прочитал.
Считай ты сказал что "контроль типов полезен только в алгоритмических частях".
Здравствуйте, Ночной Смотрящий, Вы писали:
НС> НС>> 2) Где обработка ошибок?
НС> H>Что там сложного If GetWindowDirectory(...) = 0 Then RaiseLastOSError;
НС> Ишь какой хитрый. Ты полностью пример приводи.
SetLength(s, MAX_PATH);
If GetWindowsDirectory(PChar(s), Length(s)) = 0 Then
RaiseLastOSError;
SetLength(s, StrLen(PChar(s)));
Этот код не учитывает, что размера буфера не хватит, как и твой.
НС> НС>> 3) Даже в таком виде дельфовый вариант все же посложнее выглядит.
НС> H>Не смеши мои тапки. Либо в Delphi — только строка и все, либо в шарпе всякие стринг-билдеры.
НС> В шарпе StringBuilder это точно так же просто mutable строка.
Это не важно, важно что сущность лишняя простоты не добавляет.
НС> H> Да потом еще и в строку переводить.
НС> Смотря что ты потом с результатом делать будешь.
Неважно что, просто на выходе нужна строка. А то ведь я тоже могу SetLength опустить
Здравствуйте, gandjustas, Вы писали:
g> g>> Вопрос твой крайне глуп по своей постановке. Большинство программистов пишущих на этом самом делфи 7 не знают что такое генерики и с трудом понимают что такое юникод.
g> H>Да-да, только передовые шарпеи знают о генериках, и даже не бояться слова юникод
g> Слава богу о генериках многие знают, но среди делфистов таких меньшинство. g> Ты вместе оперирования фактами, статистикой и другими более-менее объективными вещами начинаешь какой-то фигней заниматься.
Да-да, давай уже статистику, а то ты только ла-ла и можешь
g> g>> Я думаю если им объяснить про генерики, то многие очень захотят их использовать, но вот в vcl их применить негде.
g> H>Генерики вообще полезны лишь в алгоритмических частях, в прочем от них мало пользы.
g> И где ты такой бред прочитал. g> Считай ты сказал что "контроль типов полезен только в алгоритмических частях".
Здравствуйте, Ночной Смотрящий, Вы писали:
НС> НС>> H> SetLength(s, GetWindowsDirectory(PChar(s), Length(s)));
НС> H>function GetWindowsDirectory(lpBuffer: PWideChar; uSize: UINT): UINT; stdcall;
НС> А как, кстати, насчет того, что функция ждет юникод, а PChar вроде как однобайтный?
Этот код универсальный. На анси-версиях Delphi это будет анси-строка, на юникод — юникод. PChar аналогично, на анси — PAnsiChar, на юникод PWideChar.
Здравствуйте, hattab, Вы писали:
H>Этот код не учитывает, что размера буфера не хватит, как и твой.
Его не может не хватить, MAX_PATH это константа ОС.
НС>> В шарпе StringBuilder это точно так же просто mutable строка.
H>Это не важно, важно что сущность лишняя простоты не добавляет.
Она не лишняя. И уж про количество типов строк я бы, в случае Дельфи, помолчал бы.
НС>> Смотря что ты потом с результатом делать будешь.
H>Неважно что, просто на выходе нужна строка.
Важно. StringBuilder, повторюсь, это не специальнохитрый класс, а базовая часть библиотеки. И, кстати, если уж так хочется, можно и иммутабельный string использовать.
H> А то ведь я тоже могу SetLength опустить
И получить глюки в коде, который будет читать длину из заголовка, а не нулевой байт искать.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС> H>Этот код не учитывает, что размера буфера не хватит, как и твой.
НС> Его не может не хватить, MAX_PATH это константа ОС.
Я просто уточнил, а то вдруг ты снова прикопаться решишь, как с обработкой ошибок.
НС> НС>> В шарпе StringBuilder это точно так же просто mutable строка.
НС> H>Это не важно, важно что сущность лишняя простоты не добавляет.
НС> Она не лишняя. И уж про количество типов строк я бы, в случае Дельфи, помолчал бы.
Конечно лишняя В Delphi то она нафиг не упрелась, а мы тут как бы о простоте. На счет типов строк... Это называется гибкость, к тому же они все совместимы по присваиванию.
НС> НС>> Смотря что ты потом с результатом делать будешь.
НС> H>Неважно что, просто на выходе нужна строка.
НС> Важно. StringBuilder, повторюсь, это не специальнохитрый класс, а базовая часть библиотеки. И, кстати, если уж так хочется, можно и иммутабельный string использовать.
Я же сказал — на выходе строка. Что непонятного? т.е. от .ToString(0, len) ты никуда не денешься.
НС> H> А то ведь я тоже могу SetLength опустить
НС> И получить глюки в коде, который будет читать длину из заголовка, а не нулевой байт искать.
А со стринг билдером так не будет Ты уж давай адекватно сравнивай.
SD>>Есть еще Named folders SD>>Другая мощная штука — AltHistory SD>>Есть ли для Тотала такие плюшки?
I>Для тотала вагоны плагинов если ты не в курсе.
Вопрос был не достаточно конкретный? Мне не нужны вагоны с плагинами. Я писал о вполне конкретных двух фичах, которые я активно использую.
Кстати, какие там есть полезные плагины к Тоталу, кроме плагинов файловой системы, отображателей для Lister'a?
I>Например есть плагин, в котором на панели тотала будет консоль с фаром. I>А вот найди как плагин, что бы _на_панели_ фара был запущен тотал. Слабо ?
Про свистнуть жопой CreatorCray уже ответил, разделяю мнение. Т.е. плюс Тотала в том, что его юзерям может понадобиться FAR в панели? Мне Тотал как-то вообще не нужен в панели FAR.
I>Это у тебя хрен знает где. У меня — только там где мне надо.
Ок. Расскажи про опцию, которая заставляет окошки (того же Lister'а) открываться ровно над окошком Тотала? Т.е. позиция подправится, если я перетяну Тотал в другое место или разверну на весь экран.
I>Нахрена именно внутренний редактор ? Если например редактор нужен все время работы, что делать ? Запускать еще инстанцы фаров ?
Потому что он удобный, функциональный и лёгкий. И да, FAR поддерживает многооконность. Если использовать Conemu, то они даже отображаются так тобою любимым тулбаром.
I><...> I>Перечисли, что из этого умеет фар ?
Условно не умеет on top, to tray, transparent. Ибо это можно реализовать плагином, или даже сторонней софтиной.
Фолдинг я вроде видел, но точно не уверен. Ну и шрифт задается глобально для консоли. Что такое в данном контексте "reuse window" я не знаю.
Как минимум встроенный редактор на 99% покрывает мои нужды. Если что-то не хватает, всегда можно настроить запуск внешнего.
Ассоциации можно настроить не только на запуск (Enter), но и на Ctrl-PgDn (вход в файл-архив), на F3, Alt-F3, F4, Alt-F4. Можно выставить глобальные альтернативные вьювер и редактор.
Здравствуйте, hattab, Вы писали:
H>Конечно лишняя В Delphi то она нафиг не упрелась
В Дельфи точно так же уперлась, там все строки мутабельные. А вот то что там нет иммутабельной строки, Дельфи совсем не красит.
H>Это называется гибкость
Т.е. наличие отдельно мутабельной и иммутабельной строк это избыточность, а пучек исключительно мутабельных строк это гибкость?
НС>> Важно. StringBuilder, повторюсь, это не специальнохитрый класс, а базовая часть библиотеки. И, кстати, если уж так хочется, можно и иммутабельный string использовать.
H>Я же сказал — на выходе строка. Что непонятного?
StringBuilder это и есть строка. Что непонятного?
H> т.е. от .ToString(0, len) ты никуда не денешься.
И длину указывать не надо, маршаллер об этом сам позаботится. Достаточно просто ToString без параметров.
НС>> И получить глюки в коде, который будет читать длину из заголовка, а не нулевой байт искать.
H>А со стринг билдером так не будет
Здравствуйте, Ночной Смотрящий, Вы писали:
НС> H>Конечно лишняя В Delphi то она нафиг не упрелась
НС> В Дельфи точно так же уперлась, там все строки мутабельные. А вот то что там нет иммутабельной строки, Дельфи совсем не красит.
Есть константные параметры
НС> H>Это называется гибкость
НС> Т.е. наличие отдельно мутабельной и иммутабельной строк это избыточность, а пучек исключительно мутабельных строк это гибкость?
Тот пучек для совершенно разных вещей. Там где .net будет маршалить, в Delphi достаточно использовать конкретный тип.
НС> НС>> Важно. StringBuilder, повторюсь, это не специальнохитрый класс, а базовая часть библиотеки. И, кстати, если уж так хочется, можно и иммутабельный string использовать.
НС> H>Я же сказал — на выходе строка. Что непонятного?
НС> StringBuilder это и есть строка. Что непонятного?
Проходили уже.
This class represents a string-like object whose value is a mutable sequence of characters.
ToString у строки... ну-да, ну-да.
НС> H> т.е. от .ToString(0, len) ты никуда не денешься.
НС> И длину указывать не надо, маршаллер об этом сам позаботится. Достаточно просто ToString без параметров.
Еще и маршалер включается в работу... то-то ганджустас распевался об эффективности .net'а
НС> НС>> И получить глюки в коде, который будет читать длину из заголовка, а не нулевой байт искать.
НС> H>А со стринг билдером так не будет
НС> Нет, не будет.
Ну да, коли уже кто-то правит размер так оно конечно, только в таком случае и мне никто не мешает
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>> H> SetLength(s, GetWindowsDirectory(PChar(s), Length(s))); H>>function GetWindowsDirectory(lpBuffer: PWideChar; uSize: UINT): UINT; stdcall; НС>А как, кстати, насчет того, что функция ждет юникод, а PChar вроде как однобайтный?
Начнём с того что функции GetWindowsDirectory не существует вовсе.
В kernel32.dll есть только GetWindowsDirectoryA и GetWindowsDirectoryW
Один работает с ANSI буфером, другой с UTF16LE (вернее с UCS2)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC> НС>>> H> SetLength(s, GetWindowsDirectory(PChar(s), Length(s)));
CC> H>>function GetWindowsDirectory(lpBuffer: PWideChar; uSize: UINT): UINT; stdcall;
CC> НС>А как, кстати, насчет того, что функция ждет юникод, а PChar вроде как однобайтный?
CC> Начнём с того что функции GetWindowsDirectory не существует вовсе.
Да ладно, понятно же, что он проецируется на W в случае .NET'а. У дельфей в анси версии на A, в юникод на W. Но есть и декларация без спецификатора, для универсальности.
CC> В kernel32.dll есть только GetWindowsDirectoryA и GetWindowsDirectoryW CC> Один работает с ANSI буфером, другой с UTF16LE (вернее с UCS2)
Здравствуйте, CreatorCray, Вы писали:
CC>Был плагин который на панели FAR просмотр картинок делал. CC>Так что можно всё.
Можно, но не все. Буквально то что я сказал еще ни один плагин не делает
I>>Нахрена именно внутренний редактор ? Если например редактор нужен все время работы, что делать ? Запускать еще инстанцы фаров ? CC>Там вообще то между окнами (редактор/просмотр/панели) можно переключаться. И соотвественно редакторов и просмотров может быть много.
Ога, круто — переключаться между редакторами, когда можно обойтись без этого.
var docs = Application.Documents;
var currentDoc = docs.Current;
var someObjects = currentDoc.SomeObjects;
За каким хреном нужно писать код выше вместо
Application.Documents.Current.SomeObjects
Можешь сходу сказать ?
Лично мне не нравится писать десять строчек вместо одной и я называю это "париться", потому что не дай бог забудешь, косяки может понадобиться искать неделями.
I>>Без этого стоит раз вызвать примерно такое Application.Documents.CurrentDocument и прога не закроется когда надо. G>Закроется. Хотя может ты что-то другое имеешь ввиду.
Я начинаю сомневаться в твоих регалиях
Кто по твоему закроет Эксель если счетчи ссылок на него нулю не равен ?
Ввести дополнительную фичу "Эксель остается запущеным после того как наши репорты отработали" ?
Здравствуйте, std.denis, Вы писали:
I>>Для тотала вагоны плагинов если ты не в курсе. SD>Вопрос был не достаточно конкретный? Мне не нужны вагоны с плагинами. Я писал о вполне конкретных двух фичах, которые я активно использую.
Если тебе нужн делать нечто постоянно, удобно, быстро, то попробуй погуглить.
А если ты хочешь, что бы Тотал работал точь в точь как Фар то это к доктору.
Ты заметил, что перечисляешь не потребности и даже не юзкейсы, а какие то огрызки ?
"фичи" которые ты перечислил, есть в тотале "искаропки".
SD>Кстати, какие там есть полезные плагины к Тоталу, кроме плагинов файловой системы, отображателей для Lister'a?
Если в гугле забанили то помочь конечно сложно. Всего 4 вида плагинов.
I>>А вот найди как плагин, что бы _на_панели_ фара был запущен тотал. Слабо ? SD>Про свистнуть жопой CreatorCray уже ответил, разделяю мнение. Т.е. плюс Тотала в том, что его юзерям может понадобиться FAR в панели? Мне Тотал как-то вообще не нужен в панели FAR.
Это не свистнуть жопой. Это консоль в панели тотала, что бы не надо было дурью маяться. В некоторых случаях очень удобно — получаешь как бы консольное ГУИ приложение, что бы не надо было запускать доп инстанцы всякой дряни.
Как в тотале, так это свистнуть жопой, а как фича для фара(сonemu), так это круто.
Консольщики такие консольщики
I>>Это у тебя хрен знает где. У меня — только там где мне надо. SD>Ок. Расскажи про опцию, которая заставляет окошки (того же Lister'а) открываться ровно над окошком Тотала? Т.е. позиция подправится, если я перетяну Тотал в другое место или разверну на весь экран.
Не интересовался. Расскажи, как это делается для Фара ?
I>>Нахрена именно внутренний редактор ? Если например редактор нужен все время работы, что делать ? Запускать еще инстанцы фаров ? SD>Потому что он удобный, функциональный и лёгкий. И да, FAR поддерживает многооконность. Если использовать Conemu, то они даже отображаются так тобою любимым тулбаром.
Они просто табами отображаются, а не тулбаром.
Conemu это сильно для консольщиков, только нахрена нужно, не ясно, если у меня консольных прог то не осталось
SD>Фолдинг я вроде видел, но точно не уверен.
Фолдинг в консольном редакторе ? Круто, круто Я как бы тоже видел, но дерьма стараюсь не употреблять.
>Ну и шрифт задается глобально для консоли. Что такое в данном контексте "reuse window" я не знаю.
reuse window — это когда у тебя одно и то же окно используется для разных файлов. Это как раз то ради чего может быть нужен внешний редактор. Цель этой фичи — избежать большого кол.ва окон когда ты просматриваешь много файлов.
SD>Как минимум встроенный редактор на 99% покрывает мои нужды. Если что-то не хватает, всегда можно настроить запуск внешнего.
Твои — возможно. Мои — давно уже как не покрывает.
SD>Ассоциации можно настроить не только на запуск (Enter), но и на Ctrl-PgDn (вход в файл-архив), на F3, Alt-F3, F4, Alt-F4. Можно выставить глобальные альтернативные вьювер и редактор.
Можно, я в курсе. Только я не про это говорил.
Собственно, видно что ты тотала вобщем то не видел и не пробовал толком, но мнение имеешь
Здравствуйте, пыщьх, Вы писали:
П>Здравствуйте, BlackEric, Вы писали:
П>>>Ну вот, C# — Delphi 4:0. А что нужное есть в Delphi, чего нет в C#?
BE>>1. Работает на голом Win32. П>0.0001% юзкейсов, где это действительно нужно BE>>2. Ручное управление памятью. П>IDisposable
IDisposable не имеет прямого отношения к управлению памятью. Что угодно там писать можно.
Главное — КАК реализовано! Допускается появление "полумертвых" объектов, которые очищены, но не ушли из области видимости,
и на эту чушь надо ветки ставить в каждой реализации интерфейса!
Казалось бы, что мешало сделать базовый класс с дефолтной реализацией — нет, нада интерфейс зачем-то.
Интересный эффект, если при реализации (очередной версии) класса понадобилось добавить поддержку IDisposable (а вдруг возникла необходимость дернуть неуправляемый код)
Это ВО ВСЕХ зависимых приложениях как минимум надо понавтыкать using,
а уж если класс был вложен в другой, то и тому другому классу тоже надо прикрутить IDisposable и тоже в его использовании понавтыкать using.
А если зависимых классов много, совсем весело становится.
То же — в случае отказа от IDisposable.
Итого злостное, корявое нарушение принципов ООП: изменение внутренней реализации влечет переделку пользователей открытого интерфейса класса.
Добавим к этому, что для сборщика мусора вообще нет никаких хинтов в IDisposable,
соответсвенно, сборка мусора возбудится, только когда прилетит ошибка ОС о нехватке свободной памяти или о еще какой ж... в ресурсах.
( Это если я забил и не стал переделывать зависимые приложения или не знал, что где-то в зависимой компоненте вдруг добавили вызов неуправляемого кода (о ужас! всех надо срочно поставить в известность!!!)
Ведь у нас один волшебный IDisposable на все виды ресурсов, да?
Нет специального по сокетам, окнам, временным файлам?
BE>>3. И там где нужны первые 2 пункта гораздо проще в работе чем C++ П>COM/PInvoke
COM/PInvoke проще в работе? Вместо объявления сигнатуры функций писать какую-то муть, чтобы ручками копировать память туда-сюда?
Здравствуйте, hattab, Вы писали:
g>> Это говорит о несостоятельности новых версий. g>> Почему при наличии delphi 2005 и выше, до сих пор на семерке сидят?
H>Если людям нафиг не уперлись ни генерики, ни юникод, ни многие другие плюшки нафиг им куда-то мигрировать?
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, Ikemefula, Вы писали:
I>>А вот найди как плагин, что бы _на_панели_ фара был запущен тотал. Слабо ? CC>Можно и задницей свистнуть, но зачем?
Здравствуйте, wety, Вы писали:
W>Здравствуйте, BlackEric, Вы писали:
W>>>Delphi — это старый добрый Pascal со всеми вытекающими последствиями: W>>>- низкая производительность (хуже .Net 4.0 минимум в 3 раза); BE>>Тесты в студию
W>Хм. Для начала надо придумать как и что тестировать. Есть идеи?
Как: ввод/вывод исходных данных из одних и тех же файлов,
сохранение в выходном файле результата.
Время меряется от момента завершения ввода исходных до момента начала вывода результата.
Сжатие по Хаффману, максимальная повторяющаяся подстрока, триангуляция по Делоне,
обращение матрицы по Гауссу, можно из opensource где-то и посложнее выбрать.
А вообще, есть интересный сайт http://www.spoj.pl
Думаю, статистики на нем достаточно, чтобы сделать правильные выводы...
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> Нету в варианте делфи обработки ошибок, да и кто мешает почти также написать?
H>Да что вы с этими ошибками, сам-то не видишь, что пример демонстрирует совершенно другое?
Тоже самое, только без обработки ошибок
Здравствуйте, hattab, Вы писали:
g>> g>> Я думаю если им объяснить про генерики, то многие очень захотят их использовать, но вот в vcl их применить негде.
g>> H>Генерики вообще полезны лишь в алгоритмических частях, в прочем от них мало пользы.
g>> И где ты такой бред прочитал. g>> Считай ты сказал что "контроль типов полезен только в алгоритмических частях". H>Генерики это не контроль типов
Да ты че?
I>За каким хреном нужно писать код выше вместо I>Application.Documents.Current.SomeObjects I>Можешь сходу сказать ? I>Лично мне не нравится писать десять строчек вместо одной и я называю это "париться", потому что не дай бог забудешь, косяки может понадобиться искать неделями.
Так не пиши, ты в чем проблемы увидел то?
I>>>Без этого стоит раз вызвать примерно такое Application.Documents.CurrentDocument и прога не закроется когда надо. G>>Закроется. Хотя может ты что-то другое имеешь ввиду. I>Я начинаю сомневаться в твоих регалиях
Не сомневайся.
I>Кто по твоему закроет Эксель если счетчи ссылок на него нулю не равен ?
А кто тебе сказал что не равен? Может почитаешь рихтера и узнаешь когда вызываются финализаторы?
ЗЫ. Если че напиши код сам — увидишь что все закрывается.
Здравствуйте, Ikemefula, Вы писали:
I> g>> Это говорит о несостоятельности новых версий. I> g>> Почему при наличии delphi 2005 и выше, до сих пор на семерке сидят?
I> H>Если людям нафиг не уперлись ни генерики, ни юникод, ни многие другие плюшки нафиг им куда-то мигрировать?
I> На пенсию идти.
Здравствуйте, gandjustas, Вы писали:
g> g>> Нету в варианте делфи обработки ошибок, да и кто мешает почти также написать?
g> H>Да что вы с этими ошибками, сам-то не видишь, что пример демонстрирует совершенно другое?
g> Тоже самое, только без обработки ошибок
Ладно, даю подсказку: твой код будет работать медленнее дельфийского в 4 раза (я уже померял ) Так что не рассказывай больше сказок о беспроблемном и могучем .net.
Здравствуйте, gandjustas, Вы писали:
g> g>> g>> Я думаю если им объяснить про генерики, то многие очень захотят их использовать, но вот в vcl их применить негде.
g> g>> H>Генерики вообще полезны лишь в алгоритмических частях, в прочем от них мало пользы.
g> g>> И где ты такой бред прочитал. g> g>> Считай ты сказал что "контроль типов полезен только в алгоритмических частях".
g> H>Генерики это не контроль типов
g> Да ты че?
Здравствуйте, Ikemefula, Вы писали:
CC>>Был плагин который на панели FAR просмотр картинок делал. CC>>Так что можно всё. I>Можно, но не все. Буквально то что я сказал еще ни один плагин не делает
Про неуловимого джо знаешь?
I>>>Нахрена именно внутренний редактор ? Если например редактор нужен все время работы, что делать ? Запускать еще инстанцы фаров ? CC>>Там вообще то между окнами (редактор/просмотр/панели) можно переключаться. И соотвественно редакторов и просмотров может быть много. I>Ога, круто — переключаться между редакторами, когда можно обойтись без этого.
Если у тебя открыто на редактирование 2 редактора то ты в любом случае будешь между ними переключаться. Фокус ввода в винде и всё такое.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, hattab, Вы писали:
CC>> Начнём с того что функции GetWindowsDirectory не существует вовсе. H>Да ладно, понятно же, что он проецируется на W в случае .NET'а. У дельфей в анси версии на A, в юникод на W. Но есть и декларация без спецификатора, для универсальности.
Декларация то фейковая. Реально такой функции нет.
H>По моему, с w2k все же UTF-16.
Суррогаты поддерживает, да. Но в потрохах они понимаются не везде.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, gandjustas, Вы писали:
G>Этот код запускается если че. А тебе стоит посмотреть как работает dllimport
Неужто если не нашёл по указанному имени сам буковку W добавляет?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC> CC>> Начнём с того что функции GetWindowsDirectory не существует вовсе.
CC> H>Да ладно, понятно же, что он проецируется на W в случае .NET'а. У дельфей в анси версии на A, в юникод на W. Но есть и декларация без спецификатора, для универсальности.
CC> Декларация то фейковая. Реально такой функции нет.
Тут, насколько я понимаю, CharSet отвечает за A или W
CC> H>По моему, с w2k все же UTF-16.
CC> Суррогаты поддерживает, да. Но в потрохах они понимаются не везде.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Dzirt2005, Вы писали:
D>>Нет, ну если результат выполнения команды совершенно не интересует, да и вообще правильно ли команда написана, то конечно...
I>Результат выполнения команды нужен крайне редко. У меня вот есть кучка шорткатов, я даже не смотрю, что там, все само работает.
I>Но разумеется, когда создавал шорткаты, то проверял что и как работает.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> g>> Нету в варианте делфи обработки ошибок, да и кто мешает почти также написать?
g>> H>Да что вы с этими ошибками, сам-то не видишь, что пример демонстрирует совершенно другое?
g>> Тоже самое, только без обработки ошибок
H>Ладно, даю подсказку: твой код будет работать медленнее дельфийского в 4 раза (я уже померял ) Так что не рассказывай больше сказок о беспроблемном и могучем .net.
Не смеши мои тапочки. Это не тот код, быстродействием которого имеет смысл мериться. Кроме того в реальном приложении такого кода не будет.
Если мне понадобится перфоманс, я (и многие другие) возьму С, а не делфи.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, gandjustas, Вы писали:
G>>Этот код запускается если че. А тебе стоит посмотреть как работает dllimport CC>Неужто если не нашёл по указанному имени сам буковку W добавляет?
Даже ты догадался, а в MS гораздо больше и гораздо более умные люди работают
Здравствуйте, Head Ache, Вы писали:
HA>Казалось бы, что мешало сделать базовый класс с дефолтной реализацией — нет, нада интерфейс зачем-то.
Ты правда не понимаешь или прикидываешься?
HA>Интересный эффект, если при реализации (очередной версии) класса понадобилось добавить поддержку IDisposable (а вдруг возникла необходимость дернуть неуправляемый код) HA>Это ВО ВСЕХ зависимых приложениях как минимум надо понавтыкать using, HA>а уж если класс был вложен в другой, то и тому другому классу тоже надо прикрутить IDisposable и тоже в его использовании понавтыкать using. HA>А если зависимых классов много, совсем весело становится. HA>То же — в случае отказа от IDisposable. HA>Итого злостное, корявое нарушение принципов ООП: изменение внутренней реализации влечет переделку пользователей открытого интерфейса класса.
Твой вариант?
HA>Добавим к этому, что для сборщика мусора вообще нет никаких хинтов в IDisposable, HA>соответсвенно, сборка мусора возбудится, только когда прилетит ошибка ОС о нехватке свободной памяти или о еще какой ж... в ресурсах.
Какой хинт ты предлагаешь добавить?
Здравствуйте, hattab, Вы писали:
H>Проходили уже. H>
This class represents a string-like object whose value is a mutable sequence of characters.
H>ToString у строки... ну-да, ну-да.
Так ты не то выделил. Основное слово в твоей цитате mutable, а не string.
НС>> И длину указывать не надо, маршаллер об этом сам позаботится. Достаточно просто ToString без параметров. H>Еще и маршалер включается в работу... то-то ганджустас распевался об эффективности .net'а
Снова ты не то померить хочешь. Сколько раз такая функция в среднем вызывается в программах? Я думаю это число гораздо меньше единицы.
А сколько вызывается аллокатор....
Я помню гонял тесты на Turbo Delphi и .NET на выделение-освобождение, результаты не в пользу делфи были
Здравствуйте, hattab, Вы писали:
CC>> H>По моему, с w2k все же UTF-16. CC>> Суррогаты поддерживает, да. Но в потрохах они понимаются не везде. H>Где об этом почитать можно?
В исходниках ядра например.
UTF16 отличается от UCS2 только тем, что UTF16 поддерживает non-BMP диапазон (U+10000 — U+10ffff)и выше а UCS2 только BMP (U+0000 — U+ffff).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, gandjustas, Вы писали:
G>Даже ты догадался,
Я вообще капец какой вумный. Даже череп жмёт, да!
А вот ты видимо не догадался, так как почему то не согласен с очевидными вещами Re[15]: Почему Delphi всё еще жив?!
G>а в MS гораздо больше и гораздо более умные люди работают
Судя по тому, что они понакрутили в области поддержки storage "умность" людей из МС сильно преувеличена.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, gandjustas, Вы писали:
G>>Даже ты догадался, CC>Я вообще капец какой вумный. Даже череп жмёт, да! CC>А вот ты видимо не догадался
Я документацию читал
CC>так как почему то не согласен с очевидными вещами Re[15]: Почему Delphi всё еще жив?!
S>>>> Объект.ПолучитьОбъект().Получить2Объект().Выполнить(); После выполнения данной команды промежуточные объекты удалятся (По месту релиза). А бывают и очнь длинные цепочки. G>>>И что? S>> А то, что накапливаются объекты многие из которых содержат ресурсы, котрые нужно освождать чем раньше тем лучше. G>"чем раньше тем лучше" зачастую некорректное утверждение.
Корректное когда ресурсы заняты, ими нельзя воспользоваться из других приложений. S>>>>>>Плюс в 2009 и дженерики появились. G>>>>>Все бы хорошо, но в .NET они появились на 4 года раньше. Кроме того до сих пор самая используемая версия делфей — 7 S>>>> Но это не значит, что 2009 не существует. Мы же обсуждаем не NET 1.1 G>>>На .NET 1.1 уже никто не пишет, а на Delphi 7 — вполне. S>> Это только говорит о его состоятельности. Хотя честно говоря уж долго он не развивался. G>Это говорит о несостоятельности новых версий. G>Почему при наличии delphi 2005 и выше, до сих пор на семерке сидят?
Delphi 2005 была ориентирована на Net. 2009 уже на натив. C# в Net мощнее поэтому то и развития не получила.
2009 уже развитие натива. Но много ли перешли в Net на 4ку? S>>>> Ну и как Тебе с Голым IDispatch работается через рефлексию? G>>>С dynamic — прекрасно. S>> И давно динамики то появились? G>Ну в VB они и раньше были, в C# только в 4 версии.
Еще VB мне до кучи не хватало. Итак приходится разные макросы писать.
Так что намного проще на Delphi написать.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, Serginio1, Вы писали:
S>> Почему же? Да нет инлайна, но писать очень быстрый код можно легко проверено.
H>Да инлайн есть давно, лет 5 уже как
Спасибо. Что я совсем отстал или забыл . Практики не так много
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, gandjustas, Вы писали:
g> H>Еще и маршалер включается в работу... то-то ганджустас распевался об эффективности .net'а
g> Снова ты не то померить хочешь. Сколько раз такая функция в среднем вызывается в программах? Я думаю это число гораздо меньше единицы.
Это лишь банальный пример, и он свою функцию выполняет, показывая, что "В .NET этого недостатка нету." не более чем миф. По сравнению с дельфей еще как есть.
g> А сколько вызывается аллокатор....
g> Я помню гонял тесты на Turbo Delphi и .NET на выделение-освобождение, результаты не в пользу делфи были
Как раз таки наоборот Ты вспомни топик, где ты мерялся аллокаторами Там .net слил и дельфям и аллокатору от CreatorCray. У меня все ходы записаны
Здравствуйте, CreatorCray, Вы писали:
CC> CC>> H>По моему, с w2k все же UTF-16.
CC> CC>> Суррогаты поддерживает, да. Но в потрохах они понимаются не везде.
CC> H>Где об этом почитать можно?
CC> В исходниках ядра например. CC> UTF16 отличается от UCS2 только тем, что UTF16 поддерживает non-BMP диапазон (U+10000 — U+10ffff)и выше а UCS2 только BMP (U+0000 — U+ffff).
В чем разница между ucs-2 и utf-16 я в курсе Я думал есть где-то дока говорящая о неполной поддержке utf-16 в виндах.
Здравствуйте, gandjustas, Вы писали:
g> g>> g>> Нету в варианте делфи обработки ошибок, да и кто мешает почти также написать?
g> g>> H>Да что вы с этими ошибками, сам-то не видишь, что пример демонстрирует совершенно другое?
g> g>> Тоже самое, только без обработки ошибок
g> H>Ладно, даю подсказку: твой код будет работать медленнее дельфийского в 4 раза (я уже померял ) Так что не рассказывай больше сказок о беспроблемном и могучем .net.
g> Не смеши мои тапочки. Это не тот код, быстродействием которого имеет смысл мериться. Кроме того в реальном приложении такого кода не будет. g> Если мне понадобится перфоманс, я (и многие другие) возьму С, а не делфи.
Здравствуйте, Ikemefula, Вы писали:
I>Ты заметил, что перечисляешь не потребности и даже не юзкейсы, а какие то огрызки ?
Симметрично
I>>>А вот найди как плагин, что бы _на_панели_ фара был запущен тотал. Слабо ? SD>>Про свистнуть жопой CreatorCray уже ответил, разделяю мнение. Т.е. плюс Тотала в том, что его юзерям может понадобиться FAR в панели? Мне Тотал как-то вообще не нужен в панели FAR. I>Это не свистнуть жопой. Это консоль в панели тотала, что бы не надо было дурью маяться. В некоторых случаях очень удобно — получаешь как бы консольное ГУИ приложение, что бы не надо было запускать доп инстанцы всякой дряни. I>Как в тотале, так это свистнуть жопой, а как фича для фара(сonemu), так это круто.
Не, не круто. conemu по мне так очень на любителя.
Просто для FAR фича "гуй в окне" как то не востребована.
Два разных продукта, с двумя разными ЦА.
I>Консольщики такие консольщики I>Фолдинг в консольном редакторе ? Круто, круто Я как бы тоже видел, но дерьма стараюсь не употреблять.
Давай без твоего фирменного говнометания.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>В Дельфи точно так же уперлась, там все строки мутабельные. А вот то что там нет иммутабельной строки, Дельфи совсем не красит.
I>>>Для тотала вагоны плагинов если ты не в курсе. SD>>Вопрос был не достаточно конкретный? Мне не нужны вагоны с плагинами. Я писал о вполне конкретных двух фичах, которые я активно использую.
I>Если тебе нужн делать нечто постоянно, удобно, быстро, то попробуй погуглить. I>А если ты хочешь, что бы Тотал работал точь в точь как Фар то это к доктору. I>Ты заметил, что перечисляешь не потребности и даже не юзкейсы, а какие то огрызки ?
Понимаешь какая штука, изначально я отвечал CreatorCray. Т.е. я просто поделился с ним какие полезняшки есть для облегчения/убыстрения навигации.
Вопрос про Тотал был на тот расчет, что найдется добрая душа, которая расскажет как можно в Тотале так же сделать (напомню: 1. быстрый переход в папку по её псевдониму — "cd:md" переход в мои документы, без отыскивания нужного пункта в выпадающем меню; 2. история просмотров, редактирований, переходов по папкам, в возможностью фильтрации по части pathname). Я не хочу сделать из Тотала FAR, меня интересуют вполне конкретные способы выполнения задач быстрой навигации. Если там что-то реализовано по-другому, но с сохранением функционала, то я ж не против.
Но троллить конечно проще
I>"фичи" которые ты перечислил, есть в тотале "искаропки".
Я и просил подсказать. Лучше конечно со скриншотами, если это не сложно. Я видел историю переходов и закладки лишь в виде выпадающих меню, которые нельзя отфильтровать набрав кусок пути.
SD>>Кстати, какие там есть полезные плагины к Тоталу, кроме плагинов файловой системы, отображателей для Lister'a? I>Если в гугле забанили то помочь конечно сложно. Всего 4 вида плагинов.
Опять же, я не интересовался вагоном плагинов к Тоталу, это и взаправду может выдать Гугль. Меня интересовал личный опыт. Твой опыт. Сложно поделиться? Или ответил лишь бы ответить?
I>Как в тотале, так это свистнуть жопой, а как фича для фара(сonemu), так это круто.
FAR != консоль, Conemu != TotalCmd. Зачем запускать FAR внутри Тотала, если он такой весь из себя удобный? Консоль вполне можно использовать из cmd. Соответственно, Conemu сам по себе не является полноценным приложением, а лишь украшатель интерфейса для консолефобов. Без него FAR на много отзывчивей, особенно, когда нечто вешает весь гуй.
I>Консольщики такие консольщики I>Conemu это сильно для консольщиков, только нахрена нужно, не ясно, если у меня консольных прог то не осталось
Не правильно. Я не фанат консоли. FAR мог бы быть и гуёвым, я б согласился бы им пользоваться. У Тотала просто нет преимуществ для меня, а есть лишь недостатки, которые я уже упоминал. И я не претендую на единственную истину. У каждого свои нужды и привычки. Нет смысла перебираться на то, что тебе менее удобно, или на чем нужный функционал недостижим.
I>Не интересовался. Расскажи, как это делается для Фара ?
Опа, неожиданный разворот В FAR все окошки открываются внутри консоли, это конечно и минус с одной стороны (что нельзя окошки отстыковать от основного окна), но с другой стороны мне такое поведение больше по душе, т.к. отдельноплавающие окна мне очень и очень редко нужны.
I>Они просто табами отображаются, а не тулбаром.
ок
I>Фолдинг в консольном редакторе ? Круто, круто Я как бы тоже видел, но дерьма стараюсь не употреблять.
Ды я тоже не употреблять. Colorer'a и его навигации по файлу хватает с головой. На порядок лучше студии (без VisualAssist).
I>Собственно, видно что ты тотала вобщем то не видел и не пробовал толком, но мнение имеешь
Да, так и есть. Я несколько раз пытался перебраться на Тотал. Но всегда находилась какая-то жопь, из-за которой им было неудобно пользоваться.
И да, я не утверждаю, что я хорошо знаю Тотал. В моем изначальном сообщении до разделителя я описал возможности в FAR, которые я использую и просил знающих подсказать есть ли такое в Тотале. После разделителя я перечислил то, что меня в Тотале не устраивало. Опять же, перед ответом я проверил, не изменилось ли чего в Тоталостане.
Здравствуйте, vdimas, Вы писали:
E__>>Иногда нужно. Но реализация мультиделегата довольно проста, если подумать.
V>Она проста только в системе с GC. А иначе надо думать, кто чем владеет и когда, и не будет ли вызов события отправлен уже мертвому объекту. Весь aggregation в COM плясал именно вокруг этого, и там на счетчиках ссылок не так все тривиально получалось, чтобы избегать взаимного приращения счетчиков, т.е. ненужного лишнего удержания объектов в памяти.
Здравствуйте, gandjustas, Вы писали:
I>>За каким хреном нужно писать код выше вместо I>>Application.Documents.Current.SomeObjects I>>Можешь сходу сказать ? I>>Лично мне не нравится писать десять строчек вместо одной и я называю это "париться", потому что не дай бог забудешь, косяки может понадобиться искать неделями. G>Так не пиши, ты в чем проблемы увидел то?
Повторяю вопрос — в каких случаях надо писать именно так как я показал, а не в одну строчку.
I>>Кто по твоему закроет Эксель если счетчи ссылок на него нулю не равен ? G>А кто тебе сказал что не равен? Может почитаешь рихтера и узнаешь когда вызываются финализаторы?
G>ЗЫ. Если че напиши код сам — увидишь что все закрывается.
Здравствуйте, hattab, Вы писали:
I>> H>Если людям нафиг не уперлись ни генерики, ни юникод, ни многие другие плюшки нафиг им куда-то мигрировать?
I>> На пенсию идти.
H>Они решают свои задачи меньшими средствами
CC>>>Там вообще то между окнами (редактор/просмотр/панели) можно переключаться. И соотвественно редакторов и просмотров может быть много. I>>Ога, круто — переключаться между редакторами, когда можно обойтись без этого. CC>Если у тебя открыто на редактирование 2 редактора то ты в любом случае будешь между ними переключаться. Фокус ввода в винде и всё такое.
Они запросто могут быть видны оба. А в фаре нужно переключаться только для того, что бы посмотреть контент.
Здравствуйте, Феоктистов Александр, Вы писали:
ФА>в однокристалках, си должен побеждать асм, на асме большие проги это гемор, а с++ и подавно, так как они не достаточно большие для монстра с++
О, вы точно хотите поспорить
1. Ручная оптимизация для однокристалок на самом деле в большинстве случаев дает 15-20% выигрыша по скорости и объема проги, кроме того однокристалки довольно просты, там нет конвееров и т.д., поэтому такая оптимизация еще и не слишком сложна.
2. С++ для однокристалок на мой взгляд значительно удобнее Си (хотя многие со мной не согласны ) Например, шаблоны с их компайл-тайм генерацией кода позволяют обренуть региcтры процессора и вместо
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, enji, Вы писали:
E>>Развитость языка — а какие именно возможности языка были бы полезны в этом случае?
НС>К примеру, для работы с СОМ-портом можно использовать Reactive Framework. В Дельфи аналог есть? Для асинхронности все тот же Rx или PLinq. В Дельфи аналог последнего есть?
Гм, а зачем? В дельфи есть компонент, у которого есть события — получен символ, переданы данные и т.д. Компонент полностью изолирует порт. Что у него внутрях — я не знаю, может отдельный поток, может порты завершения...
На его основе работа с портом пишется весьма просто.
Здравствуйте, CreatorCray, Вы писали:
I>>Консольщики такие консольщики I>>Фолдинг в консольном редакторе ? Круто, круто Я как бы тоже видел, но дерьма стараюсь не употреблять. CC>Давай без твоего фирменного говнометания.
Хорошо, давай. Ты употребляешь консольный фолдинг ?
Здравствуйте, std.denis, Вы писали:
SD>Понимаешь какая штука, изначально я отвечал CreatorCray. Т.е. я просто поделился с ним какие полезняшки есть для облегчения/убыстрения навигации.
Ну, допустим.
SD>Вопрос про Тотал был на тот расчет, что найдется добрая душа, которая расскажет как можно в Тотале так же сделать (напомню: 1. быстрый переход в папку по её псевдониму — "cd:md" переход в мои документы, без отыскивания нужного пункта в выпадающем меню; 2. история просмотров, редактирований, переходов по папкам, в возможностью фильтрации по части pathname). Я не хочу сделать из Тотала FAR, меня интересуют вполне конкретные способы выполнения задач быстрой навигации. Если там что-то реализовано по-другому, но с сохранением функционала, то я ж не против.
Людям обычно нужен переход в какую то папку. Тебе почему то нужны псевдонимы
SD>Я и просил подсказать. Лучше конечно со скриншотами, если это не сложно. Я видел историю переходов и закладки лишь в виде выпадающих меню, которые нельзя отфильтровать набрав кусок пути.
Я честно говоря не сильно понимаю зачем это надо — фильтровать по части пути.
I>>Как в тотале, так это свистнуть жопой, а как фича для фара(сonemu), так это круто. SD>FAR != консоль, Conemu != TotalCmd. Зачем запускать FAR внутри Тотала, если он такой весь из себя удобный?
Фар это консоль. Конему это эмулятор консоли. Эмулятор консоли — есть такой плагин для тотала. Так понятно ?
Иногда таки приходится работать и с консолью. Про фар я пошутил, ег действительно незачем запускать в эмуляторе консоли для тотала. Но сама возможность есть.
Просто хотел проверить, куда вы увильнёте
>Консоль вполне можно использовать из cmd. Соответственно, Conemu сам по себе не является полноценным приложением, а лишь украшатель интерфейса для консолефобов. Без него FAR на много отзывчивей, особенно, когда нечто вешает весь гуй.
Не украшатель, а фича которая уменьшает количество лишних окон. Сейчас чуть не все аппликации это умеют — кол.во лишних окон уменьшать.
I>>Не интересовался. Расскажи, как это делается для Фара ? SD>Опа, неожиданный разворот В FAR все окошки открываются внутри консоли, это конечно и минус с одной стороны (что нельзя окошки отстыковать от основного окна), но с другой стороны мне такое поведение больше по душе, т.к. отдельноплавающие окна мне очень и очень редко нужны.
Т.е. выходит фар не умеет то, что ты запросил для тотала, правильно ?
I>>Фолдинг в консольном редакторе ? Круто, круто Я как бы тоже видел, но дерьма стараюсь не употреблять. SD>Ды я тоже не употреблять. Colorer'a и его навигации по файлу хватает с головой. На порядок лучше студии (без VisualAssist).
Ну это ты погорячился. В студии и без ассиста есть вагон сильных фич.
SD>Да, так и есть. Я несколько раз пытался перебраться на Тотал. Но всегда находилась какая-то жопь, из-за которой им было неудобно пользоваться.
Да, представь, некоторым жутко неудобно пересаживаться с ручной коробки передач на автоматическую. А когда люди нашли способ от подсоса отказаться, говорят десятилетия споры не затихали.
SD>И да, я не утверждаю, что я хорошо знаю Тотал. В моем изначальном сообщении до разделителя я описал возможности в FAR, которые я использую и просил знающих подсказать есть ли такое в Тотале. После разделителя я перечислил то, что меня в Тотале не устраивало. Опять же, перед ответом я проверил, не изменилось ли чего в Тоталостане.
Лучше бы ты рассказал, что тебе надо делать по работе, а я бы рассказал как бы я это делал в тотале, если конечно на консоль все не завязано.
Здравствуйте, Ikemefula, Вы писали:
I> I>> H>Если людям нафиг не уперлись ни генерики, ни юникод, ни многие другие плюшки нафиг им куда-то мигрировать?
I> I>> На пенсию идти.
I> H>Они решают свои задачи меньшими средствами
I> И все равно надо идти на пенсию.
Здравствуйте, Ikemefula, Вы писали:
I>>>Консольщики такие консольщики I>>>Фолдинг в консольном редакторе ? Круто, круто Я как бы тоже видел, но дерьма стараюсь не употреблять. CC>>Давай без твоего фирменного говнометания.
I>Хорошо, давай. Ты употребляешь консольный фолдинг ?
Нет. Я пользуюсь файловым менеджером как файловым менеджером.
Код я в файловых менеджерах не пишу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>Людям обычно нужен переход в какую то папку. Тебе почему то нужны псевдонимы
Псевдоним это способ быстро перейти в нужную папку.
При навыке слепой печати данное действие выполняется за доли секунды.
SD>>Я и просил подсказать. Лучше конечно со скриншотами, если это не сложно. Я видел историю переходов и закладки лишь в виде выпадающих меню, которые нельзя отфильтровать набрав кусок пути. I>Я честно говоря не сильно понимаю зачем это надо — фильтровать по части пути.
Если нужных папок реально много — фильтр это просто мегафича.
I>Просто хотел проверить, куда вы увильнёте
Так и пиши: троллил.
I>>>Фолдинг в консольном редакторе ? Круто, круто Я как бы тоже видел, но дерьма стараюсь не употреблять. SD>>Ды я тоже не употреблять. Colorer'a и его навигации по файлу хватает с головой. На порядок лучше студии (без VisualAssist). I>Ну это ты погорячился. В студии и без ассиста есть вагон сильных фич.
Без ассиста студия просто капец какая корявая.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, hattab, Вы писали:
I>> H>Они решают свои задачи меньшими средствами
I>> И все равно надо идти на пенсию.
H>Шашечки? Ехать?
Есть конечно проекты где люди пишут велосипеды "без дженериков" и тд и тд. Как правило это нежелание что либо изучать, т.е. тупо пилят деньги заказчика.
Здравствуйте, Ikemefula, Вы писали:
I> I>> H>Они решают свои задачи меньшими средствами
I> I>> И все равно надо идти на пенсию.
I> H>Шашечки? Ехать?
I> Есть конечно проекты где люди пишут велосипеды "без дженериков" и тд и тд. Как правило это нежелание что либо изучать, т.е. тупо пилят деньги заказчика.
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, gandjustas, Вы писали:
S>>>>> Объект.ПолучитьОбъект().Получить2Объект().Выполнить(); После выполнения данной команды промежуточные объекты удалятся (По месту релиза). А бывают и очнь длинные цепочки. G>>>>И что? S>>> А то, что накапливаются объекты многие из которых содержат ресурсы, котрые нужно освождать чем раньше тем лучше. G>>"чем раньше тем лучше" зачастую некорректное утверждение. S> Корректное когда ресурсы заняты, ими нельзя воспользоваться из других приложений.
Реальные примеры такого есть?
S>>>>>>>Плюс в 2009 и дженерики появились. G>>>>>>Все бы хорошо, но в .NET они появились на 4 года раньше. Кроме того до сих пор самая используемая версия делфей — 7 S>>>>> Но это не значит, что 2009 не существует. Мы же обсуждаем не NET 1.1 G>>>>На .NET 1.1 уже никто не пишет, а на Delphi 7 — вполне. S>>> Это только говорит о его состоятельности. Хотя честно говоря уж долго он не развивался. G>>Это говорит о несостоятельности новых версий. G>>Почему при наличии delphi 2005 и выше, до сих пор на семерке сидят? S> Delphi 2005 была ориентирована на Net. 2009 уже на натив. C# в Net мощнее поэтому то и развития не получила. S>2009 уже развитие натива. Но много ли перешли в Net на 4ку?
Я перешел
S>>>>> Ну и как Тебе с Голым IDispatch работается через рефлексию? G>>>>С dynamic — прекрасно. S>>> И давно динамики то появились? G>>Ну в VB они и раньше были, в C# только в 4 версии. S> Еще VB мне до кучи не хватало. Итак приходится разные макросы писать. S>Так что намного проще на Delphi написать.
А причем тут макросы? VB.NET мало чем отличается от C# и отлично с ним взаимодействует.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> H>Еще и маршалер включается в работу... то-то ганджустас распевался об эффективности .net'а
g>> Снова ты не то померить хочешь. Сколько раз такая функция в среднем вызывается в программах? Я думаю это число гораздо меньше единицы.
H>Это лишь банальный пример, и он свою функцию выполняет, показывая, что "В .NET этого недостатка нету." не более чем миф. По сравнению с дельфей еще как есть.
То есть пример кода, который в реальных приложениях не встречается, а даже если бы встречался то его быстродействие никого бы не интересовало, что-то может доказать?
Я тебе щас столько говна на делфи приведу с таким подходом... Можно начать тупо с возврата объекта из метода и вопроса об управлении временем жизни.
g>> А сколько вызывается аллокатор....
g>> Я помню гонял тесты на Turbo Delphi и .NET на выделение-освобождение, результаты не в пользу делфи были H>Как раз таки наоборот Ты вспомни топик, где ты мерялся алокаторами Там .net слил и дельфям и алокатору от CreatorCray. У меня все ходы записаны
Не уходи от темы, там алокатор делфи слился. А то что написал CreatorCray далеко не стандартный алокатор, далеко не каждый сможет такой написать и он тупо через new не вызывается
Кроме тогос таким аллокатором не вызывается деструктор при освобождении.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, gandjustas, Вы писали:
I>>>За каким хреном нужно писать код выше вместо I>>>Application.Documents.Current.SomeObjects I>>>Можешь сходу сказать ? I>>>Лично мне не нравится писать десять строчек вместо одной и я называю это "париться", потому что не дай бог забудешь, косяки может понадобиться искать неделями. G>>Так не пиши, ты в чем проблемы увидел то?
I>Повторяю вопрос — в каких случаях надо писать именно так как я показал, а не в одну строчку.
Мне — ни в каких, тебе — не знаю.
I>>>Кто по твоему закроет Эксель если счетчи ссылок на него нулю не равен ? G>>А кто тебе сказал что не равен? Может почитаешь рихтера и узнаешь когда вызываются финализаторы?
G>>ЗЫ. Если че напиши код сам — увидишь что все закрывается. I>Писал, потому и сообщаю — не закроется.
Значит не то писал, у меня все закрылось. Может магические плашки в подписи помогли
Здравствуйте, enji, Вы писали:
E>Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>Здравствуйте, enji, Вы писали:
E>>>Развитость языка — а какие именно возможности языка были бы полезны в этом случае?
НС>>К примеру, для работы с СОМ-портом можно использовать Reactive Framework. В Дельфи аналог есть? Для асинхронности все тот же Rx или PLinq. В Дельфи аналог последнего есть?
E>Гм, а зачем? В дельфи есть компонент, у которого есть события — получен символ, переданы данные и т.д. Компонент полностью изолирует порт. Что у него внутрях — я не знаю, может отдельный поток, может порты завершения...
E>На его основе работа с портом пишется весьма просто.
Датыче? напиши-ка прогу, которая читает из порта пакеты, где в первом байте указана длина пакета, а в последующих сам пакет, в конце CRC.
После принятия валидного пакета его надо отправить на обработку некоторой функции, при этом порт должен продолжать принимать данные.
Здравствуйте, gandjustas, Вы писали:
g> H>Это лишь банальный пример, и он свою функцию выполняет, показывая, что "В .NET этого недостатка нету." не более чем миф. По сравнению с дельфей еще как есть.
g> g> То есть пример кода, который в реальных приложениях не встречается, а даже если бы встречался то его быстродействие никого бы не интересовало, что-то может доказать?
Это прямое опровержение твоих слов о каких-то проблемах дельфей при работе со строками. Цитирую тебя дословно:
много проблем возникает со строками, особенно когда надо их передавать и получать из внешних модулей.
И еще одно опровержение о якобе безпроблемности аналогичного в .net:
почему в .NET такие проблемы отсуствуют?
Там и COM и и передача между модулями нормально работает.
Наверное это таки недостаток делфи.
Итого, поздравляю тебя, гражданин, дважды соврамши.
g> Я тебе щас столько говна на делфи приведу с таким подходом... Можно начать тупо с возврата объекта из метода и вопроса об управлении временем жизни.
В делфи управление временем жизни объектов ручное. Я уже в курсе, что ты не осиливаешь.
g> g>> А сколько вызывается аллокатор....
g> g>> Я помню гонял тесты на Turbo Delphi и .NET на выделение-освобождение, результаты не в пользу делфи были
g> H>Как раз таки наоборот Ты вспомни топик, где ты мерялся алокаторами Там .net слил и дельфям и алокатору от CreatorCray. У меня все ходы записаны
g> Не уходи от темы, там алокатор делфи слился. А то что написал CreatorCray далеко не стандартный алокатор, далеко не каждый сможет такой написать и он тупо через new не вызывается g> Кроме тогос таким аллокатором не вызывается деструктор при освобождении.
Здравствуйте, gandjustas, Вы писали:
G>А то что написал CreatorCray далеко не стандартный алокатор,
А что такое стандартный аллокатор? Где определение "стандартности"?
В С++ стандарте алгоритм аллокации не фиксирован. То что по недоразумению называют стандартным аллокатором это реализация аллокатора изготовителем CRT. Как правило те не парятся и вызывают то, что предоставляет для аллокации памяти система.
Замена глобального аллокатора предусмотрена и разрешена.
Более того, можно по кастомному аллокатору вешать хоть на каждый класс.
Т.е. лехко сделать чтоб например new MySuperPuperString (...) выделялся собственным специальным аллокатором.
Ну а там уже дикий простор для творчества.
G>далеко не каждый сможет такой написать
Да в общем то и WinHeap ещё более не каждый осилит (а он посложнее будет).
Но пользуются им миллионы.
И ничего с ними не делается.
G>и он тупо через new не вызывается
4 строки...
...и всё превосходно вызывается.
G>Кроме тогос таким аллокатором не вызывается деструктор при освобождении.
Вызывается, вызывается. Не беспокойся. Глобальный operator delete об этом заботится сам.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> H>Это лишь банальный пример, и он свою функцию выполняет, показывая, что "В .NET этого недостатка нету." не более чем миф. По сравнению с дельфей еще как есть.
g>> g>> То есть пример кода, который в реальных приложениях не встречается, а даже если бы встречался то его быстродействие никого бы не интересовало, что-то может доказать?
H>Это прямое опровержение твоих слов о каких-то проблемах дельфей при работе со строками. Цитирую тебя дословно: H>
много проблем возникает со строками, особенно когда надо их передавать и получать из внешних модулей.
Да ну? Покажешь как на делфи сделать dll с функцией, возвращающей строку, которая будет использоваться другим модулем?
g>> Я тебе щас столько говна на делфи приведу с таким подходом... Можно начать тупо с возврата объекта из метода и вопроса об управлении временем жизни. H>В делфи управление временем жизни объектов ручное.
Не съезжай с темы, как просто вернуть объект из метода? В C++ можно с shared_ptr вывернуться, в языках с GC вообще проблем нет, а в делфи как?
H>Я уже в курсе, что ты не осиливаешь.
Не переживай за меня, я на делфи много писал.
g>> g>> А сколько вызывается аллокатор....
g>> g>> Я помню гонял тесты на Turbo Delphi и .NET на выделение-освобождение, результаты не в пользу делфи были
g>> H>Как раз таки наоборот Ты вспомни топик, где ты мерялся алокаторами Там .net слил и дельфям и алокатору от CreatorCray. У меня все ходы записаны
g>> Не уходи от темы, там алокатор делфи слился. А то что написал CreatorCray далеко не стандартный алокатор, далеко не каждый сможет такой написать и он тупо через new не вызывается g>> Кроме тогос таким аллокатором не вызывается деструктор при освобождении.
H>У тебя с памятью что-то стало
Здравствуйте, gandjustas, Вы писали:
g> H>Это прямое опровержение твоих слов о каких-то проблемах дельфей при работе со строками. Цитирую тебя дословно: g> H>
много проблем возникает со строками, особенно когда надо их передавать и получать из внешних модулей.
g> Да ну? Покажешь как на делфи сделать dll с функцией, возвращающей строку, которая будет использоваться другим модулем?
Легко. Есть несколько способов отличающихся различной степенью сложности: Самый сложный: Использовать общий интерфейс менеджера памяти, типа IMalloc. Одно из стандартных решений старых версий: Использовать внешний менеджер памяти borlndmm.dll Простое решение: Использовать строки BSTR, ими управляет ОС (WideString). Простое решение: Использовать пакеты вместо dll (подходит для любых версий Delphi). Простое решение: Использовать менеджер памяти FastMM, он самостоятельно реализует шаринг (используется в Delphi c версии 2006).
g> g>> Я тебе щас столько говна на делфи приведу с таким подходом... Можно начать тупо с возврата объекта из метода и вопроса об управлении временем жизни.
g> H>В делфи управление временем жизни объектов ручное.
g> Не съезжай с темы, как просто вернуть объект из метода? В C++ можно с shared_ptr вывернуться, в языках с GC вообще проблем нет, а в делфи как?
Как просто вернуть? Вернуть очень просто:
Result := TObject.Create;
Дальше, либо сам заботишься, либо контейнер с передачей прав владения используешь.
g> H>Я уже в курсе, что ты не осиливаешь.
g> Не переживай за меня, я на делфи много писал.
Оно и заметно
g> g>> Не уходи от темы, там алокатор делфи слился. А то что написал CreatorCray далеко не стандартный алокатор, далеко не каждый сможет такой написать и он тупо через new не вызывается g> g>> Кроме тогос таким аллокатором не вызывается деструктор при освобождении.
g> H>У тебя с памятью что-то стало
E>>Гм, а зачем? В дельфи есть компонент, у которого есть события — получен символ, переданы данные и т.д. Компонент полностью изолирует порт. Что у него внутрях — я не знаю, может отдельный поток, может порты завершения...
E>>На его основе работа с портом пишется весьма просто.
G>Датыче? напиши-ка прогу, которая читает из порта пакеты, где в первом байте указана длина пакета, а в последующих сам пакет, в конце CRC. G>После принятия валидного пакета его надо отправить на обработку некоторой функции, при этом порт должен продолжать принимать данные.
G>А потом сравним вариант с Rx на .NET
Хм, а можно сразу пример на дотнете? А то я тут на жабе такие обработчики постоянно пишу, и слабо представляю, как тут что-то автоматизировать. Описания пакетов-то для всех девайсов разные(где-то первый байт длина, где-то два вторых, а первый маркер, где-то маркер конца без длины, CRC у всех разные и часто доморощенные(упаси судьба вас писать драйвер для китайского девайса, дока к которому автопереведена на английский, потом так же на русский, и оригинала нет), частенько приходится страдать анализом дампа с тестовой проги, так как доки вообще нет, часто вообще просто raw байты без маркеров и структуры, вобщем весело).
Поток на запись, поток на чтение, кастомная валидация и составление экземпляра класса "ответ", который уже выше отдается. Коммуникация с портом — тупо исходящий и входящий потоки. Как тут что-то изменить, я представляю слабо.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, CreatorCray, Вы писали:
G>>А то что написал CreatorCray далеко не стандартный алокатор, CC>А что такое стандартный аллокатор? Где определение "стандартности"? CC>В С++ стандарте алгоритм аллокации не фиксирован. То что по недоразумению называют стандартным аллокатором это реализация аллокатора изготовителем CRT. Как правило те не парятся и вызывают то, что предоставляет для аллокации памяти система. CC>Замена глобального аллокатора предусмотрена и разрешена. CC>Более того, можно по кастомному аллокатору вешать хоть на каждый класс. CC>Т.е. лехко сделать чтоб например new MySuperPuperString (...) выделялся собственным специальным аллокатором. CC>Ну а там уже дикий простор для творчества.
А уж как туда кто-то с кривыми руками залезет — простор для фантазии о результатах этого просто фантастический.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Eugeny__, Вы писали:
E__>Здравствуйте, gandjustas, Вы писали:
E>>>Гм, а зачем? В дельфи есть компонент, у которого есть события — получен символ, переданы данные и т.д. Компонент полностью изолирует порт. Что у него внутрях — я не знаю, может отдельный поток, может порты завершения...
E>>>На его основе работа с портом пишется весьма просто.
G>>Датыче? напиши-ка прогу, которая читает из порта пакеты, где в первом байте указана длина пакета, а в последующих сам пакет, в конце CRC. G>>После принятия валидного пакета его надо отправить на обработку некоторой функции, при этом порт должен продолжать принимать данные.
G>>А потом сравним вариант с Rx на .NET
E__>Хм, а можно сразу пример на дотнете?
Потом, чтобы интригу не портить.
E__>А то я тут на жабе такие обработчики постоянно пишу, и слабо представляю, как тут что-то автоматизировать. Описания пакетов-то для всех девайсов разные(где-то первый байт длина, где-то два вторых, а первый маркер, где-то маркер конца без длины, CRC у всех разные и часто доморощенные(упаси судьба вас писать драйвер для китайского девайса, дока к которому автопереведена на английский, потом так же на русский, и оригинала нет), частенько приходится страдать анализом дампа с тестовой проги, так как доки вообще нет, часто вообще просто raw байты без маркеров и структуры, вобщем весело).
Соболезную.
E__>Поток на запись, поток на чтение, кастомная валидация и составление экземпляра класса "ответ", который уже выше отдается. Коммуникация с портом — тупо исходящий и входящий потоки. Как тут что-то изменить, я представляю слабо.
Например сделать всю эту хукню асинхронной.
Здравствуйте, gandjustas, Вы писали:
E__>>Хм, а можно сразу пример на дотнете? G>Потом, чтобы интригу не портить.
Ну, подождем. Впрочем, мне только для интереса — шарп недоступен, так как 98% клиентов, где крутится приложение(а это тысячи терминалов по всей стране), на Генту, и некоторая часть на Винде, причем паленой(полноценную поддержку таких мы не осуществляем). Кстати, прога 100% pure java, и я не хочу встраивать никакие нативные компоненты.
E__>>А то я тут на жабе такие обработчики постоянно пишу, и слабо представляю, как тут что-то автоматизировать. Описания пакетов-то для всех девайсов разные(где-то первый байт длина, где-то два вторых, а первый маркер, где-то маркер конца без длины, CRC у всех разные и часто доморощенные(упаси судьба вас писать драйвер для китайского девайса, дока к которому автопереведена на английский, потом так же на русский, и оригинала нет), частенько приходится страдать анализом дампа с тестовой проги, так как доки вообще нет, часто вообще просто raw байты без маркеров и структуры, вобщем весело). G>Соболезную.
Чему именно? Процессу разработки, или тому, что эта задача могла бы решаться каким-то магическим способом проще?
E__>>Поток на запись, поток на чтение, кастомная валидация и составление экземпляра класса "ответ", который уже выше отдается. Коммуникация с портом — тупо исходящий и входящий потоки. Как тут что-то изменить, я представляю слабо. G>Например сделать всю эту хукню асинхронной.
В каком плане? И так все асинхронно донельзя. Если что, потоки(данных) ввода-вывода также надстройка(по одному потоку(который Thread) на поток(данных) со свои буфером), и они позволяют драйверу не блокироваться на чтении/записи.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, hattab, Вы писали:
E>> А уж как туда кто-то с кривыми руками залезет — простор для фантазии о результатах этого просто фантастический.
H>Ну дык, спички детям не игрушка
Ну да. Я вот вроде не совсем ребенок, но не полез бы в эту область(хоть и понимаю вроде работу с памятью вручную, но опыта нет) без вдумчивого чтения доков по теме. При этом у меня даже есть один проект на си, embedded, но там нет вообще ни одной операции выделения динамической памяти. У меня было 64К памяти, которая вся под стек, и я просто никогда не возвращал в функциях локальные объекты. Просто и ненавязчиво. Я просто считал размеры выделяемых структур(дабы не вылезти за пределы), некоторые пришлось пооптимизировать — и вуаля, работает как часы. Да, можете считать, что я "ниасилил" С++, но на проект с нуля у меня был месяц, и я решил пройти самым простым путем — времени на осиливание плюсов у меня просто не было, а учитывая привычки managed разработки, я бы напортачил порядочно, тупо забывая, что сборщика-то нету.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Eugeny__, Вы писали:
E> E>> А уж как туда кто-то с кривыми руками залезет — простор для фантазии о результатах этого просто фантастический.
E> H>Ну дык, спички детям не игрушка
E> Ну да. Я вот вроде не совсем ребенок, но не полез бы в эту область(хоть и понимаю вроде работу с памятью вручную, но опыта нет) без вдумчивого чтения доков по теме. При этом у меня даже есть один проект на си, embedded, но там нет вообще ни одной операции выделения динамической памяти. У меня было 64К памяти, которая вся под стек, и я просто никогда не возвращал в функциях локальные объекты. Просто и ненавязчиво. Я просто считал размеры выделяемых структур(дабы не вылезти за пределы), некоторые пришлось пооптимизировать — и вуаля, работает как часы. Да, можете считать, что я "ниасилил" С++, но на проект с нуля у меня был месяц, и я решил пройти самым простым путем — времени на осиливание плюсов у меня просто не было, а учитывая привычки managed разработки, я бы напортачил порядочно, тупо забывая, что сборщика-то нету.
Ну-ну, не стоит мои слова на себя проецировать Я же говорю о вообще
Здравствуйте, Eugeny__, Вы писали:
E__>>>А то я тут на жабе такие обработчики постоянно пишу, и слабо представляю, как тут что-то автоматизировать. Описания пакетов-то для всех девайсов разные(где-то первый байт длина, где-то два вторых, а первый маркер, где-то маркер конца без длины, CRC у всех разные и часто доморощенные(упаси судьба вас писать драйвер для китайского девайса, дока к которому автопереведена на английский, потом так же на русский, и оригинала нет), частенько приходится страдать анализом дампа с тестовой проги, так как доки вообще нет, часто вообще просто raw байты без маркеров и структуры, вобщем весело). G>>Соболезную.
E__>Чему именно? Процессу разработки, или тому, что эта задача могла бы решаться каким-то магическим способом проще?
Вполне может решаться проще. http://code.msdn.microsoft.com/RxParsers
вот так например
E__>>>Поток на запись, поток на чтение, кастомная валидация и составление экземпляра класса "ответ", который уже выше отдается. Коммуникация с портом — тупо исходящий и входящий потоки. Как тут что-то изменить, я представляю слабо. G>>Например сделать всю эту хукню асинхронной.
E__>В каком плане? И так все асинхронно донельзя. Если что, потоки(данных) ввода-вывода также надстройка(по одному потоку(который Thread) на поток(данных) со свои буфером), и они позволяют драйверу не блокироваться на чтении/записи.
Здравствуйте, Eugeny__, Вы писали:
E__>А уж как туда кто-то с кривыми руками залезет — простор для фантазии о результатах этого просто фантастический.
И?
Что сказать то хотел по теме?
Еды не будет, иди к другим.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Eugeny__, Вы писали:
E__>Ну да. Я вот вроде не совсем ребенок, но не полез бы в эту область(хоть и понимаю вроде работу с памятью вручную, но опыта нет) без вдумчивого чтения доков по теме.
О чём ты дарагой?
Писать каждому свои собственные аллокаторы вовсе не обязательно. Умные дяди уже понаписали разных — бери да пользуйся.
Подключить библиотеку к проекту много ума не надо.
E__> При этом у меня даже есть один проект на си, embedded, но там нет вообще ни одной операции выделения динамической памяти. У меня было 64К памяти, которая вся под стек, и я просто никогда не возвращал в функциях локальные объекты. Просто и ненавязчиво. Я просто считал размеры выделяемых структур(дабы не вылезти за пределы), некоторые пришлось пооптимизировать — и вуаля, работает как часы. Да, можете считать, что я "ниасилил" С++, но на проект с нуля у меня был месяц, и я решил пройти самым простым путем — времени на осиливание плюсов у меня просто не было, а учитывая привычки managed разработки, я бы напортачил порядочно, тупо забывая, что сборщика-то нету.
И что ты этим хотел сказать?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, hattab, Вы писали:
E>> E>> А уж как туда кто-то с кривыми руками залезет — простор для фантазии о результатах этого просто фантастический.
E>> H>Ну дык, спички детям не игрушка
E>> Ну да. Я вот вроде не совсем ребенок, но не полез бы в эту область(хоть и понимаю вроде работу с памятью вручную, но опыта нет) без вдумчивого чтения доков по теме. При этом у меня даже есть один проект на си, embedded, но там нет вообще ни одной операции выделения динамической памяти. У меня было 64К памяти, которая вся под стек, и я просто никогда не возвращал в функциях локальные объекты. Просто и ненавязчиво. Я просто считал размеры выделяемых структур(дабы не вылезти за пределы), некоторые пришлось пооптимизировать — и вуаля, работает как часы. Да, можете считать, что я "ниасилил" С++, но на проект с нуля у меня был месяц, и я решил пройти самым простым путем — времени на осиливание плюсов у меня просто не было, а учитывая привычки managed разработки, я бы напортачил порядочно, тупо забывая, что сборщика-то нету.
H>Ну-ну, не стоит мои слова на себя проецировать Я же говорю о вообще
Я как-то не испытываю проблем в проецировании на себя. Просто если я понимаю, что не смогу осилить определенную технологию на нормальном уровне за нужное время, то я пытаюсь решить задачу более простым и безопасным способом. И не понимаю тех, кто в те же плюсы, или в аллокаторы(и вообще в ручное управление памятью, или вообще в любую потенциально небезопасную область, даже не обязательно в программировании) лезет без должной подготовки.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, gandjustas, Вы писали:
I>>Повторяю вопрос — в каких случаях надо писать именно так как я показал, а не в одну строчку. G>Мне — ни в каких, тебе — не знаю.
Это говорит только о твоем опыте.
G>>>ЗЫ. Если че напиши код сам — увидишь что все закрывается. I>>Писал, потому и сообщаю — не закроется. G>Значит не то писал, у меня все закрылось. Может магические плашки в подписи помогли
Здравствуйте, CreatorCray, Вы писали:
I>>Хорошо, давай. Ты употребляешь консольный фолдинг ? CC>Нет. Я пользуюсь файловым менеджером как файловым менеджером. CC>Код я в файловых менеджерах не пишу.
Код необязательно писать. В файловом менедере приходится разныефайлы смотреть и для больших файлов очен полезен как фолдинг так и зум.
В фаре, очевидно, ничего этого нет. Стало быть редактор в топку.Примерно так же и со всеми остальными фичами дела обстоят.
Здравствуйте, gandjustas, Вы писали:
E__>>>>А то я тут на жабе такие обработчики постоянно пишу, и слабо представляю, как тут что-то автоматизировать. Описания пакетов-то для всех девайсов разные(где-то первый байт длина, где-то два вторых, а первый маркер, где-то маркер конца без длины, CRC у всех разные и часто доморощенные(упаси судьба вас писать драйвер для китайского девайса, дока к которому автопереведена на английский, потом так же на русский, и оригинала нет), частенько приходится страдать анализом дампа с тестовой проги, так как доки вообще нет, часто вообще просто raw байты без маркеров и структуры, вобщем весело). G>>>Соболезную.
E__>>Чему именно? Процессу разработки, или тому, что эта задача могла бы решаться каким-то магическим способом проще? G>Вполне может решаться проще. G>http://code.msdn.microsoft.com/RxParsers G>вот так например
А, у меня нечто подобное уже написано. Руками, но Жаба же. Да и лет проекту порядком, когда там эти парсеры появились?
Ну и да, Линух необходим. Это условие обязательно. Мы немало дилеров перетянули именно из-за линуха, и терять это преимущество бессмысленно. Почитателей Виндов в терминальном бизнесе все меньше — они уже горя нахлебались(ага, сиськи-письки на экране терминала оплаты, и жесточайший счет от оператора, через который они в инет ходят), некоторые месяцами ждут, пока я к их девайсу драйвер напишу(но их много, а я один), звонят ежедневно.
E__>>>>Поток на запись, поток на чтение, кастомная валидация и составление экземпляра класса "ответ", который уже выше отдается. Коммуникация с портом — тупо исходящий и входящий потоки. Как тут что-то изменить, я представляю слабо. G>>>Например сделать всю эту хукню асинхронной.
E__>>В каком плане? И так все асинхронно донельзя. Если что, потоки(данных) ввода-вывода также надстройка(по одному потоку(который Thread) на поток(данных) со свои буфером), и они позволяют драйверу не блокироваться на чтении/записи.
G>Ну вот выделенное — *опа.
Почему?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, CreatorCray, Вы писали:
CC>Псевдоним это способ быстро перейти в нужную папку. CC>При навыке слепой печати данное действие выполняется за доли секунды.
Качественный редактор за день экономит времени на порядок больше, чем ты своими долями секунды за год.
I>>Я честно говоря не сильно понимаю зачем это надо — фильтровать по части пути. CC>Если нужных папок реально много — фильтр это просто мегафича.
А что ты делаешь с этими папками ?
SD>>>Ды я тоже не употреблять. Colorer'a и его навигации по файлу хватает с головой. На порядок лучше студии (без VisualAssist). I>>Ну это ты погорячился. В студии и без ассиста есть вагон сильных фич. CC>Без ассиста студия просто капец какая корявая.
Корявая. Зато посильнее многих редакторов в т.ч. колорера.
Здравствуйте, CreatorCray, Вы писали:
E__>>А уж как туда кто-то с кривыми руками залезет — простор для фантазии о результатах этого просто фантастический. CC>И? CC>Что сказать то хотел по теме? CC>Еды не будет, иди к другим.
То, что в манагед не будет стольких восможностей прострелить ногу себе.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
SD>>Вопрос про Тотал был на тот расчет, что найдется добрая душа, которая расскажет как можно в Тотале так же сделать (напомню: 1. быстрый переход в папку по её псевдониму — "cd:md" переход в мои документы, без отыскивания нужного пункта в выпадающем меню; 2. история просмотров, редактирований, переходов по папкам, в возможностью фильтрации по части pathname). Я не хочу сделать из Тотала FAR, меня интересуют вполне конкретные способы выполнения задач быстрой навигации. Если там что-то реализовано по-другому, но с сохранением функционала, то я ж не против. I>Людям обычно нужен переход в какую то папку. Тебе почему то нужны псевдонимы
Не совсем так. Мне тоже нужен переход в определенную папку. Еще разок попытаюсь достучаться до твоего сознания.
В FAR можно сделать через сочетания кнопок (RCtrl+0, +1, ...), но цифры — безлики, что снижает удобство запоминания. Другой вариант — через меню (так, как сделано в Тотале по Ctrl-D). Но тут неудобно, что для перехода нужно пробежаться глазами по меню и выявить нужную папку.
Вариант с псевдонимами хорош тем, что эти псевдонимы осмысленные и при продолжительном использовании набиваются автоматом за мгновение (сравним RCtrl+1 и "cd:md" для перехода в "My Documents"; RCtrl+2 и "cd:sys32" для перехода в "C:\WINDOWS\SYSTEM32"; RCtrl+3 и "cd:wrk" для перехода в каталог с проектом, над которым работаешь в данный момент).
Кстати, а есть история просмотров и редактирований в Тотале? Не нашел с полпинка.
SD>>Я и просил подсказать. Лучше конечно со скриншотами, если это не сложно. Я видел историю переходов и закладки лишь в виде выпадающих меню, которые нельзя отфильтровать набрав кусок пути. I>Я честно говоря не сильно понимаю зачем это надо — фильтровать по части пути.
Удобство. Например я периодически (раз в месяц или реже) редактирую etc\hosts. Вместо того, чтобы искать его руками, я просто открываю историю просмотров и набираю "hosts", на что остаются 1-2 элемента. С учетом того, что история может достигать 10000 элементов без особых напрягов при её просмотре, это очень и очень удобно. То же самое и с путями. Есть, например, папка в рабочем проекте — "...\wrk\trunk\modules\network\", она есть как в trunk, так и в тегах [например, "...\wrk\tags\modded\modules\network\"]. Папка такая, ничем не примечательная, нет резона на неё вешать отдельную закладку, тем более пачку закладок на разные локации этой папки. После того, как я побывал в этих папках, мне достаточно набрать "network" или "wrk*network" и в истории переходов останутся лишь эти, нужные мне, папки и я легко могу переходить между транком и тегами. Может сумбурно объяснил, но что-то типа такого
>>Консоль вполне можно использовать из cmd. Соответственно, Conemu сам по себе не является полноценным приложением, а лишь украшатель интерфейса для консолефобов. Без него FAR на много отзывчивей, особенно, когда нечто вешает весь гуй. I>Не украшатель, а фича которая уменьшает количество лишних окон. Сейчас чуть не все аппликации это умеют — кол.во лишних окон уменьшать.
Кроме Conemu можно использовать Conman для уменьшения количества окон, это уже чисто консольная штука. А Conemu ИМХО таки украшатель, ну с дополнительными плюшками, ага
I>>>Не интересовался. Расскажи, как это делается для Фара ? SD>>Опа, неожиданный разворот В FAR все окошки открываются внутри консоли, это конечно и минус с одной стороны (что нельзя окошки отстыковать от основного окна), но с другой стороны мне такое поведение больше по душе, т.к. отдельноплавающие окна мне очень и очень редко нужны. I>Т.е. выходит фар не умеет то, что ты запросил для тотала, правильно ?
Брр. Мне нужно просто, чтобы окошки не разбредались по десктопу, а все были внутри одного окна. Что-то подобное есть во Frigate. Правда что-то в нем мне тоже не понравилось Щас уже не помню совсем, к тому же проект вроде больше не развивается. И вроде не было возможности отстыковки окошка.
I>Ну это ты погорячился. В студии и без ассиста есть вагон сильных фич.
Ок, хочу вот быстро перейти к методу введя лишь кусок названия, не с начала. Почему-то парни в Майкрософт это обошли стороной =\ Или получить список методов в файле с фильтрацией. ClassView не совсем то — ищет сразу в куче мест, срабатывает лишь после нажатия Enter. Может и вагон сильных фич, но многие простые фичи по навигации без сторонних аддонов не реализуются.
SD>>Да, так и есть. Я несколько раз пытался перебраться на Тотал. Но всегда находилась какая-то жопь, из-за которой им было неудобно пользоваться. I>Да, представь, некоторым жутко неудобно пересаживаться с ручной коробки передач на автоматическую. А когда люди нашли способ от подсоса отказаться, говорят десятилетия споры не затихали.
Сравнение ни разу не корректное. Возможностей для автоматики в FAR, имхо, если не больше, то столько же. В т.ч. за счет собственной реализации UI. Скорее лучше сравнить обычный автомобиль и такой же только с розовым проблесковым маячком на крыше и гирляндой по периметру
I>Лучше бы ты рассказал, что тебе надо делать по работе, а я бы рассказал как бы я это делал в тотале, если конечно на консоль все не завязано.
Хех. А это приятно — когда с троллинга переходят ко вполне разумным и, не побоюсь этого слова, добрым фразам (っ^◡^)っ
В начале сообщения я еще раз попытался донести что мне нужно. Ничего сверхестественного: некоторые плюшечки для быстрой навигации по папкам + истории открытых (и на просмотр, и на редактирование) файлов и папок, опять же с фильтрацией этого списка по маске.
Здравствуйте, hattab, Вы писали:
H>Да ладно, понятно же, что он проецируется на W в случае .NET'а.
Не совсем так. На W проецируется, если операционка из NT семейства. На 9Х вызывается А версия. Это для явного указания CharSet.Auto, как в примере. По умолчанию C# использует А версию.
CC>>Псевдоним это способ быстро перейти в нужную папку. CC>>При навыке слепой печати данное действие выполняется за доли секунды. I>Качественный редактор за день экономит времени на порядок больше, чем ты своими долями секунды за год.
речь не о редакторе ведь
I>>>Я честно говоря не сильно понимаю зачем это надо — фильтровать по части пути. CC>>Если нужных папок реально много — фильтр это просто мегафича. I>А что ты делаешь с этими папками ?
Игра такая "перейди скорее в папку" Но ведь достаточно обычная штука — часто бывает нужно вернуться в папку с которой работал, и которая не в закладках, потому как нет в этом нужды. А с момента последней работы с ней прошло достаточно времени, чтобы история переходов засралась (в Тотале ведь история весьма короткая, пунктов 30, на вскидку). С фильтром достаточно набрать небольшой отрывок названия папки. Это намного быстрее, чем "идти" до папки вручную.
I>Корявая. Зато посильнее многих редакторов в т.ч. колорера.
Колорер не редактор >__<
Здравствуйте, Ikemefula, Вы писали:
CC>>Псевдоним это способ быстро перейти в нужную папку. CC>>При навыке слепой печати данное действие выполняется за доли секунды. I>Качественный редактор за день экономит времени на порядок больше, чем ты своими долями секунды за год.
Ну дык T9 на iphone не позволяет 10 пальцами печатать. Приходится себя убеждать что время экономитcя?
Здравствуйте, Eugeny__, Вы писали:
E__>>>А уж как туда кто-то с кривыми руками залезет — простор для фантазии о результатах этого просто фантастический. CC>>И? CC>>Что сказать то хотел по теме? CC>>Еды не будет, иди к другим.
E__>То, что в манагед не будет стольких восможностей прострелить ногу себе.
Да у нас и так проблем нет.
Все кто пулял себе по ногам уже на манагед.
А мы понимаем что мы делаем.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
CC>>Псевдоним это способ быстро перейти в нужную папку. CC>>При навыке слепой печати данное действие выполняется за доли секунды. I>Качественный редактор за день экономит времени на порядок больше, чем ты своими долями секунды за год.
Как качественный редактор поможет быстро перейти в нужную папку?
Что бы ты ни курил — бросай срочно!
I>>>Я честно говоря не сильно понимаю зачем это надо — фильтровать по части пути. CC>>Если нужных папок реально много — фильтр это просто мегафича. I>А что ты делаешь с этими папками ?
Храню в них данные.
SD>>>>Ды я тоже не употреблять. Colorer'a и его навигации по файлу хватает с головой. На порядок лучше студии (без VisualAssist). I>>>Ну это ты погорячился. В студии и без ассиста есть вагон сильных фич. CC>>Без ассиста студия просто капец какая корявая. I>Корявая. Зато посильнее многих редакторов в т.ч. колорера.
И?
Я вроде как бы не спорил, что писать в студии тот код, для которого она предназначена — наилучший вариант.
Если в ней писать на perl то по подсветке уже проигрывает а остальные фичи превращаются в тыкву.
Что ты сказать то хотел?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>Код необязательно писать. В файловом менедере приходится разныефайлы смотреть и для больших файлов очен полезен как фолдинг так и зум.
Зум для текстовых файлов мягко говоря сомнительная фича. Или я под зумом что то отличное от тебя понимаю.
Фолдинг для всех языков не сделаешь. А сколь либо серьёзно смотреть исходники в файловом менеджере — сомнительная идея. Вкратце взглянуть — да, сойдёт. По нормальному — надо ассист или аналоги.
I>В фаре, очевидно, ничего этого нет. Стало быть редактор в топку.Примерно так же и со всеми остальными фичами дела обстоят.
Вывод поспешный, притянутый за уши и соответственно в корне неверный.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, Head Ache, Вы писали:
HA>>Казалось бы, что мешало сделать базовый класс с дефолтной реализацией — нет, нада интерфейс зачем-то. MM>Ты правда не понимаешь или прикидываешься?
HA>>Интересный эффект, если при реализации (очередной версии) класса понадобилось добавить поддержку IDisposable (а вдруг возникла необходимость дернуть неуправляемый код) HA>>Это ВО ВСЕХ зависимых приложениях как минимум надо понавтыкать using, HA>>а уж если класс был вложен в другой, то и тому другому классу тоже надо прикрутить IDisposable и тоже в его использовании понавтыкать using. HA>>А если зависимых классов много, совсем весело становится. HA>>То же — в случае отказа от IDisposable. HA>>Итого злостное, корявое нарушение принципов ООП: изменение внутренней реализации влечет переделку пользователей открытого интерфейса класса. MM>Твой вариант?
Вариант (не мой, все им давно пользуются) — просто наличие в языке нормальных конструкторов и деструкторов.
Это настолько же необходимый элемент языка, как и условные операторы, циклы и т.д.
Почему в мс решили, что там ничего не нужно писать кроме освобождения ресурсов?
Ведь никому не приходит в голову делать интерфейсы Iif, Ifor и тд?
HA>>Добавим к этому, что для сборщика мусора вообще нет никаких хинтов в IDisposable, HA>>соответсвенно, сборка мусора возбудится, только когда прилетит ошибка ОС о нехватке свободной памяти или о еще какой ж... в ресурсах. MM>Какой хинт ты предлагаешь добавить?
Я уже давно смирился
Для работы с неуправляемыми длл пишу более геморный вариант с try/finally, не пользуюсь IDisposable
Ну нельзя сделать нормальную обертку — ну и черт с ним.
Я имею в виду примерно такой интерфейс
Работа с этим интерфейсом изолируется в пределах одного класса, снаружи видно только более высокоуровневые функции.
При переходе от неуправляемой длл к управляемой и наоборот достаточно заменить длл вместе с управляющим классом.
Это дает меньшую функциональность, однако на мои варианты использования ее хватает.
Здравствуйте, Eugeny__, Вы писали:
E__>Здравствуйте, gandjustas, Вы писали:
E__>>>>>А то я тут на жабе такие обработчики постоянно пишу, и слабо представляю, как тут что-то автоматизировать. Описания пакетов-то для всех девайсов разные(где-то первый байт длина, где-то два вторых, а первый маркер, где-то маркер конца без длины, CRC у всех разные и часто доморощенные(упаси судьба вас писать драйвер для китайского девайса, дока к которому автопереведена на английский, потом так же на русский, и оригинала нет), частенько приходится страдать анализом дампа с тестовой проги, так как доки вообще нет, часто вообще просто raw байты без маркеров и структуры, вобщем весело). G>>>>Соболезную.
E__>>>Чему именно? Процессу разработки, или тому, что эта задача могла бы решаться каким-то магическим способом проще? G>>Вполне может решаться проще. G>>http://code.msdn.microsoft.com/RxParsers G>>вот так например
E__>А, у меня нечто подобное уже написано. Руками, но Жаба же. Да и лет проекту порядком, когда там эти парсеры появились?
Ну Linq в жабе все равно нет и так красиво не выйдет.
E__>Ну и да, Линух необходим. Это условие обязательно. Мы немало дилеров перетянули именно из-за линуха, и терять это преимущество бессмысленно. Почитателей Виндов в терминальном бизнесе все меньше — они уже горя нахлебались(ага, сиськи-письки на экране терминала оплаты, и жесточайший счет от оператора, через который они в инет ходят), некоторые месяцами ждут, пока я к их девайсу драйвер напишу(но их много, а я один), звонят ежедневно.
Есть Mono, я на нем Rx не пробовал, но нету причин ему там не работать.
E__>>>>>Поток на запись, поток на чтение, кастомная валидация и составление экземпляра класса "ответ", который уже выше отдается. Коммуникация с портом — тупо исходящий и входящий потоки. Как тут что-то изменить, я представляю слабо. G>>>>Например сделать всю эту хукню асинхронной.
E__>>>В каком плане? И так все асинхронно донельзя. Если что, потоки(данных) ввода-вывода также надстройка(по одному потоку(который Thread) на поток(данных) со свои буфером), и они позволяют драйверу не блокироваться на чтении/записи.
G>>Ну вот выделенное — *опа.
E__>Почему?
Потому что не масштабируемо.
Здравствуйте, std.denis, Вы писали:
CC>>>Псевдоним это способ быстро перейти в нужную папку. CC>>>При навыке слепой печати данное действие выполняется за доли секунды. I>>Качественный редактор за день экономит времени на порядок больше, чем ты своими долями секунды за год. SD>речь не о редакторе ведь
Я тоже не о редакторе, а об экономии времени. А редактор это посто для сравнения.
I>>А что ты делаешь с этими папками ? SD>Игра такая "перейди скорее в папку" Но ведь достаточно обычная штука — часто бывает нужно вернуться в папку с которой работал, и которая не в закладках, потому как нет в этом нужды. А с момента последней работы с ней прошло достаточно времени, чтобы история переходов засралась (в Тотале ведь история весьма короткая, пунктов 30, на вскидку). С фильтром достаточно набрать небольшой отрывок названия папки. Это намного быстрее, чем "идти" до папки вручную.
Бывает надо. Наиболее часто используемые папки забиты в меню, туда я мышом лазаю.
На клавиатуре я вообще не люблю набирать чтото, кроме текста, паролей и тд.
I>>Корявая. Зато посильнее многих редакторов в т.ч. колорера. SD>Колорер не редактор >__<
Здравствуйте, vladimir.vladimirovich, Вы писали:
CC>>>При навыке слепой печати данное действие выполняется за доли секунды. I>>Качественный редактор за день экономит времени на порядок больше, чем ты своими долями секунды за год.
VV>Ну дык T9 на iphone не позволяет 10 пальцами печатать. Приходится себя убеждать что время экономитcя?
Интересный переход — от фара и тотала к Т9 на иФоне
Здравствуйте, CreatorCray, Вы писали:
I>>Качественный редактор за день экономит времени на порядок больше, чем ты своими долями секунды за год. CC>Как качественный редактор поможет быстро перейти в нужную папку?
Для чего тебе экономить доли секунды ?
Ну сэкономишь ты секунды за день, минуты за год своими переходами, что с того ?
Один толковый редактор вместо того что в фаре сэкономит на порядки бОльше.
CC>>>Если нужных папок реально много — фильтр это просто мегафича. I>>А что ты делаешь с этими папками ? CC>Храню в них данные.
Т.е. фильтр тебе нужен для того, что бы тупо переходить по папкам безо всякой цели.
Весомая причина — экономить время на бесцельные переходы
зум. CC>Зум для текстовых файлов мягко говоря сомнительная фича. Или я под зумом что то отличное от тебя понимаю.
Ну есть другой вариант — монитор растягивать, что бы целый блок вместить на один экран.
CC>Фолдинг для всех языков не сделаешь. А сколь либо серьёзно смотреть исходники в файловом менеджере — сомнительная идея. Вкратце взглянуть — да, сойдёт. По нормальному — надо ассист или аналоги.
Конечно вкратце. Довольно часто приходится, особенно когда приходится разгребать самые разные файлы.
Здравствуйте, Ikemefula, Вы писали:
I>зум. CC>>Зум для текстовых файлов мягко говоря сомнительная фича. Или я под зумом что то отличное от тебя понимаю. I>Ну есть другой вариант — монитор растягивать, что бы целый блок вместить на один экран.
Зум предполагает уменьшение шрифта для увеличения колва строк.
Если шрифт и так достаточно мелкий то дальнейшее уменьшение приводит к резкому снижению читаемости.
Смысла в таком зуме нет.
CC>>Фолдинг для всех языков не сделаешь. А сколь либо серьёзно смотреть исходники в файловом менеджере — сомнительная идея. Вкратце взглянуть — да, сойдёт. По нормальному — надо ассист или аналоги. I>Конечно вкратце. Довольно часто приходится, особенно когда приходится разгребать самые разные файлы.
А почему студией не пользуешься?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>>>Качественный редактор за день экономит времени на порядок больше, чем ты своими долями секунды за год. CC>>Как качественный редактор поможет быстро перейти в нужную папку? I>Для чего тебе экономить доли секунды ?
Чем меньше времени уходит на второстепенные действия тем меньше голова сбивается с основной темы и тем быстрее идёт мыслительный процесс.
I>Один толковый редактор вместо того что в фаре сэкономит на порядки бОльше.
Зачем делать там навороченный редактор если всё равно специально заточенные ему не переплюнуть по определению?
Ты явно не понимаешь для чего нужен файловый менеджер.
CC>>>>Если нужных папок реально много — фильтр это просто мегафича. I>>>А что ты делаешь с этими папками ? CC>>Храню в них данные. I>Т.е. фильтр тебе нужен для того, что бы тупо переходить по папкам безо всякой цели.
С целью максимально быстро добраться до тех данных, которые мне в данный момент нужны.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, std.denis, Вы писали:
SD>Удобство. Например я периодически (раз в месяц или реже) редактирую etc\hosts. Вместо того, чтобы искать его руками, я просто открываю историю просмотров и набираю "hosts", на что остаются 1-2 элемента.
Смотри:
Тотал — 1 клик по тулбару и редактируй сколько хошь
Эксплорер — Win-M, даблклик на шорткате etc\hosts и редактируй сколько хошь.
>С учетом того, что история может достигать 10000 элементов без особых напрягов при её просмотре, это очень и очень удобно. То же самое и с путями. Есть, например, папка в рабочем проекте — "...\wrk\trunk\modules\network\", она есть как в trunk, так и в тегах [например, "...\wrk\tags\modded\modules\network\"]. Папка такая, ничем не примечательная, нет резона на неё вешать отдельную закладку, тем более пачку закладок на разные локации этой папки. После того, как я побывал в этих папках, мне достаточно набрать "network" или "wrk*network" и в истории переходов останутся лишь эти, нужные мне, папки и я легко могу переходить между транком и тегами. Может сумбурно объяснил, но что-то типа такого
Все сразу посмотреть все равно не получится. Пути то одинаковые, считай. 2 клика мышом — исправил 2-3 символа — Enter и я уже в новой бранче.
I>>Т.е. выходит фар не умеет то, что ты запросил для тотала, правильно ? SD>Брр. Мне нужно просто, чтобы окошки не разбредались по десктопу, а все были внутри одного окна. Что-то подобное есть во Frigate. Правда что-то в нем мне тоже не понравилось Щас уже не помню совсем, к тому же проект вроде больше не развивается. И вроде не было возможности отстыковки окошка.
Что бы окна не плодились, способов решения вагон. Спустя где то 10 лет пользования фаром я обнаружил, что фар не лучшее решение.
SD>Ок, хочу вот быстро перейти к методу введя лишь кусок названия, не с начала. Почему-то парни в Майкрософт это обошли стороной =\ Или получить список методов в файле с фильтрацией. ClassView не совсем то — ищет сразу в куче мест, срабатывает лишь после нажатия Enter. Может и вагон сильных фич, но многие простые фичи по навигации без сторонних аддонов не реализуются.
Честно говоря я не помню названия ни методов, ни классов, только самых часто используемых.
Это хорошо когда ты сам работаешь. А если проект достаточно бОльшой то поиск вобщем то ничем не помогает. Чем больше проект, тем важнее структура фолдеров. При правильной структуре ничего запоминать не надо.
SD>Сравнение ни разу не корректное. Возможностей для автоматики в FAR, имхо, если не больше, то столько же. В т.ч. за счет собственной реализации UI.
Нету там UI. Консоль не UI. Это эмуляция.
SD>В начале сообщения я еще раз попытался донести что мне нужно. Ничего сверхестественного: некоторые плюшечки для быстрой навигации по папкам + истории открытых (и на просмотр, и на редактирование) файлов и папок, опять же с фильтрацией этого списка по маске.
Шорткаты+тулбары — страшная вещь. А в Windows7 таскбар это вобще адская вещь. А вот меню правда, чисток говно.
Здравствуйте, CreatorCray, Вы писали:
CC>>>Зум для текстовых файлов мягко говоря сомнительная фича. Или я под зумом что то отличное от тебя понимаю. I>>Ну есть другой вариант — монитор растягивать, что бы целый блок вместить на один экран. CC>Зум предполагает уменьшение шрифта для увеличения колва строк. CC>Если шрифт и так достаточно мелкий то дальнейшее уменьшение приводит к резкому снижению читаемости. CC>Смысла в таком зуме нет.
Если ты пользуешь шрифт размера 8 или 6 то конечно, зум без толку.
А я пользую где то 12 или 14 и зумом периодически пользуюсь в целях борьбы с простынями.
I>>Конечно вкратце. Довольно часто приходится, особенно когда приходится разгребать самые разные файлы. CC>А почему студией не пользуешься?
Потому что "самые разные файлы" и, кроме того, студия открывает в дефолтном представлении, которое в конкретный момент может быть ен нужно.
Здравствуйте, CreatorCray, Вы писали:
I>>Для чего тебе экономить доли секунды ? CC>Чем меньше времени уходит на второстепенные действия тем меньше голова сбивается с основной темы и тем быстрее идёт мыслительный процесс.
Я для этого пользую аутлайнеры-планировщики всякие и прочую дрянь.
I>>Один толковый редактор вместо того что в фаре сэкономит на порядки бОльше. CC>Зачем делать там навороченный редактор если всё равно специально заточенные ему не переплюнуть по определению? CC>Ты явно не понимаешь для чего нужен файловый менеджер.
Ты явно не можешь объяснить, для чего нужен файловый менеджер, а следовательно, сам не понимаешь нихрена в этом деле.
Лично мне файловый менеджер не нужен. Студия — тоже не нужна. И почтоый клиент и браузер и даже винда с железом не нужны.
Абсолютно не нужны.
Но ими я вынужден пользоваться что бы делать то что мне нравится. Соответственно я избавляюсь от наименее нужных в моем случае вещей.
I>>Т.е. фильтр тебе нужен для того, что бы тупо переходить по папкам безо всякой цели. CC>С целью максимально быстро добраться до тех данных, которые мне в данный момент нужны.
Здравствуйте, Head Ache, Вы писали:
HA>Вариант (не мой, все им давно пользуются) — просто наличие в языке нормальных конструкторов и деструкторов. HA>Это настолько же необходимый элемент языка, как и условные операторы, циклы и т.д. HA>Почему в мс решили, что там ничего не нужно писать кроме освобождения ресурсов? HA>Ведь никому не приходит в голову делать интерфейсы Iif, Ifor и тд?
Ну, хорошо. Ввели мы "нормальные" конструктор и деструктор. Что дальше? Каков usecase? Чем это лучше наличия конструктора и метода Dispose?
MM>>Какой хинт ты предлагаешь добавить? HA>Я уже давно смирился HA>Для работы с неуправляемыми длл пишу более геморный вариант с try/finally, не пользуюсь IDisposable HA>Ну нельзя сделать нормальную обертку — ну и черт с ним. HA>Я имею в виду примерно такой интерфейс
HA>hObject = CreateSomeObject(params1); HA>err_code = DoSomething(hObject, params2); HA>err_code = DoSomethingElse(hObject, params3); HA>.... HA>Delete(hObject);
HA>Работа с этим интерфейсом изолируется в пределах одного класса, снаружи видно только более высокоуровневые функции. HA>При переходе от неуправляемой длл к управляемой и наоборот достаточно заменить длл вместе с управляющим классом. HA>Это дает меньшую функциональность, однако на мои варианты использования ее хватает.
Если честно, то это ужасно. Ты превращаешь язык с GC в язык без GC. Лично мне хватает using.
Здравствуйте, Ikemefula, Вы писали:
I>Бывает надо. Наиболее часто используемые папки забиты в меню, туда я мышом лазаю. I>На клавиатуре я вообще не люблю набирать чтото, кроме текста, паролей и тд.
Вот с этого и надо начинать, что у тебя личные особенности организма не позволяют полноценно пользоваться клавиатурой.
А то развёл бодягу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
CC>Фолдинг для всех языков не сделаешь. А сколь либо серьёзно смотреть исходники в файловом менеджере — сомнительная идея. Вкратце взглянуть — да, сойдёт. По нормальному — надо ассист или аналоги.
Ну не скажите. FAR + Colorer очень хорошо помогают. Раскраска, список функций в файле, быстрый переход от одной "скобки" (т.е. (/), {/}, begin/end, </> и т.п.) очень хорошо помогают в ковырянии исходников. С редактированием да, тут хреновее.
Буду рад услышать плюшки Ассиста, которые полезны для ковыряния в сорцах сверх этого.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, gandjustas, Вы писали:
I>>>Повторяю вопрос — в каких случаях надо писать именно так как я показал, а не в одну строчку. G>>Мне — ни в каких, тебе — не знаю.
I>Это говорит только о твоем опыте.
Да ну, смотри ниже.
G>>>>ЗЫ. Если че напиши код сам — увидишь что все закрывается. I>>>Писал, потому и сообщаю — не закроется. G>>Значит не то писал, у меня все закрылось. Может магические плашки в подписи помогли
I>Просто ты мало писал для COM.
I>http://support.microsoft.com/default.aspx?scid=KB;EN-US;q317109
Ага
APPLIES TO
Microsoft Visual Basic .NET 2003 Standard Edition
Microsoft Visual C# .NET 2003 Standard Edition
Microsoft Visual Basic .NET 2002 Standard Edition
Microsoft Visual C# .NET 2002 Standard Edition
Сейчас бага нет. Я как-бы позже начал с .NET работать.
А теперь главный прикол:
(С#)
var excel = new Excel.Application();
excel.Visible = true;
var doc = excel.Workbooks.Add();
(VBScript)
dim app
set app = createobject("Excel.Application")
' Make it visible
app.Visible = true
' Add a new workbook
dim wb
set wb = app.workbooks.add
Три куска кода, на совершенно разных рантаймах работают ОДИНАКОВО. Excel остается открытым после завершения приложения.
Чтобы закрыть Excel надо явно вызвать Quit для него, это поведение экселя by design и не имеет никакого отношения к .NET.
I>>>Конечно вкратце. Довольно часто приходится, особенно когда приходится разгребать самые разные файлы. CC>>А почему студией не пользуешься? I>Потому что "самые разные файлы" и, кроме того, студия открывает в дефолтном представлении, которое в конкретный момент может быть ен нужно.
все хорошо конечно, но списоком тулз-то поделись
Здравствуйте, Ikemefula, Вы писали:
I>Тотал — 1 клик по тулбару и редактируй сколько хошь
Ради файла, нужного раз в месяц вытаскивать его на тулбар? А места на тулбаре хватит для всех таких файлов/каталогов?
I>Эксплорер — Win-M, даблклик на шорткате etc\hosts и редактируй сколько хошь.
1) Засираем десктоп.
2) Между Win-M и даблкликом будет еще операция "Найти глазами этот шорткат на 22' мониторе с засратым по самые края десктопе", что для файла, нужного раз месяц займет достаточно долгое время.
I>Нету там UI. Консоль не UI. Это эмуляция.
Консоль таки User и таки Interface. Вот какой-нибудь пайп или веб-сервис это Interface, но уже не User.
Здравствуйте, KipDblK, Вы писали:
I>>Тотал — 1 клик по тулбару и редактируй сколько хошь
KDK>Ради файла, нужного раз в месяц вытаскивать его на тулбар? А места на тулбаре хватит для всех таких файлов/каталогов?
14 иконок. Это много ?
KDK>1) Засираем десктоп.
Кто виноват что ты засираешь _свой_ десктоп ?
KDK>2) Между Win-M и даблкликом будет еще операция "Найти глазами этот шорткат на 22' мониторе с засратым по самые края десктопе", что для файла, нужного раз месяц займет достаточно долгое время.
Здравствуйте, Ikemefula, Вы писали:
I>>>Для чего тебе экономить доли секунды ? CC>>Чем меньше времени уходит на второстепенные действия тем меньше голова сбивается с основной темы и тем быстрее идёт мыслительный процесс. I>Я для этого пользую аутлайнеры-планировщики всякие и прочую дрянь.
Я так долго по папкам не брожу чтоб в планировщики записывать зачем я туда полез и от чего отвлёкся.
I>>>Один толковый редактор вместо того что в фаре сэкономит на порядки бОльше. CC>>Зачем делать там навороченный редактор если всё равно специально заточенные ему не переплюнуть по определению? CC>>Ты явно не понимаешь для чего нужен файловый менеджер. I>Ты явно не можешь объяснить, для чего нужен файловый менеджер, а следовательно, сам не понимаешь нихрена в этом деле.
Не отмазывайся.
I>Лично мне файловый менеджер не нужен. Студия — тоже не нужна. И почтоый клиент и браузер и даже винда с железом не нужны. I>Абсолютно не нужны.
Дык о чём ты тогда рассказываешь тут?
I>Но ими я вынужден пользоваться что бы делать то что мне нравится. Соответственно я избавляюсь от наименее нужных в моем случае вещей.
Они тебе нужны для эффективного выполнения поставленных задач.
I>>>Т.е. фильтр тебе нужен для того, что бы тупо переходить по папкам безо всякой цели. CC>>С целью максимально быстро добраться до тех данных, которые мне в данный момент нужны. I>1 клик мыши это много или мало ?
Зависит от контекста.
Ты вот тут про редактирование пел, так вот в редакторе чтоб кликнуть мышью тебе понадобится:
1) перенос на мышу руки с клавиатуры, где только что ты набирал текст (не надо петь что на клаве только одна рука всегда, набор текста одной рукой то ещё занятие)
2) позиционирование мыши
3) возврат руки назад
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>Если ты пользуешь шрифт размера 8 или 6 то конечно, зум без толку. I>А я пользую где то 12 или 14 и зумом периодически пользуюсь в целях борьбы с простынями.
В FAR у меня шрифт 8х12. Мельче ставить — уже читабельность ухудшается.
I>>>Конечно вкратце. Довольно часто приходится, особенно когда приходится разгребать самые разные файлы. CC>>А почему студией не пользуешься? I>Потому что "самые разные файлы" и, кроме того, студия открывает в дефолтном представлении, которое в конкретный момент может быть ен нужно.
И неужто есть редактор, в котором фолдинг, который ты так везде хочешь, есть для всех этих "самых разных файлов"?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, std.denis, Вы писали:
CC>>Фолдинг для всех языков не сделаешь. А сколь либо серьёзно смотреть исходники в файловом менеджере — сомнительная идея. Вкратце взглянуть — да, сойдёт. По нормальному — надо ассист или аналоги. SD>Ну не скажите. FAR + Colorer очень хорошо помогают. Раскраска, список функций в файле, быстрый переход от одной "скобки" (т.е. (/), {/}, begin/end, </> и т.п.) очень хорошо помогают в ковырянии исходников.
Увы этого для серьёзного ковыряния мало. Надо поддержка языка: find reference, jump to declaration, показ типа переменной при её выделении и т.п. А для редактирования надо ещё больше.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
KDK>>Ради файла, нужного раз в месяц вытаскивать его на тулбар? А места на тулбаре хватит для всех таких файлов/каталогов? I>14 иконок. Это много ?
14 помещяется всего на тулбар? Это ОЧЕНЬ мало. Если тебе хватает, это значит только то, что ты работаешь с малым количеством кталогов.
KDK>>1) Засираем десктоп. I>Кто виноват что ты засираешь _свой_ десктоп ?
Больше 7 значков на десктопе уже засрано (У меня там 1 значок -- корзина)
KDK>>2) Между Win-M и даблкликом будет еще операция "Найти глазами этот шорткат на 22' мониторе с засратым по самые края десктопе", что для файла, нужного раз месяц займет достаточно долгое время. I>Это у тебя засрано. А у меня структурировано.
Да как бы не было структурировано, глаз все равно будет искать нужный значок на 2D пространстве, вместо 1D списка. То есть дольше. Потом еще надо спозиционировать мышь, тоже в 2D, супротив 1D позиции списка.
Здравствуйте, KipDblK, Вы писали:
KDK>>>Ради файла, нужного раз в месяц вытаскивать его на тулбар? А места на тулбаре хватит для всех таких файлов/каталогов? I>>14 иконок. Это много ?
KDK>14 помещяется всего на тулбар? Это ОЧЕНЬ мало. Если тебе хватает, это значит только то, что ты работаешь с малым количеством кталогов.
Это зависит от того, как организовывать работу.
С большим количеством фолдеров двухбуквенных псевдонимов не хватит.
KDK>>>1) Засираем десктоп. I>>Кто виноват что ты засираешь _свой_ десктоп ?
KDK>Больше 7 значков на десктопе уже засрано (У меня там 1 значок -- корзина)
О чем речь — ты не умеешь использовать такой инструмент как десктоп.
KDK>Да как бы не было структурировано, глаз все равно будет искать нужный значок на 2D пространстве, вместо 1D списка. То есть дольше. Потом еще надо спозиционировать мышь, тоже в 2D, супротив 1D позиции списка.
Ты, не пользуясь десктопом, рассказывать мне, который пользует этим десктопм, как это на самом деле ?
"искать" не надо — десктоп появился и если иконки структурированы, элемент находится сам собой, безо всяких усилий.
Во всяком случае это так же легко кк и набрать на клавиатуре псевдоним какой.
"спозиционировать" — если руки трясутся, мыша говенная, а глаза косые то задача достаточно трудная, согласен. Вобщем, твое горе мне понятно, но разделить его к сожалению не могу, у меня мыша сама бегает куда надо
Здравствуйте, CreatorCray, Вы писали:
I>>Если ты пользуешь шрифт размера 8 или 6 то конечно, зум без толку. I>>А я пользую где то 12 или 14 и зумом периодически пользуюсь в целях борьбы с простынями. CC>В FAR у меня шрифт 8х12. Мельче ставить — уже читабельность ухудшается.
Сам себе буратино. У меня в фаре обычно стоит 12х16. Но фаром я уже не пользуюсь, вот только что запустил, оказывается это первый раз с момента инсталяции, т.к. шрифт не тот.
I>>Потому что "самые разные файлы" и, кроме того, студия открывает в дефолтном представлении, которое в конкретный момент может быть ен нужно. CC>И неужто есть редактор, в котором фолдинг, который ты так везде хочешь, есть для всех этих "самых разных файлов"?
Иногда да, иногда нет.
Вобще последнее время я забиваю на всякую дрянь такого плана, т.к. приходится работать за разными компьютерами, по РДП, по виртуалкам и подход у меня минималистский — чтото быстро сконфигурировать, на ближайшие пару сеансов.
Прямо сейчас даже нет внешнего редактора с фолдингом.
Здравствуйте, Ikemefula, Вы писали:
KDK>>14 помещяется всего на тулбар? Это ОЧЕНЬ мало. Если тебе хватает, это значит только то, что ты работаешь с малым количеством кталогов. I>Это зависит от того, как организовывать работу. I>С большим количеством фолдеров двухбуквенных псевдонимов не хватит.
Между 14 позициями тулбара и 1000+ вариантами двухбуквенных псевдонимов как бы много промежуточных состояний. Как поступить в тотале, если мне надо иметь ~50 каталогов в быстром доступе? Сделать 4 тулбара или нажимать кнопочку "еще"?
I>О чем речь — ты не умеешь использовать такой инструмент как десктоп.
Нет, мне просто не нравится этот инструмент. Потому например был безмерно рад, когда "значки на десктопе" выпилили из КДЕ.
I>Ты, не пользуясь десктопом, рассказывать мне, который пользует этим десктопм, как это на самом деле ? I>"искать" не надо — десктоп появился и если иконки структурированы, элемент находится сам собой, безо всяких усилий.
Ну вот смотри. У тебя на десктопе ссылки на 20 самых редактируемых файлов, как выбрать нужный, не применяя визуальный поиск?
I>Во всяком случае это так же легко кк и набрать на клавиатуре псевдоним какой.
А если нет разницы, нафига плодить инструменты?
I>"спозиционировать" — если руки трясутся, мыша говенная, а глаза косые то задача достаточно трудная, согласен. Вобщем, твое горе мне понятно, но разделить его к сожалению не могу, у меня мыша сама бегает куда надо
Нейроинтерфейс? Круто, где брал?
Ты согласен с утверждением, что позиционирование указателя к нужной точке в 2D пространстве выполняется так же быстро, как и в 1D? Мозг одинаково быстро обрабатывает 1D и 2D информацию? В каком лифте (пусть 10 этажей) ты быстрее нажмешь нужную кнопку в котором 10 кнопок по вертикали или 2 ряда по 5 кнопок?
Здравствуйте, CreatorCray, Вы писали:
I>>Я для этого пользую аутлайнеры-планировщики всякие и прочую дрянь. CC>Я так долго по папкам не брожу чтоб в планировщики записывать зачем я туда полез и от чего отвлёкся.
Я тоже не пишу такое в планировщик. Зато планировщик помогает переключаться с задачи на задачу на раз.
Вот здесь время может уходить вагонами.
I>>Но ими я вынужден пользоваться что бы делать то что мне нравится. Соответственно я избавляюсь от наименее нужных в моем случае вещей. CC>Они тебе нужны для эффективного выполнения поставленных задач.
Наименее нужные наименее всего нужны Фар вот такая вещь.
I>>1 клик мыши это много или мало ? CC>Зависит от контекста. CC>Ты вот тут про редактирование пел, так вот в редакторе чтоб кликнуть мышью тебе понадобится: CC>1) перенос на мышу руки с клавиатуры, где только что ты набирал текст (не надо петь что на клаве только одна рука всегда, набор текста одной рукой то ещё занятие) CC>2) позиционирование мыши CC>3) возврат руки назад
И что с того ? Клавой я пользуюсь в основном для набора текста.
Здравствуйте, std.denis, Вы писали:
I>>Потому что "самые разные файлы" и, кроме того, студия открывает в дефолтном представлении, которое в конкретный момент может быть ен нужно. SD>все хорошо конечно, но списоком тулз-то поделись
Здравствуйте, CreatorCray, Вы писали:
I>>Бывает надо. Наиболее часто используемые папки забиты в меню, туда я мышом лазаю. I>>На клавиатуре я вообще не люблю набирать чтото, кроме текста, паролей и тд. CC>Вот с этого и надо начинать, что у тебя личные особенности организма не позволяют полноценно пользоваться клавиатурой. CC>А то развёл бодягу.
Как выяснилось в прошлый раз, я и текст набираю быстрее, чем многие клавиатурные гении на местных форумах.
Здравствуйте, KipDblK, Вы писали:
KDK>Между 14 позициями тулбара и 1000+ вариантами двухбуквенных псевдонимов как бы много промежуточных состояний. Как поступить в тотале, если мне надо иметь ~50 каталогов в быстром доступе? Сделать 4 тулбара или нажимать кнопочку "еще"?
Что за 50 каталогов ?
I>>О чем речь — ты не умеешь использовать такой инструмент как десктоп.
KDK>Нет, мне просто не нравится этот инструмент. Потому например был безмерно рад, когда "значки на десктопе" выпилили из КДЕ.
Очень удобная вещь.
I>>"искать" не надо — десктоп появился и если иконки структурированы, элемент находится сам собой, безо всяких усилий.
KDK>Ну вот смотри. У тебя на десктопе ссылки на 20 самых редактируемых файлов, как выбрать нужный, не применяя визуальный поиск?
Там не самые редактируемые. Там файлы которые надо изредка редактировать и до них долго добираться.
Как ты понимаешь, десктоп я вижу достаточно часто, потому там картика привычная.
Соответсвенно мне не надо искать.
Примерно так — ты, когда читаешь, делаешь это не по букве и даже не по слогам.
Замерь время, которое тебе надо для поиска буквы к в слове "редактировать", это и будет примерно то время которое надо мне.
I>>Во всяком случае это так же легко кк и набрать на клавиатуре псевдоним какой.
KDK>А если нет разницы, нафига плодить инструменты?
Не плодить, а использовать. Я не люблю набирать на клавиатуре. Я люблю когда текст сам пишется или его ктото пишет
KDK>Ты согласен с утверждением, что позиционирование указателя к нужной точке в 2D пространстве выполняется так же быстро, как и в 1D?
Это конь в вакууме.
>Мозг одинаково быстро обрабатывает 1D и 2D информацию? В каком лифте (пусть 10 этажей) ты быстрее нажмешь нужную кнопку в котором 10 кнопок по вертикали или 2 ряда по 5 кнопок?
Здравствуйте, CreatorCray, Вы писали:
E__>>То, что в манагед не будет стольких восможностей прострелить ногу себе. CC>Да у нас и так проблем нет. CC>Все кто пулял себе по ногам уже на манагед. CC>А мы понимаем что мы делаем.
Я помню "мне лямбды не нужны"
Менеджед нужен не для того, что бы ноги сберечь, а потому что предоставляет более высокий уровень разработки.
Т.е. тупо бОльше рутины можно переложить на инструменты а не сидеть и ныть, что убил де месяц ибо NTFS через жопу сделана.
Здравствуйте, Ikemefula, Вы писали:
I> I>>Бывает надо. Наиболее часто используемые папки забиты в меню, туда я мышом лазаю. I> I>>На клавиатуре я вообще не люблю набирать чтото, кроме текста, паролей и тд.
I> CC>Вот с этого и надо начинать, что у тебя личные особенности организма не позволяют полноценно пользоваться клавиатурой. I> CC>А то развёл бодягу.
I> Как выяснилось в прошлый раз, я и текст набираю быстрее, чем многие клавиатурные гении на местных форумах.
"Я печатаю со скоростью 1200 знаков в минуту. Такая х#ня получается..." (c)
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, gandjustas, Вы писали:
S>>>>>> Объект.ПолучитьОбъект().Получить2Объект().Выполнить(); После выполнения данной команды промежуточные объекты удалятся (По месту релиза). А бывают и очнь длинные цепочки. G>>>>>И что? S>>>> А то, что накапливаются объекты многие из которых содержат ресурсы, котрые нужно освождать чем раньше тем лучше. G>>>"чем раньше тем лучше" зачастую некорректное утверждение. S>> Корректное когда ресурсы заняты, ими нельзя воспользоваться из других приложений. G>Реальные примеры такого есть?
Есть когда держится файл, однопользовательские программы, или многопользовательские программы которые нужно перегрузить. И еще очень очень много различных вариантов. S>>>>>>>>Плюс в 2009 и дженерики появились. G>>>>>>>Все бы хорошо, но в .NET они появились на 4 года раньше. Кроме того до сих пор самая используемая версия делфей — 7 S>>>>>> Но это не значит, что 2009 не существует. Мы же обсуждаем не NET 1.1 G>>>>>На .NET 1.1 уже никто не пишет, а на Delphi 7 — вполне. S>>>> Это только говорит о его состоятельности. Хотя честно говоря уж долго он не развивался. G>>>Это говорит о несостоятельности новых версий. G>>>Почему при наличии delphi 2005 и выше, до сих пор на семерке сидят? S>> Delphi 2005 была ориентирована на Net. 2009 уже на натив. C# в Net мощнее поэтому то и развития не получила. S>>2009 уже развитие натива. Но много ли перешли в Net на 4ку? G>Я перешел
И это радует. Нужно стремиться к совершенству и познанию, чего у достаточно большой доли программистов нет, плюс дожидаются
первых сервис паков. S>>>>>> Ну и как Тебе с Голым IDispatch работается через рефлексию? G>>>>>С dynamic — прекрасно. S>>>> И давно динамики то появились? G>>>Ну в VB они и раньше были, в C# только в 4 версии. S>> Еще VB мне до кучи не хватало. Итак приходится разные макросы писать. S>>Так что намного проще на Delphi написать. G>А причем тут макросы? VB.NET мало чем отличается от C# и отлично с ним взаимодействует.
Ну и зоопарк не особо хочется устраивать. При этом у ВБ куча нюансов. А когда это не основные языки заморачиваться на них не хочется.
Автоматические Макросы приходится писать внутри Экселя и этого хватает что бы понять, что зоопарк это плохо.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Ikemefula, Вы писали:
I>>>Если ты пользуешь шрифт размера 8 или 6 то конечно, зум без толку. I>>>А я пользую где то 12 или 14 и зумом периодически пользуюсь в целях борьбы с простынями. CC>>В FAR у меня шрифт 8х12. Мельче ставить — уже читабельность ухудшается. I>Сам себе буратино. У меня в фаре обычно стоит 12х16. Но фаром я уже не пользуюсь, вот только что запустил, оказывается это первый раз с момента инсталяции, т.к. шрифт не тот.
Ну дык 8х12 идеальный для меня размер.
Зачем ты себе поставил конские буквы, так что в результате требуется зум — как раз типичный случай ССЗБ.
I>Прямо сейчас даже нет внешнего редактора с фолдингом.
А крику поднял...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>Как выяснилось в прошлый раз, я и текст набираю быстрее, чем многие клавиатурные гении на местных форумах.
Пруфлинк будет, али как всегда?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>Я помню "мне лямбды не нужны"
А немерле так и вовсе...
I>Менеджед нужен не для того, что бы ноги сберечь, а потому что предоставляет более высокий уровень разработки.
Эту песню мы уже слышали.
I>Т.е. тупо бОльше рутины можно переложить на инструменты
В моём случае в .NET ничего готового не предусмотрено. Все эти инструменты один фиг придётся писать самому.
I>а не сидеть и ныть что убил де месяц ибо NTFS через жопу сделана.
Это ты про что вообще?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
I>>Т.е. тупо бОльше рутины можно переложить на инструменты CC>В моём случае в .NET ничего готового не предусмотрено. Все эти инструменты один фиг придётся писать самому.
Ты просто блестяще показываешь свое (не)знание .NET
Здравствуйте, gandjustas, Вы писали:
I>>>Т.е. тупо бОльше рутины можно переложить на инструменты CC>>В моём случае в .NET ничего готового не предусмотрено. Все эти инструменты один фиг придётся писать самому.
G>Ты просто блестяще показываешь свое (не)знание .NET
Ты просто блестяще показываешь свою святую уверенность что .NET на все дыры затычка и что во framework есть всё на все случаи жизни.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
E__>>А, у меня нечто подобное уже написано. Руками, но Жаба же. Да и лет проекту порядком, когда там эти парсеры появились? G>Ну Linq в жабе все равно нет и так красиво не выйдет.
Это да. К сожалению, сама жаба как язык развивается медленно.
E__>>Ну и да, Линух необходим. Это условие обязательно. Мы немало дилеров перетянули именно из-за линуха, и терять это преимущество бессмысленно. Почитателей Виндов в терминальном бизнесе все меньше — они уже горя нахлебались(ага, сиськи-письки на экране терминала оплаты, и жесточайший счет от оператора, через который они в инет ходят), некоторые месяцами ждут, пока я к их девайсу драйвер напишу(но их много, а я один), звонят ежедневно. G>Есть Mono, я на нем Rx не пробовал, но нету причин ему там не работать.
Нет никакого смысла. Переписывать все из-за работы с портами? Ну нафиг. Плюс, надеяться на Моно в продакшене я бы пока не стал.
E__>>>>>>Поток на запись, поток на чтение, кастомная валидация и составление экземпляра класса "ответ", который уже выше отдается. Коммуникация с портом — тупо исходящий и входящий потоки. Как тут что-то изменить, я представляю слабо. G>>>>>Например сделать всю эту хукню асинхронной.
E__>>>>В каком плане? И так все асинхронно донельзя. Если что, потоки(данных) ввода-вывода также надстройка(по одному потоку(который Thread) на поток(данных) со свои буфером), и они позволяют драйверу не блокироваться на чтении/записи.
G>>>Ну вот выделенное — *опа.
E__>>Почему? G>Потому что не масштабируемо.
Что, куда, и главное, зачем можно смасштабировать в такой штуке, как работа с ком портом?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, gandjustas, Вы писали:
I>>>Т.е. тупо бОльше рутины можно переложить на инструменты CC>>В моём случае в .NET ничего готового не предусмотрено. Все эти инструменты один фиг придётся писать самому.
G>Ты просто блестяще показываешь свое (не)знание .NET
Свидетельствую. В случае CreatorCray .NET никак не поможет. И тебе бы в таком случае не помог бы.
Здравствуйте, CreatorCray, Вы писали:
I>>Я помню "мне лямбды не нужны" CC>А немерле так и вовсе...
... а в огороде бузина
I>>Т.е. тупо бОльше рутины можно переложить на инструменты CC>В моём случае в .NET ничего готового не предусмотрено. Все эти инструменты один фиг придётся писать самому.
Это и есть главная причина, а не то что ктото ноги отстреливает или неотстреливает.
I>>а не сидеть и ныть что убил де месяц ибо NTFS через жопу сделана. CC>Это ты про что вообще?
Да обычная песня всяких системщиков, виртуализаторов и драйверописателей.
Здравствуйте, CreatorCray, Вы писали:
I>>Как выяснилось в прошлый раз, я и текст набираю быстрее, чем многие клавиатурные гении на местных форумах. CC>Пруфлинк будет, али как всегда?
Поищи сам. Кто именно, не помню, рассказывал как ловко шпарит хоткеями а толковый набор на клаве осилить не может. Ну и голосовалка есть.
Здравствуйте, CreatorCray, Вы писали:
I>>Сам себе буратино. У меня в фаре обычно стоит 12х16. Но фаром я уже не пользуюсь, вот только что запустил, оказывается это первый раз с момента инсталяции, т.к. шрифт не тот. CC>Ну дык 8х12 идеальный для меня размер. CC>Зачем ты себе поставил конские буквы, так что в результате требуется зум — как раз типичный случай ССЗБ.
Я ставлю такой шрифт, что бы комфортно читалось лично мне, а не кому то.
I>>Прямо сейчас даже нет внешнего редактора с фолдингом. CC>А крику поднял...
У меня тачка, если непонятно, новая. Я не инсталирую все подряд, каждый раз пробую чтото новое.
Недавно вот нашел, что кроме таскбара и меню удобно пиновать всякое к эксплореру например.
Здравствуйте, Ikemefula, Вы писали:
I>Я ставлю такой шрифт, что бы комфортно читалось лично мне, а не кому то.
Следовательно более мелкий для тебя не комфортен.
Соответственно при зуме шрифт становится мельче и читать его уже не комфортно.
Нафиг такой зум?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>>>Как выяснилось в прошлый раз, я и текст набираю быстрее, чем многие клавиатурные гении на местных форумах. CC>>Пруфлинк будет, али как всегда?
I>Поищи сам.
Т.е. как всегда.
Засим принимаем что заявленного не было вовсе.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>>>Т.е. тупо бОльше рутины можно переложить на инструменты CC>>В моём случае в .NET ничего готового не предусмотрено. Все эти инструменты один фиг придётся писать самому. I>Это и есть главная причина, а не то что ктото ноги отстреливает или неотстреливает.
Это тебе к __Eugene, это он с чего то про отстрел ног начал.
I>>>а не сидеть и ныть что убил де месяц ибо NTFS через жопу сделана. CC>>Это ты про что вообще? I>Да обычная песня всяких системщиков, виртуализаторов и драйверописателей.
Допиши ещё что в винде Storage капец какой кривой, ага!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Eugeny__, Вы писали:
E> G>Потому что не масштабируемо.
E> Что, куда, и главное, зачем можно смасштабировать в такой штуке, как работа с ком портом?
Это годный базворд, ганджустас не мог его не упомянуть
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, Ikemefula, Вы писали:
I>>>>Т.е. тупо бОльше рутины можно переложить на инструменты CC>>>В моём случае в .NET ничего готового не предусмотрено. Все эти инструменты один фиг придётся писать самому. I>>Это и есть главная причина, а не то что ктото ноги отстреливает или неотстреливает. CC>Это тебе к __Eugene, это он с чего то про отстрел ног начал.
С чего он начал, неважно. Я написал в ответ на твое мнение, а не его.
I>>>>а не сидеть и ныть что убил де месяц ибо NTFS через жопу сделана. CC>>>Это ты про что вообще? I>>Да обычная песня всяких системщиков, виртуализаторов и драйверописателей. CC>Допиши ещё что в винде Storage капец какой кривой, ага!
Здравствуйте, CreatorCray, Вы писали:
I>>Я ставлю такой шрифт, что бы комфортно читалось лично мне, а не кому то. CC>Следовательно более мелкий для тебя не комфортен.
+- 25% это приемлемо.
CC>Соответственно при зуме шрифт становится мельче и читать его уже не комфортно. CC>Нафиг такой зум?
Потому что простыни листать еще более некомфортно.
Здравствуйте, Ikemefula, Вы писали:
CC>>Засим принимаем что заявленного не было вовсе. I>Ага. У детей так всегда — сущесвтвует только то на что есть пруфлинк.
Потому как на слово тебе веры нет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>>>Засим принимаем что заявленного не было вовсе. I>>Ага. У детей так всегда — сущесвтвует только то на что есть пруфлинк. CC>Потому как на слово тебе веры нет.
Это говорит твой скудный опыт
Собственно, ничего нового ты не сказал, данная позиция у тебя чуть не в каждом сообщении.
Здравствуйте, Ikemefula, Вы писали:
CC>>>>Засим принимаем что заявленного не было вовсе. I>>>Ага. У детей так всегда — сущесвтвует только то на что есть пруфлинк. CC>>Потому как на слово тебе веры нет.
I>Это говорит твой скудный опыт
Это говорит мой богатый опыт общения с тобой
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
I>>>>Ага. У детей так всегда — сущесвтвует только то на что есть пруфлинк. CC>>>Потому как на слово тебе веры нет.
I>>Это говорит твой скудный опыт CC>Это говорит мой богатый опыт общения с тобой
И ты вероятно можешь показать ссылку где поймал меня на вранье или ты просто трепло ?
Здравствуйте, Ikemefula, Вы писали:
I>>>>>Ага. У детей так всегда — сущесвтвует только то на что есть пруфлинк. CC>>>>Потому как на слово тебе веры нет.
I>>>Это говорит твой скудный опыт CC>>Это говорит мой богатый опыт общения с тобой
I>И ты вероятно можешь показать ссылку где поймал меня на вранье или ты просто трепло ?
Здравствуйте, Ikemefula, Вы писали:
I>>>>>Ага. У детей так всегда — сущесвтвует только то на что есть пруфлинк. CC>>>>Потому как на слово тебе веры нет. I>>>Это говорит твой скудный опыт CC>>Это говорит мой богатый опыт общения с тобой I>И ты вероятно можешь показать ссылку где поймал меня на вранье или ты просто трепло ?
А я и не утверждал что ты врёшь.
Просто достоверность выдаваемой тобой информации касательно других участников обсуждения частенько крайне субъективна и потому вызывает сомнения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, ambel-vlad, Вы писали:
I>>>>Это говорит твой скудный опыт CC>>>Это говорит мой богатый опыт общения с тобой
I>>И ты вероятно можешь показать ссылку где поймал меня на вранье или ты просто трепло ?
AV>Кто бы говорил
После случая с Кривошеиным у тебя хорошо получалось не влазить до сих пор
Здравствуйте, CreatorCray, Вы писали:
I>>И ты вероятно можешь показать ссылку где поймал меня на вранье или ты просто трепло ? CC>А я и не утверждал что ты врёшь.
Сначала "принимаем что заявленного не было вовсе" , а потом "я и не утверждал что ты врёшь"
Ты через сообщение отказался от своих слов.
Я честно говоря не ожидал, что ты так вот дёшево запомоишь сам себя
CC>Просто достоверность выдаваемой тобой информации касательно других участников обсуждения частенько крайне субъективна и потому вызывает сомнения.
Здравствуйте, ambel-vlad, Вы писали:
I>>После случая с Кривошеиным у тебя хорошо получалось не влазить до сих пор
AV>Это точно. Лень по тысяче раз просить привести документы. А в ответах пустота.
Ага, документы существование которых не оспаривается но которые не опубликованы
А ты не забыл, кстати, как ты цитировал Кривошеина когда всего навсего не удосужился прочесть чуть дальше одного абзаца ?
Здравствуйте, Ikemefula, Вы писали:
I>>>После случая с Кривошеиным у тебя хорошо получалось не влазить до сих пор
AV>>Это точно. Лень по тысяче раз просить привести документы. А в ответах пустота.
I>Ага, документы существование которых не оспаривается но которые не опубликованы
Ага. Такие документы, что про них нигде ничего не сказано. Но ты про них все знаешь.
Сходи и перечитай топик. В дальнейшем продолжении сего флейма не вижу смысла. Так что до свидания
Здравствуйте, ambel-vlad, Вы писали:
I>>Ага, документы существование которых не оспаривается но которые не опубликованы
AV>Ага. Такие документы, что про них нигде ничего не сказано. Но ты про них все знаешь.
Про них сказано например у Кривошеина которого ты так и не смог прочесть.
AV>Сходи и перечитай топик. В дальнейшем продолжении сего флейма не вижу смысла. Так что до свидания
Ничего нового — ты снова ретировался в кусты или куда там.
E__>>>Ну и да, Линух необходим. Это условие обязательно. Мы немало дилеров перетянули именно из-за линуха, и терять это преимущество бессмысленно. Почитателей Виндов в терминальном бизнесе все меньше — они уже горя нахлебались(ага, сиськи-письки на экране терминала оплаты, и жесточайший счет от оператора, через который они в инет ходят), некоторые месяцами ждут, пока я к их девайсу драйвер напишу(но их много, а я один), звонят ежедневно. G>>Есть Mono, я на нем Rx не пробовал, но нету причин ему там не работать.
E__>Нет никакого смысла. Переписывать все из-за работы с портами? Ну нафиг.
Вообще переписывать не надо то что уже работает.
E__>Плюс, надеяться на Моно в продакшене я бы пока не стал.
А я бы стал с учетом новой версии.
E__>>>>>>>Поток на запись, поток на чтение, кастомная валидация и составление экземпляра класса "ответ", который уже выше отдается. Коммуникация с портом — тупо исходящий и входящий потоки. Как тут что-то изменить, я представляю слабо. G>>>>>>Например сделать всю эту хукню асинхронной.
E__>>>>>В каком плане? И так все асинхронно донельзя. Если что, потоки(данных) ввода-вывода также надстройка(по одному потоку(который Thread) на поток(данных) со свои буфером), и они позволяют драйверу не блокироваться на чтении/записи.
G>>>>Ну вот выделенное — *опа.
E__>>>Почему? G>>Потому что не масштабируемо. E__>Что, куда, и главное, зачем можно смасштабировать в такой штуке, как работа с ком портом?
А не было еще железок, которые по ethernet слать умеют? Их внезапно появляются сотни, а сервер с потоками на устройство начинает загибаться.
Я через такое проходил.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Я это помню лично, остается мне верить. В свое время даже в документации было ошибочно написано, что Multicast создается только если делегат возвращает void.
Я тоже это помню — в 1.0 реально было так, уже в 1.1 это переделали на мультикаст во всех случаях.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Eugeny__, Вы писали:
E__>>>>Ну и да, Линух необходим. Это условие обязательно. Мы немало дилеров перетянули именно из-за линуха, и терять это преимущество бессмысленно. Почитателей Виндов в терминальном бизнесе все меньше — они уже горя нахлебались(ага, сиськи-письки на экране терминала оплаты, и жесточайший счет от оператора, через который они в инет ходят), некоторые месяцами ждут, пока я к их девайсу драйвер напишу(но их много, а я один), звонят ежедневно. G>>>Есть Mono, я на нем Rx не пробовал, но нету причин ему там не работать.
E__>>Нет никакого смысла. Переписывать все из-за работы с портами? Ну нафиг. G>Вообще переписывать не надо то что уже работает.
E__>>Плюс, надеяться на Моно в продакшене я бы пока не стал. G>А я бы стал с учетом новой версии.
Нам очень напряжно что-то ставить. У терминалов связь с мнешним миром по жпрс, и что-то доустанавливать напряжно. Причем делать придется вслепую, удаленно, на тысячах машин — геморрой еще тот.
E__>>>>>>>>Поток на запись, поток на чтение, кастомная валидация и составление экземпляра класса "ответ", который уже выше отдается. Коммуникация с портом — тупо исходящий и входящий потоки. Как тут что-то изменить, я представляю слабо. G>>>>>>>Например сделать всю эту хукню асинхронной.
E__>>>>>>В каком плане? И так все асинхронно донельзя. Если что, потоки(данных) ввода-вывода также надстройка(по одному потоку(который Thread) на поток(данных) со свои буфером), и они позволяют драйверу не блокироваться на чтении/записи.
G>>>>>Ну вот выделенное — *опа.
E__>>>>Почему? G>>>Потому что не масштабируемо. E__>>Что, куда, и главное, зачем можно смасштабировать в такой штуке, как работа с ком портом? G>А не было еще железок, которые по ethernet слать умеют? Их внезапно появляются сотни, а сервер с потоками на устройство начинает загибаться. G>Я через такое проходил.
У нас другая ситуация. К одному терминалу может быть подключено 5, ну 6 устройств(купюроприемник, принтер, кардридер, пинпад, вотчдог), но никак не сотни. Потому масштабировать там нечего и незачем. По ethernet тоже вряди(производители pos оборудования не сильно любят эксперименты, и правильно делают), хотя само по себе это проблемы не составит.
А вот максимальная защита от сбоев и глюков(в реальных условиях при передаче пакеты часто бьются или не целиком доходят, усройства виснут, блокируя порт, и прочая веселуха) в режиме полной автономности важна.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Ikemefula, Вы писали:
I>Сначала "принимаем что заявленного не было вовсе" , а потом "я и не утверждал что ты врёшь" I>Ты через сообщение отказался от своих слов.
Отнюдь.
Я и сейчас считаю что раз нет пруфлинка то нет никаких оснований считать что заявленное является истинным, а не тем, как ты себе это понял.
Разницу между "намеренно врёт" и "заблуждается в оценке происходящего" ты в принципе способен понять?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>Я и сейчас считаю что раз нет пруфлинка то нет никаких оснований считать что заявленное является истинным, а не тем, как ты себе это понял. CC>Разницу между "намеренно врёт" и "заблуждается в оценке происходящего" ты в принципе способен понять?
Здравствуйте, vladimir.vladimirovich, Вы писали:
VV>Здравствуйте, Ikemefula, Вы писали:
I>>Хочешь задним числом контекст подкорректировать ?
VV>Как ты интересно сформулировал свою мысль!
Есть такое выражение в русском языке.
VV>Но речь не о том. Смайлик — это ты конкурента заметил?
Смайлик это значит я смеялся когда был в процессе написания сообщения.
Здравствуйте, vladimir.vladimirovich, Вы писали:
VV>Здравствуйте, Ikemefula, Вы писали:
VV>Т.е. ты хочешь сказать что ты печатаешь 10 пальцами на iphone?
Т.е. я хочу сказать, что ты пишешь куда ни попадя.
Здравствуйте, Ikemefula, Вы писали:
VV>>Т.е. ты хочешь сказать что ты печатаешь 10 пальцами на iphone? I>Т.е. я хочу сказать, что ты пишешь куда ни попадя.
Т.е. ты как та секретарша, что печатает 1000 знаков в минуту, но у нее получается "такая фигня"?
Здравствуйте, vladimir.vladimirovich, Вы писали:
VV>Здравствуйте, Ikemefula, Вы писали:
VV>>>Т.е. ты хочешь сказать что ты печатаешь 10 пальцами на iphone? I>>Т.е. я хочу сказать, что ты пишешь куда ни попадя.
VV>Т.е. ты как та секретарша, что печатает 1000 знаков в минуту, но у нее получается "такая фигня"?
Во — сегодня праздник, у тебя наконец то появились гетеросекуальные ассоциации. Надеюсь, секретарша женского пола ?
Здравствуйте, Ikemefula, Вы писали:
VV>>Т.е. ты как та секретарша, что печатает 1000 знаков в минуту, но у нее получается "такая фигня"? I>Во — сегодня праздник, у тебя наконец то появились гетеросекуальные ассоциации. Надеюсь, секретарша женского пола ?
С секретаршей я сравнивал тебя. Не понимаю откуда появился в твоей голове сексуальный подтекст, но можешь не теребить себя — я ничего про секс не писал.
Здравствуйте, vladimir.vladimirovich, Вы писали:
VV>Здравствуйте, Ikemefula, Вы писали:
VV>>>Т.е. ты как та секретарша, что печатает 1000 знаков в минуту, но у нее получается "такая фигня"? I>>Во — сегодня праздник, у тебя наконец то появились гетеросекуальные ассоциации. Надеюсь, секретарша женского пола ?
VV>С секретаршей я сравнивал тебя. Не понимаю откуда появился в твоей голове сексуальный подтекст, но можешь не теребить себя — я ничего про секс не писал.
Здравствуйте, MxMsk, Вы писали:
MM>Ну, хорошо. Ввели мы "нормальные" конструктор и деструктор. Что дальше? Каков usecase? Чем это лучше наличия конструктора и метода Dispose?
Пример1. Была проблема, описанная в http://support.microsoft.com/default.aspx?scid=KB;EN-US;q326219
Переводя на русский, при выходе из unmaged кода я должен гарантировать нужное состояние FPU.
То есть controlfp() должна быть ровно последней инструкцией, выполненной внутри длл.
int f(params) // экспортируемая функция
{
NetCure drug;
/////// и мне все равно что там написано, даже не надо утруждать себя скроллом до конца процедуры
.................
}
Как видите, строгая гарантия обеспечена (и никакого отношения к управлению памятью эта проблема не имеет).
Пример2(классика). Критические секции, когда после Enter() следует гарантировать выполнение Leave()
Для C# это настолько сложная проблема, что даже понадобилось вводить новое ключевое слово lock (SyncLock в VB) !
(так же как и using для IDisposable)
............ MM>Если честно, то это ужасно. Ты превращаешь язык с GC в язык без GC. Лично мне хватает using.
По коду ужасов нет, все довольно коротко и тривиально.
К gc, не скрою, всегда относился с недоверием и вам не рекомендую считать его серебряной пулей.
Например, подсчет ссылок: как определить, что объект не нужен.
В общем случае, это эквивалентно задаче поиска циклов в ориентированном графе
и корректное решение имеет сложность далеко не O(N).
Тем не менее, полиномиального роста времени работы gc не наблюдается,
так что можно смело утверждать, что где-то есть "затычка", которая работает "почти правильно".
Здравствуйте, Head Ache, Вы писали:
HA>К gc, не скрою, всегда относился с недоверием и вам не рекомендую считать его серебряной пулей. HA>Например, подсчет ссылок: как определить, что объект не нужен. HA>В общем случае, это эквивалентно задаче поиска циклов в ориентированном графе HA>и корректное решение имеет сложность далеко не O(N). HA>Тем не менее, полиномиального роста времени работы gc не наблюдается, HA>так что можно смело утверждать, что где-то есть "затычка", которая работает "почти правильно".
Если бы вы утрудили себя почитать, как устроен и работает GC в управляемых средах вообще и в .NET в частности, то такие групости писать бы перестали...
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, Head Ache, Вы писали:
HA>>К gc, не скрою, всегда относился с недоверием и вам не рекомендую считать его серебряной пулей. HA>>Например, подсчет ссылок: как определить, что объект не нужен. HA>>В общем случае, это эквивалентно задаче поиска циклов в ориентированном графе HA>>и корректное решение имеет сложность далеко не O(N). HA>>Тем не менее, полиномиального роста времени работы gc не наблюдается, HA>>так что можно смело утверждать, что где-то есть "затычка", которая работает "почти правильно".
K>Если бы вы утрудили себя почитать, как устроен и работает GC в управляемых средах вообще и в .NET в частности, то такие групости писать бы перестали...
Где-то есть доказательство корректности алгоритма?
Здесь я имею в виду, что в специальной литературе, вероятно, есть работы на эту тему.
То есть от мс было бы достаточно заявить, что именно реализовано и дать ссылки на первоисточники.
Имхо, это лучше, чем какие-то объяснения "на пальцах".
HA>Здесь я имею в виду, что в специальной литературе, вероятно, есть работы на эту тему. HA>То есть от мс было бы достаточно заявить, что именно реализовано и дать ссылки на первоисточники.
Алгоритм называется mark-and-sweep garbage collection и применяется большинством GC, которые существуют. Никто это не скрывал.
Остальное — тюнинх алгоритма для получения максимальной производительности.
HA>Имхо, это лучше, чем какие-то объяснения "на пальцах".
Вот в псевдокоде: http://lambda.uta.edu/cse5317/notes/node47.html
Идея очень простая, эффективная реализация — далеко не простая. Там уже нужно знать детали, которые проще всего "на пальцах".
Можешь тут почтитать http://blogs.msdn.com/b/abhinaba/archive/2009/01/25/back-to-basic-series-on-dynamic-memory-management.aspx
Здравствуйте, Head Ache, Вы писали:
HA>Здравствуйте, MxMsk, Вы писали:
MM>>Ну, хорошо. Ввели мы "нормальные" конструктор и деструктор. Что дальше? Каков usecase? Чем это лучше наличия конструктора и метода Dispose?
HA>Пример1. Была проблема, описанная в http://support.microsoft.com/default.aspx?scid=KB;EN-US;q326219 HA>Переводя на русский, при выходе из unmaged кода я должен гарантировать нужное состояние FPU. HA>То есть controlfp() должна быть ровно последней инструкцией, выполненной внутри длл. HA>Как видите, строгая гарантия обеспечена (и никакого отношения к управлению памятью эта проблема не имеет).
Так причем здесь "нормальные" конструктор и деструктор? Что в них "нормального"? Дело в вызове деструктора при выходе за пределы области видимости? Ну, а что делать, если ты этот объект куда-нибудь передашь?
HA>Пример2(классика). Критические секции, когда после Enter() следует гарантировать выполнение Leave() HA>Для C# это настолько сложная проблема, что даже понадобилось вводить новое ключевое слово lock (SyncLock в VB) ! HA>(так же как и using для IDisposable)
Какие-то у тебя проблемы надуманные. Это все такие мелочи: написать lock или try/finally.
HA>............ MM>>Если честно, то это ужасно. Ты превращаешь язык с GC в язык без GC. Лично мне хватает using. HA>По коду ужасов нет, все довольно коротко и тривиально. HA>К gc, не скрою, всегда относился с недоверием и вам не рекомендую считать его серебряной пулей.
Не считаю. Но раз уж работаем в среде с GC, то лучше уважать его и понимать, как жить в его мире, чем пытаться перестроить. Уж если много недоверия, не лучше ли взять unmanaged?
HA>DFS ( p ) =
HA>{ if *p record is unmarked
HA> then mark *p
HA> for each pointer p->fi of the record *p do DFS(p->fi) // это вроде рекурсия?
HA>}
Рекурсия, пока в объекте есть ссылки на другие объекты.
HA>which is called from every root:
HA>for each p in roots
HA> DFS(p) // это вроде O(N)?
конечно O(N)
HA>gc работал бы часами по такому алгоритму
С чего ты взял? А то что стандартные аллокаторы тоже O(N) причем на каждое выделение памяти, они же не часами работают.
Да и причем тут время работы, тебе нужна была корректность. Скорость, как я сказал, достигается конкретными оптимизациями.
например разделение на поколения, конкурентная сборка мусора итп.
Здравствуйте, vladimir.vladimirovich, Вы писали:
I>>Смайлик это значит я смеялся когда был в процессе написания сообщения.
VV>Правда? А ты когда смайлик пишешь, голову не наклоняешь?
Здравствуйте, hattab, Вы писали:
H>Хорошо хоть, что огромная часть мудачья убежала на шарпы с формулировкой "дельфи мертв"
Года полтора назад был на собеседовании в одной конторке... Ребята писали (в 2009-м!!!) на D7 (хорошо хоть, не на D5), изобретали библиотеку компонентов GUI Ну, типа, свой свечной заводик... (цитата) "с поддержкой юникода" (и при этом не могли толком объяснить, что же именно они там поддерживают: UTF8? UCS2? Whatever?) А еще в этом GUI была — я не шучу — утиная типизация, основанная на интерфейсах. То есть перед использованием нужно под try/except попытаться привести экземпляр TComponent к ожидаемому интерфейсному типу, и, если получилось — работать с ним, а нет — ну, типа, не судьба. Так что, как у классика
Пессимист(мрачно): Всё. Хуже уже не будет.
Оптимист(радостно): Да будет еще! Будет!!!
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Здравствуйте, slava_phirsov, Вы писали:
s> H>Хорошо хоть, что огромная часть мудачья убежала на шарпы с формулировкой "дельфи мертв"
s> Года полтора назад был на собеседовании в одной конторке... Ребята писали (в 2009-м!!!) на D7 (хорошо хоть, не на D5), изобретали библиотеку компонентов GUI Ну, типа, свой свечной заводик... (цитата) "с поддержкой юникода" (и при этом не могли толком объяснить, что же именно они там поддерживают: UTF8? UCS2? Whatever?) А еще в этом GUI была — я не шучу — утиная типизация, основанная на интерфейсах. То есть перед использованием нужно под try/except попытаться привести экземпляр TComponent к ожидаемому интерфейсному типу, и, если получилось — работать с ним, а нет — ну, типа, не судьба. Так что, как у классика
s>
s> Пессимист(мрачно): Всё. Хуже уже не будет.
s> Оптимист(радостно): Да будет еще! Будет!!!
Здравствуйте, gandjustas, Вы писали:
HA>>gc работал бы часами по такому алгоритму G>С чего ты взял? А то что стандартные аллокаторы тоже O(N) причем на каждое выделение памяти, они же не часами работают.
Как же ты утомил!
Хоть раз ты изволишь объяснить что ж это за "стандартные" аллокаторы такие?
Да ещё и O(N).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, slava_phirsov, Вы писали:
_>(цитата) "с поддержкой юникода" (и при этом не могли толком объяснить, что же именно они там поддерживают: UTF8? UCS2? Whatever?)
Ну может они оччччень сильно напряглись и реализовали ваще весь Unicode стандарт, с блекждеком и всем что к нему полагается
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, vladimir.vladimirovich, Вы писали:
I>>"... стоять раком" — привычно отозвалось эхо
VV>Какой интересный случай. А твой доктор об этом знает?
Да, случай интересный, ты представляешь меня секретаршей, рассказываешь про юзеров с одной сиской и одним яйцом, спрашиваешь у меня про пол...
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, Head Ache, Вы писали:
HA>>Здравствуйте, MxMsk, Вы писали:
MM>>>Ну, хорошо. Ввели мы "нормальные" конструктор и деструктор. Что дальше? Каков usecase? Чем это лучше наличия конструктора и метода Dispose?
HA>>Пример1. Была проблема, описанная в http://support.microsoft.com/default.aspx?scid=KB;EN-US;q326219 HA>>Переводя на русский, при выходе из unmaged кода я должен гарантировать нужное состояние FPU. HA>>То есть controlfp() должна быть ровно последней инструкцией, выполненной внутри длл. HA>>Как видите, строгая гарантия обеспечена (и никакого отношения к управлению памятью эта проблема не имеет). MM>Так причем здесь "нормальные" конструктор и деструктор? Что в них "нормального"? Дело в вызове деструктора при выходе за пределы области видимости? Ну, а что делать, если ты этот объект куда-нибудь передашь?
Зачем спрашиваешь, наверно и так ответ заранее знаешь
Если ссылка будет жить дольше объекта — будет плохо и никто такой код не пишет.
Если надо контролировать время жизни — использовать интеллектуальные указатели.
Обратите внимание, подход "не плати за то, чем не пользуешься": четко обозначить проблему и решать именно ее.
То есть если не нужны именно интеллектуальные указатели, они и не будут применяться.
Также есть варианты со статической памятью, глубоким копированием, специализированные аллокаторы.
Никто не мешает и сборщик мусора применять, только почему-то непопулярен этот подход.
Ни с gc, ни с каким-либо другим.
HA>>Пример2(классика). Критические секции, когда после Enter() следует гарантировать выполнение Leave() HA>>Для C# это настолько сложная проблема, что даже понадобилось вводить новое ключевое слово lock (SyncLock в VB) ! HA>>(так же как и using для IDisposable) MM>Какие-то у тебя проблемы надуманные. Это все такие мелочи: написать lock или try/finally.
Не мелочи, когда надо обеспечивать строгие гарантии самому.
try/finally в этом плане хуже, т.к. заставляет хоть как-то выставлять наружу внутреннюю реализацию.
Собственно, поэтому в cpp применение try/finally нежелательно.
HA>>............ MM>>>Если честно, то это ужасно. Ты превращаешь язык с GC в язык без GC. Лично мне хватает using. HA>>По коду ужасов нет, все довольно коротко и тривиально. HA>>К gc, не скрою, всегда относился с недоверием и вам не рекомендую считать его серебряной пулей. MM>Не считаю. Но раз уж работаем в среде с GC, то лучше уважать его и понимать, как жить в его мире, чем пытаться перестроить. Уж если много недоверия, не лучше ли взять unmanaged?
Предпочитаю. Но не всегда есть возможность выбирать.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Head Ache, Вы писали:
HA>>for each p in roots HA>> DFS(p) // это вроде O(N)?
HA>>gc работал бы часами по такому алгоритму
I>Если O(N) так сразу часами ? Когда нужно N элементов освободить, представь, это тоже O(N) и никаких часов не требуется.
По-разному. Может быть хуже O(N) — указатель еще в куче надо найти или где-то еще.
А может быть и O(1), например:
void f()
{
int x1;
int x2;
int x3; // хоть сколько угодно переменных
} // просто вершина стека сместится на заданное число
Здравствуйте, Head Ache, Вы писали:
HA>Зачем спрашиваешь, наверно и так ответ заранее знаешь HA>Если ссылка будет жить дольше объекта — будет плохо и никто такой код не пишет. HA>Если надо контролировать время жизни — использовать интеллектуальные указатели. HA>Обратите внимание, подход "не плати за то, чем не пользуешься": четко обозначить проблему и решать именно ее. HA>То есть если не нужны именно интеллектуальные указатели, они и не будут применяться. HA>Также есть варианты со статической памятью, глубоким копированием, специализированные аллокаторы. HA>Никто не мешает и сборщик мусора применять, только почему-то непопулярен этот подход. HA>Ни с gc, ни с каким-либо другим.
Забавно, наверное, потом поддерживать всё это нагромождение разных подходов. Все они в той или иной степени неэффективны, поэтому и взялись за сборщик мусора. Который, конечно, тоже по своему неэффективен, но благо у нас есть выбор. Мне весь этот описанный бардак — то так сошлемся, то сяк, то смарт-поинтеры с самопальными аллокаторами — не нужен.
HA>>>Пример2(классика). Критические секции, когда после Enter() следует гарантировать выполнение Leave() HA>>>Для C# это настолько сложная проблема, что даже понадобилось вводить новое ключевое слово lock (SyncLock в VB) ! HA>>>(так же как и using для IDisposable) MM>>Какие-то у тебя проблемы надуманные. Это все такие мелочи: написать lock или try/finally. HA>Не мелочи, когда надо обеспечивать строгие гарантии самому.
Что-то я не понял, о чем ты. Написать реализацию IDisposable тяжело? Написать using тяжело?
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, gandjustas, Вы писали:
HA>>>gc работал бы часами по такому алгоритму G>>С чего ты взял? А то что стандартные аллокаторы тоже O(N) причем на каждое выделение памяти, они же не часами работают. CC>Как же ты утомил! CC>Хоть раз ты изволишь объяснить что ж это за "стандартные" аллокаторы такие?
Которые используются в Windows, *nix и в большинстве реализаций стандартной библиотеки.
Я тебе говорил про это.
CC>Да ещё и O(N).
Действительно O(N), потому что построены на списке свободных блоков.
Здравствуйте, Head Ache, Вы писали:
HA>Здравствуйте, gandjustas, Вы писали:
G>>Рекурсия, пока в объекте есть ссылки на другие объекты.
HA>Боюсь, что в сложных вариантах с циклами, (т.е. когда собственно и нужен полный dfs), HA>число итераций может расти с факториальной скоростью.
Счегобы? Там же объекты помечаются. На весь этап mark уходит O(N) от количества живых объектов.
Здравствуйте, Head Ache, Вы писали:
HA>>>gc работал бы часами по такому алгоритму I>>Если O(N) так сразу часами ? Когда нужно N элементов освободить, представь, это тоже O(N) и никаких часов не требуется.
HA>По-разному. Может быть хуже O(N) — указатель еще в куче надо найти или где-то еще. HA>А может быть и O(1), например:
Здравствуйте, gandjustas, Вы писали:
G>>>С чего ты взял? А то что стандартные аллокаторы тоже O(N) причем на каждое выделение памяти, они же не часами работают. CC>>Как же ты утомил! CC>>Хоть раз ты изволишь объяснить что ж это за "стандартные" аллокаторы такие? G>Которые используются в Windows, *nix и в большинстве реализаций стандартной библиотеки.
Большинство реализаций стандартной библиотеки зовут системный аллокатор. Т.е. своего попросту не имеют.
В *nix используются алгоритмы типа SLAB/SLUB, в которых пулы называются cache.
В WinHeap используется LFH (с висты начиная — принудительно) который тоже на пулах.
CC>>Да ещё и O(N). G>Действительно O(N), потому что построены на списке свободных блоков.
Ну вот мой ThreadPoolAlloc имеет списки свободных блоков.
Добавить блока в список O(1), Забрать блок из списка O(1).
Т.е. использование списка совсем не обязательно гарантирует O(N).
В современных аллокаторах (как и в .NET GC кстати) выделение блоков маленького размера и выделение блоков большого размера отличаются принципами.
Точно так же есть LOH, в котором аллокацию можно сделать неспешной, ибо редко используется.
Но и там можно использовать технику быстрого поиска подходящего блока путём вноса свободного блока в списки свободных, сгруппированные по диапазонам размера. Т.е. мы за O(1) узнаём что блока именно такого размера точно нет, и надо будет дробить блок из пула бОльшего размера.
Ну а для мелких блоков, уже паверное вообще всеми используются пулы, в которых время поиска блока как правило O(1).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, enji, Вы писали:
E>>Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>>Здравствуйте, enji, Вы писали:
E>>>>Развитость языка — а какие именно возможности языка были бы полезны в этом случае?
НС>>>К примеру, для работы с СОМ-портом можно использовать Reactive Framework. В Дельфи аналог есть? Для асинхронности все тот же Rx или PLinq. В Дельфи аналог последнего есть?
E>>Гм, а зачем? В дельфи есть компонент, у которого есть события — получен символ, переданы данные и т.д. Компонент полностью изолирует порт. Что у него внутрях — я не знаю, может отдельный поток, может порты завершения...
E>>На его основе работа с портом пишется весьма просто.
G>Датыче? напиши-ка прогу, которая читает из порта пакеты, где в первом байте указана длина пакета, а в последующих сам пакет, в конце CRC. G>После принятия валидного пакета его надо отправить на обработку некоторой функции, при этом порт должен продолжать принимать данные.
G>А потом сравним вариант с Rx на .NET
На дельфи написать не могу — я забросил дельфи года 3 как. Сча пишу на плюсах. С учетом того, что ваша задача для меня типична, у меня выработан вполне удобный самопальный фреймворк для обмена с устройствами. Фреймворк, что характерно, работает как на 8-бит однокристалках под самопальной мини-ос, так и на вин\лин (поверх буст асио).
С учетом этого фреймворка все сводится к примерно вот такой функции:
Здесь на макросах реализовано что-то вроде сопроцедур — процедура прерывается, а затем выполняется начиная с точки прерывания. При этом учитывается "тип блока" — передача, обработка ответа и т.д. Подозреваю, что это — упрощенный аналог вашего Reactive Framework
IObservable<StockAlert> alerts = ticks.Parse(parser =>
from next in parser
let ups = next.Where(tick => tick.Change > 0)
let downs = next.Where(tick => tick.Change < 0)
select (from up in ups.AtLeast(2)
from down in downs
where down.Change <= -11
select new StockAlert(up.ToEnumerable(), down))
.Or
(from down in downs.AtLeast(2)
from up in ups
where up.Change >= 21
select new StockAlert(down.ToEnumerable(), up)));
А не могли бы вы вкратце пояснить, что это делает? А то нифига не понятно
Здравствуйте, enji, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, enji, Вы писали:
E>>>Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>>>Здравствуйте, enji, Вы писали:
E>>>>>Развитость языка — а какие именно возможности языка были бы полезны в этом случае?
НС>>>>К примеру, для работы с СОМ-портом можно использовать Reactive Framework. В Дельфи аналог есть? Для асинхронности все тот же Rx или PLinq. В Дельфи аналог последнего есть?
E>>>Гм, а зачем? В дельфи есть компонент, у которого есть события — получен символ, переданы данные и т.д. Компонент полностью изолирует порт. Что у него внутрях — я не знаю, может отдельный поток, может порты завершения...
E>>>На его основе работа с портом пишется весьма просто.
G>>Датыче? напиши-ка прогу, которая читает из порта пакеты, где в первом байте указана длина пакета, а в последующих сам пакет, в конце CRC. G>>После принятия валидного пакета его надо отправить на обработку некоторой функции, при этом порт должен продолжать принимать данные.
G>>А потом сравним вариант с Rx на .NET
E>На дельфи написать не могу — я забросил дельфи года 3 как.
выше выделено про компонент делфи.
E>Сча пишу на плюсах. С учетом того, что ваша задача для меня типична, у меня выработан вполне удобный самопальный фреймворк для обмена с устройствами. Фреймворк, что характерно, работает как на 8-бит однокристалках под самопальной мини-ос, так и на вин\лин (поверх буст асио). E>С учетом этого фреймворка все сводится к примерно вот такой функции: E>
Это далеко не самое интересное. Самое интересное как раз "фреймворк", который занимается заполнением буфера, а не как потом буфер обрабатывается.
E>Здесь на макросах реализовано что-то вроде сопроцедур — процедура прерывается, а затем выполняется начиная с точки прерывания. При этом учитывается "тип блока" — передача, обработка ответа и т.д. Подозреваю, что это — упрощенный аналог вашего Reactive Framework
Всетаки разговор про делфи был. Там и макросов то нет.
Здравствуйте, enji, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
G>>Вполне может решаться проще. G>>http://code.msdn.microsoft.com/RxParsers G>>вот так например
E>
E>IObservable<StockAlert> alerts = ticks.Parse(parser =>
E> from next in parser //Служебный кусок
E> let ups = next.Where(tick => tick.Change > 0) //Разделение потока событий на положительные
E> let downs = next.Where(tick => tick.Change < 0)//и отрицательные
E> select (from up in ups.AtLeast(2) //Если сначала иду как минимум два положительных
E> from down in downs //Затем отрицательный
E> where down.Change <= -11 //Когда у отрицательного изменения <= -11
E> select new StockAlert(up.ToEnumerable(), down)) //Возвращаем StockAlert
E> .Or //Или
E> (from down in downs.AtLeast(2) //Сначала как минимум два отрицательных
E> from up in ups //Потом положительный
E> where up.Change >= 21 //Со значением более 21
E> select new StockAlert(down.ToEnumerable(), up))); //Возвращаем StockAlert
E>
E>А не могли бы вы вкратце пояснить, что это делает? А то нифига не понятно
А чтобы понимать как оно это делает надо изучать continuation, list и parser монады.
Здравствуйте, Ikemefula, Вы писали:
I>Да, случай интересный, ты представляешь меня секретаршей, рассказываешь про юзеров с одной сиской и одним яйцом, спрашиваешь у меня про пол... I>
Какие у тебя фантазии. Ты об этом наблюдателям уже рассказал?
Здравствуйте, vladimir.vladimirovich, Вы писали:
VV>Здравствуйте, Ikemefula, Вы писали:
I>>Да, случай интересный, ты представляешь меня секретаршей, рассказываешь про юзеров с одной сиской и одним яйцом, спрашиваешь у меня про пол... I>>
VV>Какие у тебя фантазии. Ты об этом наблюдателям уже рассказал?
Фантазии это у тебя. Ты единственный, кто представляет юзера как существо с одной сиськой и одним яйцом.
Ты всерьез считаешь, что у тебя все в порядке в головой ?
Ладно бы ты сказал, что юзер это чел с одной рукой, одним кривым пальцем, одним ухом и одним глазом.
Но у тебя почему то сиська и яйцо. Ты что, продавец в сексшопе что ли ?
Здравствуйте, snaphold, Вы писали:
S>Странно... S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
Кто-то тут писал что Delphi медленно работает. Уже месяц пишу интерпретатор языка PHP с нуля на этом языке. Я не преувеличиваю, скорость интерпретатора на уровне оригинального php, ruby и подобных языков. Идите, напишите интерпретатор на C# NET 4.0 даже, настоящий интерпретатор, без зависимости фреймворка. Поддержка freepascal и lazarus, а значит кроссплатформенность. А что-то такое Mono, компания Novell, которая его разрабатывает распродается по частям, так кто умирает? Скорее .NET как платформа умрет раньше из-за политики MS, а вот Java будет жить.
Здравствуйте, dim-s, Вы писали:
DS>Здравствуйте, snaphold, Вы писали:
S>>Странно... S>>5 лет назад думал, что дни его сочтены. Ан нет. S>>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
DS>Кто-то тут писал что Delphi медленно работает. Уже месяц пишу интерпретатор языка PHP с нуля на этом языке. Я не преувеличиваю, скорость интерпретатора на уровне оригинального php, ruby и подобных языков. Идите, напишите интерпретатор на C# NET 4.0 даже, настоящий интерпретатор, без зависимости фреймворка.
А ты Iron Ruby и Iron Python видел? Они какбы быстрее ruby и некоторых интерпретаторов python работают.
DS>Поддержка freepascal и lazarus, а значит кроссплатформенность.
Круто, и кому оно нафиг надо?
Обычно кроссплатформенность ради кроссплатформенности никого не интересует.
DS>А что-то такое Mono, компания Novell, которая его разрабатывает распродается по частям, так кто умирает?
Да ты не переживай, где сейчас borland? а inprise? а codegear? кто сейчас delphi занимается?
DS>Скорее .NET как платформа умрет раньше из-за политики MS, а вот Java будет жить.
А вот практика показывает обратное. Особенно в свете недавнего отказа apple саппортить java на маках.
Здравствуйте, gandjustas, Вы писали:
DS>>А что-то такое Mono, компания Novell, которая его разрабатывает распродается по частям, так кто умирает? G>Да ты не переживай, где сейчас borland? а inprise? а codegear? кто сейчас delphi занимается?
Mono таки подохнет или скукожытся. Сейчас появляется слишком много девайсов не на вындоусе и на которых сильверлайта нет, соответсвенно ждать чуда крайне странно, особенно с проникновением html5.
Микрософт просрала свой сильверлайт, когда просрала рынки браузеров, телефонов, плейеров, таблеток.
DS>>Скорее .NET как платформа умрет раньше из-за политики MS, а вот Java будет жить. G>А вот практика показывает обратное. Особенно в свете недавнего отказа apple саппортить java на маках.
Дотнет вряд ли умрет, но вот особых успехов ждать не приходится.
Apple отказалась Джаву суппортить, так есть Оракл, который этим скорее всего займется и поверь это будет намного лучше — свято место пусто не бывает.
Здравствуйте, gandjustas, Вы писали:
g> DS>Поддержка freepascal и lazarus, а значит кроссплатформенность.
g> Круто, и кому оно нафиг надо? g> Обычно кроссплатформенность ради кроссплатформенности никого не интересует.
Линукс идет в массы (да-да, я сам видел), Маки цветут пышным цветом Ты не знал?
g> Да ты не переживай, где сейчас borland? а inprise? а codegear? кто сейчас delphi занимается?
CodeGear сейчас в составе Embarcadero, работают над Delphi (в том числе и кроссплатформенной). Порадуйся.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, gandjustas, Вы писали:
DS>>>А что-то такое Mono, компания Novell, которая его разрабатывает распродается по частям, так кто умирает? G>>Да ты не переживай, где сейчас borland? а inprise? а codegear? кто сейчас delphi занимается?
I>Mono таки подохнет или скукожытся. Сейчас появляется слишком много девайсов не на вындоусе и на которых сильверлайта нет, соответсвенно ждать чуда крайне странно, особенно с проникновением html5.
Ниче не пойму, причем тут моно и silverlight?
I>Микрософт просрала свой сильверлайт, когда просрала рынки браузеров, телефонов, плейеров, таблеток.
Логика в отпуске...
DS>>>Скорее .NET как платформа умрет раньше из-за политики MS, а вот Java будет жить. G>>А вот практика показывает обратное. Особенно в свете недавнего отказа apple саппортить java на маках.
I>Дотнет вряд ли умрет, но вот особых успехов ждать не приходится.
I>Apple отказалась Джаву суппортить, так есть Оракл, который этим скорее всего займется и поверь это будет намного лучше — свято место пусто не бывает.
Здравствуйте, gandjustas, Вы писали:
DS>>Здравствуйте, snaphold, Вы писали:
DS>>Кто-то тут писал что Delphi медленно работает. Уже месяц пишу интерпретатор языка PHP с нуля на этом языке. Я не преувеличиваю, скорость интерпретатора на уровне оригинального php, ruby и подобных языков. Идите, напишите интерпретатор на C# NET 4.0 даже, настоящий интерпретатор, без зависимости фреймворка. G>А ты Iron Ruby и Iron Python видел? Они какбы быстрее ruby и некоторых интерпретаторов python работают.
Что такое Iron *, это компиляция в байт-код .NET. Ничего удивительного, компилятор можно написать хоть на PHP (утрирую), главное чтобы была платформа на чем байт-код можно было бы быстро выполнить.
DS>>Поддержка freepascal и lazarus, а значит кроссплатформенность. G>Круто, и кому оно нафиг надо? G>Обычно кроссплатформенность ради кроссплатформенности никого не интересует.
DS>>А что-то такое Mono, компания Novell, которая его разрабатывает распродается по частям, так кто умирает? G>Да ты не переживай, где сейчас borland? а inprise? а codegear? кто сейчас delphi занимается?
Codegear разрабатывает делфи и сейчас, она теперь под покровительством embarcadero, и Delphi 2009-2010 вышли под их покровительством.
DS>>Скорее .NET как платформа умрет раньше из-за политики MS, а вот Java будет жить. G>А вот практика показывает обратное. Особенно в свете недавнего отказа apple саппортить java на маках.
Насколько Apple поддерживает .NET платформу? * А вот Freepascal уже есть под Apple. *
Здравствуйте, gandjustas, Вы писали:
I>>Apple отказалась Джаву суппортить, так есть Оракл, который этим скорее всего займется и поверь это будет намного лучше — свято место пусто не бывает.
G>Верующий блин
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> DS>Поддержка freepascal и lazarus, а значит кроссплатформенность.
g>> Круто, и кому оно нафиг надо? g>> Обычно кроссплатформенность ради кроссплатформенности никого не интересует.
H>Линукс идет в массы (да-да, я сам видел), Маки цветут пышным цветом Ты не знал?
И что?
Под пак пишут на Cocoa и Objective-C, под nix KDE или GTK на C\C++, под винду MFC или .NET.
Разве что Qt позволяет писать под все сразу. Но для маков Cocoa все равно остается предпочтительной.
g>> Да ты не переживай, где сейчас borland? а inprise? а codegear? кто сейчас delphi занимается? H>CodeGear сейчас в составе Embarcadero, работают над Delphi (в том числе и кроссплатформенной). Порадуйся.
Круто, вот тебе наглядное доказательство что востребованный продукт всегда найдется кому поддерживать.
Здравствуйте, dim-s, Вы писали:
DS>Здравствуйте, gandjustas, Вы писали:
DS>>>Здравствуйте, snaphold, Вы писали:
DS>>>Кто-то тут писал что Delphi медленно работает. Уже месяц пишу интерпретатор языка PHP с нуля на этом языке. Я не преувеличиваю, скорость интерпретатора на уровне оригинального php, ruby и подобных языков. Идите, напишите интерпретатор на C# NET 4.0 даже, настоящий интерпретатор, без зависимости фреймворка. G>>А ты Iron Ruby и Iron Python видел? Они какбы быстрее ruby и некоторых интерпретаторов python работают.
DS>Что такое Iron *, это компиляция в байт-код .NET. Ничего удивительного, компилятор можно написать хоть на PHP (утрирую), главное чтобы была платформа на чем байт-код можно было бы быстро выполнить.
Ну напиши такую платформу да делфи
DS>>>Скорее .NET как платформа умрет раньше из-за политики MS, а вот Java будет жить. G>>А вот практика показывает обратное. Особенно в свете недавнего отказа apple саппортить java на маках.
DS>Насколько Apple поддерживает .NET платформу? * А вот Freepascal уже есть под Apple. *
Mono.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> А ты Iron Ruby и Iron Python видел? Они какбы быстрее ruby и некоторых интерпретаторов python работают.
H>Другой вопрос, а являются ли они честными интерпретаторами? А может там где чего и джитится?
А в чем разница? Во всех современных интерпретаторах джитится.
Здравствуйте, gandjustas, Вы писали:
g> DS>Что такое Iron *, это компиляция в байт-код .NET. Ничего удивительного, компилятор можно написать хоть на PHP (утрирую), главное чтобы была платформа на чем байт-код можно было бы быстро выполнить.
g> Ну напиши такую платформу да делфи
Уже написана. Называется PaxCompiler. Паскаль код компилит в натив и пускает.
Здравствуйте, gandjustas, Вы писали:
g> g>> DS>Поддержка freepascal и lazarus, а значит кроссплатформенность.
g> g>> Круто, и кому оно нафиг надо? g> g>> Обычно кроссплатформенность ради кроссплатформенности никого не интересует.
g> H>Линукс идет в массы (да-да, я сам видел), Маки цветут пышным цветом Ты не знал?
g> И что? g> Под пак пишут на Cocoa и Objective-C, под nix KDE или GTK на C\C++, под винду MFC или .NET. g> Разве что Qt позволяет писать под все сразу. Но для маков Cocoa все равно остается предпочтительной.
И как это разговор от "нафиг надо" перешел к перечислению библов? К слову, Lazarus умеет использовать, и Win32(CE), и GTK(2), и Qt (и есть наметки для Cocoa).
g> g>> Да ты не переживай, где сейчас borland? а inprise? а codegear? кто сейчас delphi занимается?
g> H>CodeGear сейчас в составе Embarcadero, работают над Delphi (в том числе и кроссплатформенной). Порадуйся.
g> Круто, вот тебе наглядное доказательство что востребованный продукт всегда найдется кому поддерживать.
Здравствуйте, gandjustas, Вы писали:
g> g>> А ты Iron Ruby и Iron Python видел? Они какбы быстрее ruby и некоторых интерпретаторов python работают.
g> H>Другой вопрос, а являются ли они честными интерпретаторами? А может там где чего и джитится?
g> А в чем разница? Во всех современных интерпретаторах джитится.
Дык разница в том, что сравнивать работу джита, и говорить, что он быстрее, с обычной интерпретацией, мягко говоря, неправильно.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Head Ache, Вы писали:
HA>>Немного перебрал HA>>Применение DFS для каждого узла даст в итоге квадратичную сложность, вот
G>Ниугадал. G>Так как объекты помечаются, то больше одного раза по живому объекты не пройдет
Еще не сдаюсь
Оценка сложности DFS O(N+E), N — число вершин, E — число связей.
E может быть от 0 до O(N^2)
То есть какие-то патологические ситуации все-таки возможны.
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, Head Ache, Вы писали:
HA>>Зачем спрашиваешь, наверно и так ответ заранее знаешь HA>>Если ссылка будет жить дольше объекта — будет плохо и никто такой код не пишет. HA>>Если надо контролировать время жизни — использовать интеллектуальные указатели. HA>>Обратите внимание, подход "не плати за то, чем не пользуешься": четко обозначить проблему и решать именно ее. HA>>То есть если не нужны именно интеллектуальные указатели, они и не будут применяться. HA>>Также есть варианты со статической памятью, глубоким копированием, специализированные аллокаторы. HA>>Никто не мешает и сборщик мусора применять, только почему-то непопулярен этот подход. HA>>Ни с gc, ни с каким-либо другим. MM>Забавно, наверное, потом поддерживать всё это нагромождение разных подходов. Все они в той или иной степени неэффективны, поэтому и взялись за сборщик мусора. Который, конечно, тоже по своему неэффективен, но благо у нас есть выбор. Мне весь этот описанный бардак — то так сошлемся, то сяк, то смарт-поинтеры с самопальными аллокаторами — не нужен.
Бардака нет.
HA>>>>Пример2(классика). Критические секции, когда после Enter() следует гарантировать выполнение Leave() HA>>>>Для C# это настолько сложная проблема, что даже понадобилось вводить новое ключевое слово lock (SyncLock в VB) ! HA>>>>(так же как и using для IDisposable) MM>>>Какие-то у тебя проблемы надуманные. Это все такие мелочи: написать lock или try/finally. HA>>Не мелочи, когда надо обеспечивать строгие гарантии самому. MM>Что-то я не понял, о чем ты. Написать реализацию IDisposable тяжело? Написать using тяжело?
Поймешь меня, когда другие начнут пользоваться твоими либами.
Здравствуйте, Head Ache, Вы писали:
HA>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, Head Ache, Вы писали:
HA>>>Немного перебрал HA>>>Применение DFS для каждого узла даст в итоге квадратичную сложность, вот
G>>Ниугадал. G>>Так как объекты помечаются, то больше одного раза по живому объекты не пройдет
HA>Еще не сдаюсь HA>Оценка сложности DFS O(N+E), N — число вершин, E — число связей. HA>E может быть от 0 до O(N^2) HA>То есть какие-то патологические ситуации все-таки возможны.
Еще раз. Все вершины проходятся максимум один раз. Количество связей значение не имеет.
Никаких паталогических ситуаций быть не может.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, enji, Вы писали:
E>>Здравствуйте, gandjustas, Вы писали:
G>>>Вполне может решаться проще. G>>>http://code.msdn.microsoft.com/RxParsers G>>>вот так например
E>>
E>>IObservable<StockAlert> alerts = ticks.Parse(parser =>
E>> from next in parser //Служебный кусок
E>> let ups = next.Where(tick => tick.Change > 0) //Разделение потока событий на положительные
E>> let downs = next.Where(tick => tick.Change < 0)//и отрицательные
E>> select (from up in ups.AtLeast(2) //Если сначала иду как минимум два положительных
E>> from down in downs //Затем отрицательный
E>> where down.Change <= -11 //Когда у отрицательного изменения <= -11
E>> select new StockAlert(up.ToEnumerable(), down)) //Возвращаем StockAlert
E>> .Or //Или
E>> (from down in downs.AtLeast(2) //Сначала как минимум два отрицательных
E>> from up in ups //Потом положительный
E>> where up.Change >= 21 //Со значением более 21
E>> select new StockAlert(down.ToEnumerable(), up))); //Возвращаем StockAlert
E>>
E>>А не могли бы вы вкратце пояснить, что это делает? А то нифига не понятно
G>А чтобы понимать как оно это делает надо изучать continuation, list и parser монады.
Т.е. есть очередь объектов тип Тик. Если начало очереди соответствует одному шаблону, создается один объект, если другому — то второй; в обоих случаях совпадение удаляется из очереди? Если не соответствует никакому — то что? Первый элемент отбрасывается?
Тоже самое на дельфи (кстати, в последних версиях есть лямбды, но синтаксис я не знаю, обойдемся без них):
function filter(q : TTickQueue) : TTick;
function isUp(t : TTick);
begin
Result := t.Change > 0
end;
function isDown(t : TTick);
begin
Result := t.Change < 0
end;
begin
if q.atLeast(2, isUp) and q(2).Change <= -11 then
begin
Result := StockAlert.Create(q[0].ToEnumerable(), down);
q.pop(3);
end
else if q.atLeast(2, isDown) and isUp(q[2]) and q[2].Change > 21 then
begin
Result := StockAlert.Create(q[0].ToEnumerable(), up);
q.pop(3);
end
else
q.pop();
end;
По строчкам примерно тоже самое. И, ИМХО, понятно не только знатокам шарпа, а практически каждому
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, enji, Вы писали:
E>>Здравствуйте, gandjustas, Вы писали:
G>>>Здравствуйте, enji, Вы писали:
E>>>>Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>>>>Здравствуйте, enji, Вы писали:
E>>>>>>Развитость языка — а какие именно возможности языка были бы полезны в этом случае?
НС>>>>>К примеру, для работы с СОМ-портом можно использовать Reactive Framework. В Дельфи аналог есть? Для асинхронности все тот же Rx или PLinq. В Дельфи аналог последнего есть?
E>>>>Гм, а зачем? В дельфи есть компонент, у которого есть события — получен символ, переданы данные и т.д. Компонент полностью изолирует порт. Что у него внутрях — я не знаю, может отдельный поток, может порты завершения...
E>>>>На его основе работа с портом пишется весьма просто.
G>>>Датыче? напиши-ка прогу, которая читает из порта пакеты, где в первом байте указана длина пакета, а в последующих сам пакет, в конце CRC. G>>>После принятия валидного пакета его надо отправить на обработку некоторой функции, при этом порт должен продолжать принимать данные.
G>>>А потом сравним вариант с Rx на .NET
E>>На дельфи написать не могу — я забросил дельфи года 3 как. G>выше выделено про компонент делфи.
Ну какая принципиальная разница ? И на дельфи будет примерно такая-же по сложности функция.
G>Это далеко не самое интересное. Самое интересное как раз "фреймворк", который занимается заполнением буфера, а не как потом буфер обрабатывается.
А что в этом такого интересного? Сильно зависящй от платформы и физического уровня класс, который буферизует принятые байты, контролирует таймауты и периодически дергает указанную ему функцию (пример которой я вам и привел), которая формирует из байтов пакеты в соответствии с конкретным протоколом, а также указывает что делать при нарушении таймаутов.
Кстати, хотелось бы посмотреть на такую штуку c Rx на .NET
Заодно давайте чуть усложним пакет:
START STX адрес данные ETX CRC
START может отсутствовать
каждый байт между STX и ETX сопровождается комплиментарным (например: 0x12 0xED 0x47 0xB8 и т.д.)
адрес лежит в диапазоне [0x10, 0x30)
CRC — однобайтовая, сумма всех байт адреса и данных (исключая комплиментарные) по модулю 256
STX не может встретиться внутри пакета, однако может в CRC или как комплиментарный байт
Комплиментарные байты следует проверить на правильность и исключить из пакета
E>>Здесь на макросах реализовано что-то вроде сопроцедур — процедура прерывается, а затем выполняется начиная с точки прерывания. При этом учитывается "тип блока" — передача, обработка ответа и т.д. Подозреваю, что это — упрощенный аналог вашего Reactive Framework G>Всетаки разговор про делфи был. Там и макросов то нет.
Ну в дельфях есть лямбды, можно сделать через массив лямбд. Не знаю конечно как оно будет выглядеть, забросил дельфи раньше, чем они появились... На крайний случай можно прогнать код через сторонний препроцессор, тот же M4
Здравствуйте, enji, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, enji, Вы писали:
E>>>Здравствуйте, gandjustas, Вы писали:
G>>>>Вполне может решаться проще. G>>>>http://code.msdn.microsoft.com/RxParsers G>>>>вот так например
E>>>
E>>>IObservable<StockAlert> alerts = ticks.Parse(parser =>
E>>> from next in parser //Служебный кусок
E>>> let ups = next.Where(tick => tick.Change > 0) //Разделение потока событий на положительные
E>>> let downs = next.Where(tick => tick.Change < 0)//и отрицательные
E>>> select (from up in ups.AtLeast(2) //Если сначала иду как минимум два положительных
E>>> from down in downs //Затем отрицательный
E>>> where down.Change <= -11 //Когда у отрицательного изменения <= -11
E>>> select new StockAlert(up.ToEnumerable(), down)) //Возвращаем StockAlert
E>>> .Or //Или
E>>> (from down in downs.AtLeast(2) //Сначала как минимум два отрицательных
E>>> from up in ups //Потом положительный
E>>> where up.Change >= 21 //Со значением более 21
E>>> select new StockAlert(down.ToEnumerable(), up))); //Возвращаем StockAlert
E>>>
E>>>А не могли бы вы вкратце пояснить, что это делает? А то нифига не понятно
G>>А чтобы понимать как оно это делает надо изучать continuation, list и parser монады.
E>Т.е. есть очередь объектов тип Тик. Если начало очереди соответствует одному шаблону, создается один объект, если другому — то второй; в обоих случаях совпадение удаляется из очереди? Если не соответствует никакому — то что? Первый элемент отбрасывается?
Немного не так. Нету очередей, есть поток событий. Вот если в потоке событий Tick парсер обнаруживает заданный шаблон (два вверх, потом один вниз или наоборот), то выкидывает событие StockAlert. То есть образуется другой поток событий типа StockAlert.
E>Тоже самое на дельфи (кстати, в последних версиях есть лямбды, но синтаксис я не знаю, обойдемся без них):
E>
E>function filter(q : TTickQueue) : TTick;
E> function isUp(t : TTick);
E> begin
E> Result := t.Change > 0
E> end;
E> function isDown(t : TTick);
E> begin
E> Result := t.Change < 0
E> end;
E>begin
E> if q.atLeast(2, isUp) and q(2).Change <= -11 then
E> begin
E> Result := StockAlert.Create(q[0].ToEnumerable(), down);
E> q.pop(3);
E> end
E> else if q.atLeast(2, isDown) and isUp(q[2]) and q[2].Change > 21 then
E> begin
E> Result := StockAlert.Create(q[0].ToEnumerable(), up);
E> q.pop(3);
E> end
E> else
E> q.pop();
E>end;
E>
E>По строчкам примерно тоже самое. И, ИМХО, понятно не только знатокам шарпа, а практически каждому
Неугадал. Коду выше нужна очередь, а кто-то еще будет эту очередь заполнять (читай блокировки, потоки итп). Кроме того функция не образует другой поток событий. А также проблема в том что функция твоя синхронна, а RxParsers работает асинхронно (не блокирует потоки).
Не получится на делфи даже близко повторить такую работу, как в RxParsers, слишком слаб и язык, и библиотека.
Здравствуйте, enji, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, enji, Вы писали:
E>>>Здравствуйте, gandjustas, Вы писали:
G>>>>Здравствуйте, enji, Вы писали:
E>>>>>Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>>>>>Здравствуйте, enji, Вы писали:
E>>>>>>>Развитость языка — а какие именно возможности языка были бы полезны в этом случае?
НС>>>>>>К примеру, для работы с СОМ-портом можно использовать Reactive Framework. В Дельфи аналог есть? Для асинхронности все тот же Rx или PLinq. В Дельфи аналог последнего есть?
E>>>>>Гм, а зачем? В дельфи есть компонент, у которого есть события — получен символ, переданы данные и т.д. Компонент полностью изолирует порт. Что у него внутрях — я не знаю, может отдельный поток, может порты завершения...
E>>>>>На его основе работа с портом пишется весьма просто.
G>>>>Датыче? напиши-ка прогу, которая читает из порта пакеты, где в первом байте указана длина пакета, а в последующих сам пакет, в конце CRC. G>>>>После принятия валидного пакета его надо отправить на обработку некоторой функции, при этом порт должен продолжать принимать данные.
G>>>>А потом сравним вариант с Rx на .NET
E>>>На дельфи написать не могу — я забросил дельфи года 3 как. G>>выше выделено про компонент делфи.
E>Ну какая принципиальная разница ? И на дельфи будет примерно такая-же по сложности функция.
Так ты привел самую неинтересную функцию в данном контексте. Интересует как раз сам фреймворк, который выполняет асинхронное считывание.
G>>Это далеко не самое интересное. Самое интересное как раз "фреймворк", который занимается заполнением буфера, а не как потом буфер обрабатывается. E>А что в этом такого интересного? Сильно зависящй от платформы и физического уровня класс, который буферизует принятые байты, контролирует таймауты и периодически дергает указанную ему функцию (пример которой я вам и привел), которая формирует из байтов пакеты в соответствии с конкретным протоколом, а также указывает что делать при нарушении таймаутов.
E>Кстати, хотелось бы посмотреть на такую штуку c Rx на .NET
E>Заодно давайте чуть усложним пакет:
E>START STX адрес данные ETX CRC
E>START может отсутствовать E>каждый байт между STX и ETX сопровождается комплиментарным (например: 0x12 0xED 0x47 0xB8 и т.д.) E>адрес лежит в диапазоне [0x10, 0x30) E>CRC — однобайтовая, сумма всех байт адреса и данных (исключая комплиментарные) по модулю 256 E>STX не может встретиться внутри пакета, однако может в CRC или как комплиментарный байт E>Комплиментарные байты следует проверить на правильность и исключить из пакета
Вечером сделаю.
Здравствуйте, gandjustas, Вы писали:
E>>Т.е. есть очередь объектов тип Тик. Если начало очереди соответствует одному шаблону, создается один объект, если другому — то второй; в обоих случаях совпадение удаляется из очереди? Если не соответствует никакому — то что? Первый элемент отбрасывается? G>Немного не так. Нету очередей, есть поток событий. Вот если в потоке событий Tick парсер обнаруживает заданный шаблон (два вверх, потом один вниз или наоборот), то выкидывает событие StockAlert. То есть образуется другой поток событий типа StockAlert.
Ну поток событий, очередь событий — какая в принцинципе разница?
G>Неугадал. Коду выше нужна очередь, а кто-то еще будет эту очередь заполнять (читай блокировки, потоки итп). G>Кроме того функция не образует другой поток событий. А также проблема в том что функция твоя синхронна, а RxParsers работает асинхронно (не блокирует потоки).
Эта функция занимается только поиском совпадений. Она вызывается не показанным здесь кодом при обновлении потока событий. Работает она точно также асинхронно, не блокируя потоки — где вы увидели в ней ожидание чего-либо?
G>Не получится на делфи даже близко повторить такую работу, как в RxParsers, слишком слаб и язык, и библиотека.
Конкретно этот мой пример чем не устраивает? Я не ставил своей целью повторить RxParsers, ибо пока слабо представляю себе что это такое. Но конкретный пример анализа потока и генерации каких-то событий при совпадении — повторяется на ура.
Написать обобщенную библиотеку, которая будет предоставлять потоки для любых событий, подозреваю вполне реально. Выглядеть она будет более коряво, потому что в языке меньше сахара, однако работать будет
Здравствуйте, gandjustas, Вы писали:
E>>Ну какая принципиальная разница ? И на дельфи будет примерно такая-же по сложности функция. G>Так ты привел самую неинтересную функцию в данном контексте. Интересует как раз сам фреймворк, который выполняет асинхронное считывание.
До меня все еще никак не дойдет, что такого интересного в этом "фреймворке"? На с++ поверх boost::asio — порядка 800 строк. На с++ поверх аппаратных прерываний — чуток поменьше. На дельфи поверх компонента — тоже ничего сложного нет. Совершенно тупой неинтересный код
Его задачи
— передать байты в порт
— принять байты из порта, проконтролировать разные таймауты, в нужные моменты вызвать протокольно-специфичную функцию анализа
Если ты намекаешь на то, что под Net эти 800 строк не надо писать — так я их один раз написал, отладил, и использую для любых протоколов обмена.
Здравствуйте, enji, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
E>>>Т.е. есть очередь объектов тип Тик. Если начало очереди соответствует одному шаблону, создается один объект, если другому — то второй; в обоих случаях совпадение удаляется из очереди? Если не соответствует никакому — то что? Первый элемент отбрасывается? G>>Немного не так. Нету очередей, есть поток событий. Вот если в потоке событий Tick парсер обнаруживает заданный шаблон (два вверх, потом один вниз или наоборот), то выкидывает событие StockAlert. То есть образуется другой поток событий типа StockAlert.
E>Ну поток событий, очередь событий — какая в принцинципе разница?
Большая, очередь — некоторая структура в памяти, а вот потоки событий — абстракции,структуры не имеющие.
G>>Неугадал. Коду выше нужна очередь, а кто-то еще будет эту очередь заполнять (читай блокировки, потоки итп). G>>Кроме того функция не образует другой поток событий. А также проблема в том что функция твоя синхронна, а RxParsers работает асинхронно (не блокирует потоки). E>Эта функция занимается только поиском совпадений. Она вызывается не показанным здесь кодом при обновлении потока событий. Работает она точно также асинхронно, не блокируя потоки — где вы увидели в ней ожидание чего-либо?
Вот именно не увидел, а это опять таки немаловажная часть решения — заполнение очереди.
G>>Не получится на делфи даже близко повторить такую работу, как в RxParsers, слишком слаб и язык, и библиотека. E>Конкретно этот мой пример чем не устраивает? Я не ставил своей целью повторить RxParsers, ибо пока слабо представляю себе что это такое. Но конкретный пример анализа потока и генерации каких-то событий при совпадении — повторяется на ура.
Ни разу не повторяется, потому что а)неполный б)не такой результат дает на выходе
E>Написать обобщенную библиотеку, которая будет предоставлять потоки для любых событий, подозреваю вполне реально. Выглядеть она будет более коряво, потому что в языке меньше сахара, однако работать будет
Она будет не просто коряво, а очень коряво.
Здравствуйте, enji, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
E>>>Ну какая принципиальная разница ? И на дельфи будет примерно такая-же по сложности функция. G>>Так ты привел самую неинтересную функцию в данном контексте. Интересует как раз сам фреймворк, который выполняет асинхронное считывание.
E>До меня все еще никак не дойдет, что такого интересного в этом "фреймворке"? На с++ поверх boost::asio — порядка 800 строк. На с++ поверх аппаратных прерываний — чуток поменьше. На дельфи поверх компонента — тоже ничего сложного нет. Совершенно тупой неинтересный код
Именно этот кусок меня и интересует.
E>Его задачи E>- передать байты в порт E>- принять байты из порта, проконтролировать разные таймауты, в нужные моменты вызвать протокольно-специфичную функцию анализа
Эти две задачи можно решать настолько разными способами, что можно получить в сотни раз отличающиеся потребления ресурсов компьютеров и человека.
Здравствуйте, gandjustas, Вы писали:
g> Большая, очередь — некоторая структура в памяти, а вот потоки событий — абстракции,структуры не имеющие.
... и работающие по божественной природе своей Любая абстракция при использовании проецируется на что либо. Очередь такая же абстракция. У нас OOP или где
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> Большая, очередь — некоторая структура в памяти, а вот потоки событий — абстракции,структуры не имеющие.
H>... и работающие по божественной природе своей Любая абстракция при использовании проецируется на что либо. Очередь такая же абстракция. У нас OOP или где
А я не утверждаю обратное. Я говорю что структуры не имеют, так же как не имеют структуры IEnumerable последовательности.
Здравствуйте, gandjustas, Вы писали:
g> g>> Большая, очередь — некоторая структура в памяти, а вот потоки событий — абстракции,структуры не имеющие.
g> H>... и работающие по божественной природе своей Любая абстракция при использовании проецируется на что либо. Очередь такая же абстракция. У нас OOP или где
g> А я не утверждаю обратное. Я говорю что структуры не имеют, так же как не имеют структуры IEnumerable последовательности.
Где-то они сторятся? Из чего-то они выбираются? Следовательно и структура есть.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> g>> Большая, очередь — некоторая структура в памяти, а вот потоки событий — абстракции,структуры не имеющие.
g>> H>... и работающие по божественной природе своей Любая абстракция при использовании проецируется на что либо. Очередь такая же абстракция. У нас OOP или где
g>> А я не утверждаю обратное. Я говорю что структуры не имеют, так же как не имеют структуры IEnumerable последовательности.
H>Где-то они сторятся? Из чего-то они выбираются? Следовательно и структура есть.
Здравствуйте, CreatorCray, Вы писали:
_>>(цитата) "с поддержкой юникода" (и при этом не могли толком объяснить, что же именно они там поддерживают: UTF8? UCS2? Whatever?) CC>Ну может они оччччень сильно напряглись и реализовали ваще весь Unicode стандарт, с блекждеком и всем что к нему полагается
Ммм, реализовать — это хорошо, но хранить-то его все равно как-то надо. А у нас кроме байт, по сути, других инструментов нету...
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
[]
E__>Понимаешь, Шеридан. Тут не в Винде даже проблема. Изначальный интерфейс написан хрен знает когда для ОЧЕНЬ платного Юникса,
Гугление на тему 2-ого 3-его АСУ Экспрессов показывает, что 2-ой Экспресс в качестве ОС использовал ГДР-ую TKS (переделанные MVT, SVS, MVS) на ЕС-ах и, частью, на западных аналогах IBM360/370, а 3-ий использует — OS390, что логично, т.к. OS390 прямая наследница MVS, на родных IBM-их S390. Надо заметить, что перечисленные ОС совсем не UNIX. Кстати — 2-ой Экспресс начал жить в 82 году, а первый релиз IBM-ого UNIX — AIX увидел свет в 86.
E__>более того, изначально продавались аппаратные терминалы(которые подороже топовых компов сейчас тогда были).
Тогда ЕС-7920 (в девичестве IBM-3270) наверно подороже были, чем топовые компы сейчас (хотя это сравнение из серии теплого с мягким), но точно были дешевле тогдашних персоналок, когда персоналки появились.
Здравствуйте, gandjustas, Вы писали:
g> g>> g>> Большая, очередь — некоторая структура в памяти, а вот потоки событий — абстракции,структуры не имеющие.
g> g>> H>... и работающие по божественной природе своей Любая абстракция при использовании проецируется на что либо. Очередь такая же абстракция. У нас OOP или где
g> g>> А я не утверждаю обратное. Я говорю что структуры не имеют, так же как не имеют структуры IEnumerable последовательности.
g> H>Где-то они сторятся? Из чего-то они выбираются? Следовательно и структура есть.
g> Необязтельно.
g>
Не о таком примитивизме речь. Я тоже такую фейковую очередь могу сделать Только это ничего не доказывает. Я к тому клоню, что если в одном случае будут задействоваться ненулевое количество ресурсов, так и в другом тоже.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> g>> g>> Большая, очередь — некоторая структура в памяти, а вот потоки событий — абстракции,структуры не имеющие.
g>> g>> H>... и работающие по божественной природе своей Любая абстракция при использовании проецируется на что либо. Очередь такая же абстракция. У нас OOP или где
g>> g>> А я не утверждаю обратное. Я говорю что структуры не имеют, так же как не имеют структуры IEnumerable последовательности.
g>> H>Где-то они сторятся? Из чего-то они выбираются? Следовательно и структура есть.
g>> Необязтельно.
g>>
H>Не о таком примитивизме речь. Я тоже такую фейковую очередь могу сделать
На сделай, на делфи
А потом сделай так чтобы при обращении к следующему элементу он на консоль выводился.
Или в делфи уже итераторы появились?
H>Только это ничего не доказывает. Я к тому клоню, что если в одном случае будут задействоваться ненулевое количество ресурсов, так и в другом тоже.
Конечно, только "ненулевое" может быть 1, а может быть 1000.
Вот тебе пример для раздумия: поток событий движения мыши, сколько он ресурсов захавает с Rx и сколько с рукопашной реализацией очереди (учитывая что кто-то должен складывать в очередь, а кто-то обрабатывать).
Здравствуйте, gandjustas, Вы писали:
g> H>Не о таком примитивизме речь. Я тоже такую фейковую очередь могу сделать
g> На сделай, на делфи g> А потом сделай так чтобы при обращении к следующему элементу он на консоль выводился. g> Или в делфи уже итераторы появились?
Хм Я думал ты в курсе. Итераторы давно уже есть
g> H>Только это ничего не доказывает. Я к тому клоню, что если в одном случае будут задействоваться ненулевое количество ресурсов, так и в другом тоже.
g> Конечно, только "ненулевое" может быть 1, а может быть 1000.
g> Вот тебе пример для раздумия: поток событий движения мыши, сколько он ресурсов захавает с Rx и сколько с рукопашной реализацией очереди (учитывая что кто-то должен складывать в очередь, а кто-то обрабатывать).
Если движения мыши будут где то храниться, то совершенно неважно каким будет средство доступа Ту же очередь можно реализовать так, что она будет вычитывать напрямую из системного буфера, как и класть в него.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> H>Не о таком примитивизме речь. Я тоже такую фейковую очередь могу сделать
g>> На сделай, на делфи g>> А потом сделай так чтобы при обращении к следующему элементу он на консоль выводился. g>> Или в делфи уже итераторы появились?
H>Хм Я думал ты в курсе. Итераторы давно уже есть
Давно это когда?
g>> H>Только это ничего не доказывает. Я к тому клоню, что если в одном случае будут задействоваться ненулевое количество ресурсов, так и в другом тоже.
g>> Конечно, только "ненулевое" может быть 1, а может быть 1000.
g>> Вот тебе пример для раздумия: поток событий движения мыши, сколько он ресурсов захавает с Rx и сколько с рукопашной реализацией очереди (учитывая что кто-то должен складывать в очередь, а кто-то обрабатывать).
H>Если движения мыши будут где то храниться, то совершенно неважно каким будет средство доступа Ту же очередь можно реализовать так, что она будет вычитывать напрямую из системного буфера, как и класть в него.
В том то и дело что в Rx они не хранятся, но код пишешь так, как-будто хранятся.
Здравствуйте, gandjustas, Вы писали:
g> g>> Или в делфи уже итераторы появились?
g> H>Хм Я думал ты в курсе. Итераторы давно уже есть
g> Давно это когда?
В Delphi 2005.
g> g>> Вот тебе пример для раздумия: поток событий движения мыши, сколько он ресурсов захавает с Rx и сколько с рукопашной реализацией очереди (учитывая что кто-то должен складывать в очередь, а кто-то обрабатывать).
g> H>Если движения мыши будут где то храниться, то совершенно неважно каким будет средство доступа Ту же очередь можно реализовать так, что она будет вычитывать напрямую из системного буфера, как и класть в него.
g> В том то и дело что в Rx они не хранятся, но код пишешь так, как-будто хранятся.
Если они не храняться, то откуда же им браться Как я уже сказал, абстракции очереди ничто не мешает делать вычитку откуда угодно, было бы откуда читать.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> g>> Или в делфи уже итераторы появились?
g>> H>Хм Я думал ты в курсе. Итераторы давно уже есть
g>> Давно это когда?
H>В Delphi 2005.
И как это в коде выглядит? И какой тип возвращает?
g>> g>> Вот тебе пример для раздумия: поток событий движения мыши, сколько он ресурсов захавает с Rx и сколько с рукопашной реализацией очереди (учитывая что кто-то должен складывать в очередь, а кто-то обрабатывать).
g>> H>Если движения мыши будут где то храниться, то совершенно неважно каким будет средство доступа Ту же очередь можно реализовать так, что она будет вычитывать напрямую из системного буфера, как и класть в него.
g>> В том то и дело что в Rx они не хранятся, но код пишешь так, как-будто хранятся.
H>Если они не храняться, то откуда же им браться
Пользователь жмет на кнопку и образуется новый элемент.
H>Как я уже сказал, абстракции очереди ничто не мешает делать вычитку откуда угодно, было бы откуда читать.
Вот в этом и прикол, не всегда есть "откуда" читать. А даже если есть, не всегда можно делать в виде "дай мне два вверх, а потом один вниз, если изменение <= -11".
Здравствуйте, gandjustas, Вы писали:
g> И как это в коде выглядит? И какой тип возвращает?
Тип зависит от то того, что перебираешь. Выглядит, например, так:
var i : byte;
for i in TBytes.Create(1, 2, 3, 4, 5) do
writeLn(i);
g> Вот в этом и прикол, не всегда есть "откуда" читать. А даже если есть, не всегда можно делать в виде "дай мне два вверх, а потом один вниз, если изменение <= -11".
Ну так в чем проблема при натягивании абстракции на конкретную ситуацию? Если не удовлетворяет абстракция ей ищется/пишется/точится замена
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> И как это в коде выглядит? И какой тип возвращает?
H>Тип зависит от то того, что перебираешь. Выглядит, например, так: H>
H>var i : byte;
H>for i in TBytes.Create(1, 2, 3, 4, 5) do
H> writeLn(i);
H>
не, я про yield return, который позволяет по факту прерывать выполнение функции и возобновлять его впоследствии.
А то что аналог foreach появился я в курсе.
g>> Вот в этом и прикол, не всегда есть "откуда" читать. А даже если есть, не всегда можно делать в виде "дай мне два вверх, а потом один вниз, если изменение <= -11".
H>Ну так в чем проблема при натягивании абстракции на конкретную ситуацию? Если не удовлетворяет абстракция ей ищется/пишется/точится замена
Пользователя как раз очень удовлетворяет. Асинхронные потоки сообщений можно обрабатывать точно также, как обычные коллекции, несмотря на то что задействуются сильно разные механизмы.
Другое дело что в языке без поддержки монад, лямбд с замыканиями, без множественной подписки на события еще кучи подобных фишек реализовать это не получится.
Здравствуйте, gandjustas, Вы писали:
g> g>> И как это в коде выглядит? И какой тип возвращает?
g> H>Тип зависит от то того, что перебираешь. Выглядит, например, так: g> H>
g> H>var i : byte;
g> H>for i in TBytes.Create(1, 2, 3, 4, 5) do
g> H> writeLn(i);
g> H>
g> не, я про yield return, который позволяет по факту прерывать выполнение функции и возобновлять его впоследствии. g> А то что аналог foreach появился я в курсе.
yield'а нет. Видел пару ручных реализаций, но они не для серьезного применения. Да, без него несколько усложняется логика перечислителя, но только и всего.
g> H>Ну так в чем проблема при натягивании абстракции на конкретную ситуацию? Если не удовлетворяет абстракция ей ищется/пишется/точится замена
g> Пользователя как раз очень удовлетворяет. Асинхронные потоки сообщений можно обрабатывать точно также, как обычные коллекции, несмотря на то что задействуются сильно разные механизмы. g> Другое дело что в языке без поддержки монад, лямбд с замыканиями, без множественной подписки на события еще кучи подобных фишек реализовать это не получится.
Замыкания и лямбды в дельфях есть. Реализация мультиделегата сложности не представляет
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> g>> И как это в коде выглядит? И какой тип возвращает?
g>> H>Тип зависит от то того, что перебираешь. Выглядит, например, так: g>> H>
g>> H>var i : byte;
g>> H>for i in TBytes.Create(1, 2, 3, 4, 5) do
g>> H> writeLn(i);
g>> H>
g>> не, я про yield return, который позволяет по факту прерывать выполнение функции и возобновлять его впоследствии. g>> А то что аналог foreach появился я в курсе.
H>yield'а нет. Видел пару ручных реализаций, но они не для серьезного применения. Да, без него несколько усложняется логика перечислителя, но только и всего.
Ты снова неправ, потому что думаешь "только и всего". С помощью yield return можно делать coroutines, можно писать асинхронный код в линейном виде.
g>> H>Ну так в чем проблема при натягивании абстракции на конкретную ситуацию? Если не удовлетворяет абстракция ей ищется/пишется/точится замена
g>> Пользователя как раз очень удовлетворяет. Асинхронные потоки сообщений можно обрабатывать точно также, как обычные коллекции, несмотря на то что задействуются сильно разные механизмы. g>> Другое дело что в языке без поддержки монад, лямбд с замыканиями, без множественной подписки на события еще кучи подобных фишек реализовать это не получится.
H>Замыкания и лямбды в дельфях есть. Реализация мультиделегата сложности не представляет
да, только события его ни разу не поддерживают.
Это должно быть в языке чтобы красиво выглядело и работало, одними библиотеками тут не отделаешься.
Кстати как там у лямбд с замыканием на локальные переменные?
Здравствуйте, gandjustas, Вы писали:
g> H>yield'а нет. Видел пару ручных реализаций, но они не для серьезного применения. Да, без него несколько усложняется логика перечислителя, но только и всего.
g> Ты снова неправ, потому что думаешь "только и всего". С помощью yield return можно делать coroutines, можно писать асинхронный код в линейном виде.
Как я уже сказал, для ценителей есть реализации (я бы их использовать не стал, но я не ценитель)
g> H>Замыкания и лямбды в дельфях есть. Реализация мультиделегата сложности не представляет
g> да, только события его ни разу не поддерживают. g> Это должно быть в языке чтобы красиво выглядело и работало, одними библиотеками тут не отделаешься.
Средства языка позволяют все сделать красиво, уж ты поверь События в VCL не поддерживают, но мы же о собственном фреймвоке говорим, а тут проблем нет.
g> Кстати как там у лямбд с замыканием на локальные переменные?
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> H>yield'а нет. Видел пару ручных реализаций, но они не для серьезного применения. Да, без него несколько усложняется логика перечислителя, но только и всего.
g>> Ты снова неправ, потому что думаешь "только и всего". С помощью yield return можно делать coroutines, можно писать асинхронный код в линейном виде.
H>Как я уже сказал, для ценителей есть реализации (я бы их использовать не стал, но я не ценитель)
Без поддержки языка скорее всего фигня.
g>> H>Замыкания и лямбды в дельфях есть. Реализация мультиделегата сложности не представляет
g>> да, только события его ни разу не поддерживают. g>> Это должно быть в языке чтобы красиво выглядело и работало, одними библиотеками тут не отделаешься.
H>Средства языка позволяют все сделать красиво, уж ты поверь
Я писал на делфи, на C#, на F#. С уверенностью могу утверждать что на делфи красиво не выйдет.
H>События в VCL не поддерживают, но мы же о собственном фреймвоке говорим, а тут проблем нет.
Нет уж, спасибо.
g>> Кстати как там у лямбд с замыканием на локальные переменные? H>Все в порядке.
Конкретнее?
Func<int> A(int x)
{
var y = x*2;
Func<int> r = () => y;
y++;
return r;
}
Здравствуйте, gandjustas, Вы писали:
g> H>Как я уже сказал, для ценителей есть реализации (я бы их использовать не стал, но я не ценитель)
g> Без поддержки языка скорее всего фигня.
Отчего же, делается все то же самое только сторонними средствами.
g> g>> да, только события его ни разу не поддерживают. g> g>> Это должно быть в языке чтобы красиво выглядело и работало, одними библиотеками тут не отделаешься.
g> H>Средства языка позволяют все сделать красиво, уж ты поверь
g> Я писал на делфи, на C#, на F#. С уверенностью могу утверждать что на делфи красиво не выйдет.
Выйдет. Ты судя по всему уже давно не смотрел на дельфю.
g> g>> Кстати как там у лямбд с замыканием на локальные переменные?
g> H>Все в порядке.
g> Конкретнее?
g>
g> Func<int> A(int x)
g> {
g> var y = x*2;
g> Func<int> r = () => y;
g> y++;
g> return r;
g> }
g>
g> Такое можно написать?
Можно.
Function Func(X : Integer) : Integer;
Var
Y : Integer;
R : TFunc<Integer>;
Begin
Y := X * 2;
R := Function : Integer Begin Result := Y; End;
Inc(Y);
Result := R;
End;
WriteLn(Func(2)); // выведет 5
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, gandjustas, Вы писали:
G>>Это должно быть в языке чтобы красиво выглядело и работало, одними библиотеками тут не отделаешься.
НС>RX демонстрирует, что можно отделаться и библиотеками, причем результат будет даже лучше.
Двойственная ситуация: чем мощнее язык, тем больше можно сделать библиотеками. См хаскелл, там вообще все описывается библиотеками.
Здравствуйте, gandjustas, Вы писали:
G>Ты снова неправ, потому что думаешь "только и всего". С помощью yield return можно делать coroutines, можно писать асинхронный код в линейном виде.
Это как ?
Материал из Википедии — свободной энциклопедии, -_*
-_*>Здравствуйте, gandjustas, Вы писали:
G>>Ты снова неправ, потому что думаешь "только и всего". С помощью yield return можно делать coroutines, можно писать асинхронный код в линейном виде.
-_*>Это как ?
например так:
public static IObservable<Unit> ReadExact(this Stream stream, byte[] buffer, int offset, int count)
{
return Observable.Iterate(() => ReadExactInternal(stream, buffer, offset, count));
}
public static IEnumerable<IObservable<object>> ReadExactInternal(Stream stream, byte[] buffer, int offset, int count)
{
var read = Observable.FromAsyncPattern<byte[], int, int, int>(stream.BeginRead, stream.EndRead);
while(count>0)
{
var result = read(buffer, offset, count).Start();
yield return result; //Вот тут выполнение прервется пока не выполнится асинхронная операция чтения.
count -= result[0];
offset += result[0];
}
}
Здравствуйте, slava_phirsov, Вы писали:
_>Года полтора назад был на собеседовании в одной конторке... Ребята писали (в 2009-м!!!) на D7 (хорошо хоть, не на D5), изобретали библиотеку компонентов GUI Ну, типа, свой свечной заводик... (цитата) "с поддержкой юникода" (и при этом не могли толком объяснить, что же именно они там поддерживают: UTF8? UCS2? Whatever?) А еще в этом GUI была — я не шучу — утиная типизация, основанная на интерфейсах. То есть перед использованием нужно под try/except попытаться привести экземпляр TComponent к ожидаемому интерфейсному типу, и, если получилось — работать с ним, а нет — ну, типа, не судьба. Так что, как у классика
В 2009 юникод вроде как уже из коробки был. А до 2009 (или может 2008 — не помню) были tnt компоненты с поддержкой юникода. Для D7 они вполне подходили. Так что на кой было делать руками — это очень интересный вопрос.
Насчет приведения под try/except — ну есть же сахар в виде as, is — работа с интерфейсами в дельфях вполне удобна, компилер много чего делает сам — подсчет ссылок, QueryInterface, GUID и т.д.
Все это говорит не о проблемах дельфи, а о проблемах в мозгах у ребят
Здравствуйте, gandjustas, Вы писали:
H>>yield'а нет. Видел пару ручных реализаций, но они не для серьезного применения. Да, без него несколько усложняется логика перечислителя, но только и всего. G>Ты снова неправ, потому что думаешь "только и всего". С помощью yield return можно делать coroutines, можно писать асинхронный код в линейном виде.
А кстати, в питоне например yield можно сделать только из самой функции, а вот из функции, которую она вызвала уже нельзя
def f():
yield 1
yield 2
def f2():
f() # так работать не будетyield 3
Если в шарпе тоже так, то с корутинами уже не шибко удобно получается
Здравствуйте, gandjustas, Вы писали:
G>Вот тебе пример для раздумия: поток событий движения мыши, сколько он ресурсов захавает с Rx и сколько с рукопашной реализацией очереди (учитывая что кто-то должен складывать в очередь, а кто-то обрабатывать).
И в чем проблема? Ловим событие мыши, кидаем в очередь, зовем функцию сверки с образцом или серию таких функций. Совпало с чем-то — удаляем совпадение, делаем действие по данному совпадению, продолжаем. Не совпало ни с чем — продолжаем ловить. Не подходит ни под оидн образец — удаляем первый элемент, повторяем проверку.
Можно сделать оптимизацию — сверять не сразу, а через некоторое время после посл события или при достижении некоторого размера.
Написать такую штуку элементарно. Жрать ресурсов будет в зависимости от длины образцов.
Здравствуйте, enji, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
G>>Вот тебе пример для раздумия: поток событий движения мыши, сколько он ресурсов захавает с Rx и сколько с рукопашной реализацией очереди (учитывая что кто-то должен складывать в очередь, а кто-то обрабатывать).
E>И в чем проблема? Ловим событие мыши, кидаем в очередь, зовем функцию сверки с образцом или серию таких функций. Совпало с чем-то — удаляем совпадение, делаем действие по данному совпадению, продолжаем. Не совпало ни с чем — продолжаем ловить. Не подходит ни под оидн образец — удаляем первый элемент, повторяем проверку.
Так у тебя все образцы будут в одной функции. Не пойдет.
E>Можно сделать оптимизацию — сверять не сразу, а через некоторое время после посл события или при достижении некоторого размера.
Какого размера?
А если потенциально бесконечные последовательности будут?
Например сначала 1, а потом любое число не равное 1, а событие у тебя одни единицы гонит.
E>Написать такую штуку элементарно. Жрать ресурсов будет в зависимости от длины образцов.
Дьявол в деталях. Когда начнешь более менее универсальный фреймворк писать — увидишь.
Здравствуйте, gandjustas, Вы писали:
E>>До меня все еще никак не дойдет, что такого интересного в этом "фреймворке"? На с++ поверх boost::asio — порядка 800 строк. На с++ поверх аппаратных прерываний — чуток поменьше. На дельфи поверх компонента — тоже ничего сложного нет. Совершенно тупой неинтересный код G>Именно этот кусок меня и интересует.
Ну кидать сюда 800 строк, + чистить их от зависимостей — мне лень, извини. Если интересует все же что-то конкретное, скажи, приведу примеры.
E>>Его задачи E>>- передать байты в порт E>>- принять байты из порта, проконтролировать разные таймауты, в нужные моменты вызвать протокольно-специфичную функцию анализа G>Эти две задачи можно решать настолько разными способами, что можно получить в сотни раз отличающиеся потребления ресурсов компьютеров и человека.
ЧОЧО? Любую задачу можно решить разными путями, но чтобы байты из ком-порта тормознуто читать, эт надо хорошо постараться...
Здравствуйте, gandjustas, Вы писали:
G>>>Вот тебе пример для раздумия: поток событий движения мыши, сколько он ресурсов захавает с Rx и сколько с рукопашной реализацией очереди (учитывая что кто-то должен складывать в очередь, а кто-то обрабатывать).
E>>И в чем проблема? Ловим событие мыши, кидаем в очередь, зовем функцию сверки с образцом или серию таких функций. Совпало с чем-то — удаляем совпадение, делаем действие по данному совпадению, продолжаем. Не совпало ни с чем — продолжаем ловить. Не подходит ни под оидн образец — удаляем первый элемент, повторяем проверку. G>Так у тебя все образцы будут в одной функции. Не пойдет.
Читай внимательней "или серию таких функций"
E>>Можно сделать оптимизацию — сверять не сразу, а через некоторое время после посл события или при достижении некоторого размера. G>Какого размера?
Размер — в зависимости от размеров образцов. Для каждого образца задаем функцию проверки + размер + действие. Фреймворк на основе этой инфы может определить, при каком размере очереди событий чего дергать. Если извернуться, то размер можно явно не задавать, а вычислять динамически на основе тех действий, которые делает функция проверки, но имхо, оно того не стоит.
G>А если потенциально бесконечные последовательности будут? G>Например сначала 1, а потом любое число не равное 1, а событие у тебя одни единицы гонит.
"Не подходит ни под один образец — удаляем первый элемент, повторяем проверку" — поймали две единицы — поняли, что не подходит, убили первую единицу и т.д.
E>>Написать такую штуку элементарно. Жрать ресурсов будет в зависимости от длины образцов. G>Дьявол в деталях. Когда начнешь более менее универсальный фреймворк писать — увидишь.
Ну дык написал его уже. Занимается байтами полученными из разных источников (посл порт, udp\tcp, еще кое-что), на выходе дает пакеты различных протоколов обмена.
Ясно, что написать в общем виде сложнее. Круто, что в Нет это уже есть. Хотя, имхо, довольно специфичная задача — зачем тянуть ее в фреймворк? Распространяли бы отдельными сборками...
Здравствуйте, gandjustas, Вы писали:
HA>>Еще не сдаюсь HA>>Оценка сложности DFS O(N+E), N — число вершин, E — число связей. HA>>E может быть от 0 до O(N^2) HA>>То есть какие-то патологические ситуации все-таки возможны.
G>Еще раз. Все вершины проходятся максимум один раз. G>Количество связей значение не имеет.
Ты серьезно? Придется по разу пройтись по каждому ребру графа. Другое дело, если на конце ребра видим помеченную вершину, то останавливаемся
Здравствуйте, enji, Вы писали:
E>И в чем проблема? Ловим событие мыши, кидаем в очередь, зовем функцию сверки с образцом или серию таких функций. Совпало с чем-то — удаляем совпадение, делаем действие по данному совпадению, продолжаем. Не совпало ни с чем — продолжаем ловить. Не подходит ни под оидн образец — удаляем первый элемент, повторяем проверку.
Это устаревший, низкоуровневый подход. Можно вот так
Серия эвентов преобразуется в последовательность координат. Это + еще кое что есть распознавание мышиных жестов. В нативном подходе, с очередями, совпадениями, надо было писать килобайты ифов, свичей, обработчиков и трястись над различными флагами.
E>Написать такую штуку элементарно. Жрать ресурсов будет в зависимости от длины образцов.
Расширение вроде RX написать на коленке ?
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, enji, Вы писали:
E>>Развитость языка — а какие именно возможности языка были бы полезны в этом случае?
НС>К примеру, для работы с СОМ-портом можно использовать Reactive Framework. В Дельфи аналог есть? Для асинхронности все тот же Rx или PLinq. В Дельфи аналог последнего есть?
Здравствуйте, swame, Вы писали:
НС>>К примеру, для работы с СОМ-портом можно использовать Reactive Framework. В Дельфи аналог есть? Для асинхронности все тот же Rx или PLinq. В Дельфи аналог последнего есть?
S>http://sourceforge.net/projects/tpapro/
Это никакой не аналог RX а просто либа для асинхронщины.
Материал из Википедии — свободной энциклопедии, -_*
Embarcadero® Delphi® XE is the fastest way to deliver ultra-rich, ultra-fast Windows applications. Dramatically reduce coding time and create applications 5x faster with component-based development and a fully visual two-way RAD IDE.
Тут
Слоган на странице продукта вообще отличный — "Be Amazing"
В общем пока все возятся со всякими Java/C#/C++, в мире Дельфи уже наступило светлое будущее (пока 32-х битное правда)!
Здравствуйте, TimurSPB, Вы писали:
TSP> В общем пока все возятся со всякими Java/C#/C++, в мире Дельфи уже наступило светлое будущее (пока 32-х битное правда)!
Йоу! Последние сводки с фронта:
Milestone: 64bit compiler now merged into the main dev branch! All devs are now locked and loaded!
Здравствуйте, enji, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
HA>>>Еще не сдаюсь HA>>>Оценка сложности DFS O(N+E), N — число вершин, E — число связей. HA>>>E может быть от 0 до O(N^2) HA>>>То есть какие-то патологические ситуации все-таки возможны.
G>>Еще раз. Все вершины проходятся максимум один раз. G>>Количество связей значение не имеет.
E>Ты серьезно? Придется по разу пройтись по каждому ребру графа. Другое дело, если на конце ребра видим помеченную вершину, то останавливаемся
Ну и сколько ребер будет в графе? Очевидно что не N^2 потому что все со всеми живые объекты связаны не будут, то есть примерно количество ребер в графе будет линейно зависеть от количества вершин. В итоге тот же O(N) получим
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, TimurSPB, Вы писали:
TSP>> В общем пока все возятся со всякими Java/C#/C++, в мире Дельфи уже наступило светлое будущее (пока 32-х битное правда)!
H>Йоу! Последние сводки с фронта: H>
Milestone: 64bit compiler now merged into the main dev branch! All devs are now locked and loaded!
Здравствуйте, hattab, Вы писали:
НС>> В случае шарпа примерно в 100% случаев.
H>Не вызовы MoveNext(), а непосредственно сам метод.
Всегда. Что бы было понятно
public Item GetNextItem()
{
return new Item();
}
Как ты думаешь, что это такое ? В дотнет это почти последовательность — если вызвать n-раз. Что бы стало по настоящему последовательностью, нужно заставить компилятор генерировать чуток кода:
public IEnumarable<Item> GetNextItem()
{
while(true)
{
yeild return new Item();
}
}
Если хочешь узнать, как это работает, нужно запустить ну хотя бы тот же reflector. Если коротко, то будет сгенерирован класс, который реализует IEnumarable, код выше реально будет заменен на примерно следующий
class GetNextItemEnumerator : IEnumerable<Item>,...
{
Item current = null;
public bool MoveNext()
{
this.current = new Item();
return true;
}
public Item Current
{
get
{
return this.current;
}
}
...
}
Все просто и никаких "структур" не надо.
foreach(Item item in GetNextItem())
{
// бесконечный цикл создания объектов
// со "структурами" на это памяти не хватит
}
Можно идти и дальше — обход любой сложной структуры вроде дерева, кольца, графа или генерация сложной последовательности делается довольно просто. А вот в Дельфи с итераторами придется попотеть.
Материал из Википедии — свободной энциклопедии, -_*
-_*> H>Не вызовы MoveNext(), а непосредственно сам метод.
-_*> Всегда. Что бы было понятно
-_*>
-_*> public Item GetNextItem()
-_*> {
-_*> return new Item();
-_*> }
-_*>
-_*> Как ты думаешь, что это такое ? В дотнет это почти последовательность — если вызвать n-раз. Что бы стало по настоящему последовательностью, нужно заставить компилятор генерировать чуток кода:
-_*>
-_*> public IEnumarable<Item> GetNextItem()
-_*> {
-_*> while(true)
-_*> {
-_*> yeild return new Item();
-_*> }
-_*> }
-_*>
-_*> Если хочешь узнать, как это работает, нужно запустить ну хотя бы тот же reflector. Если коротко, то будет сгенерирован класс, который реализует IEnumarable, код выше реально будет заменен на примерно следующий
-_*>
-_*> class GetNextItemEnumerator : IEnumerable<Item>,...
-_*> {
-_*> Item current = null;
-_*> public bool MoveNext()
-_*> {
-_*> this.current = new Item();
-_*> return true;
-_*> }
-_*> public Item Current
-_*> {
-_*> get
-_*> {
-_*> return this.current;
-_*> }
-_*> }
-_*> ...
-_*> }
-_*>
-_*> Все просто и никаких "структур" не надо.
Повторить полный аналог можно и в дельфях, с той лишь разницей, что код она не сгенерирует В этом чтоли вся прелесть?
-_*>
-_*> foreach(Item item in GetNextItem())
-_*> {
-_*> // бесконечный цикл создания объектов
-_*> // со "структурами" на это памяти не хватит
-_*> }
-_*>
-_*> Можно идти и дальше — обход любой сложной структуры вроде дерева, кольца, графа или генерация сложной последовательности делается довольно просто.
Хм, что же в таком случае заставляет разработчиков самостоятельно писать перечислители?
"Кусок кода"
namespace CookComputing.XmlRpc
{
public class XmlRpcStruct : Hashtable
{
private ArrayList _keys = new ArrayList();
private ArrayList _values = new ArrayList();
public override void Add(object key, object value)
{
if (!(key is string))
{
throw new ArgumentException("XmlRpcStruct key must be a string.");
}
if (XmlRpcServiceInfo.GetXmlRpcType(value.GetType())
== XmlRpcType.tInvalid)
{
throw new ArgumentException(String.Format(
"Type {0} cannot be mapped to an XML-RPC type", value.GetType()));
}
base.Add(key, value);
_keys.Add(key);
_values.Add(value);
}
public override object this[object key]
{
get
{
return base[key];
}
set
{
if (!(key is string))
{
throw new ArgumentException("XmlRpcStruct key must be a string.");
}
if (XmlRpcServiceInfo.GetXmlRpcType(value.GetType())
== XmlRpcType.tInvalid)
{
throw new ArgumentException(String.Format(
"Type {0} cannot be mapped to an XML-RPC type", value.GetType()));
}
base[key] = value;
_keys.Add(key);
_values.Add(value);
}
}
public override bool Equals(Object obj)
{
if (obj.GetType() != typeof(XmlRpcStruct))
return false;
XmlRpcStruct xmlRpcStruct = (XmlRpcStruct)obj;
if (this.Keys.Count != xmlRpcStruct.Count)
return false;
foreach (String key in this.Keys)
{
if (!xmlRpcStruct.ContainsKey(key))
return false;
if (!this[key].Equals(xmlRpcStruct[key]))
return false;
}
return true;
}
public override int GetHashCode()
{
int hash = 0;
foreach (object obj in Values)
{
hash ^= obj.GetHashCode();
}
return hash;
}
public override void Clear()
{
base.Clear();
_keys.Clear();
_values.Clear();
}
public new IDictionaryEnumerator GetEnumerator()
{
return new XmlRpcStruct.Enumerator(_keys, _values);
}
public override ICollection Keys
{
get
{
return _keys;
}
}
public override void Remove(object key)
{
base.Remove(key);
int idx = _keys.IndexOf(key);
if (idx >= 0)
{
_keys.RemoveAt(idx);
_values.RemoveAt(idx);
}
}
public override ICollection Values
{
get
{
return _values;
}
}
private class Enumerator : IDictionaryEnumerator
{
private ArrayList _keys;
private ArrayList _values;
private int _index;
public Enumerator(ArrayList keys, ArrayList values)
{
_keys = keys;
_values = values;
_index = -1;
}
public void Reset()
{
_index = -1;
}
public object Current
{
get
{
CheckIndex();
return new DictionaryEntry(_keys[_index], _values[_index]);
}
}
public bool MoveNext()
{
_index++;
if (_index >= _keys.Count)
return false;
else
return true;
}
public DictionaryEntry Entry
{
get
{
CheckIndex();
return new DictionaryEntry(_keys[_index], _values[_index]);
}
}
public object Key
{
get
{
CheckIndex();
return _keys[_index];
}
}
public object Value
{
get
{
CheckIndex();
return _values[_index];
}
}
private void CheckIndex()
{
if (_index < 0 || _index >= _keys.Count)
throw new InvalidOperationException(
"Enumeration has either not started or has already finished.");
}
}
}
}
-_*> А вот в Дельфи с итераторами придется попотеть.
Здравствуйте, hattab, Вы писали:
H>Повторить полный аналог можно и в дельфях, с той лишь разницей, что код она не сгенерирует В этом чтоли вся прелесть?
Ну покажи полный аналог для такого
Здравствуйте, gandjustas, Вы писали:
g> H>Повторить полный аналог можно и в дельфях, с той лишь разницей, что код она не сгенерирует В этом чтоли вся прелесть?
g> Ну покажи полный аналог для такого
-_*>Здравствуйте, enji, Вы писали:
E>>И в чем проблема? Ловим событие мыши, кидаем в очередь, зовем функцию сверки с образцом или серию таких функций. Совпало с чем-то — удаляем совпадение, делаем действие по данному совпадению, продолжаем. Не совпало ни с чем — продолжаем ловить. Не подходит ни под оидн образец — удаляем первый элемент, повторяем проверку.
-_*>Это устаревший, низкоуровневый подход. Можно вот так
Что ты говоришь И что в нем такого устаревшего?
ну и что? После того, как я оформлю свой подход в либу, для пользователя он будет выглядеть не сильно страшнее твоего кода
-_*>Серия эвентов преобразуется в последовательность координат. Это + еще кое что есть распознавание мышиных жестов. В нативном подходе, с очередями, совпадениями, надо было писать килобайты ифов, свичей, обработчиков и трястись над различными флагами.
Распознавание мышиных жестов в дельфях из коробки. Килобайтов ифов там нет...
Здравствуйте, gandjustas, Вы писали:
G>>>Количество связей значение не имеет.
E>>Ты серьезно? Придется по разу пройтись по каждому ребру графа. Другое дело, если на конце ребра видим помеченную вершину, то останавливаемся G>Ну и сколько ребер будет в графе? Очевидно что не N^2 потому что все со всеми живые объекты связаны не будут, то есть примерно количество ребер в графе будет линейно зависеть от количества вершин. В итоге тот же O(N) получим
Ну т.е. кол-во связей значение таки имеет
На самом деле может быть даже больше N^2
class A;
class B
{
public A a1, a2, a3, a4, a5;
};
A a = new A;
B b = new B;
b.a1 = a; b.a2 = a; ...
Здравствуйте, enji, Вы писали:
E>На самом деле может быть даже больше N^2
число ребер в полном графе N(N-1)/2 — легко проверить.
Осталось уточнить — что фреймворк считает за связи.
Например, сколько связей для главного окна, элемента дерева или для переменной в рекурсивной процедуре.
Не может ли в каких-то ситуациях число связей расти сильнее O(N).
-_*>Серия эвентов преобразуется в последовательность координат. Это + еще кое что есть распознавание мышиных жестов.
скорее так: это + ЕЩЕ ДОФИГА ЧЕГО
В распознавании мышиных жестов самое интересное — не запись событий мыши и преобразования в посл координат (что тривиально), а алгоритмы распознавания; которые, как я сильно подозреваю, мало зависят от языка программирования
Здравствуйте, Head Ache, Вы писали:
HA>число ребер в полном графе N(N-1)/2 — легко проверить.
HA>Осталось уточнить — что фреймворк считает за связи. HA>Например, сколько связей для главного окна, элемента дерева или для переменной в рекурсивной процедуре. HA>Не может ли в каких-то ситуациях число связей расти сильнее O(N).
И что считает за вершины. В моем примере 2 объекта и 5 ссылок.
Если вершина — это объект, а ребро — это ссылка, то получается что не N(N-1)/2
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> H>Повторить полный аналог можно и в дельфях, с той лишь разницей, что код она не сгенерирует В этом чтоли вся прелесть?
g>> Ну покажи полный аналог для такого
Здравствуйте, enji, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
G>>>>Количество связей значение не имеет.
E>>>Ты серьезно? Придется по разу пройтись по каждому ребру графа. Другое дело, если на конце ребра видим помеченную вершину, то останавливаемся G>>Ну и сколько ребер будет в графе? Очевидно что не N^2 потому что все со всеми живые объекты связаны не будут, то есть примерно количество ребер в графе будет линейно зависеть от количества вершин. В итоге тот же O(N) получим
E>Ну т.е. кол-во связей значение таки имеет
Количество вершин и ребер — связанные величины, причем одного порядка в реальных случаях. Как хочешь, так и считай.
Здравствуйте, enji, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
G>>>>Количество связей значение не имеет.
E>>>Ты серьезно? Придется по разу пройтись по каждому ребру графа. Другое дело, если на конце ребра видим помеченную вершину, то останавливаемся G>>Ну и сколько ребер будет в графе? Очевидно что не N^2 потому что все со всеми живые объекты связаны не будут, то есть примерно количество ребер в графе будет линейно зависеть от количества вершин. В итоге тот же O(N) получим
E>Ну т.е. кол-во связей значение таки имеет
E>На самом деле может быть даже больше N^2
Если в коде такое количество связей, и объекты друг на друга ссылаются, то проблема со скоростью GC уходит даже не на второй план, а сильно дальше, потому как самая главная проблема в днк писавшего такой код.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, gandjustas, Вы писали:
g> g>> H>Повторить полный аналог можно и в дельфях, с той лишь разницей, что код она не сгенерирует В этом чтоли вся прелесть?
g> g>> Ну покажи полный аналог для такого
например.
g> H>Т.е. ты мне на полном серьезе предлагаешь тут реализовать собственный Rx? Шутник, однако.
g> Нет, конкретный пример повтори с итератором, можно без асинхронности.
Если я правильно понял, это чтение из потока.
...
TEnumerator = Record
Strict Private
FStream : TStream;
FBuffer : TBytes;
Public
Procedure Init(AStream : TStream; ABufferSize : Integer);
Function MoveNext : Boolean;
Function GetCurrent : TBytes;
End;
...
Procedure TEnumerator.Init(AStream : TStream; ABufferSize : Integer);
Begin
FStream := AStream;
SetLength(FBuffer, ABufferSize);
End;
Function TEnumerator.MoveNext : Boolean;
Var
Count : Integer;
Begin
Count := FStream.Read(Pointer(FBuffer)^, Length(FBuffer));
If Count <> Length(FBuffer) Then
SetLength(FBuffer, Count);
Result := Count > 0;
End;
Function TEnumerator.GetCurrent : TBytes;
Begin
Result := FBuffer;
End;
Здравствуйте, hattab, Вы писали:
H>Повторить полный аналог можно и в дельфях, с той лишь разницей, что код она не сгенерирует В этом чтоли вся прелесть?
Конечно. Итератор для графа можно писать неделями, поверь. А если с помощью компилятора то где то за минуты можно управиться.
H>-_*>
H>-_*> foreach(Item item in GetNextItem())
H>-_*> {
H>-_*> // бесконечный цикл создания объектов
H>-_*> // со "структурами" на это памяти не хватит
H>-_*> }
H>-_*>
H>-_*> Можно идти и дальше — обход любой сложной структуры вроде дерева, кольца, графа или генерация сложной последовательности делается довольно просто.
H>Хм, что же в таком случае заставляет разработчиков самостоятельно писать перечислители?
Очевидно ты привел пример кода версии 1.0 или 1.1. В 2.0 и выше код который ты показал ужмется минимум в 10 раз.
H>-_*> А вот в Дельфи с итераторами придется попотеть.
H>Реализация одного метода это попотеть?
Итератор это не метод.
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> g>> H>Повторить полный аналог можно и в дельфях, с той лишь разницей, что код она не сгенерирует В этом чтоли вся прелесть?
g>> g>> Ну покажи полный аналог для такого
например.
g>> H>Т.е. ты мне на полном серьезе предлагаешь тут реализовать собственный Rx? Шутник, однако.
g>> Нет, конкретный пример повтори с итератором, можно без асинхронности.
H>Если я правильно понял, это чтение из потока.
Неправильно понял.
При читении из потока указывается буфер, сколько байт прочитать и с какой позиции писать в буфер. Так как операция чтения может прочитать меньше, чем было указано, то для полного чтения буфера реализуется цикл, на каждой итерации которого двигается позиция для записи и уменьшается число байт, которое надо прочитать.
Так вот итераторы позволяют этот цикл сделать асинхронным, так как сам yield прерывает выполнение функции, а некоторый движок обеспечивает асинхронный запуск асинхронных операций.
Я вот спрашиваю как можно вот такое прерывание на delphi сделать.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, hattab, Вы писали:
H>>Здравствуйте, gandjustas, Вы писали:
g>>> g>> H>Повторить полный аналог можно и в дельфях, с той лишь разницей, что код она не сгенерирует В этом чтоли вся прелесть?
g>>> g>> Ну покажи полный аналог для такого
например.
g>>> H>Т.е. ты мне на полном серьезе предлагаешь тут реализовать собственный Rx? Шутник, однако.
g>>> Нет, конкретный пример повтори с итератором, можно без асинхронности.
H>>Если я правильно понял, это чтение из потока.
G>Неправильно понял. G>При читении из потока указывается буфер, сколько байт прочитать и с какой позиции писать в буфер. Так как операция чтения может прочитать меньше, чем было указано, то для полного чтения буфера реализуется цикл, на каждой итерации которого двигается позиция для записи и уменьшается число байт, которое надо прочитать.
G>Так вот итераторы позволяют этот цикл сделать асинхронным, так как сам yield прерывает выполнение функции, а некоторый движок обеспечивает асинхронный запуск асинхронных операций.
G>Я вот спрашиваю как можно вот такое прерывание на delphi сделать.
Здравствуйте, gandjustas, Вы писали:
g> При читении из потока указывается буфер, сколько байт прочитать и с какой позиции писать в буфер. Так как операция чтения может прочитать меньше, чем было указано, то для полного чтения буфера реализуется цикл, на каждой итерации которого двигается позиция для записи и уменьшается число байт, которое надо прочитать.
g> Так вот итераторы позволяют этот цикл сделать асинхронным, так как сам yield прерывает выполнение функции, а некоторый движок обеспечивает асинхронный запуск асинхронных операций.
Ты же сам сказал, можно без асинхронщины
g> Я вот спрашиваю как можно вот такое прерывание на delphi сделать.
Тю. Да я бы вообще это без итератора сделал Для такой фигни еще итераторы задействовать...
-_*> H>Повторить полный аналог можно и в дельфях, с той лишь разницей, что код она не сгенерирует В этом чтоли вся прелесть?
-_*> Конечно. Итератор для графа можно писать неделями, поверь. А если с помощью компилятора то где то за минуты можно управиться.
Да, у меня есть такой (обход RTTI дерева). Писал не неделю, но часа два точно убил.
-_*> Итератор это не метод.
Ок. Это два метода. Причем основная работа делается только в одном из них. По сути получаем конечный автомат. Бывает простой, бывает сложный. Но не невозможный.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> При читении из потока указывается буфер, сколько байт прочитать и с какой позиции писать в буфер. Так как операция чтения может прочитать меньше, чем было указано, то для полного чтения буфера реализуется цикл, на каждой итерации которого двигается позиция для записи и уменьшается число байт, которое надо прочитать.
g>> Так вот итераторы позволяют этот цикл сделать асинхронным, так как сам yield прерывает выполнение функции, а некоторый движок обеспечивает асинхронный запуск асинхронных операций.
H>Ты же сам сказал, можно без асинхронщины
ну правильно, нужно прерывание выполнение кода с сохранением контекста.
g>> Я вот спрашиваю как можно вот такое прерывание на delphi сделать.
H>Тю. Да я бы вообще это без итератора сделал Для такой фигни еще итераторы задействовать... H>
H>Сам понимаешь, что завернуть такой код в итератор труда тоже не составит.
Не понимаю. Как после Inc прервать выполнение метода? (например для шедулинга операций чтения)?
Здравствуйте, hattab, Вы писали:
H>-_*> Итератор это не метод.
H>Ок. Это два метода. Причем основная работа делается только в одном из них. По сути получаем конечный автомат. Бывает простой, бывает сложный. Но не невозможный.
Да, получается именно автомат. Сначала нужно написать обход, а потом остаётся самое муторно — преобразовать код в автомат. Задача не сложная но ошибки здесь стоят очень дорого.
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, gandjustas, Вы писали:
g> H>Ты же сам сказал, можно без асинхронщины
g> ну правильно, нужно прерывание выполнение кода с сохранением контекста.
g> g>> Я вот спрашиваю как можно вот такое прерывание на delphi сделать.
Дроблением
g> H>Тю. Да я бы вообще это без итератора сделал Для такой фигни еще итераторы задействовать... g> H>
g> H>Сам понимаешь, что завернуть такой код в итератор труда тоже не составит.
g> Не понимаю. Как после Inc прервать выполнение метода? (например для шедулинга операций чтения)?
Ну, тут итератор не нужен вообще
TReader = Record
Offset : Integer;
Buffer : TBytes;
Constructor Create(ABufferSize : Integer);
Function GetBuffer(AStream : TStream) : Boolean;
End;
Constructor TReader.Create(ABufferSize : Integer);
Begin
SetLength(Buffer, ABufferSize);
End;
Function TReader.GetBuffer(AStream : TStream) : Boolean;
Begin
Inc(Offset, AStream.Read(Buffer[Offset], Length(Buffer) - Offset));
Result := Offset = Length(Buffer);
End;
...
With TReader.Create(1024) Do
While Not GetBuffer(Stream) Do
Begin//sheduleEnd;
А можно инициализировать стримом при создании ридера. В общем, есть варианты
Здравствуйте, enji, Вы писали:
E>ну и что? После того, как я оформлю свой подход в либу, для пользователя он будет выглядеть не сильно страшнее твоего кода
На это уйдет время, не так ли ? На все случаи либ не напишешь.
E>-_*>Серия эвентов преобразуется в последовательность координат. Это + еще кое что есть распознавание мышиных жестов. В нативном подходе, с очередями, совпадениями, надо было писать килобайты ифов, свичей, обработчиков и трястись над различными флагами.
E>Распознавание мышиных жестов в дельфях из коробки. Килобайтов ифов там нет...
А как они жесты распознают ?
E>-_*>Расширение вроде RX написать на коленке ?
E>Ты не поверишь, но RX тоже кто-то написал
Это стандартная либа с широкими возможностями и благодаря ей не надо писать либы на все случае жизни, как "жестов в дельфях из коробки". Известная вобщем то проблема еще древнего Борланда — написать либы на все случаи жизни вместо хорошего фреймворка, через полгода-года обнаружить что случаев много больше, переписать все это с нуля и опять заточить на все случаи жизни вместо хорошего фреймворка и снова обнаружить что случаев много больше и тд.
Единственно, чего в дельфях и всех ex-борландовских продуктах вызывает уважение, так это непрекращающиеся попытки сделать мир лучше. Борланд под разными именами как птица феникс из пепла восстает — банкротится, выкупается, переформируется, выпускает продукт, снова банкротится.
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, Eugeny__, Вы писали:
E__>Если в коде такое количество связей, и объекты друг на друга ссылаются, то проблема со скоростью GC уходит даже не на второй план, а сильно дальше, потому как самая главная проблема в днк писавшего такой код.
хотелось бы надеяться, что проблема хотя бы не в днк фреймворка
Здравствуйте, gandjustas, Вы писали:
G>Ну и сколько ребер будет в графе? Очевидно что не N^2 потому что все со всеми живые объекты связаны не будут, то есть примерно количество ребер в графе будет линейно зависеть от количества вершин. В итоге тот же O(N) получим
Ощущение, что ты не совсем понимаешь что значит "доказать".
1% объектов имеют число связей, пропорциональных N, 99% имеют 0 связей => общая оценка O(N^2)
E__>>Если в коде такое количество связей, и объекты друг на друга ссылаются, то проблема со скоростью GC уходит даже не на второй план, а сильно дальше, потому как самая главная проблема в днк писавшего такой код.
HA>хотелось бы надеяться, что проблема хотя бы не в днк фреймворка
Есть примеры фреймворка, который создает ссылки "все ко всем" между объектами?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, -_*, Вы писали:
E>>ну и что? После того, как я оформлю свой подход в либу, для пользователя он будет выглядеть не сильно страшнее твоего кода
-_*>На это уйдет время, не так ли ? На все случаи либ не напишешь.
Ну так на все случаи и не надо Надо только на конкретные случаи. Причем где-то надо именно либу, а где то хватит обычного "одноразового" кода, который решает задачу. Запись событий мышки — типичный пример такого кода, который очень прост и элементарно пишется каждый раз с учетом потребностей.
E>>Распознавание мышиных жестов в дельфях из коробки. Килобайтов ифов там нет...
-_*>А как они жесты распознают ?
А я откуда знаю? Я про это читал, но дельфи давно уже не использую. А что, наличие Rx — обязательное условие для распознавания жестов? Насколько я все это понимаю, достаточно записать посл движений и сравнить с образцом. Алгоритм сравнения — это уже интересный вопрос. В институте на нейронных сетях делал какое-то распознавание...
-_*>Это стандартная либа с широкими возможностями и благодаря ей не надо писать либы на все случае жизни, как "жестов в дельфях из коробки". Известная вобщем то проблема еще древнего Борланда — написать либы на все случаи жизни вместо хорошего фреймворка, через полгода-года обнаружить что случаев много больше, переписать все это с нуля и опять заточить на все случаи жизни вместо хорошего фреймворка и снова обнаружить что случаев много больше и тд.
Часто оказывается что случаев даже больше, чем покрывает фреймворк И приходится его допиливать или писать что-то сбоку.
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, gandjustas, Вы писали:
g>> H>Ты же сам сказал, можно без асинхронщины
g>> ну правильно, нужно прерывание выполнение кода с сохранением контекста.
g>> g>> Я вот спрашиваю как можно вот такое прерывание на delphi сделать.
H>Дроблением
g>> H>Тю. Да я бы вообще это без итератора сделал Для такой фигни еще итераторы задействовать... g>> H>
g>> H>Сам понимаешь, что завернуть такой код в итератор труда тоже не составит.
g>> Не понимаю. Как после Inc прервать выполнение метода? (например для шедулинга операций чтения)?
H>Ну, тут итератор не нужен вообще H>
H>TReader = Record
H> Offset : Integer;
H> Buffer : TBytes;
H> Constructor Create(ABufferSize : Integer);
H> Function GetBuffer(AStream : TStream) : Boolean;
H>End;
H>Constructor TReader.Create(ABufferSize : Integer);
H>Begin
H> SetLength(Buffer, ABufferSize);
H>End;
H>Function TReader.GetBuffer(AStream : TStream) : Boolean;
H>Begin
H> Inc(Offset, AStream.Read(Buffer[Offset], Length(Buffer) - Offset));
H> Result := Offset = Length(Buffer);
H>End;
H>...
H>With TReader.Create(1024) Do
H> While Not GetBuffer(Stream) Do
H> Begin
H> //shedule
H> End;
H>
H>А можно инициализировать стримом при создании ридера. В общем, есть варианты
Ну вот ты почти сделал ту работу, которую компилятор C# делает автоматически.
G>Не понимаю. Как после Inc прервать выполнение метода? (например для шедулинга операций чтения)?
Попробую тряхнуть стариной Хотя стотыщлет не пробовал Delphi, может TClientSocket не самый лучший вариант, да и современные модификации языка скорее позволят сделать много проще.
TExactReader
type
TExactReaderDone = procedure (Sender: TExactReader) of object;
TExactReader = class
Buffer: TBytes;
BufferPos, BufferSize: Cardinal;
property OnDone: TExactReaderDone;
procedure DataReceived(Sender: TObject; Socket: TCustomWinSocket)
var
DataLen: Integer;
begin
DataLen := Socket.ReceiveLength;
if BufferSize < DataLen then DataLen := BufferSize;
Socket.ReceiveBuf(@Buffer[BufferPos], DataLen);
Inc(BufferPos, DataLen);
Dec(BufferSize, DataLen);
if BufferSize = 0 then
OnDone(Self);
end;
constructor Create(Sock: TClientSocket; Size: Cardinal; Handler: TExactReaderDone)
begin
BufferSize := Size;
BufferPos := 0;
SetLength(Buffer, BufferSize);
OnDone := Handler;
Sock.OnRead := DataReceived;
end;
destructor Destroy
begin
Sock.OnRead := nil;
end;
end;
Хотя вроде изначально речь шла о работе со сложными данными, с переменными полями, когда размер получается по ходу чтения.
Тов. gandjustas, а как выглядит код её вызывающий ReadExact?
Вот еще один вариант, может тоже не совсем уж плох?
type
TDataStreamReceived = procedure (Sender: TDataStreamer) of object;
TDataStreamer = class
Buffer: TBytes;
BufferPos, BufferSize: Cardinal;
property OnReceived: TDataStreamReceived;
procedure DataReceived(Sender: TObject; Socket: TCustomWinSocket)
var
DataLen: Integer;
begin
DataLen := Socket.ReceiveLength;
if ((BufferPos+DataLen) >= BufferSize) or not Assigned(Buffer) then
begin
while (BufferPos+DataLen) >= BufferSize do BufferSize := BufferSize*2;
SetLength(Buffer, BufferSize);
end;
Socket.ReceiveBuf(@Buffer[BufferPos], DataLen);
Inc(BufferPos, DataLen);
OnReceived(Self);
end;
procedure RemoveHandled(Size: Cardinal)
begin
MoveMemory(@Buffer[0], @Buffer[Size], BufferPos-Size);
Dec(BufferPos, Size);
end;
constructor Create(Sock: TClientSocket)
begin
Buffer := nil;
BufferPos := 0;
BufferSize := 4*1024;
Sock.OnRead := DataReceived;
end;
destructor Destroy
begin
Sock.OnRead := nil;
end;
function GetByte(var AtPos: Cardinal; var Data: Byte): Boolean;
function GetWord(var AtPos: Cardinal; var Data: Word): Boolean;
function GetDWord(var AtPos: Cardinal; var Data: DWord): Boolean;
function GetString(var AtPos: Cardinal; var S: String): Boolean;
end;
TCommandProcessor = class
Sock: TClientSocket;
Streamer: TDataStreamer;
procedure OnData(Stream: TDataStreamer)
var
Cmd: Word;
Text: string;
DataType, ValueIndex: DWord;
I: Cardinal;
begin
I := 0;
if not S.GetWord(I, Cmd) then Exit;
case Cmd of
$0001: begin
if not GetString(I, Text) then Exit;
MessageBox(0, text, 'A message', MB_OK);
end;
$1001: begin
if not S.GetDWord(I, DataType) then Exit;
if not S.GetDWord(I, ValueIndex) then Exit;
ProcessInformationRequest(DataType, ValueIndex);
end;
end;
S.RemoveHandled(I);
end;
constructor Create(Sock: TClientSocket)
begin
Streamer := TDataStreamer.Create(Sock);
Streamer.OnReceived := OnData;
end;
end;
Здравствуйте, Head Ache, Вы писали:
HA>Здравствуйте, gandjustas, Вы писали:
G>>Ну и сколько ребер будет в графе? Очевидно что не N^2 потому что все со всеми живые объекты связаны не будут, то есть примерно количество ребер в графе будет линейно зависеть от количества вершин. В итоге тот же O(N) получим
HA>Ощущение, что ты не совсем понимаешь что значит "доказать".
Я вообще-то не очень понимаю что вообще хочется доказать?
HA>1% объектов имеют число связей, пропорциональных N, 99% имеют 0 связей => общая оценка O(N^2)
N что такое?
Это видимо тот самый случай когда O(N^2) оказывается меньше O(N).
Собственно сама асимптотика GC вообще-то не интересует. Интересует реальная скорость работы, которая достигается оптимизациями и хаками.
Здравствуйте, Eugeny__, Вы писали:
E__>Если в коде такое количество связей, и объекты друг на друга ссылаются, то проблема со скоростью GC уходит даже не на второй план, а сильно дальше, потому как самая главная проблема в днк писавшего такой код.
Ну что вас заставляет писать ВОТ ЭТО, да еще и хвастаться:
Как ты думаешь, что это такое ? В дотнет это почти последовательность — если вызвать n-раз. Что бы стало по настоящему последовательностью, нужно заставить компилятор генерировать чуток кода:
public IEnumarable<Item> GetNextItem()
{
while(true)
{
yeild return new Item();
}
}
....
Все просто и никаких "структур" не надо.
foreach(Item item in GetNextItem())
{
// бесконечный цикл создания объектов
// со "структурами" на это памяти не хватит
}
Здравствуйте, enji, Вы писали:
E>Ну так на все случаи и не надо Надо только на конкретные случаи. Причем где-то надо именно либу, а где то хватит обычного "одноразового" кода, который решает задачу. Запись событий мышки — типичный пример такого кода, который очень прост и элементарно пишется каждый раз с учетом потребностей.
Такой код слишком прост что бы писать его каждый раз.
E>>>Распознавание мышиных жестов в дельфях из коробки. Килобайтов ифов там нет... E>-_*>А как они жесты распознают ?
E>А я откуда знаю? Я про это читал, но дельфи давно уже не использую. А что, наличие Rx — обязательное условие для распознавания жестов?
Rx это просто фреймворк который можно приспособить куда угодно, в т.ч. для обработки мыши.
>Насколько я все это понимаю, достаточно записать посл движений и сравнить с образцом. Алгоритм сравнения — это уже интересный вопрос. В институте на нейронных сетях делал какое-то распознавание...
RX позволяет свести это исключительно к алгоритму распознавания.
E>-_*>Это стандартная либа с широкими возможностями и благодаря ей не надо писать либы на все случае жизни, как "жестов в дельфях из коробки". Известная вобщем то проблема еще древнего Борланда — написать либы на все случаи жизни вместо хорошего фреймворка, через полгода-года обнаружить что случаев много больше, переписать все это с нуля и опять заточить на все случаи жизни вместо хорошего фреймворка и снова обнаружить что случаев много больше и тд.
E>Часто оказывается что случаев даже больше, чем покрывает фреймворк И приходится его допиливать или писать что-то сбоку.
Хороший фреймворк не затачивается на все случаи, он пишется с рассчетом на то, в том числе, что его можно будет допилить или написать чтото сбоку. А у борланда испокон веков идея фикс — покрыть все возможные случаи.
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, Head Ache, Вы писали:
HA>>foreach(Item item in GetNextItem()) HA>>{ HA>>// бесконечный цикл создания объектов HA>>// со "структурами" на это памяти не хватит HA>>}
Я что-то не понял. Ты согласен с тем, что "со структурами на это памяти не хватит"?
HA>зы: а потом другой умник не глядя втыкает подобную хрень в какой-нибудь многопоточный обработчик...
Выглядит устрашающе. Что такое "многопоточный обработчик"?
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, Head Ache, Вы писали:
HA>>>foreach(Item item in GetNextItem()) HA>>>{ HA>>>// бесконечный цикл создания объектов HA>>>// со "структурами" на это памяти не хватит HA>>>} MM>Я что-то не понял. Ты согласен с тем, что "со структурами на это памяти не хватит"?
Конечно, согласен. Просто не понимаю, почему нужно делать именно так
HA>>зы: а потом другой умник не глядя втыкает подобную хрень в какой-нибудь многопоточный обработчик... MM>Выглядит устрашающе. Что такое "многопоточный обработчик"?
Хмм... gc вроде как стопорит все потоки на время сборки мусора...
Да и "проблема O(N)" какой-то неопределенной становится
Здравствуйте, MxMsk, Вы писали:
MM> HA>>foreach(Item item in GetNextItem()) MM> HA>>{ MM> HA>>// бесконечный цикл создания объектов MM> HA>>// со "структурами" на это памяти не хватит MM> HA>>}
MM> Я что-то не понял. Ты согласен с тем, что "со структурами на это памяти не хватит"?
Здравствуйте, Head Ache, Вы писали:
E__>>Есть примеры фреймворка, который создает ссылки "все ко всем" между объектами?
HA>Не появляются ли неявно, где-то внутри связи типа не "все ко всем", а "один ко многим".
Можно поподробнее, что ты имеешь ввиду? Лучше на примере.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Head Ache, Вы писали:
HA>>>>foreach(Item item in GetNextItem()) HA>>>>{ HA>>>>// бесконечный цикл создания объектов HA>>>>// со "структурами" на это памяти не хватит HA>>>>} MM>>Я что-то не понял. Ты согласен с тем, что "со структурами на это памяти не хватит"? HA>Конечно, согласен. Просто не понимаю, почему нужно делать именно так
Переменная то всего одна. Как там может не хватить памяти?
HA>>>зы: а потом другой умник не глядя втыкает подобную хрень в какой-нибудь многопоточный обработчик... MM>>Выглядит устрашающе. Что такое "многопоточный обработчик"? HA>Хмм... gc вроде как стопорит все потоки на время сборки мусора...
Хмм.. И что?
HA>Да и "проблема O(N)" какой-то неопределенной становится
Ну, в этом споре я не участвую, т.к. не особо вдавался в подробности работы GC.
E__>>Если в коде такое количество связей, и объекты друг на друга ссылаются, то проблема со скоростью GC уходит даже не на второй план, а сильно дальше, потому как самая главная проблема в днк писавшего такой код.
HA>Ну что вас заставляет писать ВОТ ЭТО, да еще и хвастаться:
Ты уверен, что тому человеку вопрос задаешь?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Eugeny__, Вы писали:
E>>На самом деле может быть даже больше N^2
E__>Если в коде такое количество связей, и объекты друг на друга ссылаются, то проблема со скоростью GC уходит даже не на второй план, а сильно дальше, потому как самая главная проблема в днк писавшего такой код.
Или же предметная область этого требует.
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, Head Ache, Вы писали:
HA>Здравствуйте, Eugeny__, Вы писали:
E__>>Если в коде такое количество связей, и объекты друг на друга ссылаются, то проблема со скоростью GC уходит даже не на второй план, а сильно дальше, потому как самая главная проблема в днк писавшего такой код.
HA>Ну что вас заставляет писать ВОТ ЭТО, да еще и хвастаться:
Выглядит так, как будто ты задаешь вопрос мне. И я не понял где ты увидел хвастовство, будь добр, цитатой ?
Что заставляет писать код — лень. Пять строчек в одном методе лучше чем целый класс автомата реализующий 5 интерфейсов.
HA>public Item GetNextItem() HA>{ HA> return new Item(); HA>}
...
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, Head Ache, Вы писали:
HA>>foreach(Item item in GetNextItem()) HA>>{ HA>>// бесконечный цикл создания объектов HA>>// со "структурами" на это памяти не хватит HA>>}
HA>зы: а потом другой умник не глядя втыкает подобную хрень в какой-нибудь многопоточный обработчик...
Запросто и при этом побочных эффектов нет и ожидать не приходится
Материал из Википедии — свободной энциклопедии, -_*
HA>Хмм... gc вроде как стопорит все потоки на время сборки мусора...
Только при сборке нулевого поколения. При правильной разработке такого может вообще и не случаться.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Head Ache, Вы писали:
HA>Боюсь, что в сложных вариантах с циклами, (т.е. когда собственно и нужен полный dfs), HA>число итераций может расти с факториальной скоростью.
mark'n sweep:
mark :
DFS из каждой вершы рута — P*(V+E)
sweep :
scan в heap — V
расход доп памяти : V*ref_size
P — кол.во вершин в руте, V — объектов, E — связей между объектами , ref_size — размер ссылки
Циклы этому алгоритму по барабану и никакой факториальной зависимости нет и быть не может. Очевидно, P*(V+E) есть ни что иное, как O(V+E).
Материал из Википедии — свободной энциклопедии, -_*
E__>>Если в коде такое количество связей, и объекты друг на друга ссылаются, то проблема со скоростью GC уходит даже не на второй план, а сильно дальше, потому как самая главная проблема в днк писавшего такой код.
-_*>Или же предметная область этого требует.
Пример такой области — в студию.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, -_*, Вы писали:
E>>Ну так на все случаи и не надо Надо только на конкретные случаи. Причем где-то надо именно либу, а где то хватит обычного "одноразового" кода, который решает задачу. Запись событий мышки — типичный пример такого кода, который очень прост и элементарно пишется каждый раз с учетом потребностей.
-_*>Такой код слишком прост что бы писать его каждый раз.
Ну дык сложный код пишем 1 раз, простой — много раз
-_*>Rx это просто фреймворк который можно приспособить куда угодно, в т.ч. для обработки мыши.
>>Насколько я все это понимаю, достаточно записать посл движений и сравнить с образцом. Алгоритм сравнения — это уже интересный вопрос. В институте на нейронных сетях делал какое-то распознавание...
-_*>RX позволяет свести это исключительно к алгоритму распознавания.
Дело в том, что распознавание НАМНОГО сложнее записи. Запись делается очень быстро без всяких проблем где угодно. Для распознавания надо уже курить теорию, пробовать и т.д. Именно распознавание — основная проблема в жестах. от того, что вы заюзаете Rx эта проблема не решится, поэтому нет особого преимущества в Rx в данном конкретном случае — на языке без Rx придется потратить на час больше времени, при этом возможно получится быстрее.
Здравствуйте, enji, Вы писали:
E>Ну дык сложный код пишем 1 раз, простой — много раз
Простой код как правило вообще не пишется. Он или генерируется или уходит во всякие фреймворки. В плохом фреймворке тривиальный код нужно писать руками на любой чих.
E>-_*>RX позволяет свести это исключительно к алгоритму распознавания.
E>Дело в том, что распознавание НАМНОГО сложнее записи. Запись делается очень быстро без всяких проблем где угодно.
Тривиальный код в правильных инструментах писать не нужно. Все это берет на себя фреймворк. Представь, нет никакой проблемы в Asp.Net или EF создавать проперти вручную. Все умеют писать проперти, не правда ли ? Но и Asp.Net и EF генерируют код что бы ты мог сосредоточиться только на основной задаче. Открой любой дизайнер хоть в WPF, SL или Winforms — тривиальнейший код и писать его не надо.
Собственно сбор координат точно такой же тривиальнейший код.
>Для распознавания надо уже курить теорию, пробовать и т.д. Именно распознавание — основная проблема в жестах.
Потому и нужно сосредоточиться именно на этой задаче, а не писать каждый раз похожий код для сбора координат.
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, enji, Вы писали:
E>В 2009 юникод вроде как уже из коробки был.
Напоминаю: юзали D7, которая появилась эээээ несколько раньше, и там и в самом деле были определенные проблемы с кодировками.
E>А до 2009 (или может 2008 — не помню) были tnt компоненты с поддержкой юникода. Для D7 они вполне подходили. Так что на кой было делать руками — это очень интересный вопрос.
Вы будете смеяться, но я вежливо намекнул ребятам, что можно было бы поискать готовое решение.
E>Все это говорит не о проблемах дельфи, а о проблемах в мозгах у ребят
Я и говорил не о проблемах делфи, а о том, что не все чудо-кодеры ушли на C#
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Здравствуйте, slava_phirsov, Вы писали:
s> E>В 2009 юникод вроде как уже из коробки был.
s> Напоминаю: юзали D7, которая появилась эээээ несколько раньше, и там и в самом деле были определенные проблемы с кодировками.
Хм... Какие у WideString + WideCharToMultiByte/MultiByeToWideChar проблемы с кодировками? Или речь о том, что "изкоробочного" решения для Unicode Delphi 7 не обеспечивала?
Здравствуйте, Eugeny__, Вы писали:
E__>>>Если в коде такое количество связей, и объекты друг на друга ссылаются, то проблема со скоростью GC уходит даже не на второй план, а сильно дальше, потому как самая главная проблема в днк писавшего такой код.
E__>-_*>Или же предметная область этого требует.
E__>Пример такой области — в студию.
Электроника. Достаточно ?
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, LR, Вы писали:
E__>>>>Если в коде такое количество связей, и объекты друг на друга ссылаются, то проблема со скоростью GC уходит даже не на второй план, а сильно дальше, потому как самая главная проблема в днк писавшего такой код.
E__>>-_*>Или же предметная область этого требует.
E__>>Пример такой области — в студию.
LR>Электроника. Достаточно ?
Если честно, то хотелось бы конкретную задачу. Электроника(что под этим подразумевается?) мне не совсем понятно, и тем более, почему это требует связи всех объектов со всеми. Если говорить об embedded, то, во-первых, там манагед явно не лучшее решение, а во вторых, я писал под железяку с 64 килобайтами памяти. Так вот связей "всех со всеми" там и близко не было. Писал, правда, на чистом С, так как я с багажом манагед разработки не потяну плюсы — задолбаюсь с памятью. А С прост как шар: два правила "не возвращать как результат(и не присваивать как ссылку в полученных параметрах) локальные переменные" и "не пользоваться выделением динамической памяти" обеспечили быструю и безглючную разработку.
ЗЫ был один раз и фэйл. Я привык как-то, что char — это двухбайтное беззнаковое число(по крайней мере, при приведению к числу). Ну, на подсознательном уровне. Адаптировал чужой код, там было doSomething(<params>, char length). Доолго я недоумевал, почему у меня длина обрезается при определенных значениях, пока не посчитал, до какого значения обрезается... Матюкать оставалось только себя.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Eugeny__, Вы писали:
LR>>Электроника. Достаточно ?
E__>Если честно, то хотелось бы конкретную задачу. Электроника(что под этим подразумевается?) мне не совсем понятно, и тем более, почему это требует связи всех объектов со всеми. Если говорить об embedded, то, во-первых, там манагед явно не лучшее решение, а во вторых, я писал под железяку с 64 килобайтами памяти.
Имеется ввиду моделирование, проектирование, рассчет. Обычно конечно квадратичной зависимости числа связей от числа объектов не будет, но некоторые алгоритмы могут потребовать и квадратичную зависимость.
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, BlackEric, Вы писали:
_>>безусловно, есть хорошие вещи написанные на дельфи. очевидно же, что дело не в самом языке, а в тех мудаках которые на нем пишут. просто у дельфи последних очень много
BE>А сколько их у C# и PHP.... A 1C это вообще
А уж у C++ их сколько... и каждый мнит себя непризнанным гением.
Здравствуйте, LR, Вы писали:
LR>Здравствуйте, Eugeny__, Вы писали:
LR>>>Электроника. Достаточно ?
E__>>Если честно, то хотелось бы конкретную задачу. Электроника(что под этим подразумевается?) мне не совсем понятно, и тем более, почему это требует связи всех объектов со всеми. Если говорить об embedded, то, во-первых, там манагед явно не лучшее решение, а во вторых, я писал под железяку с 64 килобайтами памяти.
LR>Имеется ввиду моделирование, проектирование, рассчет. Обычно конечно квадратичной зависимости числа связей от числа объектов не будет, но некоторые алгоритмы могут потребовать и квадратичную зависимость.
Электроника — неудачный пример.
Для моделирования аналоговых схем, из элементов и связей формируется система линейных уравнений, которая затем и
решается каким-нибудь стандартным методом. Так что тут матрицы рулят.
Для цифровой электроники, часто используется event-based системы, где элементы подписываются на события и сами их генерируют, но тут тоже нету связей всех объектов со всеми.
Другое дело, что алгоритмы для симуляторов вылизываются очень тщательно и у unmanaged систем больший простор для битовыжимательства.
Здравствуйте, FragMent, Вы писали:
E__>>>Если честно, то хотелось бы конкретную задачу. Электроника(что под этим подразумевается?) мне не совсем понятно, и тем более, почему это требует связи всех объектов со всеми. Если говорить об embedded, то, во-первых, там манагед явно не лучшее решение, а во вторых, я писал под железяку с 64 килобайтами памяти.
LR>>Имеется ввиду моделирование, проектирование, рассчет. Обычно конечно квадратичной зависимости числа связей от числа объектов не будет, но некоторые алгоритмы могут потребовать и квадратичную зависимость.
FM>Для цифровой электроники, часто используется event-based системы, где элементы подписываются на события и сами их генерируют, но тут тоже нету связей всех объектов со всеми.
Обычно конечно квадратичной зависимости числа связей от числа объектов не будет, но некоторые алгоритмы могут потребовать и квадратичную зависимость.
Материал из Википедии — свободной энциклопедии, -_*
Здравствуйте, hattab, Вы писали:
H>Хм... Какие у WideString + WideCharToMultiByte/MultiByeToWideChar проблемы с кодировками? Или речь о том, что "изкоробочного" решения для Unicode Delphi 7 не обеспечивала?
Давно уже это было, работал я под WinXP с одной тулзой (FPGA Advantage 5.2, если интересно), которая была подвержена, как и Matlab (во всяком случае Matlab того времени), проблеме буквы "я". То есть, если в файлах проекта возникала буква "я" — сливай воду, работать не будет. Но если в Matlab-овских M-файлах можно тупо не писать кириллический текст, а обходиться латиницей, то тут приложение само дописывало в файл разную служебную информацию. В частности, дату модификации (ноября, декабря), но не только. Первым моим порывом было перейти на английскую локаль, чтобы это замечательное приложение даже думать не посмело писать кириллический текст. Так я и сделал, и все пошло ОК. А потом я открыл в D7 один проект и немного поредактировал. И при запуске обнаружил, что все надписи в GUI сделанные кириллицей превратились в "?". И, самое главное, восстановить статус-кво сменой локали обратно на русскую не получилось! Плясал с бубном вокруг разных языковых настроек, но так ничего и не выплясал, и где-то с полгода работал в двух разных локалях: с FPGA Advantage — в английской, с Delphi 7 — в русской.
ОК, может быть ты мне тогда раскроешь тайну сепулек? Что там надо было в Delphi (или в Панели управления) настроить?
P.S. Не сочтите за рекламу, когда я открыл для себя Qt — ощутил "щуство хлубоково удолетворения"(TM)
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Начнем с того, что Delphi 7 не поддерживала юникод на уровне VCL. Но, в ресурсах форм (читай в файлах *.dfm) все, что было не в ASCII, кодировалось по юникодовым коде-поинтам. Выглядело это так:
Так кодировалась строчка "Пример использования". При запуске под русской локалью или при настройке использования кирилицы для не юникод приложений все работало прекрасно. Но внутри Delphi-приложений это все равно был не юникод, а обычные однобайтовые стоки. Однако, сам язык позволял использовать юникод-строки (WideString), основное предназначение которых было во взаимодействии с COM. Благодаря этому, сторонними разработчиками, были разработаны наборы компонентов для поддержки юникода в гуе. Самым распространенным набором был Tnt Unicode Controls. Все, кто хотел, могли использовать юникод без напрягов. Наверняка, отчасти, и поэтому, "настоящая" поддержка юникода появилась только в Delphi 2009. У тебя, скорее всего, слетела кириллица как раз таки из-за английской локали и не включенный русский для не юникод приложений. Т.е. дельфя подняла из ресурсов строки в юникоде но не смогла их преобразовать в кирилицу по причине того, что системе на это небыло указано. Как говориться, сам виноват
Здравствуйте, hattab, Вы писали:
H>У тебя, скорее всего, слетела кириллица как раз таки из-за английской локали и не включенный русский для не юникод приложений.
Е.М.Н.И.П., "Пробовал — не помогает" (С) Вопрос в том, какую именно кодировку нужно было включать для не-юникод приложений? 1251, KOI8, whatever? И, apropos, это, повлияло бы на другие не-юникод приложения. Допустим, Delphi нужно 1251, а какой-нибудь проприетарной супер-пупер утилите по управлению PCI-карточкой производства Международной Корпорации Васи Пупкина — KOI8. А настройка эта одна на всю систему! В результате получаем те же пляски с бубном настройками локали
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Здравствуйте, slava_phirsov, Вы писали:
s> H>У тебя, скорее всего, слетела кириллица как раз таки из-за английской локали и не включенный русский для не юникод приложений.
s> Е.М.Н.И.П., "Пробовал — не помогает" (С) Вопрос в том, какую именно кодировку нужно было включать для не-юникод приложений? 1251, KOI8, whatever?
Кириллица в виндах это 1251. Впрочем, при настройке там доступно только указание языка, без указания кодовых страниц.
s> И, apropos, это, повлияло бы на другие не-юникод приложения. Допустим, Delphi нужно 1251, а какой-нибудь проприетарной супер-пупер утилите по управлению PCI-карточкой производства Международной Корпорации Васи Пупкина — KOI8. А настройка эта одна на всю систему! В результате получаем те же пляски с бубном настройками локали
Конечно в этом случае был-бы конфликт. Но тут формулировка неправильная, непосредственно Delphi кириллица не нужна. Она нужна тому, кто ее в проектах использовал. После перевода проекта на юникод (а это можно было сделать вообще под виртуальной машиной, или просто на время поменяв системные настройки) ни каких проблем бы не возникло даже если системные настройки не предполагали использование кириллицы.
Здравствуйте, iHateLogins, Вы писали:
HL>А вот в Дельфи таких проблем почти не было. Код, написанный давно, можно заставить работать и сейчас и не нужно ничего переписывать.
Неправда Ваша. Вспоминаю, как мы всякий раз с кряхтением портировались на очередную версию Delphi. Основная гуистика — без проблем, но вот кастомные компоненты... Поэтому терпели на старой версии до последнего, а затем выделяли отдельную команду для портирования.
Плюс вереница старых багов, которые висят в борландовском централе с первых версий IDE, и никого ни разу не того... Тоже не доставляет преимуществ супротив активно развивающегося C#.
Здравствуйте, iHateLogins, Вы писали:
HL>Так да не так. Микрософт сама запуталась в дотнете. Они в начале 2000-х думали одно, а вышло совсем другое. Пример: многие абстракции и библиотеки не успевают дожить даже до N+2-й версии. Например, Windows.Forms стала почти deprecated уже в .NET 3.0, с появлением WPF.
Что неудивительно, учитывая, что WinForms есть калька с Delphi.VCL (а та, в свою очередь, тоже немолода и является продолжателем более ранних идей типа TurboVision). WPF предлагает GUI куда более мощный в плане анимаций, глубокого разделения с моделью данных, и прочие плюшки. Это как сравнивать GDI и DirectX.
HL>Проблема микрософта в том, что у них не получается сделать long-running API в .NET. В WinAPI — без вопросов, а в .NET-е, при всей его объектно-ориентированности, как-то не получается. В итоге они просто бросают код и начинают заново. Так появился ASP.NET MVC, EF, ну много еще примеров.
ASP.NET MVC, EF — это лишь кирпичики, помогающие собирать приложение. Хочешь — работай без них, хочешь — с ними, компилятор ругаться не будет.
HL>Я вот что скажу по поводу .NET-а. Сейчас, в 2010, уже стало понятно, что это тупик. WPF не взлетел, Silverlight не взлетел, Entity Framework не взлетел. ASP.NET давят со всех сторон динамические языки.
Заказчикам многих тысяч проектов по всему миру — непонятно, почему это тупик. Мне — тоже. WPF вполне себе взлетел (особенно радует отсутствие старой идиомы "каждому контролу — отдельный хэндл", выжирающей системные ресурсы). Silverlight (начиная со второй его версии) есть подмножество WPF, успешно конкурирующее с тем же флэшом.
Entity Framework — это узкоспециализированный функционал. Если у Вас в проекте не используется база данных, то это не повод говорить "EF не взлетел".
HL>Ну а что остается от дотнета? Автоматическое управление памятью и реализация парсинга дат? Слабовато как-то.
Остается, прежде всего, компилятор и фреймворк, как ни удивительно . Управление памятью и парсинг дат — лишь малая часть возможностей фреймворка. Он сам по себе — тот самый long-running API, который Вы ищете.
HL>Даже вот бизнес-приложения Микрософт так и не перевела на .NET.
Погуглите WCF RIA Services Особенно дефолтное название проектов
Здравствуйте, ДимДимыч, Вы писали:
ДД>Кроме этого, нравился очень контекстно-зависимый автокомплит.
Но отчего он такой тормозной? Сравнить со Студией — небо и земля. Такое ощущение, что в Delphi используется тупо линейный поиск. Когда проект большой, лаги по нескольку секунд на это дело — раздражает.
Здравствуйте, Mr.Delphist, Вы писали:
MD>Здравствуйте, iHateLogins, Вы писали:
HL>>А вот в Дельфи таких проблем почти не было. Код, написанный давно, можно заставить работать и сейчас и не нужно ничего переписывать.
MD>Неправда Ваша. Вспоминаю, как мы всякий раз с кряхтением портировались на очередную версию Delphi. Основная гуистика — без проблем, но вот кастомные компоненты... Поэтому терпели на старой версии до последнего, а затем выделяли отдельную команду для портирования.
Это все мелочи по сравнению с переходом с <= 2007 на 2009/2010.
MD>Плюс вереница старых багов, которые висят в борландовском централе с первых версий IDE, и никого ни разу не того... Тоже не доставляет преимуществ супротив активно развивающегося C#.
Здравствуйте, Mr.Delphist, Вы писали:
MD> Неправда Ваша. Вспоминаю, как мы всякий раз с кряхтением портировались на очередную версию Delphi. Основная гуистика — без проблем, но вот кастомные компоненты... Поэтому терпели на старой версии до последнего, а затем выделяли отдельную команду для портирования.
Нормальный код портировался влегкую (не проблема дельфей, что сторонний код кто-то пишет через анус). Мы прошли путь от 3 версии по 7 с огромным проектом, без проблем с портированием. Были единственные "сложности" (т.е. переходу уделялось повышенное внимание) при переходе на пятерку, кажется, т.к. борланды поменяли формат dfm.
MD> Плюс вереница старых багов, которые висят в борландовском централе с первых версий IDE, и никого ни разу не того... Тоже не доставляет преимуществ супротив активно развивающегося C#.
Ты бы посмотрел сколько багов зафикшено в релизах 2009, 2010, XE. После семерки был застой, это да, сейчас ситуация выправляется.
Здравствуйте, Jack128, Вы писали:
J> MD>Неправда Ваша. Вспоминаю, как мы всякий раз с кряхтением портировались на очередную версию Delphi. Основная гуистика — без проблем, но вот кастомные компоненты... Поэтому терпели на старой версии до последнего, а затем выделяли отдельную команду для портирования.
J> Это все мелочи по сравнению с переходом с <= 2007 на 2009/2010.
Это еще почему? Неужто закладывались на размер чара?
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, 4UBAKA, Вы писали:
UBA>> UBA>> H>FAR forever!
UBA>> UBA>> Низкое разрешение.
UBA>> H>Моя непонимать 80x25 это не предел для консоли.
UBA>> Да хоть 125 на 80 — меньше 1920 на 1080 и точка.
H>На семерке максимизируется на вес экран без проблем. У тотала какой-то жутко аляповатый интерфейс, который ни как не совмещается с моей тонкой душевной организацией и чувством прекрасного.
Какая семерка? Работает и на XP:
F9 -> C -> V
Размер шрифта и количество строк настраивается в свойствах ярлыка. В общем, несмотря на возраст, FAR продолжает демонстрировать бодрый дух и адаптируемость. Сам держу его всегда на машине, хотя основная масса операций идет через... Проводник!
Тоталом не пользуюсь, ибо что-то у меня тоже с душевной организацией... нездоровое, наверное
Здравствуйте, Mr.Delphist, Вы писали:
MD> ДД>Кроме этого, нравился очень контекстно-зависимый автокомплит.
MD> Но отчего он такой тормозной? Сравнить со Студией — небо и земля. Такое ощущение, что в Delphi используется тупо линейный поиск. Когда проект большой, лаги по нескольку секунд на это дело — раздражает.
Нормальный по скорости автокомплит Никаких секундных задержек нет.
Здравствуйте, Mr.Delphist, Вы писали:
MD> H>На семерке максимизируется на вес экран без проблем. У тотала какой-то жутко аляповатый интерфейс, который ни как не совмещается с моей тонкой душевной организацией и чувством прекрасного.
MD> Какая семерка? Работает и на XP: MD> F9 -> C -> V
Да я что спорю, просто у меня семерка хостом стоит, а виртуалку с XP еще запустить для проверку нужно
MD> Размер шрифта и количество строк настраивается в свойствах ярлыка. В общем, несмотря на возраст, FAR продолжает демонстрировать бодрый дух и адаптируемость. Сам держу его всегда на машине, хотя основная масса операций идет через... Проводник! MD> Тоталом не пользуюсь, ибо что-то у меня тоже с душевной организацией... нездоровое, наверное
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, Jack128, Вы писали:
J>> MD>Неправда Ваша. Вспоминаю, как мы всякий раз с кряхтением портировались на очередную версию Delphi. Основная гуистика — без проблем, но вот кастомные компоненты... Поэтому терпели на старой версии до последнего, а затем выделяли отдельную команду для портирования.
J>> Это все мелочи по сравнению с переходом с <= 2007 на 2009/2010.
H>Это еще почему? Неужто закладывались на размер чара?
Наверняка где нить есть такое. Это неизбежно для любого крупного проэкта.
Котжировцы сделали большой косяк не добавив опцию компилятора unicode/анси. Интересно что в свое время борланд добавил опцию short/long strings. А котЖир и её поломал.
Здравствуйте, Jack128, Вы писали:
J> J>> Это все мелочи по сравнению с переходом с <= 2007 на 2009/2010.
J> H>Это еще почему? Неужто закладывались на размер чара?
J> Наверняка где нить есть такое. Это неизбежно для любого крупного проэкта.
Кто закладывался тот сам себе злобный буратина Борланды в хелпе давно говорили, что на размер чара закладываться нефиг, и нужно делать SizeOf(Char) там где требуется универсальность или использовать конкретное имя типа, даже если кому-то некоторые вещи кажутся незыблемыми. Писали, что если вы хотите быть уверенными, в формате строки указывайте ее конкретный тип. Т.е. типы String и Char это псевдонимы типов и не более. Нужено что-то конкретное используйте ShortString, AnsiString, WideString или новый UnicodeString. Кто рекомендациями пренебрег, тем на зеркало пенять нефига
J> Котжировцы сделали большой косяк не добавив опцию компилятора unicode/анси. Интересно что в свое время борланд добавил опцию short/long strings. А котЖир и её поломал.
И правильно сделали, нефиг этот рудимент тащить в светлое будущее.
Здравствуйте, squid, Вы писали:
s> h> И правильно сделали, нефиг этот рудимент тащить в светлое будущее.
s> ну да, тыщ десять строк чужого кода проще перелапатить чем один {$DEFINE } сделать.
Я же говорю, кто говнокодил те и попали Почему я перевел свой проект на юникод без малейших проблем? Да потому, что хелп читал и головой думал. Почему UIB стал юникодовым моментально? А почему Synapse нормально компилирутеся и работает на юникод-версиях дельфей не смотря на то, что сама библа завязана на анси-строки? Да по тем же самым причинам А кто нормально писать не может/не хочет, те на отсутствии директив жалуются. Ну, пусть жалуются, авось в дальнейшем умнее будут
Здравствуйте, hattab, Вы писали:
H>Кириллица в виндах это 1251.
Консольные утилиты работают с cp866
H>Впрочем, при настройке там доступно только указание языка, без указания кодовых страниц.
Ээээ нет, смотри "Панель управления->Язык и региональные стандарты->Дополнительно", там несколько кириллических страниц включено, вот только каким макаром система выбирает из них "ту самую" —
H>Конечно в этом случае был-бы конфликт. Но тут формулировка неправильная, непосредственно Delphi кириллица не нужна.
Хм, если, как ты говоришь, в формах все хранится в своем внутреннем формате, то я вообще не въезжаю...
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Здравствуйте, slava_phirsov, Вы писали:
s> H>Кириллица в виндах это 1251.
s> Консольные утилиты работают с cp866
Мы же не про консоль говорим, верно?
s> H>Впрочем, при настройке там доступно только указание языка, без указания кодовых страниц.
s> Ээээ нет, смотри "Панель управления->Язык и региональные стандарты->Дополнительно", там несколько кириллических страниц включено, вот только каким макаром система выбирает из них "ту самую" —
А ты обрати внимание, что некоторые страницы помечены, как ANSI и именно они используются для дефолтной поддержки национальных языков в однобайтовых кодировках. Конечно кириллических кодировок там несколько, но дефолтная именно 1251. в консоли дефолтные те, что обозначены как OEM.
s> H>Конечно в этом случае был-бы конфликт. Но тут формулировка неправильная, непосредственно Delphi кириллица не нужна.
s> Хм, если, как ты говоришь, в формах все хранится в своем внутреннем формате, то я вообще не въезжаю...
Попытаюсь объяснить еще раз. В ресурсах лежит честный юникод. Когда Delphi (говорим мы о не юникодовых версиях) читает строку из ресурса, она должна преобразовать ее к строке в однобайтовой кодировке (AnsiString) т.к. VCL тогда поддерживала только такие строки. Для преобразования используется системный вызов WideCharToMultiByte. Кодовая страница для преобразования определяется текущей локалью или языком выбранным для не юникод приложений. Если в системе кириллическая локаль или русский язык для не юникод приложений такое преобразование пройдет гладко. В случае если кириллица в системе не настроена, кириллические ресурсы будут декодированы в виде знаков вопроса. Если после неправильного декодирования сохранить проект, в ресурсы форм попадут именно эти неправильно раскодированные символы знаков вопроса (т.к. сохранение в dfm есть обычная сериализация формы).
Здравствуйте, hattab, Вы писали:
h> Я же говорю, кто говнокодил те и попали Почему я перевел свой проект на юникод без малейших проблем? Да потому, что хелп читал и головой думал.
А мой проект тут причем? Других хидеров под DirectShow нет, а те что есть говно. Официальных хидеров тоже нет, Borland way.
Здравствуйте, squid, Вы писали:
s> h> Я же говорю, кто говнокодил те и попали Почему я перевел свой проект на юникод без малейших проблем? Да потому, что хелп читал и головой думал.
s> А мой проект тут причем? Других хидеров под DirectShow нет, а те что есть говно. Официальных хидеров тоже нет, Borland way.
А что твой проект? Не скомпилился с юникод версией дельфей? Значит ССЗБ
s> Вот и всё.
А что все? DSPack есть, на сурсфордже есть. Руки, в конце концов, есть? Да, борланд не пытался быть решателем всех проблем, какой ужас
Здравствуйте, hattab, Вы писали:
h> А что твой проект? Не скомпилился с юникод версией дельфей? Значит ССЗБ
нет у моего проекта проблем.
h> А что все? DSPack есть, на сурсфордже есть. Руки, в конце концов, есть? Да, борланд не пытался быть решателем всех проблем, какой ужас
да, есть. а на момент релиза Delphi небыло. вот они и перелопачивали то что написали ранее. и я, частично. и багов в этих хидерах страшное количество.
то что в дельфи нет полных хидеров из Windows SDK — жирный минус.
Здравствуйте, squid, Вы писали:
s> h> А что твой проект? Не скомпилился с юникод версией дельфей? Значит ССЗБ
s> нет у моего проекта проблем.
Тогда о чем ты вообще?
s> h> А что все? DSPack есть, на сурсфордже есть. Руки, в конце концов, есть? Да, борланд не пытался быть решателем всех проблем, какой ужас
s> да, есть. а на момент релиза Delphi небыло. вот они и перелопачивали то что написали ранее. и я, частично. и багов в этих хидерах страшное количество.
Если кодировать грамотно, ничего перелопачивать не пришлось бы Другое дело, что мир таки не идеален, но жаловаться при этом на отсутствие директивы это значит желать лечить симптомы, а не болезнь.
s> то что в дельфи нет полных хидеров из Windows SDK — жирный минус.
Здравствуйте, hattab, Вы писали:
h> Если кодировать грамотно, ничего перелопачивать не пришлось бы
да.
h> s> то что в дельфи нет полных хидеров из Windows SDK — жирный минус.
h> У джедаев есть проект соответствующий.
нету там DirectShow. качества опенсорс кода ниже плинтуса, а официальных хидеров нет.
так что благодаря отсутствию простейшей директивы я куча времени потерял. без какой либо альтернативы, благодаря тем-же официальным хидерам которых нет.
Здравствуйте, squid, Вы писали:
s> нету там DirectShow. качества опенсорс кода ниже плинтуса, а официальных хидеров нет.
Ну так у других DirectShow есть, что ты в самом деле проблему из этого делаешь
s> так что благодаря отсутствию простейшей директивы я куча времени потерял. без какой либо альтернативы, благодаря тем-же официальным хидерам которых нет.
А я вручную парсил perfdata потому, как адекватных средств в виндах нет (pdh.dll не катит). Что мне теперь до конца жизни на винду обижаться?
Здравствуйте, hattab, Вы писали:
h> Ну так у других DirectShow есть, что ты в самом деле проблему из этого делаешь
не работающий на момент релиза Delphi 2009, с кучей страшных багов прямо сейчас. Без официальной поддержки. Проблема.
h> А я вручную парсил perfdata потому, как адекватных средств в виндах нет (pdh.dll не катит). Что мне теперь до конца жизни на винду обижаться?
А причем тут винда? Это вечный тупизм Борланда по части хидеров. Пишите сами эти официальные виндовые хидеры. И обновляйте сами.
Здравствуйте, squid, Вы писали:
s> h> Ну так у других DirectShow есть, что ты в самом деле проблему из этого делаешь
s> не работающий на момент релиза Delphi 2009, с кучей страшных багов прямо сейчас. Без официальной поддержки. Проблема.
С кучей страшных багов... Что то на форуме DSPack ни про какие страшные баги не написано
s> h> А я вручную парсил perfdata потому, как адекватных средств в виндах нет (pdh.dll не катит). Что мне теперь до конца жизни на винду обижаться?
s> А причем тут винда?
Для аналогии вестимо
s> Это вечный тупизм Борланда по части хидеров. Пишите сами эти официальные виндовые хидеры. И обновляйте сами.
А в чем проблема то? Кому ехать, те едут, а кому то видимо шашечки...
Здравствуйте, hattab, Вы писали:
h> С кучей страшных багов... Что то на форуме DSPack ни про какие страшные баги не написано
ну-ну. половина BDA интерфейсов вообще как будто наугад написана. с EVR тоже много веселого поначалу было.
h> А в чем проблема то? Кому ехать, те едут, а кому то видимо шашечки...
Здравствуйте, squid, Вы писали:
s> ну-ну. половина BDA интерфейсов вообще как будто наугад написана. с EVR тоже много веселого поначалу было.
Так ты на формуме с разработчиком пообщайся
s> h> А в чем проблема то? Кому ехать, те едут, а кому то видимо шашечки...
s> куча времени просто улетает в трубу.
Дальше будет не лучше. Давно пора понять, что дельфю не позиционируют, как средство системной разработки, а потому разработчики не считают необходимым конвертировать все имеющиеся хидеры. Кому надо сами все сделают. Кроссплатформенную версию тоже, наверняка, никто не будет обеспечивать хидерами под все платформы. Если настолько сильно жмет, нужно на C переходить.
Здравствуйте, hattab, Вы писали:
h> Так ты на формуме с разработчиком пообщайся
их это мало волнует, основные интерфейсы работают и ладно.
h> Дальше будет не лучше. Давно пора понять, что дельфю не позиционируют, как средство системной разработки, а потому разработчики не считают необходимым конвертировать все имеющиеся хидеры. Кому надо сами все сделают. Кроссплатформенную версию тоже, наверняка, никто не будет обеспечивать хидерами под все платформы. Если настолько сильно жмет, нужно на C переходить.
ну я на C# и перешел. но экономически переписывать старые продукты не выгодно.
Здравствуйте, hattab, Вы писали:
H>Ты бы посмотрел сколько багов зафикшено в релизах 2009, 2010, XE. После семерки был застой, это да, сейчас ситуация выправляется.
Неужто пофиксили саморегистрацию EXE как COM-сервера при каждом запуске, что просто чудесно падает при работе не под админом и трай-кэтчится ректальным путём с частичным копированием кода из сырцов к себе в проект? Или идиотское требование, чтобы имя type library всегда совпадало с именем проекта? Или оживили случайно помирающий в многопоточной программе отладчик?
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, Mr.Delphist, Вы писали:
MD>> ДД>Кроме этого, нравился очень контекстно-зависимый автокомплит.
MD>> Но отчего он такой тормозной? Сравнить со Студией — небо и земля. Такое ощущение, что в Delphi используется тупо линейный поиск. Когда проект большой, лаги по нескольку секунд на это дело — раздражает.
H>Нормальный по скорости автокомплит Никаких секундных задержек нет.
До версии D2006 включительно — у нас было 400К строк кода, и оно лагало.
Здравствуйте, Mr.Delphist, Вы писали:
MD> Неужто пофиксили саморегистрацию EXE как COM-сервера при каждом запуске, что просто чудесно падает при работе не под админом и трай-кэтчится ректальным путём с частичным копированием кода из сырцов к себе в проект? Или идиотское требование, чтобы имя type library всегда совпадало с именем проекта? Или оживили случайно помирающий в многопоточной программе отладчик?
На счет первых двух не в курсе, назови номера QC, я поинтересуюсь. На счет отладчика... Отлаживал полгода назад (правда на той же TurboDelphi 2006) многопоточку (64 потока) — на отладчик не жаловался, но вот многопоточки отлаживать это жопа сама по себе.
Здравствуйте, Mr.Delphist, Вы писали:
MD> H>Нормальный по скорости автокомплит Никаких секундных задержек нет.
MD> До версии D2006 включительно — у нас было 400К строк кода, и оно лагало.
У меня сейчас TurboDelphi 2006, на исходниках VCL, где побольше кода, ничего не лагает Правда у меня он не автоматический. Сейчас даже под виртуалкой проверил, нет лагов
Здравствуйте, wety, Вы писали:
W>Здравствуйте, gandjustas, Вы писали:
W>Delphi — это старый добрый Pascal со всеми вытекающими последствиями: W>- низкая производительность (хуже .Net 4.0 минимум в 3 раза); W>- неудобная среда разработки (нет элементарного resharper); W>- отсутствие средств для написания и использования snippet'ов (на момент 2004 года, сейчас может что и поменялось).
W>Так? Так!
Про производительность имхо бред.
Под среду разработки тоже. Несколько плагинов, как бесплатных так и платных, делают работу еще более удобной чем VS+REsharper. Скорость вообще несопоставима, дельфи запускается намного быстрее и не затыкается а таких местах как открытие проекта и т.п. А тормознутость студии уже порядком раздражает.
Здравствуйте, wety, Вы писали:
W>Delphi — это старый добрый Pascal со всеми вытекающими последствиями: W>- низкая производительность (хуже .Net 4.0 минимум в 3 раза); W>- неудобная среда разработки (нет элементарного resharper); W>- отсутствие средств для написания и использования snippet'ов (на момент 2004 года, сейчас может что и поменялось). W>Так? Так!
Ну ты сказал — как лужу пукнул
Тык? Так!
П>Edit-n-continue. Идеально работает в Visual Studio, и не снился Delphi. П>Нормальный отладчик с нормальной визуализацией типов (в т.ч. коллекций).
Есть отладчик с визуализацией. П>Рефакторринг, автоматическая генерация методов, переименование, поиск зависимостей.
Есть это все. П>Визуализация классов в виде диаграмм.
Есть. П>Родная поддержка Regexp и XML.
Первое точно есть. Второе как я подозреваю тоже. П>Совместимость с Linux (Mono жив, Kylix забыт). П>Совместимость x86/x64.
Если даже и нету, то уже пишется. П>Наличие упрощенной Compact Framework для WinMobile. П>Наличие кучи сторонних плагинов для студии (VisualAssist тот же).
Куча сторонних плагинов, да. Причем большая часть из них бесплатные. П>Иерархическая организация классов через namespace. Достаточно помнить "что-то в System.IO", чтобы быстро найти нужный класс, не тратя времени на обзор справки.
Уже давно есть. Модули можно называть как Name1.Name2.Name3.pas соотвественно обращаться как через нэймспэйсы. П>
Здравствуйте, iHateLogins, Вы писали:
HL>Например, Windows.Forms стала почти deprecated уже в .NET 3.0, с появлением WPF.
Что неудивительно, ибо WinForms — по сути следующая версия дельфийской VCL, только портированная на C#.
HL>А вот в Дельфи таких проблем почти не было. Код, написанный давно, можно заставить работать и сейчас и не нужно ничего переписывать.
Бугага, бугага, бугагашечка. Видимо, поэтому у нас Заказчик нанимал отдельных перцев, чтобы проект мигрировать на очередную версию Delphi (а нас с девелопмента не отвлекать)? И так несколько раз — каждая миграция оборачивалась головняком. Вроде основная часть работает, но вот там кусочек отвалился, тут API изменился, те компоненты были в висе скомпиленых бинарей, поэтому на новую дельфю не ставятся из-за конфликта рантаймов, тут с TLB чего-то начали мутить... Короче, любая нетривиальность автоматически означала батхёрт с хедейком.
HL>Я вот что скажу по поводу .NET-а. Сейчас, в 2010, уже стало понятно, что это тупик. WPF не взлетел, Silverlight не взлетел, Entity Framework не взлетел. ASP.NET давят со всех сторон динамические языки.
WPF цветет и пахнет, сказки про дефолтные интерфейсы на HTML5 пока так и остаются сказками. Silverlight чувствует себя никак не хуже прочих веб-фреймворков, особенно учитывая частичную унификацию с WPF. EF — это нишевой продукт, постепенно растёт и развивается. ASP.NET стал доступен уже не сам по себе, а в виде более удобной надстройки ASP.NET MVC — но под капотом всё то же. Похоливарим?
P.S. Мне это напоминает высказывание одного программера: все языки делятся на две категории — на одни все жалуются, другими никто не пользуется.
Здравствуйте, G-Host, Вы писали:
GH>Про производительность имхо бред. GH>Под среду разработки тоже. Несколько плагинов, как бесплатных так и платных, делают работу еще более удобной чем VS+REsharper. Скорость вообще несопоставима, дельфи запускается намного быстрее и не затыкается а таких местах как открытие проекта и т.п. А тормознутость студии уже порядком раздражает.
А как оно чувствует себя на проектах размером 300-400 килолиний? Я помню, что BDS2006 и Studio2005 были очень несопоставимы: тормозящий по несколько секунд автокомплит и сломаная навигация по проекту (или даже внутри одного файла — туда можно, а обратно уже не пускает) доставляли очень сильно. У Студии всё было как-то приемлемо...
Re[6]: не надо баек про студийный дизюгенер: плавали, знаем
П>WinForms designer чего только стоит. Автоматическое управление памятью как физическая невозможность вещей а-ля "AccessViolation in FuckYou.VCL at address 0xDEADBEEF. Please restart everything you can while you can".
При попытке сделать более-менее сложный динамический гуй (даже без свистоперделок) выясняются все подводные камни WinForms, все недоработки дизюгнера...
и кстати, дизюгнер падает на раз-два (VS2005), типа "не могу загрузить такой-то контрол..." и выдаёт столь же огромный сколь и бесполезный стэк-трэйс эксцепшена.
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, snaphold, Вы писали:
S>Странно... S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
Обожаю этот продукт, на сам кроме 1С пишу на C#. Больше возможностей и активное совершенствование языка, по сути являющимся продолжением Delphi.
А так много написано, инертность, привязанность чуть ли не на религиозном уровне
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Mr.Delphist, Вы писали:
MD> А как оно чувствует себя на проектах размером 300-400 килолиний? Я помню, что BDS2006 и Studio2005 были очень несопоставимы: тормозящий по несколько секунд автокомплит и сломаная навигация по проекту (или даже внутри одного файла — туда можно, а обратно уже не пускает) доставляли очень сильно. У Студии всё было как-то приемлемо...
Ну ты нашел что вспомнить... BDS2006 это ужасный и глючный ужас-ужас. Они тогда только-только начали оправляться от провальной дотнетонли Delphi 8 и глюкобага Delphi 2005. Вот 2007 уже сильно лучше, а 2009 и уж самые последние 2010 и XE вообще нареканий не вызывают
Здравствуйте, Философ, Вы писали:
Ф>Здравствуйте, пыщьх, Вы писали:
П>>WinForms designer чего только стоит. Автоматическое управление памятью как физическая невозможность вещей а-ля "AccessViolation in FuckYou.VCL at address 0xDEADBEEF. Please restart everything you can while you can".
Ф>При попытке сделать более-менее сложный динамический гуй (даже без свистоперделок) выясняются все подводные камни WinForms, все недоработки дизюгнера...
Примеры? Ф>и кстати, дизюгнер падает на раз-два (VS2005), типа "не могу загрузить такой-то контрол..." и выдаёт столь же огромный сколь и бесполезный стэк-трэйс эксцепшена.
Если ваш контрол кидает exception при создании, то естественно, дизайнер покажет stack trace. Если прочесть этот stack trace, а не убежать в ужасе в бункре, то можно быстро понять, где находится год, вызвавший этот exception.
Здравствуйте, Wissenschaftler, Вы писали:
W>Здравствуйте, Философ, Вы писали:
Ф>>Здравствуйте, пыщьх, Вы писали:
П>>>WinForms designer чего только стоит. Автоматическое управление памятью как физическая невозможность вещей а-ля "AccessViolation in FuckYou.VCL at address 0xDEADBEEF. Please restart everything you can while you can".
Ф>>При попытке сделать более-менее сложный динамический гуй (даже без свистоперделок) выясняются все подводные камни WinForms, все недоработки дизюгнера... W>Примеры?
За примерами далеко ехать, далеко они (примеры) от меня сейчас.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[9]: не надо баек про студийный дизюгенер: плавали, знаем
Здравствуйте, hattab, Вы писали:
H>Ну ты нашел что вспомнить... BDS2006 это ужасный и глючный ужас-ужас. Они тогда только-только начали оправляться от провальной дотнетонли Delphi 8 и глюкобага Delphi 2005. Вот 2007 уже сильно лучше, а 2009 и уж самые последние 2010 и XE вообще нареканий не вызывают
точно, в ХЕ много заманчивого
вот мне ещё интересно, что это народ так за рефакторинг хватается, по моему после накопления определённого опыта программу пишешь так, что рефакторинг пригождается очень редко
во всяком случае я последний рефакторинг проводил когда вдруг пришлось изменять межмодульное взаимодействие, так как появилась многопоточность, в общем-то редкий случай.
по моему количество свистелок в среде, ещё не значит что она удобная, скорее наоборот, свистелки делают, чтобы скомпенсировать геморрой от работы
так что даёшь новое название плюшкам — свечки
Здравствуйте, snaphold, Вы писали:
S>Странно... S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
патаму шта первым умрёт кобол...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, enji, Вы писали:
E>В общем, необходимость что-то ставить дополнительно в данном случае — ОЧЕНЬ большой минус.
Главное, что не понятно за ради чего...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, пыщьх, Вы писали:
П>Бедный чувак. Но я, если честно, не понмаю, почему его нежелание брать с собой 30 метров фреймворка на флешке (и дистр нормальной операционки) должно усложнять вашу работу как программиста. Я бы сказал: хотите качественный софт — используйте качественные тулзы. Не знаете? Спросите меня как
А я вот, на месте чувака, сказал бы ровно наоборот. "Хотите мои денежки? -- Пишите так, как МНЕ удобно, а не как ВАМ"...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Cadet, Вы писали:
C>Конечно не хуже. Лучше, глянув на StackTrace я сразу определяю место ее возникновения, иду и исправляю. Вот AV это жопа, тяжело искать.
плохому танцору, блин...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Antikrot, Вы писали:
A>допустим, мы посмотрели название на станции или скажем на гугломапе (там с твёрдым знаком). A>вводим в поиск... а вот фигу! мало того что оно там твёрдый знак в мягкий конвертит, так ещё ведь и не находит — у них же в базе используется "'"! ну тему sql inject-а я проверять не стал...
Да вокруг питера перманентная какая-то попа с названиями. Допустим мы посмотрели на карте и вводим город "СПб", а станция-то "Ленинград" называется...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>плохому танцору, блин...
Эка вы проснулись через 8 с копейками месяцев . Ладно, продолжим. Имея NullPointer я не имею возможности запороть память, что автоматом избавляет мою часть кода от целой россыпи багов, один другого чудесатее, которые регулярно ловит другая часть команды, несмотря на все смартпоинтеры, векторы и прочие баззворды.
E>Вы думаете, что если тулза написана на Нет, то она качественнее своего собрата на плюсах\дельфи? Ну вместо аксесс виолатион будут вываливаться анхендлед эксепшены. Плавали, знаем. Да, не будет утечек памяти.
Да нет так память жрёт, что можно считать, что утечки всегда есть
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Феоктистов Александр, Вы писали:
ФА> вот мне ещё интересно, что это народ так за рефакторинг хватается, по моему после накопления определённого опыта программу пишешь так, что рефакторинг пригождается очень редко
Да, собственно, я того же мнения Единственный полезный, но довольно редкий, рефакторинг для меня это Rename А так, я больше над тетрадкой в проблему вдупляю, чем кнопки жму. Поэтому сперва думаем, потом пишем. А рефакторинги оставим тем, кому пилу точить некогда
Здравствуйте, CreatorCray, Вы писали:
CC>Комстрока тотала не позволяет увидеть результат исполнения команды
cmd /k твоя команда...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Antikrot, Вы писали:
A>и всё-таки: что такого мышиного *в принципе, технически* невозможно сделать клавиатурой? "курсор возить" не катит — я его с клавиатуры ещё на спектруме возил
Ну, расписаться, например...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, gandjustas, Вы писали:
S>> Объект.ПолучитьОбъект().Получить2Объект().Выполнить(); После выполнения данной команды промежуточные объекты удалятся (По месту релиза). А бывают и очнь длинные цепочки. G>И что?
То, что данный код на Delphi/C++ и на C# имеет абсолютно разный смысл и как результат может иметь абсолютно разное поведение.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, gandjustas, Вы писали:
I>>Кто по твоему закроет Эксель если счетчи ссылок на него нулю не равен ? G>А кто тебе сказал что не равен? Может почитаешь рихтера и узнаешь когда вызываются финализаторы?
ИХМО, и без чтения рихтера понятно, что финализаторы вызываются "когда попало".
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, CreatorCray, Вы писали:
CC>Чем меньше времени уходит на второстепенные действия тем меньше голова сбивается с основной темы и тем быстрее идёт мыслительный процесс.
Видимо это индивидуально. Мне, например, делание чего-то "руками" почти не мешает думать о чём-то другом. Мало того, часто даже помогает, как это ен пародоксально...
CC>Ты явно не понимаешь для чего нужен файловый менеджер. Конечно же для программированя на пёрле! Для чего же ещё?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Ikemefula, Вы писали:
I>Нету там UI. Консоль не UI. Это эмуляция.
Возможно ты хотелс сказать GUI?..
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Ikemefula, Вы писали:
I>>>Apple отказалась Джаву суппортить, так есть Оракл, который этим скорее всего займется и поверь это будет намного лучше — свято место пусто не бывает. G>>Верующий блин I>Посмотрим через полгода.
И как?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, gandjustas, Вы писали:
G>Еще раз. Все вершины проходятся максимум один раз. Количество связей значение не имеет.
А связи типа не итерируются никогда вовсе?
То есть если я заведу 32000 массивов по 32000 управляемых указателей и в каждом сошлюсь на все остальные, то типа это всё GC тоже быстро просмотрит?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
G>>Еще раз. Все вершины проходятся максимум один раз. Количество связей значение не имеет. E>А связи типа не итерируются никогда вовсе? E>То есть если я заведу 32000 массивов по 32000 управляемых указателей и в каждом сошлюсь на все остальные, то типа это всё GC тоже быстро просмотрит?
Если ты создашь 32000 массивов по 32000 управляемых указателей — это уже не будет проблемой.
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, gandjustas, Вы писали:
G>>Еще раз. Все вершины проходятся максимум один раз. Количество связей значение не имеет. E>А связи типа не итерируются никогда вовсе?
E>То есть если я заведу 32000 массивов по 32000 управляемых указателей и в каждом сошлюсь на все остальные, то типа это всё GC тоже быстро просмотрит?
Ты удивишься Если не будет ссылок на эти 32000 на 32000, то GC не будет их просматривать.
Здравствуйте, gandjustas, Вы писали:
E>>То есть если я заведу 32000 массивов по 32000 управляемых указателей и в каждом сошлюсь на все остальные, то типа это всё GC тоже быстро просмотрит?
G>Ты удивишься Если не будет ссылок на эти 32000 на 32000, то GC не будет их просматривать.
Это понятно и я этому не удивлюсь. Но что будет, если ссылка на это всё хозяйство таки будет?...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, пыщьх, Вы писали:
П>>Бедный чувак. Но я, если честно, не понмаю, почему его нежелание брать с собой 30 метров фреймворка на флешке (и дистр нормальной операционки) должно усложнять вашу работу как программиста. Я бы сказал: хотите качественный софт — используйте качественные тулзы. Не знаете? Спросите меня как
E>А я вот, на месте чувака, сказал бы ровно наоборот. "Хотите мои денежки? -- Пишите так, как МНЕ удобно, а не как ВАМ"...
В ответ на что я обычно 2 цены: нормальной реализации и "безкомпромиссной". После чего заказчик сразу понимает, что проще выложить 1K€ на апгрейд, чем 10K€ на реализацию, совместимую с говном мамонта (и еще хз сколько на дальнейшую поддержку этой реализации).
Либо, как вариант, заказчик находит другого исполнителя, который соглашается, после чего удивленно хлопает глазами, когда срываются сроки и ничего не работает.
Здравствуйте, Erop, Вы писали:
G>>Ты удивишься Если не будет ссылок на эти 32000 на 32000, то GC не будет их просматривать. E>Это понятно и я этому не удивлюсь. Но что будет, если ссылка на это всё хозяйство таки будет?...
Если связи между объектами активно не меняются то, просматриваться они будут только при полной сборке мусора которая происходит не так часто...
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, Wissenschaftler, Вы писали:
W>В ответ на что я обычно 2 цены: нормальной реализации и "безкомпромиссной". После чего заказчик сразу понимает, что проще выложить 1K€ на апгрейд, чем 10K€ на реализацию, совместимую с говном мамонта (и еще хз сколько на дальнейшую поддержку этой реализации). W>Либо, как вариант, заказчик находит другого исполнителя, который соглашается, после чего удивленно хлопает глазами, когда срываются сроки и ничего не работает.
Ну в данном-то, обсуждаемом случае коллеги E...__ всё и работает и не срывается, как я понимаю...
То, что ты чего-то не умеешь делать, вовсе и не значит, что этого не умеют остальные
И, кстати, чисто по опыту, дельфи -- это конечно перебор, но если смотреть именно на передний край, то чем более передовым новым и продвинутым является средство разработки, тем среди использующих его разработчиков больше новичков. Люди с опытом, в основном, заняты на длинных проектах, и более консервативны. Так что чувак, который выкатит десятикратный ценник за отказ от 4-го нета, например, в пользу 3-го, или там за требование вести разработку на 2003-й студии, скажем, вызовет у меня очень большие сомнения в своей квалификации...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, TK, Вы писали:
TK>Если связи между объектами активно не меняются то, просматриваться они будут только при полной сборке мусора которая происходит не так часто...
Ну, представим себе, что у нас есть такая задача. Есть 32 000 каких-то объектов, или, например 10 000.
Мы изучаем то, кто на кого похож, типа строим такой граф, в котором ребро обозначает "похож", а рёбра в вершине упорядочены по степени похожести.
И вот мы как-то перебираем эти вершины и переупорядочиваем в них рёбра с фильтрацией. И этот процесс итерационный.
Задача -- получить ту связанную компоненту графа, которая содержит какой-то заранее выбранный стартовый объект.
И вот мы в эту машинку закидываем 30 000 объектов похожих на стартовый и ещё 2 000 разных.
И что будет?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
E>И вот мы в эту машинку закидываем 30 000 объектов похожих на стартовый и ещё 2 000 разных. E>И что будет?
Если сборка мусора у нас "не полная" то, сборщику мусора достаточно будет пройти по списку изменившихся ребер и "вытащить" молодые объекты в более старшее поколение.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Если сборка мусора у нас "не полная" то, сборщику мусора достаточно будет пройти по списку изменившихся ребер и "вытащить" молодые объекты в более старшее поколение.
А никаких "молодых" объектов нет. Объекты мы загрузили в начале из файла с запросом. А потом только связи между ними меняем...
Про поколения, если чо. я в курсе
Другое дело, что описанная структура данных и задача редкие. Но я вот не уверен, что прямо вот таки на любой задаче GC будет эффективно работать...
С другой стороны, если вспомнить насколько "эффективно" GC юзает память, то хорошим решением с его стороны было бы просто плюнуть на это все и несчастные 2 000 объектов из 32 000 не освобождать никогда, пока живы остальные 30 000. По идее поколения на это и направлены. Но догадается ли GC тут так сделать я . Кроме того, можно подобрать условия так, что нужно будет оставить 10 000 из 30 000, например...
Кстати, на С++ эту задачу я решал, и решал так, что всё аллокировалось в большом буфере, вернее цепочке буферов, а потом освобождалось сразу буферами. Было быстро.
Я ни разу не против GC, но я не разделяю уверенность в том, что он справится прямо вот с любым запросом. При этом в рассматриваемой задаче беда в том, что взорваться оно может нежданно-негаданно. То есть обычно оно обрабатывает 30 000 непохожих объектов, а потом, в один неудачный день, придёт запрос с 10 000 похожих
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Ты что хочешь доказать? Что если тщательно пытаться поставить GC раком, то, при определенном умении, добиться этого можно? Это и так очевидно. Но, как показывает практика, всегда есть возможность этого не делать.
Здравствуйте, Banned by IT, Вы писали:
E>>cmd /k твоя команда... BBI>Это через одно место
Зато везде в NT-based работает...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, snaphold, Вы писали:
S>Странно... S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
с точки зрения рабочей системы должно быть всё равно, кто и что выполняет.
Есть "черные коробки", которые не выпускают ошибки наружу
Есть стандартные протоколы взаимодействия.
Одна черная коробка передает инфу другой коробке, на выходе результат. Ошибки скопили внутри.
Дельфи — интерфейсы.
С++ внутренняя логика
PHP/ASP и т.д. веб вывод
XML — взаимодействие между "коробками", можно на уровне HTTP.
А вот что бы писать для винды и не изучать WinApi и начать с уровня Pascal — Дельфя бьет все рекорды по скорости старта
TK>Если связи между объектами активно не меняются то, просматриваться они будут только при полной сборке мусора которая происходит не так часто...
Между объектами старших поколений, т.к. считается что старшие поколения можно не просматривать до полной сборки, а вот если в них поменялись их пометить, для построения графа достижимых объектов. Для нулевых поколений никаких лишних действий не происходит все очень быстро, во всяком случае такон было во 2 нетворке.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, snaphold, Вы писали:
S>Странно... S>5 лет назад думал, что дни его сочтены. Ан нет. S>Причины? Много уже написанного крупного софта? И получается он будет жив всегда?
а он жив? в сфере реальных проектов(а не на форумах потрындеть) давно ничего про него не слышал...
Здравствуйте, TimurSPB, Вы писали:
BE>>....A 1C это вообще
TSP>+1 так я и не смог смириться с конструкциями вида
TSP>
TSP>Пока Номер <= 50 Цикл
TSP> //.. тело цикла...
TSP>КонецЦикла;
TSP>Я понимаю, почему 1С так распространен, в чем его преимущества, но убежден что писать на нем это насилие над своим мозгом. Вот старый добрый делфи это другое дело.
Все навсего косность мышления что писать надо на английском. Вообще не важно на каком писать, чем меньше думаешь надо кодом, тем больше времени на решение бизнес-задачи.
Вот если б в 1Ску возможности Шарпа впихнуть.... Эх мечты.
Здравствуйте, wraithik, Вы писали:
W>Вот если б в 1Ску возможности Шарпа впихнуть.... Эх мечты.
А что там тогда от нее останется? Технологически 1С весьма убога (я знаю кое кого оттуда, классический случай вываривания в собственном соку). Прелесть ее в положении на рынке в основном.
W>>Вот если б в 1Ску возможности Шарпа впихнуть.... Эх мечты.
НС>А что там тогда от нее останется? Технологически 1С весьма убога (я знаю кое кого оттуда, классический случай вываривания в собственном соку). Прелесть ее в положении на рынке в основном.
А положение на рынке обуславливается правильной расстановкой приоритетов. 1С — это не среда разработки программ, ориентированная на бухгалтерские направления. Это бухгалтерский комплекс с возможностью допиливания напильником под конкретное предприятие. Основная ценность — это конфигурации.
Что до шарпа в 1С — этого не будет. Так как это обрадует небольшой процент продвинутых 1С-ников, но внесет хаос в армию остальных, которые больше бухи, чем программеры, и осилить ту же многопоточность для которых проблема.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, MxMsk, Вы писали:
_>>очевидно делегаты MM>Не было там такого. Совсем не было. Делегаты круче того, что было (или есть).
mister-AK, жажду узнать че смешного и несогласного. Интересно!
Здравствуйте, Ночной Смотрящий, Вы писали:
E__>>А положение на рынке обуславливается правильной расстановкой приоритетов.
НС>Оно много чем обусловливается, никакого единого рецепта успеха не существует.
Ну да. Еще один важный фактор — легкая возможность ведения двойной бухгалтерии. Это труднорелизуемо во многих подобных зарубежных системах, зато очень востребовано отечественными бизнесменами.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.