Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi - приемущества и недостатки, принимаются различные высказывания 
:(
    Опции темы
pythonwin
Дата 26.1.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 1
Всего: 36



Цитата(Beltar @  26.1.2007,  12:52 Найти цитируемый пост)
А преподы, они вообще к новому невосприимчивы. 

не все, но многие smile
PM WWW GTalk Jabber   Вверх
Daevaorn
Дата 26.1.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(Beltar @  23.1.2007,  13:42 Найти цитируемый пост)
Хотелось бы увидеть более сложный пример, причем по возможности типовой, а не уникальный, нужный раз в год.

Ха-ха
Код

template< typename ValueT >
    ValueT min( ValueT a, ValueT b )
    {
        return a < b ? a : b;
    }
//..
int a = min( 20, 30 );


Это сообщение отредактировал(а) Daevaorn - 26.1.2007, 10:07
PM MAIL WWW   Вверх
Alexeis
Дата 26.1.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Beltar @  23.1.2007,  12:42 Найти цитируемый пост)
PPS А вот что обязательно нужно ввести и в Си и в Паскаль (не помню название Паскаль-компилятора в котором это сделали, работает он под VS) так это case\switch со строками.

  В этом нет большой необходимости, объекты позволяют вылечить остутствие многих синтакисических конструций.

Код

procedure TForm1.btn1Click(Sender: TObject);
var
  s : TStringlist;
begin
  s := TStringlist.Create;
  s.Sorted := true;
  s.Add('адын');   // 0
  s.Add('два');    // 1
  s.Add('три');    // 2

  Case s.IndexOf('два')
  of
    0 : ShowMessage('адын');
    1 : ShowMessage('два');
    2 : ShowMessage('три');
  end;
  s.Free;
end;


Фокус в том, что это будет работать быстрее, чем упомянутый case, ведь тут осуществляется бинарный поиск в соритированом списке, тогда как обычный case ищет подряд, а сравнение строк может быть длительной операцией.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Void
Дата 26.1.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(Alexeis @  26.1.2007,  12:52 Найти цитируемый пост)
тогда как обычный case ищет подряд, а сравнение строк может быть длительной операцией. 

С чего это вдруг?
Если взять ildasm и посмотреть, во что превращается case по строкам в C#, то окажется, что компилятор так поступает только для небольшого числа вариантов, если же их много, то создаётся экземпляр Dictionary<string, int>, в который забиваются варианты, т.е. поиск осуществляется в хэш-таблице. Синтаксический сахар, но очень удобный.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Амортизатор2
Дата 26.1.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 6.2.2006

Репутация: 0
Всего: 2



Цитата(skyboy @  23.1.2007,  03:41 Найти цитируемый пост)
поясни, пожалуйста, малознакомым с шаблонами, почему шаблоны не могут быть реализованы через препроцессор(я не имею в виду конкретный препроцессор встроенный в конкретный компилятор, а транфсормер исходного кода вообще)?


Почему же не могут? Шаблоны - ведь это всего лишь средство для формализации препроцессорной обработки, один из возможных способов реализации обобщенного программирования. Но как раз благодаря этой формализации рождается эффективность. Грубо говоря, на чистых макросах пришлось бы в каждом случае самому устанавливать правила препроцессорной обработки, а в случае с шаблонами мы имеем конкретную спецификацию такой обработки.


Цитата
Хотелось бы увидеть более сложный пример, причем по возможности типовой, а не уникальный, нужный раз в год.


У вас, видимо, сомнения в полезности шаблонов? Вам уже привели пример, в котором над переменными с параметризованными типами осуществляются некоторые операции. Некоторые могут возразить, что для этого можно было попросту заставить эти объекты поддерживать определенный интерфейс, к слову, IComparable. Но ведь в этом-то и заключается загвоздка - зачастую приходится производить одни и те же операции над семантически различными объектами, и заставлять их реализовывать определенный интерфейс - архитектурно неприемлимо. Также в случае применения шаблонов компилятору известны типы объектов=> большая типобезпасность, что для С++ аки воздух.
PM MAIL   Вверх
Beltar
Дата 27.1.2007, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Амортизатор2, как все сложно-то.

