RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Может я не прав, но..


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Игорь Козин
To : Юрий Пронякин
Subj : Может я не прав, но..

> >> эк тебя скрутило... однако при желании и к фортрану оо приделать можно.
> >> правда судя по дельфям/паскалям это оо столько ресурсов жрет
> >> что потеряется сам смысл использования именно фортрана.
> >
> > А скажи-ка мне дружок, знаешь ли ты какой реальный оверхед при реализации вызова метода объекта в так охаеваемом тобой дельфи-паскале? Так вот, это всего один дополнительный указатель (self) передаваемый как первый параметр при вызове метода.
>
> Я однажды проходил программу, написанную на чём-то обьектно-ориентированном, под отладчиком. Не под тем, который с исходниками работает, а под тем, который ассемблерный код показывает. Мрак - это ещё слабо сказано. 60% кода - вложенные друг в друга jump-ы и call-ы вперёд-назад по таблицам методов классов.

Ну я не знаю, я такого не припомню, хоть и смотрел когда-то ассемблерный код в Turbo Pascal и VP. Там, кстати все весьма прозрачно. Может это и очевидные всем тут вещи, но повторюсь. Вызов обычного метода - прямой call с одним доп. параметром. С виртуальными методами чуть сложнее: есть таблица VMT и она статическая. Вызов виртуального метода - просто переход по адресу из этой таблицы. Адрес достается по индексу. Т.е. оверхед в дополнение к параметру в стеке - загрузка адреса перехода из таблицы. Но ведь и в программе без ОО какое-то ветвление в этом месте должно быть, что бы выполнение от условий зависело. Посему говорить о существенном замедлении я бы не стал. Иное дело C++ со своим множественным наследованием. Там такая простая штука с VMT не проходит. До сих пор не знаю как это у них сделано :( Однако, это все говорит о качестве компилятора, а не структуры языка...

> > Зато я видел не объектный код когда в функцию передается 20-30 параметров, вот это действительно Ж.
>
> Это можно исправить практикуемым в некоторых кругах методом: "металлической линейкой по рукам". А вот код, генерируемый компилятором, уже не исправить.

А ты пробовал? И как, помогло? :) Кстати, а какой рецепт, если действительно много параметров? Структура? Так это и есть почти использование ОО (только без виртуальных методов)

> > НЕТУ в IV явного динамического распределения памяти. Почитайте стандарт. Вот напишите-ка мне древовидную структуру произвольного размера на Фортране IV.
>
> Я лично к фортану равнодушен, но знавал людей, писавших на нём компиляторы и не видевших в этом ничего особенного.

Да не, я не против Фортрана, ни боже упоси. Я против тезиса "все козлы, кроме Фортрана". Я ведь пытаюсь понять, а что такого людям в Си, скажем не нравится в смысле "идеологии". Почему они считают, что код "непрозрачный", "глюкавый". И пока увидел только один реальный пример: <= и = в if(). Но это же не единственное? Или если это все, то чем же Си так плох? А человек молчит, признаваться не хочет...


Sat 14 Jul 2007 05:13 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.8.1.4) Gecko/200




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.