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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить синтаксис паскаля(делфи) 
:(
    Опции темы
Любитель
Дата 4.6.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(MAKCim @  4.6.2008,  17:14 Найти цитируемый пост)
но variable на момент компиляции не будет определена (класс загружается динамически)

Ааааа.... Так ты про то, что сам класс берётся откуда-то из библиотеки что ли?


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


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


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

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



Цитата(Любитель @  4.6.2008,  18:07 Найти цитируемый пост)
Ааааа.... Так ты про то, что сам класс берётся откуда-то из библиотеки что ли? 

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


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

PM MAIL   Вверх
lukas
Дата 4.6.2008, 18:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 15



Что вы тут спорите... пока вы тут решаете что RTII у делфи во много раз лучше чем у С++, пытаетесь приводить аргументы, в это время вся технология .NET ушла вперед... так например в C# и всех подобных .NET языках RTII механизм круче раз в 100 по возможностям чем у делфи...
там можно практически все (да не практически а абсолютно все) получить о классе о функциях, о методах в ран-тайм... я считаю это довольно хорошим преимуществом... хоть .NET это компиляция в байт-код... но скорость всеравно приближается с каждым разом к компилируемым языкам... а скорость при наших современных компах практически не критична...


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
MAKCim
Дата 4.6.2008, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



lukas, 
про .NET тут речи не было

Цитата(lukas @  4.6.2008,  18:54 Найти цитируемый пост)
NET это компиляция в байт-код... но скорость всеравно приближается с каждым разом к компилируемым языкам... а скорость при наших современных компах практически не критична... 

еще раз задаю этот вопрос
перечисли программы, установленные на твоем компьютере и использующие для своей работы .NET framework

Это сообщение отредактировал(а) MAKCim - 4.6.2008, 19:08


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

PM MAIL   Вверх
Mayk
Дата 4.6.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Цитата(lukas @  4.6.2008,  22:54 Найти цитируемый пост)
.NET ушла вперед... так например в C# и всех подобных .NET языках RTII механизм круче раз в 100 по возможностям чем у делфи...

Не вперёд,а назад, не ушла а сделала поползновение.  RTTI в Smalltalk'е с его метаклассами и ярко выраженным "всё — объект, и это — тоже" мягко скажем не слаб уже пару десятков лет. Где он теперь?   smile 

Цитата(lukas @  4.6.2008,  22:54 Найти цитируемый пост)
там можно практически все (да не практически а абсолютно все) получить о классе о функциях, о методах в ран-тайм...

В питоне это тоже можно. Питон+смаллталк+нет+ява убьют с++ и дельфи?  Забавно, учитывая что ST с этими достоинствами  был рожден до с++ и дельфи и почему то их не убил. Наверное он противник абортов.  smile 

Цитата(lukas @  4.6.2008,  22:54 Найти цитируемый пост)
а скорость при наших современных компах практически не критична... 

Однако исследования в области JIT'ов вроде встречаются гораздо чаще чем в области "а как бы нам зафигачить двусвязный спиок в минимальное число указателей

Цитата(MAKCim @  4.6.2008,  23:08 Найти цитируемый пост)
про .NET тут речи не было

хрустит попкорном smile

ps. эту энергию, да в мирные бы цели.


Это сообщение отредактировал(а) Mayk - 4.6.2008, 19:27


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Lazin
Дата 4.6.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(lukas @  4.6.2008,  18:54 Найти цитируемый пост)
Что вы тут спорите... пока вы тут решаете что RTII у делфи во много раз лучше чем у С++, пытаетесь приводить аргументы, в это время вся технология .NET ушла вперед... так например в C# и всех подобных .NET языках RTII механизм круче раз в 100 по возможностям чем у делфи...

Цитата(lukas @  4.6.2008,  18:54 Найти цитируемый пост)
там можно практически все (да не практически а абсолютно все) получить о классе о функциях, о методах в ран-тайм... 

ты этим пользовался хоть раз? по моему там это не очень удобно сделано...
вот например в питоне рефлексия используется сплошь и рядом, например является естественным проверить есть ли у объекта класса какой-либо метод, а потом выполнить какой нибудь код который прифигачит к объекту какой нибудь атрибут... а в NET этим часто пользуются?
все .NET программисты которых я знаю стараются по возможности обойтись без использоания rtti, так как тормозное оно...

и когда только M$ успели всем внушить что .NET теперь абсолютно везде, некоторые люди верят, что виста на нем написана чуть ли не целиком  smile

Добавлено через 1 минуту и 1 секунду
 smile

Добавлено через 2 минуты и 13 секунд
интересно, куда пропал Мастер, может он и правда Тар и Mayk его спугнул smile 
PM MAIL Skype GTalk   Вверх
lukas
Дата 4.6.2008, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 15



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

.NET и все подобное... что выполняет байт код это еще одна ступень в абстракции программных языков... тему тут удивляться... 

P.S. Там где нужна скорость, обычно RTII совсем не нужна, а там где она вообще не ощутима... да и ощутить ее нельзя... т.к. разницы нет никакой... вот там то и удобно применять RTII.

P.S.S. По вашей логике можно было до сих пор программировать на одних функциях, не используя объекты и их методы, т.к. методы же работают медленее... а для нас скорость критична... когда процессоры dual core... 3.0 MGz... 

Это сообщение отредактировал(а) lukas - 4.6.2008, 21:27


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
MAKCim
Дата 4.6.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(lukas @  4.6.2008,  21:25 Найти цитируемый пост)
я говорю о возможностях языка

гы 
язык тут не причем  smile 
ключевое слово CLR

Цитата(lukas @  4.6.2008,  21:25 Найти цитируемый пост)
т.к. методы же работают медленее...

в общем случае ложь

smile


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

PM MAIL   Вверх
lukas
Дата 4.6.2008, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 15



Код

в общем случае ложь


ну да в с++ возможно... поэтому там и нет нормального RTII, т.к. объект это набор функций названных методами... (образно говоря) smile 

Это сообщение отредактировал(а) lukas - 4.6.2008, 21:51


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
MAKCim
Дата 4.6.2008, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(lukas @  4.6.2008,  21:50 Найти цитируемый пост)
т.к. объект это набор функций названных методами... (образно говоря)

объект - это данные  smile 
данные отделены от кода


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

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


Опытный
**


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

Репутация: нет
Всего: 15



MAKCim, и почему же они должны работать так же как и функции...

сделай простой тест на с++... возми функцию и метод объекта который выполняет тоже самое что и функция... поставь это все в цикл большой и посчитай на что больше времени уйдет... с помощью функции GetTimeCount() например... 

Делаю ставку, что функция выполнится раз в 10 быстрее чем метод объекта... 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Mayk
Дата 5.6.2008, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Цитата(lukas @  5.6.2008,  10:42 Найти цитируемый пост)
MAKCim, и почему же они должны работать так же как и функции...

а почему иначе

Цитата(lukas @  5.6.2008,  10:42 Найти цитируемый пост)
Делаю ставку, что функция выполнится раз в 10 быстрее чем метод объекта...  

Какой феерический бред.
Код



#include <string>
#include <iostream>
#include <string.h>
#include <windows.h>

enum{AMOUNT=100000};

class A
{
public:
    int foo(){
        int j = 2;
        for(int i = 0; i <= 1023; ++i)
            j += i;
        return j;
    }

};


    int foo(){
        int j = 2;
        for(int i = 0; i <= 1023; ++i)
            j += i;
        return j;
    }


class Timer
{
public:
    const char* what;
    long ticks;
    Timer(const char* msg) : what(msg), ticks(GetTickCount()){}
    ~Timer(){ std::cout << what << ":" << (GetTickCount() - ticks) << "\n"; }
};




int main()
{
    A a;
    int z=0;
    {
    Timer t("method");
    for( int j = 0; j < AMOUNT; ++j ){
        z += a.foo();
    }
    }
    {
    Timer t("func");
    for( int j = 0; j < AMOUNT; ++j ){
        z += foo();
    }
    }
    return z;

}


Цитата

method:94
func:94

Цитата(lukas @  5.6.2008,  10:42 Найти цитируемый пост)
Делаю ставку, что функция выполнится раз в 10 быстрее чем метод объекта...  

smile



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
lukas
Дата 5.6.2008, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 15



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


хм... повторил тоже самое на делфи... время таже такое же как у тебя... (надо же проци у нас наверно одинаковые  smile ) что-то точно не то... я уверен... и рано смеятся...

Код

type
 A = class
  public
    function Foo(): Integer;
 end;

const
 AMOUNT = 100000;
 
var
  Form1: TForm1;

implementation

{$R *.dfm}
function A.Foo(): Integer;
 Var
   I: Integer;
begin
Result := 2;
  for i:=2 to 1023 do
   Inc(Result,i);
end;

function Foo(): Integer;
   Var
   I: Integer;
begin
Result := 2;
  for i:=2 to 1023 do
   Inc(Result,i);
end;

procedure TForm1.Button1Click(Sender: TObject);
  Var
  I,T: Integer;
  B: A;
begin
B := A.Create;

t := GetTickCount;
 for i:=0 to AMOUNT do
  foo();
ShowMessage(IntToStr(GetTickCount-t));

t := GetTickCount;
 for i:=0 to AMOUNT do
  B.foo();
ShowMessage(IntToStr(GetTickCount-t));

B.Free;
end;


Это сообщение отредактировал(а) lukas - 5.6.2008, 07:38


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Mayk
Дата 5.6.2008, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Цитата(lukas @  5.6.2008,  11:34 Найти цитируемый пост)

хм... повторил тоже самое на делфи... время таже такое же как у тебя... (надо же проци у нас наверно одинаковые  smile ) что-то точно не то... я уверен... и рано смеятся...

Точно! Счас мы добавим ещё и виртуальную таблицу на потеху оптимизаторам.  smile  smile 
Код

// a.h
#include <string>
#include <iostream>
#include <string.h>
#include <windows.h>
enum{AMOUNT=800000};

class  Base
{
public:
    virtual int foo()=0;
};


class Timer
{
public:
    const char* what;
    long ticks;
    Timer(const char* msg) : what(msg), ticks(GetTickCount()){}
    ~Timer(){ std::cout << what << ":" << (GetTickCount() - ticks) << "\n"; }
};

Код

// a.cpp

#include "a.h"

class A : public Base
{
public:
    int foo(){
        int j = 2;
        for(int i = 0; i <= 1023; ++i)
            j += i;
        return j;
    }

};

Base* makeA()
{
    return new A();
}

Код

//b.cpp
#include "a.h"


Base* makeA();
int testVirmethod(Base* b)
{
    int z = 0;
    Timer t("virmethod");
    for( int j = 0; j < AMOUNT; ++j ){
        z += b->foo();
    }
    return z;
}



int foo(){
        int j = 2;
        for(int i = 0; i <= 1023; ++i)
            j += i;
        return j;
    }

int main()
{
    int z = testVirmethod(makeA());
    Timer t("func");
    for( int j = 0; j < AMOUNT; ++j ){
        z += foo();
    }
    return z;

}




Цитата

virmethod:734
func:734


Похоже что накладные расходы на вызовы здесь ужасно незначительны.

Добавлено через 1 минуту и 31 секунду
и это при том что у testvirmethod'а нету на этапе компиляции кода A::foo().

Добавлено через 8 минут и 55 секунд
Цитата(lukas @  5.6.2008,  11:34 Найти цитируемый пост)

хм... повторил тоже самое на делфи... время таже такое же как у тебя... (надо же проци у нас наверно одинаковые  smile ) что-то точно не то..

Всё то. При вызове метода из накладных расходов - это лишь передача указателя на класс(да и то лишь в том случае если компиялтор был достаточно туп чтобе не сделать данный метод (foo) статическим самостоятельно). это вообще почти нулевые расходы.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 5.6.2008, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(lukas @  5.6.2008,  06:42 Найти цитируемый пост)
Делаю ставку, что функция выполнится раз в 10 быстрее чем метод объекта...  

Цитата(lukas @  5.6.2008,  07:34 Найти цитируемый пост)
короче говоря я не знаю как устроен компилятор си, поэтому ничего утверждать не буду.

Цитата(lukas @  5.6.2008,  07:34 Найти цитируемый пост)
что-то точно не то... я уверен... и рано смеятся...

smile

Добавлено через 5 минут и 42 секунды
в который раз убеждаюсь, что С/С++ обязателен для обучения
а то всякие Java/.NET-ы дают своеобразное понимание многих вещей
 smile 

Это сообщение отредактировал(а) MAKCim - 5.6.2008, 09:34


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

PM MAIL   Вверх
Страницы: (12) Все « Первая ... 8 9 [10] 11 12 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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