Народ давайте пример, который нелья реализовать через автоматизированный copy-paste.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Daevaorn
Дата 27.1.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(Beltar @  27.1.2007,  01:14 Найти цитируемый пост)
Народ давайте пример, который нелья реализовать через автоматизированный copy-paste

см http://forum.vingrad.ru/index.php?showtopi...t&p=1012801
PM MAIL WWW   Вверх
Beltar
Дата 27.1.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Тогда вопрос. Почему это нельзя?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Daevaorn
Дата 27.1.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(Beltar @  27.1.2007,  12:13 Найти цитируемый пост)
Тогда вопрос. Почему это нельзя? 

Тогда ответ: попробуй сделать это препроцессором.
PM MAIL WWW   Вверх
Любитель
Дата 27.1.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Beltar @  27.1.2007,  00:14 Найти цитируемый пост)
Народ давайте пример, который нелья реализовать через автоматизированный copy-paste

А правда - нафиг нам высокоуровневые средства? Мы же не дети, чтобы всякой ерундой пользоваться. ASM + куча автоматизированных вставок конструкций классических алгоритмических конструкций и пр. Многое к тому же директивами реализуется, зависит каким асм-компилером (или как правильно сказать) пользуемся.

Долго смеялся над такой фразой. Короче - хватит развивать языки. АСМ рулит. Делаем сверх IDE и всё отлично.

Только что-то не верится как-то...  smile 


--------------------
PM MAIL ICQ Skype   Вверх
Амортизатор2
Дата 27.1.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 6.2.2006

Репутация: 0
Всего: 2



Любитель, так нельзя. В асме же макродирективы есть, а это уже не для реальных пацанов. Машинные коды! Вот, что спасет человечество.
PM MAIL   Вверх
MAKCim
Дата 27.1.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Амортизатор2, 
да уж
Цитата

EA 05 00 C0 07 8C C8 8E D8 BE 17 00 AC 84 C0 74 04 CD 10 EB F7 FA F4 57 65 20 73 61 76 65 20 74 68 65 20 77 6F 72 6C 64 00

 smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Beltar
Дата 27.1.2007, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Цитата

Тогда ответ: попробуй сделать это препроцессором.


Ну давай буду заменять строку А на строку Б. Больше здесь ничего не требуется. Короче примеров шаблонов, которые не реализуются копи-пастом и заменой вы принести не можете.

После всего этого у меня очень большие сомнения в том, что у Си лаконичный синтаксис.
Короче, когда в следующий раз увижу очередной бред о компактности и переносимости Си до которых Паскалю как до Луны пешком, буду долго и упорно смеяться.
Вместо шаблонов лучше бы нормальный строковый тип сделали.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Daevaorn
Дата 27.1.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(Beltar @  27.1.2007,  19:01 Найти цитируемый пост)
Ну давай буду заменять строку А на строку Б.

какую строку А и на какую Б? Подробней пожалуйста. И расспиши как это должен сделать препроцессор. Не стесняйся.
Цитата(Beltar @  27.1.2007,  19:01 Найти цитируемый пост)
Вместо шаблонов лучше бы нормальный строковый тип сделали. 

Тут уже обсуждали, что строковой тип в С++ удобнее и лучше чем в Pascal/Delphi

PM MAIL WWW   Вверх
Romikgy
Дата 27.1.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Beltar @  27.1.2007,  17:01 Найти цитируемый пост)
Вместо шаблонов лучше бы нормальный строковый тип сделали. 

строки в си тоже нормальные , только одно плохо что строковые классы в разных компиляторах реализованы по разному, и не всегда код написанный для работы со строками в одном компиляторе компилируется в другом smile

Цитата(Daevaorn @  27.1.2007,  17:07 Найти цитируемый пост)
Тут уже обсуждали, что строковой тип в С++ удобнее и лучше чем в Pascal/Delphi

Я те удивляюсь , ты вцепился в эти шаблоны и ничего вокруг больше не видишь, имхо показывает твою ограниченность (ИМХО)
прочитать заново топик говорить те бесполезно (ибо в самом начале было сказано , что в дельфи шаблонов нет)
и при правильном программировании можно обойтись без шаблонов вообще! (хотя с помощью них и проще)


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0838 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.