Re[23]: Связные списки версус динамические массивы
От: Pavel Dvorkin Россия  
Дата: 30.03.10 09:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Сравнивать надо компиляторы одинаковых языков.


Одинаковых — это как ? Turbo Pascal и Object Pascal — это одинаковые ? Второй сложнее, да, но не в десять раз. А уж совсем одинаковые — где же взять язык, который за 20 лет совсем не менялся ?

PD>>+1 насчет рефакторинга. Интеллисенс там есть, хоть и не такой.


AVK>Вот именно что тоже убогий.


Ну это кому как. Мне достаточно. А еще есть Visual Assist.


PD>>Ну слава богу, хоть ТурбоПаскаль однопроходной. А VC++ — сколько проходов все же ?


AVK>Не интересовался.


Два.

PD>>>>Откуда такая информация ? Ссылку дай, только не по экзотическим языкам.


AVK>>>http://blogs.msdn.com/ericlippert/archive/2010/02/04/how-many-passes.aspx


PD>>Ну что же, если в C# это нужно — на здоровье. В С++ — нет.


AVK>Потому что С++ существенно более старый язык.


О да. Вот с этим соглашусь.

А что касается C#, то вряд ли он многопроходной. Слишком уж он быстро компилирует, быстрее, чем С++. Ну да, в нем нет оптимизации, так и для С++/Debug ее тоже нет.


PD>>то да, предописание необходимо


AVK>Вот именно. А в Java и C# такой необходимости нет, там forward declaration отсутствует как класс.




Андрей, не наводи тень на плетень!
Структура данных любой програмы — это граф. С циклами в общем случае, то есть к дереву не сводимый. И компилятору надо эти циклы как-то объяснить. Как именно — не так уж важно, но объяснить надо. В одном случае он их берет из предописаний, в другом — иначе. В конце концов за 2 прохода можно собрать все имена и связи.

В том же С вполне можно было бы допустить

struct A {
struct B* ptr;
};

struct B {...};

и без всякого предописания struct B, но это означало бы, что компилятор на первом проходе должен составить таблицу всех имен, а на втором — проанализировать до конца. Авторы С хотели, чтобы можно было обойтись одним проходом, вот и создали предописание как помощь компилятору. Вот и все.

PD>>Но из этого, в общем, мало что следует.


AVK>Из этого следует то, что язык специально заточен под минимальное количество проходов. А минимальное количество проходов нужно как раз чтобы компилятору хватало малого объема памяти.


Так, хоть с тем, что в С++ проходов мало, ты наконец согласился. Прогресс.

Могу лишь повториться — двух проходов хватит всегда. Малый объем памяти тут ни при чем, так как проход — это просмотр исходного текста. Собственно просмотр можно сделать на буфере любого разумного размера, а вот сколько займут эти структуры во внутреннем формате, зависит от программы, и для сложной функции он малым не будет просто потому, что не может быть. И на 64 К откомпилировать программу в тысячи строк просто не удастся, если не делать промежуточных выводов в файл, а это падение скорости.

PD>>Ты хоть представление имеешь о том, как компиляция в С/C++ идет ?


AVK>Павел, если есть желание заняться пенисометрией, то не советую. У меня все равно длиннее. Ты не у меня пробелы в знаниях ищи,


Глупо. Если ты заявил, что для компиляции в С++ нужна какая-то DLL, то не удивляйся, когда получаешь такие разъяснения. Не хочешь их получать — не делай такие заявления, а сначала разберись.

>а подумай, как это связано с лимитом потребления памяти.


Что связано ? DLL ? Никак не связано — я тебе уже объяснил, что она там не используется никак.

P.S. DLL- вообще-то элемент ОС Windows. И к языку С++ отношения не имеют.

PD>>Думаю, это просто означает, что не очень хорошо продуман функционал.


AVK>Нет, это означает что программа не качественна и не полностью удовлетворяет требованиям.


Именно так.

PD>> Потому что невозможно его использовать целиком одновременно.


AVK>Возможно.


Именно так.

AVK>>>Пакеты в студии, кстати, грузятся по требованию. Но далеко не всегда это можно обеспечить чисто логически. Ряд пакетов обязаны стартовать в момент загрузки солюшена.


PD>>Да, знаю.


AVK>Ну так вот в основном эти пакеты память и жрут.


Так вот и надо выяснить, нужны ли они все одновременно.

P.S. Будет время — посмотрю студию с помощью VMMAP и напишу.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.