Еще, кстати, по-моему Макс Шлее писал, что слоты могут быть виртуальными, но соединение с виртуальным слотом примерно в 10 раз медленнее, чем с невиртуальным.
Так вот, я должен заметить, Vampire: The Masquerade шел на моем Duron не лучшим образом, в то время как игры с графикой явно не хуже (от той же EA) у меня отлично работали.
Не думаю, что EA пишет игры на Java (с учетом того, что они даже придумали свою версию STL)
Слово «гандон», надо полагать, происходит от двух подряд идущих букв грузинского алфавита: соответственно «ган» გ и «дон» დ. Поэтому пишется это слово через «а».
А написал я это к тому, что по-моему пора прекратить холивар.
> «…„в совершенстве” (кстати, что под этим понимается?)…»
В том-то и дело, что это понятие крайне субъективно, и у каждого оно своё. Не хватало еще разводить демагогию по этому поводу. И так холиварим давно уже не по теме.
> «Алгоритм мало придумать — его надо реализовать. И желательно, чтобы реализация тратила минимум времени и средств».
Что-то в этом есть, однако без хорошего понимания алгоритмизации никакое знание языков вам не поможет — все программы будут медленными (будь они написаны на С++ или, к примеру, на PHP :)
Я писал, что сложность функции — довольно субъективное понятие. И если GCC не может с этим справиться, то наверное это его проблемы… Другие ведь могут!
Если функция у нас «килобайт в 50», то компилятор явно не станет копировать код в места вызова. А значит по какому-то адресу он поместит её код, а в месте вызова поставит call. Да, код функции будет повторяться во всех объектных файлах, где она юзается, но компоновщик на стадии линковки оставит в бинарнике только одну версию этога метода, о чем упомянуто выше в моей статье.
Я более чем уверен, что если в коде функции будет к примеру хоть один цикл, то компилятор не станет делать её подставляемой, так как в этом случае издержки на занесение параметров в стек и вызов функции командой call будут уступать выполнению самой функции (цикл породит гораздо более сложный asm-код). Посему не думаю, что эта функция будет многократно скопирована.
Как показывает Disassembly, тот же компилятор MSVC с настройками по умолчанию (без ключа /Ob1) встраивает не только inline-функции, но и другие, которые сам посчитает нужным встроить. Так что Вы зря переживаете по этому поводу.
> «Я слышал. в современных IDE тянуть скроллбар никуда не надо. Список методов обычно выводится слева от кода».
Хм, странно, у меня в notepad.exe ничего подобного нет…
Потому что, опять же, С++ — это золотая середина. С одной стороны он позволяет добиться высокой скорости работы программ, а с другой — предоставляет возможность эффективно работать с большими проектами.
Ну да, чего уж там? Давайте учить пару сотен языков… Если попытаетесь знать все языки, в совершенстве не будете знать ни один. Есть люди, такие как Вы, которые расширяют свои познания, а есть, которые углубляют. Нужно найти «золотую середину»!
А главное — упор нужно делать не на языки, а на алгоритмы.
Насчет Haskell я спорить не буду — скорее всего за функциональным программированием будущее (хотя я, к сожалению, с ним пока что практически не знаком). Но, если я не ошибаюсь, программы на Haskell все еще уступают по скорости аналогичным программам на C++… Я не буду отстаивать эту точку зрения, потому как просто где-то слышал такое, и буду рад, если сейчас это уже не так.
Не думаю, что EA пишет игры на Java (с учетом того, что они даже придумали свою версию STL)
А написал я это к тому, что по-моему пора прекратить холивар.
В том-то и дело, что это понятие крайне субъективно, и у каждого оно своё. Не хватало еще разводить демагогию по этому поводу. И так холиварим давно уже не по теме.
> «Алгоритм мало придумать — его надо реализовать. И желательно, чтобы реализация тратила минимум времени и средств».
Что-то в этом есть, однако без хорошего понимания алгоритмизации никакое знание языков вам не поможет — все программы будут медленными (будь они написаны на С++ или, к примеру, на PHP :)
Как показывает Disassembly, тот же компилятор MSVC с настройками по умолчанию (без ключа /Ob1) встраивает не только inline-функции, но и другие, которые сам посчитает нужным встроить. Так что Вы зря переживаете по этому поводу.
> «Я слышал. в современных IDE тянуть скроллбар никуда не надо. Список методов обычно выводится слева от кода».
Хм, странно, у меня в notepad.exe ничего подобного нет…
Потому что, опять же, С++ — это золотая середина. С одной стороны он позволяет добиться высокой скорости работы программ, а с другой — предоставляет возможность эффективно работать с большими проектами.
А главное — упор нужно делать не на языки, а на алгоритмы.
А мне вот лень тянуть скроллбар в больших классах в то время, когда мне просто нужно посмотреть интерфейс.