Здравствуйте, AndrewVK, Вы писали:
PD>>А я и не говорил, что это ты писал. Просто те компиляторы работали в 64 К, а нынешние на 6.4 М работать ни за что не будут, да и на 64 М — не уверен.
AVK>Зато они работают быстрее и качественнее.
Насчет качественее — не спорю. Насчет быстрее... Давай сравним. ТурбоПаскаль 1.0 на Ямахе с тактовой частотой 2 МГц и памятью в 64К компилировал программу в 1000 строк несколько секунд. Сколько времени надо, чтобы откомпилировать программу размером в 1 млн строк на процессоре в 2 Ггц ? Очевидно, тоже несколько секунд. Давай сюда этот компилятор!
AVK>Речь не про С++. В С++ нормального интеллисенса и рефакторинга просто не сделать ввиду дизайна языка.
+1 насчет рефакторинга. Интеллисенс там есть, хоть и не такой.
PD>>Ну это уже не аргумент.
AVK>Для аргумента попробуй сперва свои теории хоть как то обосновать. А то получается очередное требование доказать несуществование Летающего Макаронного Монстра.
Это еще менее аргумент. А обоснования я приводил не раз в этом нашем треде, путем сравнения с компиляторам прошлых времен. Одно из них выше.
AVK>>>А ты понимаешь, что такое количество проходов компилятора
PD>>Понимаю. В VС++ — один + второй от линкера (c2.dll).
AVK>Все таки не понимаешь. Книжку с драконом читал
Ну не понимаю — и не надо. До сих пор вроде как понимал, и все так же понимали
http://rsdn.ru/forum/tools/386609.1.aspxАвтор: IO
Дата: 18.09.03
И вот тут кое-что сказано
http://ru.wikipedia.org/wiki/%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
"Авторы языка хотели, чтобы программы на нём легко компилировались с помощью однопроходного компилятора"
AVK>Неверно ты помнишь. Грамматика ТурбоПаскаля специальным образом заточена под однопроходную компиляцию, как и формат tpu файлов.
Ну слава богу, хоть ТурбоПаскаль однопроходной. А VC++ — сколько проходов все же ?
>>>а современные компиляторы делают десятки проходов?
PD>>Откуда такая информация ? Ссылку дай, только не по экзотическим языкам.
AVK>http://blogs.msdn.com/ericlippert/archive/2010/02/04/how-many-passes.aspx
Ну что же, если в C# это нужно — на здоровье. В С++ — нет.
PD>>Отроду в Фортране не было.
AVK>Фортран настолько убог, что ему это не нужно
PD>> В C K&R не было (и до сих пор необязательна) — я прототип функции имею в виду. Где были-то ?
AVK>Простой вопрос — всегда ли можно обойтись без forward declaration?
Прототипы функций в С необязательны. Что же касается
struct A {
struct B* ptr;
};
struct B {...};
то да, предописание необходимо, но в нем нельзя упоминать поля. Вот так можно
struct B;
struct A {
struct B* ptr;
};
struct B {...};
Но из этого, в общем, мало что следует. См. обсуждение
http://rsdn.ru/forum/tools/386609.1.aspxАвтор: IO
Дата: 18.09.03
.
>>>а сейчас в качестве библиотек используются исполняемые файлы?
PD>>Ты про статические библиотеки слышал ?
AVK>Т.е. компилятору С достаточно одной только dll, чтобы скомпилировать программу с ее использованием?
Ты хоть представление имеешь о том, как компиляция в С/C++ идет ? Компилятору С не надо никаких DLL вообще, поскольку он с ними работать не умеет (за исключением #import, но это OLE). Он компилирует из .c в .obj. Линкеру в С++ тоже никаких DLL не надо, потому что поскольку он с ними работать не умеет. Ему нужны .lib файлы, или статические либы, или библиотеки импорта. В общем, собрать EXE, не имея требуемых для него DLL можно, более того, есть эти DLL или нет — ни на что не влияет при сборке EXE. При запуске, конечно, все DLL вынь да положь.
AVK>>>Опять ну-ну. Это легко проверяется, благо вся метаинформация в сборках решарпера доступно. Посчитать суммарное количество имен типов, их членов и параметров совсем несложно.
PD>>А любопытно бы.
AVK>Ну вот и займись.
PD>>А все же, почему нельзя загружать и выгружать по мере надобности ?
AVK>Ты меня вообще читаешь? Неважно, что будет на игрушечных ситуациях, важен максимально плохой случай. Ты там много флагом по поводу качества размахивал: что ты думаешь по поводу качества программы, в которой попытка использовать весь функционал в один момент приводит к ее вылету?
Думаю, это просто означает, что не очень хорошо продуман функционал. Потому что невозможно его использовать целиком
одновременно.
Вот тебе простой пример — виртуальная память. Максимально плохой случай в твоем понимании — это когда все страницы процесса должны быть в ОП. И всех процессов. Но этого никто не допустит просто-напросто, поскольку память не резиновая. Часть страниц в ОП, часть в свопе или mmf. Живем.
AVK>Пакеты в студии, кстати, грузятся по требованию. Но далеко не всегда это можно обеспечить чисто логически. Ряд пакетов обязаны стартовать в момент загрузки солюшена.
Да, знаю. Именно они и ругаются, если что не так.
AVK>>>Скажи, ты когда нибудь в жизни писал приложения с плагинами, в которых работающие плагины можно выгружать?
PD>>Если бы они все одновременно работали, то я бы согласился. Но реально работают только некоторые. Остальным можно послать команду "стоп", потом выгрузить, сохранив состояние, если надо. Все это решаемо. Есть же даже выгрузка драйверов 0 кольца, а это тебе не плагин.
AVK>Не вижу ответа на заданный вопрос.
Ну что же, отвечу формально. Программы с DLL, которые загружаются и выгружаются по мере надобности, я писал. Плагины я не писал вообще.