Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.213.240] |
|
Страницы: (117) « Первая ... 26 27 [28] 29 30 ... 116 117 ( Перейти к последнему сообщению ) |
Сообщ.
#406
,
|
|
|
этих автоматических преобразований конечное число и их с легкостью можно зашить в один класс... я не прав?
Цитата Dantes @ вся эта рефлексия от лукавого, имхо... что ж, можно поднять отдельный холивар о надобности рефлексии...ем более, в приведённых примерах было обращение к членам объекта - о таком boost::any и boost::variant могут только мечтать. [Создана тема - Рефлексия - wind] |
Сообщ.
#407
,
|
|
|
Это просто специальный тип, для которого реализованы специальные возможности на уровне компилятора.
Добавлено Цитата Dantes @ Не обольщайся, в Delphi ситуация с этим не лучше, чем в C++. Чудес не бывает. Такое возможно только в языках, в которых нет примитивных типов, да еще желательно и интерпретируемых, вроде smalltalk или JavaScript. // как передать параметр произвольного типа виртуальной функции, // чтобы потом обращаться с ним как с самым обычным параметром? // ответ неутешителен: никак! |
Сообщ.
#408
,
|
|
|
Че за костыль? Ну я так и вижу, что каждый день нужны массивы из экзотических типов. Нафиг они там сдались, когда языком предусмотрены полноценные динамические массивы (man SetLength -- дельфисты, я не путаю?)? |
Сообщ.
#409
,
|
|
|
Цитата linuxfan @ в этот костыль точно также можно засунуть объект любого типаЧе за костыль? Цитата linuxfan @ кому как... тебе может и не нужныНу я так и вижу, что каждый день нужны массивы из экзотических типов. а map? TIntIntMap, TIntStringMap, T**Map? да и говорил я не про то, нужны ли такие контейнеры, а про "многократное" использование - то, что TXXXList нужно реализовывать каждый раз отдельно(ну м.б. наследуясь от малого общего ф-ционала), разве не так? |
Сообщ.
#410
,
|
|
|
Да, любой. Даже integer -- это variant. Насчет «делать» -- дельфисты лучше знают, т. к. давно это было. А вот «объектно-ориентированные» плюсы все что угодно могут впихнуть только в void* Цитата archimed7592 @ этих автоматических преобразований конечное число и их с легкостью можно зашить в один класс... я не прав? И когда в C++ перестанут изобретать велосипеды и признают, что сей язык нуждается в серьезной доработке? Добавлено Цитата archimed7592 @ в этот костыль точно также можно засунуть объект любого типа А int туда запизнется? int же не объект Цитата archimed7592 @ да и говорил я не про то, нужны ли такие контейнеры, а про "многократное" использование - то, что TXXXList нужно реализовывать каждый раз отдельно(ну м.б. наследуясь от малого общего ф-ционала), разве не так? Не так. array of variant решает все проблемы хранения. Если тебе надо алгоритмы -- то да, тут засада, но, видимо, живут же как же. |
Сообщ.
#411
,
|
|
|
Цитата linuxfan @ а что, ОО подразумевает обязательную фичу "всёвпихующий variant"? а если фичи нету, то ОО сразу идёт в кавычках? А вот «объектно-ориентированные» плюсы все что угодно могут впихнуть только в void* Цитата linuxfan @ велосипеды изобретают только ньюбы из-за незнания о существовании готового велосипеда(неумения найти таковой)... всё что может понадобится уже давно разработано и реализовано... бери-нехочу...И когда в C++ перестанут изобретать велосипеды Цитата linuxfan @ как только ты обоснуешь реальную необходимость твоих доработок... пока это пустые слова. и признают, что сей язык нуждается в серьезной доработке? Добавлено Цитата linuxfan @ да... что душе угодноА int туда запизнется? int же не объект Цитата linuxfan @ в ущерб скорости давай бенчмарк, а?Не так. array of variant решает все проблемы хранения. Цитата linuxfan @ алгоритмы как раз таки variant ваш реализовывать позволяет... достаточно предъявить некоторые требования к хранимым объектам Если тебе надо алгоритмы -- то да, тут засада, но, видимо, живут же как же. |
Сообщ.
#412
,
|
|
|
Цитата trainer @ Такое возможно только в языках, в которых нет примитивных типов, да еще желательно и интерпретируемых Почему? Взять например common lisp. Примитивные типы в нем есть, и компиляторы есть, а мультиметоды используются в качестве основного способа реализации методов объектов. Цитата linuxfan @ Нафиг они там сдались, когда языком предусмотрены полноценные динамические массивы (man SetLength -- дельфисты, я не путаю?)? Кроме массивов много чего еще есть. Цитата linuxfan @ А вот «объектно-ориентированные» плюсы все что угодно могут впихнуть только в void* Неправда. Цитата linuxfan @ А int туда запизнется? int же не объект int — вполне себе объект. Добавлено Цитата archimed7592 @ алгоритмы как раз таки variant ваш реализовывать позволяет... достаточно предъявить некоторые требования к хранимым объектам Алгоритмы с variant — это то же самое, что и сишная quicksort с функцией сравнения двух void* |
Сообщ.
#413
,
|
|
|
А вот мну тип "вареант" не рулит.. как ток заюзаешь вот ево, так сразу ексешка обрастает вызовоми в OleAut32.dll, Ole32.dll.. И как токому коду работать в открытом космосе, в кернел-спейсе, а?
как будт на этом типе так и написано "Variant - собственость корпорации мелкасофт, все защищено направо и налево"... |
Сообщ.
#414
,
|
|
|
Цитата n0p @ А вот мну тип "вареант" не рулит.. как ток заюзаешь вот ево, так сразу ексешка обрастает вызовоми в OleAut32.dll, Ole32.dll. Они и так автоматически подключаются. Variant тут не причем. |
Сообщ.
#415
,
|
|
|
с новыми возможностями по оверлоадингу и перегрузкам в BDS2006 недотип Variant, может спокойно отправиться на свалку..
ну а так - нативные 32-битные типы рулят (в том числе и с плавающей точкой). ну и иногда int64 (оч редко).. Цитата Smike Они и так автоматически подключаются. Variant тут не причем. Да.. и сия трабла существовала чуть ли ни с самого начала зарождения 32-битной версии дельфи. Как правило "доработка" RTL или использование облегченных версий от KOL, + категорическое неиспользование этого типа помогали решить данную проблему, с этими либами. |
Сообщ.
#416
,
|
|
|
Цитата archimed7592 @ велосипеды изобретают только ньюбы из-за незнания о существовании готового велосипеда(неумения найти таковой)... всё что может понадобится уже давно разработано и реализовано... бери-нехочу... Расскажи-ка ньюбу, может ли твой любимый boost::any работать с потоками без внушительных потерь производительности? std::vector<boost::any> v; v.push_back(1); v.push_back("string"); // ... for (i=0; i<v.size(); ++i) std::cout << v[i] << std::endl; // ? Моя реализация Any может. |
Сообщ.
#417
,
|
|
|
Кстати, Владимир Кладов, автор данного направления в дельфи-программировании (минимализм так сказать), в своей книге о KOL писал:
Цитата В конце концов, когда у меня появилось свободное время, я начал экспериментировать с новыми компиляторами, разработанными специально уже для новой среды (Windows 95 и Windows NT 3.5). И по совету своего хорошего знакомого Алексея Шадрина, в том числе я попробовал и Delphi 2, которая как раз только что была выпущена. И тут же был изумлен простотой работы и главное - очевидной логикой работы в среде IDE. (В том числе меня порадовала и высокая скорость компиляции кода, надо отдать должное фирме Borland - такого быстрого компилятора мне еще не приходилось видеть). Ради таких удобств в работе я согласен был пожертвовать привязанностью к C/C++, и вспомнить, как пишут код на Паскале. (На первых порах меня доставала необходимость писать := вместо просто =, и begin/end вместо фигурных скобок, но уже скоро я привык и к :=, и оценил очевидные преимущества begin/end для людей с не-100%-ным зрением, для нас это намного более удобная запись, чем фигурные скобки, которые легко перепутать с обычными, а то и вообще не заметить). Добавлю только, что первая рабочая программа была готова уже через пару дней (!), и она прекрасно работала в многооконной среде, делая именно, то, что от нее и требовалось (печать платежных поручений, а вы как думали - самое востребованное ПО в условиях стихийно развивающихся ООО и ЧП). С этого момента я стал убежденным сторонником Паскаля, купил нужные для начинающего книжки по Delphi, даже научился созданию компонентов и сделал парочку своих... |
Сообщ.
#418
,
|
|
|
Цитата mo3r @ ну смотри, к примеру, find накладывает ограничение на то, чтобы объекты были сравнимы оператором <, тожно так же можно поставить требование, чтобы v1.less (v2) возвращала результат сравнения объектов... просто с шаблонами это будет куда быстрее (ну, че, дельфисты, айда бенчмарк ) Алгоритмы с variant — это то же самое, что и сишная quicksort с функцией сравнения двух void* Добавлено Цитата Unreal Man @ Расскажи-ка ньюбу, может ли твой любимый boost::any работать с потоками без внушительных потерь производительности? Цитата Unreal Man @ ну и? где здесь велосипед? чего-то небыло, ты подумал и сделал... кстати, "ньюб", на твою реализацию взглянуть то можно? Моя реализация Any может. |
Сообщ.
#419
,
|
|
|
Стоило, оно хотябы выеденого яйца, тогда имел смысл с чем то париться. по мне алгоритмы не должны зависить от той или иной прослойки-фреймворка..
хотя.. интересно затестить древний рекурсивный QuickSort.. хм.. где нибудь в космосе, ибо для меня представляют больший интерес, в плане пользительности автономные блоки и фишки. Добавлено Код хоть и древний, но простенький. Проверил integer массив в 32 метра - всё норм, не сглючило. Ну очень быстро окучивает (конечно зависит и от железа), но се равно это один из сверхшустрых алго. program Qsort; uses windows; const Max = 33554432 div 4; //32MB type List = array[1..Max] of Integer; var Data: List; I: Integer; procedure QuickSort(var A: List; Lo, Hi: Integer); procedure Sort(l, r: Integer); var i, j, x, y: integer; begin i := l; j := r; x := a[(l+r) DIV 2]; repeat while a[i] < x do i := i + 1; while x < a[j] do j := j - 1; if i <= j then begin y := a[i]; a[i] := a[j]; a[j] := y; i := i + 1; j := j - 1; end; until i > j; if l < j then Sort(l, j); if i < r then Sort(i, r); end; begin {QuickSort}; Sort(Lo,Hi); end; var time: integer; begin {QSort} WriteLn('Now generating 1000 random numbers...'); Randomize; for i := 1 to Max do Data[i] := Random(-1); WriteLn('Now sorting random numbers...'); time := GetTickCount; QuickSort(Data, 1, Max); Writeln ('Done ', GetTickCount - time); ReadLn; end. приколоться чтоль в R0, затестить... |
Сообщ.
#420
,
|
|
|
бугага! прикольно заценить эту консольную прогу под GUI в DirectDraw, (ы\в принципе можно в DOS'е), используя в качестве массива видеоэкран. По красоте, сортировке шума, круче ток Земля с видом из космоса (вроде бил ворота, скора туда полетит) .
хм.. точна! попробую в ring0, с выводом на экран (в принципе мона и синяк ака BSOD словить, однак я это дело люблю - по мне это самый что ни наесть джас-фор-фан... да и по мере приобретения опыта, таких конфузов становиться всё меньше и меньше.. ). 2archimed7592- Цитата что за чудесный мир, в котором ты живёшь? тссс... такие развлечения рулили во времена ТурбоПаскаля намба севен в порядке вещей, мона сказать... не то что сейчас - никакого бугага... =((( добавлено-с.. хм.. =(( При сортировке видео-массива обьявленого как тип Cardinal, получил 'синяк', с integer всё окей .. странно что стек выдержал. придеться разбираться с багой (мож из за того что в коде знаковые типы еще присутствуют).. |