| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > C++ - его сила и его слабости |
| Автор: Romikgy 5.2.2007, 12:24 |
| Что есть в сабже сильно и что есть слабого ? Хотелось бы увидель , что думают по этому поводу программеры! PS ждемс обсуждения |
| Автор: skyboy 5.2.2007, 12:57 |
| сильно - шаблоны. где ещё такое есть? |
| Автор: mr.DUDA 5.2.2007, 14:14 |
| запутанная система подключения заголовочных файлов |
| Автор: mr666 5.2.2007, 14:53 |
| Распространенность. |
| Автор: SergeCpp 5.2.2007, 15:32 |
| http://technologyreview.com/InfoTech/17831/ Bjarne Stroustrup, the inventor of the C++ programming language, defends his legacy and examines what's wrong with most software code. Tuesday, November 28, 2006 http://technologyreview.com/Infotech/17868/ The second part of our interview with Bjarne Stroustrup, the inventor of C++. Thursday, December 07, 2006 Там и комментариев много http://rsdn.ru/Forum?mid=2304517 |
| Автор: Romikgy 5.2.2007, 15:44 |
| SergeCpp, я знаю , что ты силен в С++ , но я не просил ссылок , я просил обсуждение! понятно эт ты к чему относишь? к сильной или слабой стороне? PS чет сишники молчат |
| Автор: Sun 5.2.2007, 15:45 |
| Да нету у него слабостей, сила одна! |
| Автор: mr.DUDA 5.2.2007, 15:49 |
| В бытность мою С++ программером временами приходилось использовать сишные макросы, не хватало возможности делать вложенные макросы, т.е. подставлять одни макроопределения в #defin-ы других. Хотя, как я понимаю, грамотнее не использовать макросы вообще, но... (к примеру для кроссплатформенных приложений они часто где юзаются) Добавлено @ 15:56 З.Ы, насчёт Комментарии будут ? Пример №1: есть 2 класса должны "знать" друг о друге, но объявлены в разных .h-файлах. Пример: указатель на Parent и массив Child-ов, классы разнородные (не наследники). Как правильно подключить один .h к другому без колдунства с прототипами ? Пример №2: один заголовочный файл используется в нескольких других. Чтобы избежать повторных объявлений всего что есть в этом файле, приходится колдовать с #if/#endif в начале и конце файла, ставить разные #pragma once и т.п. Добавлено @ 16:00 Ещё один минус, возможно что спорный: сложность при отладке. При использовании таких возможностей языка, как шаблоны, typedef-ы, макросы, переопределения операторов, найти баг становится сложнее (к рантаймовым багам добавляются неявные ошибки времени компиляции - неправильный вывод типа, подстановка и т.п.) |
| Автор: Beltar 5.2.2007, 16:12 | ||
А я еще в соседней теме говорил, что никакого неявного кода быть не должно. Кстати только у меня из несишников чуство, что сишники только тем и занимаются, что пишут шаблоны, собственные строковые классы и перегружают операторы? |
| Автор: Sun 5.2.2007, 16:35 | ||
Одни словом - занимаются настоящим программированием, в отличие от жабистов, дотнетчиков и драг-энд-дроп программистов |
| Автор: SergeCpp 5.2.2007, 16:41 |
| mr.DUDA, см. 8.1 Modularization and Interfaces & 9 Source Files and Programs в Специальном Издании |
| Автор: Romikgy 5.2.2007, 16:49 |
имхо чушь, иначе был бы он идеален и его юзали бы все, а такого нет , юзают много чего, вывод, значит твоя фраза не есть истина, и мистер Дуда много чего привел! mr.DUDA, сиба , интересные мысли Кса чет не вижу реальных представлений силы? тем более шаблоны , и их использование понизилось в статусе силы.... |
| Автор: MAKCim 5.2.2007, 17:19 | ||
сишники не могут делать этого по определению |
| Автор: Romikgy 5.2.2007, 17:42 |
почему? хоть один сишник забрел |
| Автор: skyboy 5.2.2007, 17:47 |
Ибо С != С++ |
| Автор: MAKCim 5.2.2007, 17:47 |
| Romikgy, потому что Сники это не С++ниики Добавлено @ 17:49 а то такая тема, грех не зайти Добавлено @ 17:54 имхо, единственная проблема С++ - препроцессор делаем встроенный оператор include, расширяем шаблоны (чтобы не хотелось макросами пользоваться), стандартизуем тип файла, который можно включить оператором include (т. е если в нем есть кроме описаний - код - ошибка (кроме inline функций)), делаем template export и убираем препроцессор |
| Автор: Любитель 5.2.2007, 17:58 | ||
| mr.DUDA, во всём этом виноват не C++, а его препроцессор. В "Дизайн и эволюция C++" Бъярни писал, что когда-то предлагал сделать инклюд-конструкцию на уровне языка, естественно более продвинутую. По непонятным для меня причинам комитет это отверг (как будет в будущем - не знаю). Далее - по сабжу написаны плюсы => говорим про плюсы. А в чём сила плюсов? В том, что плющит конкретно. Недостатков - много, не спорю. Плюсы разрабатывались не пойми как. Самое интересное, что всё таки популрность завоевали обалденную. Ещё чего! Добавлено @ 18:02
|
| Автор: Kuvaldis 5.2.2007, 18:03 |
| Лично меня больше всего на коня подсадило в свое время невозможность отделения объявления от реализации для шаблонов. Скорее бы это в стандарт! |
| Автор: MAKCim 5.2.2007, 18:04 | ||
все делаем в виде операторов Добавлено @ 18:05 это уже в стандарте только вот реализовать это сложно по-моему только 1 компилятор на сегодня способен на export |
| Автор: Любитель 5.2.2007, 18:10 |
Можно поподробней? Весь все равно путь даже синтаксически по другому, другой, но по сути препроцессор. Насчёт экспорта - да, он в стандарте. Реализует его вроде только Comeau ([offtop]кто-то вообще этот компилер вживую видел [/offtop]). После прочтения Саттера по этому поводу возникает мысль, что поспешили с введением экспорта. О его необходимости никто не спорти - но в другом виде. ТЕкущий экспорт - бесполезная вещь. |
| Автор: Sun 5.2.2007, 18:49 | ||
Так его только и юзают для разработки серьезного ПО. Тут можно в принципе даже не отделять С от С++, так как С код компилирутеся С++ компилятором и можно смешивать С и С++. Всё остальное - прикладное программрование на уровне VB. Кто привык использовать инклюды препроцессора никакого дискомфорта по их поводу не испытывает. Есть стандартные решения для корректного инклюда. Просто вы привыкли чтобы за вас всё делал визард или фреймворк, вот и боитесь лишний раз напречься Насчет шаблонов я вообще не понял о чём речь? Они то в С++ уже есть не первый десяток лет. А в Java и C# появились сравнительно недавно. И кто их понизил в статусе силы, не вы ли случайно? Вот когда добьетесь производительности от программы написанной на каком нибудь другом языке, отличном от С/С++ (ассемблер не предлагать), тогда я сниму перед вами шляпу. А так я готов терпеть все его "неудобства", зато они окупаются сторицей |
| Автор: Любитель 5.2.2007, 18:52 |
Это клевета!!! Нет там шаблонов. Дженерики != шаблоны. Полное !=. |
| Автор: Sun 5.2.2007, 18:55 |
| Любитель, хорошо - некое подобие шаблонов |
| Автор: Любитель 5.2.2007, 18:56 |
| Ага, если ещё добавить жалкое подобие - это нас устроит |
| Автор: LSD 5.2.2007, 18:59 | ||
Fortran подойдет? |
| Автор: Любитель 5.2.2007, 19:01 |
| LSD, только математика. Эффективное управление памятью - сомневаюсь. Но собсно говоря и плюсы не совсем дял того создавались. Есть Си - хороший по своему, но по идеолгоии далёкий от плюсов. Добавлено @ 19:04 [offtop] млин что-то я совсем - очепятки горой идут [/offtop] |
| Автор: LSD 5.2.2007, 19:31 | ||
Есть не так много вещей кроме математики, способных загрузить процессор на 100%. И вообще какое это имеет отношение к тому, что я написал? |
| Автор: esperant0 5.2.2007, 20:27 | ||
Есть бесконечное количество вещей кроме математики способных загрузить проц на 100% С точки зрения вычислимости C=C++ |
| Автор: MAKCim 5.2.2007, 20:31 |
да я думаю С = C++ = Pascal = Delphi = ... (на одной архитектуре) разница будет только в "хорошести" компиляторов |
| Автор: nerezus 5.2.2007, 20:31 |
| Не нравятся указатели. |
| Автор: MAKCim 5.2.2007, 20:39 |
знак * ? |
| Автор: Void 5.2.2007, 21:01 | ||
Однако возможности компилятора по оптимизации в некоторой мере зависят и от свойств языка. Пример: введение restrict в C99. |
| Автор: Alexeis 5.2.2007, 21:08 |
Не очень прозрачные и не очевидные. Насколько мне известно, главная проблема плюсов это утечки памяти. Предвижу комментарии, типа утечки только у чайников, но помните, что профи не рождаются, а становятся благодаря большому опыту и знаниям, но все это не приходит вмиг! А живем мы раз и хочется (да и нужно) постоянно иметь результат работы, а не только потом, спустя годы. Вот только сегодня уперся - дебагер виснет на операции delete[] m_bufer, при этом просто виснет и ничего не сообщает. Даже код ошибки узнать нельзя, потому что после ничего не выполняется. Указатель с виду "хороший", запретных операций тоже, на глаз не видно, хотя точно есть, но где неочевидно. Сишники будут активно возмущаться, но я все скажу. ИМХО указатели это вообще прошлый век, и пора от них совсем отказываться, как от плохого стиля программирования, такого как GoTo и т.д. |
| Автор: Sartorius 5.2.2007, 21:08 | ||||
Это что значит? По performance что ли? Не думаю. Чем более формален язык - тем эффективние код. Поэтому в ряду ASM - FORTRAN - C - C++ - Pascal скорость кода убывает
Испльзуйте smart pointers.... Контроль за памятью - это не забота языка и к языку никакого отношения не имеет. Это уже библиотеки. База у С - достаточная. Компилятор должен обеспечивать только корректное обращение по указанному адресу. |
| Автор: MAKCim 5.2.2007, 21:17 | ||||
Sartorius,
любой язык описан формально
да ты что? все зависит от компилятора в большинстве случаев код плохого программиста на ассемблере будет хуже кода хорошего С-компилятора И вообще, что за понятие такое: скорость кода? |
| Автор: Sartorius 5.2.2007, 21:23 | ||||
Ясное дело при прочих равных условиях
Да.. ерунду сказал. ... Чем ниже уровень языка - тем эффективнее код. ЗЫ Что за вычислимость такая? Можно говорить о вычислимости выражения и т.п. А код здесь причем? |
| Автор: MAKCim 5.2.2007, 21:28 | ||||
ну видно имелось в виду что-то типа этого
|
| Автор: esperant0 5.2.2007, 21:39 |
| По простому так. И С и С++ эквивалентны машине тьюринга. А соответсвенно и эквиваленты один другому. Эквивалентны машине тьюринга, это значит они могут симулировать М.Т. И М.Т может симулировать их. |
| Автор: Romikgy 5.2.2007, 21:47 |
| 1. я не хотел делить С и С++, имхо это практически одно и тоже (хотя различий хватает), и в данном топике , я бы хотел увидеть обсуждения С++ 2. сравнивать языки друг с другом , конечно хорошо , но хотелось бы видет именно недостатки и достоинства С++ точнее можно? по подробнее плз чем можно узнать? да , конечно запутано , но это дело привычки имхо , и очепяток чет я не понял чем эта вещь хороша? |
| Автор: Daevaorn 5.2.2007, 21:48 | ||
это проблема у тех кто не пользуется smart pointer'ами. Я уже не помню когда писал сам "delete"/"delete[]". |
| Автор: nerezus 5.2.2007, 22:04 | ||||||
|
| Автор: Romikgy 5.2.2007, 22:10 |
тоже интересно послушать кса и некто не говорит о сильных сторонах С++ |
| Автор: Daevaorn 5.2.2007, 22:12 |
Они априори ясны разумным людям |
| Автор: Void 5.2.2007, 22:28 | ||
Позволяет указать компилятору, что данный указатель… э-э… не подвержен http://en.wikipedia.org/wiki/Aliasing_(computing), тем самым позволяя более агрессивные оптимизации. |
| Автор: Romikgy 5.2.2007, 22:33 |
здесь не все настолько разумны! плз по буквенно и медленно , так что бы поняли все , включая чайников! |
| Автор: Sartorius 5.2.2007, 22:33 | ||
|
| Автор: skyboy 5.2.2007, 22:35 |
если провести параллель - в Delphi так реализованы экземпляры - интерфейсы - вместо вызова конструктора вызывается getInstance(увеличивает счетчик ссылок на 1), деструктор тоже не вызывается, а вызывается специальный метод, который уменьшает количество ссылок на 1. при достижении счетчиком ссылок 0, интерфейс выбрасывается из памяти без привлечения программиста. такая же фишка - в паттерне "одиночка", только там всё через статические поля класса. А "умные указатели" реализуются на шаблонах С++. Я правильно понимаю тему гребли, товарищи С++-ники? |
| Автор: Romikgy 5.2.2007, 22:40 |
| т.е. это плюс этого языка по направлению оптимизации?! |
| Автор: Void 5.2.2007, 23:09 |
| Romikgy, скорее костыль, заплатка. Я к тому, что язык влияет на возможности оптимизатора. Обладая большей информацией о коде (система типов и т.д.) компилятор вправе делать более смелые предположения, не рискуя нарушить семантику кода. |
| Автор: Romikgy 5.2.2007, 23:13 |
т.е. это минус? |
| Автор: Void 5.2.2007, 23:21 |
| Romikgy, ты можешь отвлечься от понятий абсолютного добра и зла? Это плюс, потому что позволяет компилятору лучше оптимизировать код. Минус дизайну языка, что для этого вообще понадобилось специальное ключевое слово. И тем не менее, дизайн языка логично проистекает из условий того времени и т.д. |
| Автор: Beltar 5.2.2007, 23:46 |
| <Стерто> Модераторы, уберите плиз. |
| Автор: Romikgy 6.2.2007, 00:01 |
гна, ясности хоцца хмммм как все запутано ... |
| Автор: mr.DUDA 6.2.2007, 10:33 |
| Возвращаясь к теме инклюдов, отвечаю Sun: нет, "нас" не испортили визарды и фреймворки. Вопрос тут не в том, "как правильно нужно делать и почему", а в том "почему в С++ приходится подстраиваться под неудобный препроцессор" |
| Автор: Sun 6.2.2007, 12:31 | ||
Он не неудобен - он прост. Не нравтяся инклюды - пиши код в одном текстовом файле. Не нравится препроцессор - не используй. Это всё вещи опциональные и вспомагательные. Можно в конце концов свой препроцессор написать, который будет соединять тексты так, как вам удобно. Зато вы хоть знате как всё устроено и как всё работает а некоторую сложность использования С++ я отношу также к его сильной стороне, потому что в среде С++ чайников несравнимо меньше чем среди других популярных языков. |
| Автор: MAKCim 6.2.2007, 12:44 |
ну-ну теоретически да, а практически... в смысле? |
| Автор: Sun 6.2.2007, 12:54 |
В прямом. Берётся код программы компилируется в объектный код и линковщиком собирается в исполняемый бинарный код. Все можно посмотреть как оно работает в ассемблере, какие регистры заполняются, что по какому адресу лежит, какие API функции вызываются - красота одним словом. Никаких тебе чёрных ящиков с байткодом или дебрями рантайма. |
| Автор: MAKCim 6.2.2007, 12:57 |
restrict "говорит" компилятору, что в данной области видимости, данные, на которые указывает restrict pointer, могут изменяться только через этот указатель в связи с этим возможны оптимизации с его (компилятора) стороны правда, вот сейчас ради интереса, решил "поиграться" с restrict и разницы между "с restrict" и "без restrict" не заметил вообще |
| Автор: LSD 6.2.2007, 12:57 | ||
Это иллюзия |
| Автор: MAKCim 6.2.2007, 12:58 |
| Sun, а, в этом смысле согласен |
| Автор: SergeCpp 6.2.2007, 16:16 | ||||||
http://research.att.com/~bs/MIT-TR-original.pdf (PDF, 74 K) |
| Автор: SergeCpp 6.2.2007, 16:34 |
http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf (PDF, 2.9 M) |
| Автор: Sartorius 6.2.2007, 16:35 | ||||||
Интересно это о разработчиках какой страны? (Ну не знаю, где сейчас Страуструп живет...
Ну не знаю ... не знаю |
| Автор: Rodman 6.2.2007, 16:39 | ||
под лежачий камень вода не течет - так и здесь... но если есть идеи, то С++ любую из них реализует... |
| Автор: SergeCpp 7.2.2007, 12:44 | ||||
| http://www.inr.ac.ru/~info21/texts/2002-06-Aarhus/ru.htm Никлаус Вирт Приветствие на открытии Международной конференции по преподаванию информатики ITiCSE г. Аархус (Дания), 24 июня 2002 г.
|
| Автор: Sartorius 7.2.2007, 13:01 | ||
Какая разница какой знак приписать операции. В рапире вообще "->" для присвоения использовалось. ИМХО к любому более менее очевидному синтаксису достаточно легко привыкнуть. |
| Автор: Любитель 7.2.2007, 18:17 | ||||||||
По-моему очень многие компилеры, если и поддерживают рестрикт, то тем не менее просто его игнорируют. Также, как скажем инлайн. Лично я против неизкоуровневой оптимизации со стороны програмиста в высокоуровневых языках. Нефиг - пусть компилер сам старается Romikgy, недостатки в недоделанности на самом деле. Тот же языковой инклюд. Возможность нормального разделения объявления и реализации шаблонов (хотя, конечно, исходники, либо какой-то псевдокод все равно понадобится при компиляции). Спецификации исключений, так недружащие с шаблонами и вообще вызывающие много споров. Функциональная недоделанность стандартной библиотеки (по сравнению со многими другими языками). Отсутствие STL везде где только можно
Уже было сказано, но потворюсь - не о тех плюсах думаете
Не математикой единой... |
| Автор: SergeCpp 7.2.2007, 20:47 |
| В VC6 опция оптимизации, относящаяся к aliasing, ускорила http://sergecpp.mylivepage.ru/file/1/701/ на 5% |
| Автор: MAKCim 7.2.2007, 21:19 | ||
GCC полностью поддерживает C99, а значит restrict, кроме того была включена оптимизация... вообщем непонятно, каким образом можно оптимизировать случаи, когда применяется restrict |
| Автор: Beltar 8.2.2007, 13:22 | ||
Все сразу и ничего вместе. Кстати, а в C есть параметры по умолчанию? |
| Автор: Romikgy 8.2.2007, 14:18 |
есть |
| Автор: Void 8.2.2007, 16:20 |
| А вот именованных параметров (лично мне) не хватает и в C++, и в Delphi, и в Java, и в C#… |
| Автор: Daevaorn 8.2.2007, 17:40 | ||
Не совсем. Есть скорей всего только в С99. Ну и в С++ конечно.
за-то в С++ они почти красиво реализуются средствами языка. |
| Автор: Beltar 8.2.2007, 18:13 | ||
А что это? |
| Автор: MAKCim 8.2.2007, 18:58 |
нету нету |
| Автор: Romikgy 8.2.2007, 19:05 | ||
Я имел ввиду С++ , а не просто С просто не обратил внимания на то что в том посте без плюсов PS многие здесь программируют на чистом си без плюсов? |
| Автор: Void 8.2.2007, 19:06 | ||
Beltar
Помогает, когда у функции много параметров, а указать надо лишь часть. И читается в таком случае лучше. |
| Автор: Beltar 8.2.2007, 19:27 |
| Но в Delphi тоже можно: function f(X:Integer;Y:Integer=1):Integer; И вызывать можно f(x) и f(x,y). В чем разница? |
| Автор: Void 8.2.2007, 19:29 |
| Попробую словами: при вызове функции опциональные (строго говоря, не только) аргументы можно указывать в произвольном порядке с помощью синтаксиса <имя параметра> = <значение>. |
| Автор: Beltar 8.2.2007, 20:14 |
| Теперь понятно. |
| Автор: Romikgy 8.2.2007, 20:52 | ||
пример можно |
| Автор: SergeCpp 8.2.2007, 20:58 |
| Про именованные аргументы Страуструп писал в http://research.att.com/~bs/dne.html Это было предложение Роланда Хартингера Причина отклонения: группа по расширениям единодушно решила, что предложение не даёт почти ничего нового, приведёт к несовместимости с существующим кодом и будет способствовать распространению неудачного стила программирования Там есть и альтернативы именованным аргументам, например, дополнительные типы для представления наиболее типичных вариантов Void, а ну марш покупать и читать D&E! ![]() ![]() |
| Автор: Void 8.2.2007, 21:36 |
| Я Страуструпа уважаю (а вопросы обратной совместимости уважать себя просто заставляют |
| Автор: SergeCpp 8.2.2007, 21:43 |
| http://www.stepanovpapers.com/notes.pdf (примерно 900 K) |
| Автор: Любитель 8.2.2007, 23:28 | ||
Насчёт именованных параметров - никогда не будет на уровне языка хотя бы потому, что мы имеем права (и некоторые так делают) в хейдере называть параметры по одному, а в сорсе - по другому. Скажем типично (хотя я не приветствую):
Естьhttp://boost.org/libs/parameter/doc/html/index.html. Не вглядывался в реализацию, но использование достаточно приятно, правда редко нужно. Насчёт рестрикта - ещё пару слов. Как таковой он должен применяться не к конкретному указателю, а к их парам. Если функция принимает два параметра, то здесь всё понятно (хотя нелогично к какому именно указателю ставить рестрикт). Но допустим, что у функции три параметра. Между двумя первыми гарантировано соблюдение рестрикта, а вот третий может "вклиниться" в любой из первых двух. Вполне возможно, что однако (теоретически) возможна оптимизация. Возможно, что третий указатель, нужен для просто задания элемента (не из массива). То есть существующий синтаксис рестрикта нелогично описывает ситуацию. Получается мы гарантируем отсутствие алиасов с любыми другими указателями - это возможно очень редко. Кстати, Пддержка не означает использование. Компилер вправе поддерживать его на уровне игнорирования (как это обычно бывает с инлайн). Если функция не экспортируется, то глобальная оптимизация зачастую позволяет выявить отсутствие алиасов (и заюзать оптимизацию) без подсказок с нашей стороны (кроме подсказки в опциях компилера |
| Автор: Artemios 9.2.2007, 11:19 | ||
|
| Автор: MAKCim 9.2.2007, 18:19 | ||
какой-то странный уровень поддержки если что то игнорируется в GCC (например export), то warning соответствующий появляется |
| Автор: Любитель 9.2.2007, 21:02 |
| Но ведь с инлайн именно так часто получается. Или register-переменные (которыми никто не пользуется |
| Автор: SergeCpp 9.2.2007, 21:36 | ||
Последняя stable версия Perl (5.8.8). Начало одной из функций файла util.c
Дата модификации файла: 9 января 2006 |
| Автор: Sartorius 9.2.2007, 21:40 |
| Мнда. Многовато чего-то регистров. А ведь еще и результаты промежуточные где то хранить нада.... |
| Автор: MAKCim 9.2.2007, 21:46 | ||||||||
всегда есть
и
для таких случаев Добавлено @ 21:48
так 2 регистра еще есть |
| Автор: Любитель 9.2.2007, 22:46 |
| MAKCim, я, конечно понимаю твои взгляды, но не надо всё же равнять gcc и стандартные плюсы |
| Автор: MAKCim 9.2.2007, 23:08 | ||
нет, подожди В С++ по стандарту inline функция - есть подстановочная функция, а register переменные - переменные в регистрах т. е любой компилятор номинально обязан все inline функции подставлять непосредственно (благо ограничений в отличие от register переменных нет) и располагать register переменные в регистрах за исключением ситуации, когда отсутствуют свободные регистров, а заниматься оптимизацией должен при включенной оптимизации т. е я хочу сказать, что в обычном режиме он должен тупо следовать спецификации языка, а со включенной оптимизацией - заниматься эвристикой и прочим шаманством |
| Автор: Void 9.2.2007, 23:41 | ||||
| MAKCim 7.1.2/2
Между предпочтением и обязательством есть разница. Добавлено @ 23:42 7.1.1/3
|
| Автор: Любитель 10.2.2007, 00:45 | ||
Что бегло нашёл по restrict:
Добавлено @ 00:45 MAKCim, кстати выше я говорил про __atribute__ и __asm__. |
| Автор: SergeCpp 10.2.2007, 01:09 | ||||
Вот выдержки из довольно старой статьи Денниса Ритчи (1988, http://www.astro.princeton.edu/~rhl/dmr-on-noalias.html)
|
| Автор: SergeCpp 10.2.2007, 09:18 |
| Цикл статей Страуструпа о совместимости C и C++ http://www.research.att.com/~bs/sibling_rivalry.pdf AT&T Labs — Research Technical Report. January 2002 http://www.research.att.com/~bs/siblings_short.pdf The C/C++ Users Journal. July 2002 http://www.research.att.com/~bs/compat_short.pdf The C/C++ Users Journal. August 2002 http://www.research.att.com/~bs/examples_short.pdf The C/C++ Users Journal. September 2002 Положение дел http://david.tribble.com/text/cdiffs.htm |
| Автор: MAKCim 10.2.2007, 10:29 | ||
но фактически ограничений на сегодня использоанию inline нет, и так как
то логично было бы в обычном (не оптимизирующем) режиме всегда использовать inline, если это явно указано тогда бы программист был уверен, как именно будет в итоге выглядеть код я понял |
| Автор: mr666 11.2.2007, 17:22 |
| Вроде современные компиляторы игнорируют register переменные... анализируя код .. |
| Автор: Любитель 11.2.2007, 19:29 |
| MAKCim, ну всё же, если компилер будет просто игнорировать инлайн, формально он удовлетворяет стандарту. К тому же не всегда встраивание возможно. Например, имеем рекурсивную функцию (в тривиальный цикл не разворачиваемую - только с использованием стека). Компилер не сможет её заинлайнить. Да и в жебаге мне кажется любую рекурсивную функцию он встраивать не будет. Игнор инлайна гораздо проще, чем развёртывание рекурсии (даже в цикл). То же имеем и с регистер, и с рестрикт. |
| Автор: MAKCim 11.2.2007, 21:43 | ||||||||
да как нефиг пусть есть
функция
inline
|
| Автор: Любитель 11.2.2007, 21:50 |
А вообще оффтопик почуть пошёл. |
| Автор: unicuum 15.3.2007, 04:53 |
| Как утверждает создатель С++ Бьерн Страуструп в его третьем издании книги «Язык программирования С++» - «не важно на каком языке программируешь, важно что из себя представляешь ты сам». И я с ним полностью согласен. |
| Автор: esperant0 15.3.2007, 15:46 | ||
Это еще Тьюринг доказал. А Страуструп всего лишь процитировал в вольной форме. |
| Автор: Любитель 15.3.2007, 16:16 |
| Для результата - почти да. Для процесса - ни в коем случае |