Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C++ - его сила и его слабости, обсудить 
:(
    Опции темы
Romikgy
Дата 5.2.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Что есть в сабже сильно и что есть слабого ?
Хотелось бы увидель , что думают по этому поводу программеры!

PS ждемс обсуждения 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
skyboy
Дата 5.2.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



сильно - шаблоны. где ещё такое есть?
PM MAIL   Вверх
mr.DUDA
Дата 5.2.2007, 14:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 4
Всего: 232



запутанная система подключения заголовочных файлов


--------------------
user posted image
PM MAIL WWW   Вверх
mr666
Дата 5.2.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 28.3.2006

Репутация: нет
Всего: нет



Распространенность. smile 
PM MAIL   Вверх
SergeCpp
Дата 5.2.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



The Problem with Programming
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

More Trouble with Programming
The second part of our interview with Bjarne Stroustrup, the inventor of C++.
Thursday, December 07, 2006

Там и комментариев много

И вот тут комментируют

PM MAIL WWW ICQ   Вверх
Romikgy
Дата 5.2.2007, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



SergeCpp, я знаю , что ты силен в С++ , но я не просил ссылок , я просил обсуждение!

Цитата(skyboy @  5.2.2007,  11:57 Найти цитируемый пост)
сильно - шаблоны.

понятно
Цитата(mr666 @  5.2.2007,  13:53 Найти цитируемый пост)
Распространенность.

эт ты к чему относишь? к сильной или слабой стороне?

    PS чет сишники молчат smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Sun
Дата 5.2.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Да нету у него слабостей, сила одна!  smile 


--------------------
Account removed
PM MAIL   Вверх
mr.DUDA
Дата 5.2.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 4
Всего: 232



В бытность мою С++ программером временами приходилось использовать сишные макросы, не хватало возможности делать вложенные макросы, т.е. подставлять одни макроопределения в #defin-ы других. Хотя, как я понимаю, грамотнее не использовать макросы вообще, но... (к примеру для кроссплатформенных приложений они часто где юзаются)

Добавлено @ 15:56 
З.Ы, насчёт
Цитата(mr.DUDA @  5.2.2007,  13:14 Найти цитируемый пост)
запутанная система подключения заголовочных файлов

Комментарии будут ? 

Пример №1: есть 2 класса должны "знать" друг о друге, но объявлены в разных .h-файлах. Пример: указатель на Parent и массив Child-ов, классы разнородные (не наследники). Как правильно подключить один .h к другому без колдунства с прототипами  ?  smile 

Пример №2: один заголовочный файл используется в нескольких других. Чтобы избежать повторных объявлений всего что есть в этом файле, приходится колдовать с #if/#endif в начале и конце файла, ставить разные #pragma once и т.п.

Добавлено @ 16:00 
Ещё один минус, возможно что спорный: сложность при отладке. При использовании таких возможностей языка, как шаблоны, typedef-ы, макросы, переопределения операторов, найти баг становится сложнее (к рантаймовым багам добавляются неявные ошибки времени компиляции - неправильный вывод типа, подстановка и т.п.)


--------------------
user posted image
PM MAIL WWW   Вверх
Beltar
Дата 5.2.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Цитата

При использовании таких возможностей языка, как шаблоны, typedef-ы, макросы, переопределения операторов


А я еще в соседней теме говорил, что никакого неявного кода быть не должно.
Кстати только у меня из несишников чуство, что сишники только тем и занимаются, что пишут шаблоны, собственные строковые классы и перегружают операторы? smile 


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
mr.DUDA
Дата 5.2.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 4
Всего: 232



Цитата(Beltar @  5.2.2007,  15:12 Найти цитируемый пост)
Кстати только у меня из несишников чуство, что сишники только тем и занимаются, что пишут шаблоны, собственные строковые классы и перегружают операторы?

И МЕНЕДЖЕРЫ ПАМЯТИ !!!  smile  smile  smile  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Sun
Дата 5.2.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Цитата(Beltar @  5.2.2007,  13:12 Найти цитируемый пост)
Кстати только у меня из несишников чуство, что сишники только тем и занимаются, что пишут шаблоны, собственные строковые классы и перегружают операторы? smile  


Цитата(mr.DUDA @  5.2.2007,  13:25 Найти цитируемый пост)
И МЕНЕДЖЕРЫ ПАМЯТИ !!!  smile  smile  smile  smile  

Одни словом -  занимаются настоящим программированием, в отличие от жабистов, дотнетчиков и драг-энд-дроп программистов  smile 


--------------------
Account removed
PM MAIL   Вверх
SergeCpp
Дата 5.2.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



mr.DUDA, см. 8.1 Modularization and Interfaces & 9 Source Files and Programs в Специальном Издании


Это сообщение отредактировал(а) SergeCpp - 5.2.2007, 16:43
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 5.2.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Sun @  5.2.2007,  14:45 Найти цитируемый пост)
Да нету у него слабостей, сила одна! 

имхо чушь, иначе был бы он идеален и его юзали бы все, а такого нет , юзают много чего, вывод,
значит твоя фраза не есть истина, и мистер Дуда много чего привел!
mr.DUDA, сиба , интересные мысли smile

Кса чет не вижу реальных представлений силы? тем более шаблоны , и их использование понизилось в статусе силы....


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
MAKCim
Дата 5.2.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Beltar @  5.2.2007,  16:12 Найти цитируемый пост)
Кстати только у меня из несишников чуство, что сишники только тем и занимаются, что пишут шаблоны, собственные строковые классы и перегружают операторы? 

сишники не могут делать этого по определению  smile 



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Romikgy
Дата 5.2.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(MAKCim @  5.2.2007,  16:19 Найти цитируемый пост)
сишники не могут делать этого по определению

почему?
хоть один сишник забрел smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
skyboy
Дата 5.2.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(Romikgy @  5.2.2007,  16:42 Найти цитируемый пост)
Цитата(MAKCim @  5.2.2007,  16:19 Найти цитируемый пост)
сишники не могут делать этого по определению
почему?

Ибо С != С++  smile 


PM MAIL   Вверх
MAKCim
Дата 5.2.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Romikgy
потому что Сники это не С++ниики  smile

Добавлено @ 17:49 
Цитата(Romikgy @  5.2.2007,  17:42 Найти цитируемый пост)
хоть один сишник забрел

а то
такая тема, грех не зайти  smile

Добавлено @ 17:54 
имхо, единственная проблема С++ - препроцессор
делаем встроенный оператор include, расширяем шаблоны (чтобы не хотелось макросами пользоваться), стандартизуем тип файла, который можно включить оператором include (т. е если в нем есть кроме описаний - код - ошибка (кроме inline функций)), делаем template export и убираем препроцессор

Это сообщение отредактировал(а) MAKCim - 5.2.2007, 17:48


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Любитель
Дата 5.2.2007, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



mr.DUDA, во всём этом виноват не C++, а его препроцессор. В "Дизайн и эволюция C++" Бъярни писал, что когда-то предлагал сделать инклюд-конструкцию на уровне языка, естественно более продвинутую. По непонятным для меня причинам комитет это отверг (как будет в будущем - не знаю).

Далее - по сабжу написаны плюсы => говорим про плюсы.

А в чём сила плюсов? В том, что плющит конкретно.  smile А если серьёзно - дял меня в неповторимом стиле программирования, в некоей атмосфере что ли. Я не против многих языков, рассисткой ненависти не испытываю, но плюсы... (см. подпись).

Недостатков - много, не спорю. Плюсы разрабатывались не пойми как. Самое интересное, что всё таки популрность завоевали обалденную.

Цитата(mr.DUDA @  5.2.2007,  16:25 Найти цитируемый пост)
И МЕНЕДЖЕРЫ ПАМЯТИ !!!  

Ещё чего!  smile

Добавлено @ 18:02 
Цитата(MAKCim @  5.2.2007,  17:47 Найти цитируемый пост)
делаем встроенный оператор include, расширяем шаблоны (чтобы не хотелось макросами пользоваться), стандартизуем тип файла, который можно включить оператором include (т. е если в нем есть кроме описаний - код - ошибка (кроме inline функций)), делаем template export и убираем препроцессор

 smile А условная компиляция?


--------------------
PM MAIL ICQ Skype   Вверх
Kuvaldis
Дата 5.2.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: нет
Всего: 61



Лично меня больше всего на коня подсадило в свое время невозможность отделения объявления от реализации для шаблонов.
Скорее бы это в стандарт! smile 


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
MAKCim
Дата 5.2.2007, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата

А условная компиляция? 

все делаем в виде операторов

Добавлено @ 18:05 
Цитата(Kuvaldis @  5.2.2007,  18:03 Найти цитируемый пост)
Скорее бы это в стандарт!

это уже в стандарте
только вот реализовать это сложно
по-моему только 1 компилятор на сегодня способен на export


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Любитель
Дата 5.2.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(MAKCim @  5.2.2007,  18:04 Найти цитируемый пост)
все делаем в виде операторов

Можно поподробней? Весь все равно путь даже синтаксически по другому, другой, но по сути препроцессор.

Насчёт экспорта - да, он в стандарте. Реализует его вроде только Comeau ([offtop]кто-то вообще этот компилер вживую видел [/offtop]). После прочтения Саттера по этому поводу возникает мысль, что поспешили с введением экспорта. О его необходимости никто не спорти - но в другом виде. ТЕкущий экспорт - бесполезная вещь.

Это сообщение отредактировал(а) Любитель - 5.2.2007, 18:21


--------------------
PM MAIL ICQ Skype   Вверх
Sun
Дата 5.2.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Цитата(Romikgy @ 5.2.2007,  13:49)
имхо чушь, иначе был бы он идеален и его юзали бы все, а такого нет , юзают много чего, вывод,
значит твоя фраза не есть истина, и мистер Дуда много чего привел!
mr.DUDA, сиба , интересные мысли smile

Кса чет не вижу реальных представлений силы? тем более шаблоны , и их использование понизилось в статусе силы....

Так его только и юзают для разработки серьезного ПО. Тут можно в принципе даже не отделять С от С++, так как С код компилирутеся С++ компилятором и можно смешивать С и С++. Всё остальное - прикладное программрование на уровне VB. 

Кто привык использовать инклюды препроцессора никакого дискомфорта по их поводу не испытывает. Есть стандартные решения для корректного инклюда. Просто вы привыкли чтобы за вас всё делал визард или фреймворк, вот и боитесь лишний раз напречься  smile 

Насчет шаблонов я вообще не понял о чём речь? Они то в С++ уже есть не первый десяток лет. А в  Java и C# появились сравнительно недавно. И кто их понизил в статусе силы, не вы ли случайно?  smile 

Вот когда добьетесь производительности от программы написанной на каком нибудь другом языке, отличном от С/С++ (ассемблер не предлагать), тогда я сниму перед вами шляпу. А так я готов терпеть все его "неудобства", зато они окупаются сторицей  smile 


--------------------
Account removed
PM MAIL   Вверх
Любитель
Дата 5.2.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Sun @  5.2.2007,  18:49 Найти цитируемый пост)
А в  Java и C# появились сравнительно недавно.

Это клевета!!! Нет там шаблонов. Дженерики != шаблоны. Полное !=.  smile Никакого метапрограммирования они не несут, лишь некоторое обобщение, да и то и в яве, и в шарпе, если не ошибаюсь, только для классов. Никакого автоопределения типов шаблонов - нет. Нельзя это сравнивать с шаблонами. Я не говорю, что шарп с явой из-за этого хуже - нет, ни в коем случае, но сранивать дженерики и шаблоны - не позволю!!!  smile 


--------------------
PM MAIL ICQ Skype   Вверх
Sun
Дата 5.2.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Любитель, хорошо - некое подобие шаблонов  smile  Такая формулировка вас устроит?  smile 


--------------------
Account removed
PM MAIL   Вверх
Любитель
Дата 5.2.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Ага, если ещё добавить жалкое подобие - это нас устроит  smile 


--------------------
PM MAIL ICQ Skype   Вверх
LSD
Дата 5.2.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Sun @  5.2.2007,  18:49 Найти цитируемый пост)
Вот когда добьетесь производительности от программы написанной на каком нибудь другом языке, отличном от С/С++ (ассемблер не предлагать), тогда я сниму перед вами шляпу.

Fortran подойдет? smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Любитель
Дата 5.2.2007, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



LSD, только математика. Эффективное управление памятью - сомневаюсь. Но собсно говоря и плюсы не совсем дял того создавались. Есть Си - хороший по своему, но по идеолгоии далёкий от плюсов.

Добавлено @ 19:04 
[offtop]
млин что-то я совсем - очепятки горой идут  smile 
[/offtop]

Это сообщение отредактировал(а) Любитель - 5.2.2007, 19:04


--------------------
PM MAIL ICQ Skype   Вверх
LSD
Дата 5.2.2007, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Любитель @  5.2.2007,  19:01 Найти цитируемый пост)
только математика. Эффективное управление памятью - сомневаюсь. Но собсно говоря и плюсы не совсем дял того создавались.

Есть не так много вещей кроме математики, способных загрузить процессор на 100%.
И вообще какое это имеет отношение к тому, что я написал?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
esperant0
Дата 5.2.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: нет
Всего: 14



Цитата(LSD @ 5.2.2007,  19:31)
 Есть не так много вещей кроме математики, способных загрузить процессор на 100%.
И вообще какое это имеет отношение к тому, что я написал?

Есть бесконечное количество вещей кроме математики способных загрузить проц на 100%


С точки зрения вычислимости  C=C++


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
MAKCim
Дата 5.2.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(esperant0 @  5.2.2007,  20:27 Найти цитируемый пост)
С точки зрения вычислимости  C=C++

да я думаю
С = C++ = Pascal = Delphi = ... (на одной архитектуре)
разница будет только в "хорошести" компиляторов


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
nerezus
Дата 5.2.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Не нравятся указатели.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 5.2.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(nerezus @  5.2.2007,  20:31 Найти цитируемый пост)
Не нравятся указатели.

знак * ?



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Void
Дата 5.2.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(MAKCim @  5.2.2007,  22:31 Найти цитируемый пост)
С = C++ = Pascal = Delphi = ... (на одной архитектуре)
разница будет только в "хорошести" компиляторов 

Однако возможности компилятора по оптимизации в некоторой мере зависят и от свойств языка. Пример: введение restrict в C99.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Alexeis
Дата 5.2.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(nerezus @  5.2.2007,  20:31 Найти цитируемый пост)
Не нравятся указатели. 

  Не очень прозрачные и не очевидные. Насколько мне известно, главная проблема плюсов это утечки памяти. Предвижу комментарии, типа утечки только у чайников, но помните, что профи не рождаются, а становятся благодаря большому опыту и знаниям, но все это не приходит вмиг! А живем мы раз и хочется (да и нужно) постоянно иметь результат работы, а не только потом, спустя годы.
  Вот только сегодня уперся - дебагер виснет на операции delete[] m_bufer, при этом просто виснет и ничего не сообщает. Даже код ошибки узнать нельзя, потому что после ничего не выполняется. Указатель с виду "хороший", запретных операций тоже, на глаз не видно, хотя точно есть, но где неочевидно. 
  Сишники будут активно возмущаться, но я все скажу. ИМХО указатели это вообще прошлый век, и пора от них совсем отказываться, как от плохого стиля программирования, такого как GoTo и т.д.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Sartorius
Дата 5.2.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Цитата

С = C++ = Pascal = Delphi = ... (на одной архитектуре)
разница будет только в "хорошести" компиляторов

 Это что значит? По performance что ли? Не думаю. Чем более формален язык -  тем эффективние код.
Поэтому в ряду ASM - FORTRAN - C - C++ - Pascal скорость кода убывает

Цитата

Не нравятся указатели. 


 Испльзуйте smart pointers.... Контроль за памятью - это не забота языка и к языку никакого отношения не имеет. Это уже библиотеки. База у С - достаточная. Компилятор должен обеспечивать только корректное обращение по указанному адресу.

Это сообщение отредактировал(а) Sartorius - 5.2.2007, 21:11
PM MAIL ICQ   Вверх
MAKCim
Дата 5.2.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Sartorius
Цитата(esperant0 @  5.2.2007,  20:27 Найти цитируемый пост)
С точки зрения вычислимости  C=C++ 

Цитата(MAKCim @  5.2.2007,  20:31 Найти цитируемый пост)
да я думаю
С = C++ = Pascal = Delphi = ... (на одной архитектуре)
разница будет только в "хорошести" компиляторов

Цитата(Sartorius @  5.2.2007,  21:08 Найти цитируемый пост)
Чем более формален язык -  тем эффективние код.

любой язык описан формально
Цитата(Sartorius @  5.2.2007,  21:08 Найти цитируемый пост)
Поэтому в ряду ASM - FORTRAN - C - C++ - Pascal скорость кода убывает

да ты что?
все зависит от компилятора
в большинстве случаев код плохого программиста на ассемблере будет хуже кода хорошего С-компилятора
И вообще, что за понятие такое: скорость кода?

Это сообщение отредактировал(а) MAKCim - 5.2.2007, 21:18


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Sartorius
Дата 5.2.2007, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37




Цитата

все зависит от компилятора
в большинстве случаев код плохого программиста на ассемблере будет хуже кода хорошего С-компилятора


Ясное дело при прочих равных условиях  smile 

Цитата

любой язык описан формально


 Да.. ерунду сказал. ...

Чем ниже уровень языка - тем эффективнее код.

ЗЫ Что за вычислимость такая? Можно говорить о вычислимости выражения и т.п. А код здесь причем?

Это сообщение отредактировал(а) Sartorius - 5.2.2007, 21:25
PM MAIL ICQ   Вверх
MAKCim
Дата 5.2.2007, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Sartorius @  5.2.2007,  21:23 Найти цитируемый пост)
ЗЫ Что за вычислимость такая? Можно говорить о вычислимости выражения и т.п. А код здесь причем?

ну видно имелось в виду что-то типа этого
Код

int a, b, c, d, e, f = 9876;
int x = (a + b) * (d - e) / f - 1;




--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
esperant0
Дата 5.2.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: нет
Всего: 14



По простому так. 


И С и С++ эквивалентны машине тьюринга. А соответсвенно и эквиваленты один другому.


Эквивалентны машине тьюринга, это значит они могут симулировать М.Т.  И М.Т может симулировать их.


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
Romikgy
Дата 5.2.2007, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



1. я не хотел делить С и С++, имхо это практически одно и тоже (хотя различий хватает),
и в данном топике , я бы хотел увидеть обсуждения С++
2. сравнивать языки друг с другом , конечно хорошо , но хотелось бы видет именно недостатки и достоинства С++
Цитата(MAKCim @  5.2.2007,  16:47 Найти цитируемый пост)
единственная проблема С++ - препроцессор

точнее можно?
Цитата(Любитель @  5.2.2007,  16:58 Найти цитируемый пост)
Недостатков - много, не спорю.

по подробнее плз
Цитата(nerezus @  5.2.2007,  19:31 Найти цитируемый пост)
Не нравятся указатели. 

чем можно узнать?
Цитата(Alexeis @  5.2.2007,  20:08 Найти цитируемый пост)
главная проблема плюсов это утечки памяти

да , конечно запутано , но это дело привычки имхо , и очепяток  smile 
Цитата(Void @  5.2.2007,  20:01 Найти цитируемый пост)
Пример: введение restrict в C99. 

чет я не понял чем эта вещь хороша?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Daevaorn
Дата 5.2.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(Alexeis @  5.2.2007,  22:08 Найти цитируемый пост)
Насколько мне известно, главная проблема плюсов это утечки памяти. 

это проблема у тех кто не пользуется smart pointer'ами. Я уже не помню когда писал сам "delete"/"delete[]".
PM MAIL WWW   Вверх
nerezus
Дата 5.2.2007, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

знак * ?
 Нет, сама необходимость их использовать.

Цитата

ИМХО указатели это вообще прошлый век, и пора от них совсем отказываться, как от плохого стиля программирования, такого как GoTo и т.д.
 +1 =) чисто интуитивно )

Цитата

Испльзуйте smart pointers
 А можно поподробнее?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Romikgy
Дата 5.2.2007, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(nerezus @  5.2.2007,  21:04 Найти цитируемый пост)
Нет, сама необходимость их использовать.

 smile имхо STL можно vector  smile 
Цитата(nerezus @  5.2.2007,  21:04 Найти цитируемый пост)
А можно поподробнее?

тоже интересно послушать smile

кса и некто не говорит о сильных сторонах С++ smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Daevaorn
Дата 5.2.2007, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(Romikgy @  5.2.2007,  23:10 Найти цитируемый пост)
кса и некто не говорит о сильных сторонах С++ 

Они априори ясны разумным людямsmile
PM MAIL WWW   Вверх
Void
Дата 5.2.2007, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(Romikgy @  5.2.2007,  23:47 Найти цитируемый пост)
Пример: введение restrict в C99. 

чет я не понял чем эта вещь хороша? 

Позволяет указать компилятору, что данный указатель… э-э… не подвержен aliasing, тем самым позволяя более агрессивные оптимизации.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Romikgy
Дата 5.2.2007, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Daevaorn @  5.2.2007,  21:12 Найти цитируемый пост)
Они априори ясны разумным людям

здесь не все настолько разумны! плз по буквенно и медленно , так что бы поняли все , включая чайников!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Sartorius
Дата 5.2.2007, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Цитата

агрессивные оптимизации. 
  и агрессивный компилятор smile 

 
PM MAIL ICQ   Вверх
skyboy
Дата 5.2.2007, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(nerezus @  5.2.2007,  21:04 Найти цитируемый пост)
А можно поподробнее? 

если провести параллель - в Delphi так реализованы экземпляры - интерфейсы - вместо вызова конструктора вызывается getInstance(увеличивает счетчик ссылок на 1), деструктор тоже не вызывается, а вызывается специальный метод, который уменьшает количество ссылок на 1. при достижении счетчиком ссылок 0, интерфейс выбрасывается из памяти без привлечения программиста. такая же фишка  - в паттерне "одиночка", только там всё через статические поля класса. А "умные указатели" реализуются на шаблонах С++.
Я правильно понимаю тему гребли, товарищи С++-ники?
PM MAIL   Вверх
Romikgy
Дата 5.2.2007, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



т.е. 
Цитата(Void @  5.2.2007,  21:28 Найти цитируемый пост)
restrict

это плюс этого языка
Цитата(Void @  5.2.2007,  21:28 Найти цитируемый пост)
более агрессивные оптимизации.

по направлению оптимизации?!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Void
Дата 5.2.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Romikgy, скорее костыль, заплатка.

Я к тому, что язык влияет на возможности оптимизатора. Обладая большей информацией о коде (система типов и т.д.) компилятор вправе делать более смелые предположения, не рискуя нарушить семантику кода.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Romikgy
Дата 5.2.2007, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Void @  5.2.2007,  22:09 Найти цитируемый пост)
скорее костыль, заплатка.

т.е. это минус?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Void
Дата 5.2.2007, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Romikgy, ты можешь отвлечься от понятий абсолютного добра и зла? smile

Это плюс, потому что позволяет компилятору лучше оптимизировать код.
Минус дизайну языка, что для этого вообще понадобилось специальное ключевое слово. И тем не менее, дизайн языка логично проистекает из условий того времени и т.д.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Beltar
Дата 5.2.2007, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



<Стерто>
Модераторы, уберите плиз.

Это сообщение отредактировал(а) Beltar - 5.2.2007, 23:48


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Romikgy
Дата 6.2.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Void @  5.2.2007,  22:21 Найти цитируемый пост)
ты можешь отвлечься от понятий абсолютного добра и зла? 

гна, ясности хоцца
Цитата(Void @  5.2.2007,  22:21 Найти цитируемый пост)
Это плюс, потому что

Цитата(Void @  5.2.2007,  22:21 Найти цитируемый пост)
Минус дизайну языка, что для этого

хмммм как все запутано ...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
mr.DUDA
Дата 6.2.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 4
Всего: 232



Возвращаясь к теме инклюдов, отвечаю Sun: нет, "нас" не испортили визарды и фреймворки. Вопрос тут не в том, "как правильно нужно делать и почему", а в том "почему в С++ приходится подстраиваться под неудобный препроцессор" smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Sun
Дата 6.2.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Цитата(mr.DUDA @  6.2.2007,  07:33 Найти цитируемый пост)
Вопрос тут не в том, "как правильно нужно делать и почему", а в том "почему в С++ приходится подстраиваться под неудобный препроцессор" smile  

Он не неудобен - он прост. Не нравтяся инклюды - пиши код в одном текстовом файле. Не нравится препроцессор - не используй. Это всё вещи опциональные и вспомагательные. Можно в конце концов свой препроцессор написать, который будет соединять тексты так, как вам удобно. 

Зато вы хоть знате как всё устроено и как всё работает а некоторую сложность использования С++ я отношу также к его сильной стороне, потому что в среде С++ чайников несравнимо меньше чем среди других популярных языков. 


--------------------
Account removed
PM MAIL   Вверх
MAKCim
Дата 6.2.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Sun @  6.2.2007,  12:31 Найти цитируемый пост)
Не нравтяся инклюды - пиши код в одном текстовом файле.

ну-ну  smile 
теоретически да, а практически...
Цитата(Sun @  6.2.2007,  12:31 Найти цитируемый пост)
Зато вы хоть знате как всё устроено и как всё работает

в смысле?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Sun
Дата 6.2.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 3
Всего: 48



Цитата(MAKCim @  6.2.2007,  09:44 Найти цитируемый пост)
в смысле? 

В прямом. Берётся код программы компилируется в объектный код и линковщиком собирается в исполняемый бинарный код. Все можно посмотреть как оно работает в ассемблере, какие регистры заполняются, что по какому адресу лежит, какие API функции вызываются - красота одним словом. Никаких тебе чёрных ящиков с байткодом или дебрями рантайма.


--------------------
Account removed
PM MAIL   Вверх
MAKCim
Дата 6.2.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Romikgy @  6.2.2007,  00:01 Найти цитируемый пост)
гна, ясности хоцца

restrict "говорит" компилятору, что в данной области видимости, данные, на которые указывает restrict pointer, могут изменяться только через этот указатель
в связи с этим возможны оптимизации с его (компилятора) стороны
правда, вот сейчас ради интереса, решил "поиграться" с restrict и разницы между "с restrict" и "без restrict" не заметил вообще  smile (ставил -O3 на gcc 4.1)

Это сообщение отредактировал(а) MAKCim - 6.2.2007, 13:00


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
LSD
Дата 6.2.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Sun @  6.2.2007,  12:31 Найти цитируемый пост)
Зато вы хоть знате как всё устроено и как всё работает а некоторую сложность использования С++ я отношу также к его сильной стороне, потому что в среде С++ чайников несравнимо меньше чем среди других популярных языков.

Это иллюзия smile Просто чайники дольше ходят по граблям синтаксиса, и только потом переходят на грабли API smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
MAKCim
Дата 6.2.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Sun
а, в этом смысле согласен


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
SergeCpp
Дата 6.2.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Цитата(Is C++ too hard for most programmers?)
It shouldn’t be. C++ has become “expert friendly,” partly by design and partly because the notion of professionalism hasn’t taken root in the software development world.

The best uses of C++ involve deliberate design. You design classes to represent the notions of your application, you organize those classes into hierarchies, you express your algorithms precisely and abstractly (no, that “and” is not a mistake), you use libraries, you build libraries, you devise error handling and resource management strategies and express them in code. The result can be beautiful, efficient, maintainable, etc. However, it’s not just sitting down and writing a series of statements directly manipulating characters, integers, and floating point numbers. Nor is it simply plugging a few pieces of code into a huge corporate framework.

The demands of using C++ well are mainly maturity of system designers and understanding of design and programming technique. They are not primarily demands on the understanding of obscure programming language features. In that sense, the critics are right: Not everybody should write C++, but then I never did claim they should. I do not know if too many people use C++ today, but many do, many more than in the mid-90s, and the use of C++ is still growing in some areas. Obviously, C++ wasn’t too difficult for quite a few people.

C++ is designed to allow you to express ideas, but if you don’t have ideas or don’t have any clue about how to express them, C++ doesn’t offer much help. In that, C++ is not that different from other languages, but it is different from languages/systems/tools/frameworks designed to make it easy to express specific things in a specific domain. The relatively small size of the C++ standard library – primarily reflecting the lack of resources in the ISO C++ standards committee – compared with the huge corporate libraries can be a real disadvantage for C++ developers compared to users of proprietary languages. Given that C++ is designed as a language for writing and using libraries, too many C++ programmers use too few libraries and reinvent the wheel too often. It is far easier to use a good library (such as the C++ STL) than to design and implement it.

Цитата(In retrospect. Wasn't the decision to trade off programmer efficiency and security and and software reliability in exchange for runtime performance a fundamental mistake?)
Well, I don’t think I made such a tradeoff. I want elegant and efficient code. Sometimes I get it. The efficiency vs. correctness, efficiency vs. programmer time, efficiency vs. high level, etc. dichotomies are largely bogus.

What I did do was to design C++ as a systems programming language first of all: I wanted to be able to write device drivers, embedded systems, and other code that needed to use hardware directly. I still want that. Next, I wanted C++ to be a good language for designing tools. That required flexibility and performance, but also the ability to express elegant interfaces. My view was that to do higher level stuff, to build complete applications, you first needed to buy, build, or borrow libraries providing appropriate abstractions. Often, when people have trouble with C++, the real problem is that they don’t have appropriate libraries available – or that they can’t find the libraries that are available.

Other languages have tried to more directly support high-level applications.
That (also) works, but often that support comes at the cost of specialization. Personally, I wouldn’t design a tool that could do only what I wanted – I aim for generality.

Цитата(...)
In theory, the answer is simple: educate our software developers better, use more appropriate design methods, and design for flexibility and for the long haul. Reward correct, solid, and safe systems. Punish sloppiness. In reality, that’s essentially impossible. People want new fancy gadgets right now and reward people who deliver
them cheaply, buggy, and first. People don’t want inconvenience, don’t want to learn new ways of interacting with their computers, don’t want delays in delivery, and don’t want to pay extra for quality (unless it’s obvious up front – and often not even then). Even major security problems and crashes seem not to make people willing to change their use of software – and without changes in user behavior, the software suppliers are unlikely to change.

Полный текст беседы со Страуструпом 1 декабря 2006 (PDF, 74 K)

PM MAIL WWW ICQ   Вверх
SergeCpp
Дата 6.2.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Цитата(Alexeis @  5.2.2007,  23:08 Найти цитируемый пост)
...от плохого стиля программирования, такого как GoTo...

Structured Programming with go to Statements. Donald Ervin Knuth (PDF, 2.9 M)

PM MAIL WWW ICQ   Вверх
Sartorius
Дата 6.2.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Цитата

but if you don’t have ideas or don’t have any clue about how to express them, C++ doesn’t offer much help
  smile  ИМХО как и любой другой язык
Цитата

In theory, the answer is simple: educate our software developers better

 Интересно это о разработчиках какой страны? (Ну не знаю, где сейчас Страуструп живет... smile )
Цитата

People don’t want inconvenience, don’t want to learn new ways of interacting with their computers

 Ну не знаю ... не знаю

Это сообщение отредактировал(а) Sartorius - 6.2.2007, 16:42
PM MAIL ICQ   Вверх
Rodman
Дата 6.2.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



Цитата(Sartorius @  6.2.2007,  15:35 Найти цитируемый пост)

but if you don’t have ideas or don’t have any clue about how to express them, C++ doesn’t offer much help

под лежачий камень вода не течет - так и здесь...

но если есть идеи, то С++ любую из них реализует...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
SergeCpp
Дата 7.2.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Преподавание информатики: потерянная дорога
Никлаус Вирт
Приветствие на открытии Международной конференции по преподаванию информатики ITiCSE
г. Аархус (Дания), 24 июня 2002 г.

Цитата
Вспоминается рассказ Э.Дейкстры о его ночном кошмаре после чтения спецификаций нового языка программирования PL/1 в 1965 г. Ему представилось, что в будущем программирование приравняют к выучиванию PL/1, а информатику — к овладению OS/360 JCL <речь идет о языке программирования и языке управления заданиями для компьютеров фирмы IBM, печально известных своим крайне неудачным дизайном; российские программисты старшего поколения помнят, что это такое, по опыту работ на ЕС ЭВМ — прим. перев.>. Достаточно заменить PL/1 на C++ или Java, а JCL — на Windows или Linux, и вы чудесным образом перенесетесь в настоящее.

Цитата
Порочный круг был однажды разорван, когда распространился Паскаль. При поддержке коллег-единомышленников и в упорном противостоянии рутинерам, Паскаль распространился в учебных заведениях и проник в индустрию. Это произошло, несмотря на могучую конкуренцию со стороны индустрии и других больших организаций, в соперничестве с языками PL/1, Алгол 68 и Ада. Однако наследники Паскаля, существенно его превосходившие, Модула-2 и Оберон, не получили должного внимания среди преподавателей, и сами пали перед лицом самого недостойного из соперников — C. Самого недостойного, т.к. в этом языке были нарушены все открытые к тому времени принципы серьезного программирования. Он запутывает студентов, допуская разный смысл для x = y и y = x и принуждая всех писать x = = y вместо обычного x = y. Только за одни эти пороки он заслуживает изгнания из учреждений образования. Однако сей уродливый синтаксис был целиком воспроизведен в языке Java, принятие которого академическим сообществом произошло, отчасти благодаря этой преемственности.


PM MAIL WWW ICQ   Вверх
Sartorius
Дата 7.2.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Цитата

Он запутывает студентов, допуская разный смысл для x = y и y = x и принуждая всех писать x = = y вместо обычного x = y. 


 Какая разница какой знак приписать операции. В рапире вообще "->" для присвоения использовалось. ИМХО к любому более менее очевидному синтаксису достаточно легко привыкнуть.
PM MAIL ICQ   Вверх
Любитель
Дата 7.2.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(MAKCim @  6.2.2007,  12:57 Найти цитируемый пост)
правда, вот сейчас ради интереса, решил "поиграться" с restrict и разницы между "с restrict" и "без restrict" не заметил вообще 

По-моему очень многие компилеры, если и поддерживают рестрикт, то тем не менее просто его игнорируют. Также, как скажем инлайн. Лично я против неизкоуровневой оптимизации со стороны програмиста в высокоуровневых языках. Нефиг - пусть компилер сам старается  smile 

Romikgy, недостатки в недоделанности на самом деле. Тот же языковой инклюд. Возможность нормального разделения объявления и реализации шаблонов (хотя, конечно, исходники, либо какой-то псевдокод все равно понадобится при компиляции). Спецификации исключений, так недружащие с шаблонами и вообще вызывающие много споров. Функциональная недоделанность стандартной библиотеки (по сравнению со многими другими языками). Отсутствие STL везде где только можно  smile В частности мне бы хотелось иметь стандартизированный прототип main, принимающий любой STL-совместимый контейнер с std::basic_string. Вообще наличие всяких WinMain вызывает мое недовольство. По мне так так ограничить по стандарту несоклько прототипов, а остальное запретить! Отсутствие естественных final(sealed). Да и вообще достаточно много.. Но повторюсь, это не потому что язык плохой - а просто недоделанный.

Цитата(Alexeis @  5.2.2007,  21:08 Найти цитируемый пост)
Сишники будут активно возмущаться, но я все скажу. ИМХО указатели это вообще прошлый век, и пора от них совсем отказываться, как от плохого стиля программирования, такого как GoTo и т.д.

Уже было сказано, но потворюсь - не о тех плюсах думаете  smile delete - используется чрезвычайно редко. Либо в тривиальных случаях (когда выделение/освобождение в одном блоке), либо в библиотеках самрт-поинтеров  smile В сях да free забывать нельзя, но как бы разный профиль...

Цитата(LSD @  5.2.2007,  19:31 Найти цитируемый пост)
Есть не так много вещей кроме математики, способных загрузить процессор на 100%.
И вообще какое это имеет отношение к тому, что я написал? 

Цитата(Sun @  5.2.2007,  18:49 Найти цитируемый пост)
Вот когда добьетесь производительности от программы написанной на каком нибудь другом языке, отличном от С/С++ (ассемблер не предлагать), тогда я сниму перед вами шляпу

Не математикой единой...


--------------------
PM MAIL ICQ Skype   Вверх
SergeCpp
Дата 7.2.2007, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



В VC6 опция оптимизации, относящаяся к aliasing, ускорила одну из моих программ на 5%

PM MAIL WWW ICQ   Вверх
MAKCim
Дата 7.2.2007, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Любитель @  7.2.2007,  18:17 Найти цитируемый пост)
По-моему очень многие компилеры, если и поддерживают рестрикт, то тем не менее просто его игнорируют. Также, как скажем инлайн. Лично я против неизкоуровневой оптимизации со стороны програмиста в высокоуровневых языках. Нефиг - пусть компилер сам старается

GCC полностью поддерживает C99, а значит restrict, кроме того была включена оптимизация... вообщем непонятно, каким образом можно оптимизировать случаи, когда применяется restrict  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Beltar
Дата 8.2.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Цитата

но если есть идеи, то С++ любую из них реализует...


Все сразу и ничего вместе.

Кстати, а в C есть параметры по умолчанию?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Romikgy
Дата 8.2.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Beltar @  8.2.2007,  12:22 Найти цитируемый пост)
Кстати, а в C есть параметры по умолчанию?

есть


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Void
Дата 8.2.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



А вот именованных параметров (лично мне) не хватает и в C++, и в Delphi, и в Java, и в C#…


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Daevaorn
Дата 8.2.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(Romikgy @  8.2.2007,  15:18 Найти цитируемый пост)
есть 

Не совсем. Есть скорей всего только в С99. Ну и в С++ конечно.
Цитата(Void @  8.2.2007,  17:20 Найти цитируемый пост)
А вот именованных параметров (лично мне) не хватает и в C++, и в Delphi, и в Java, и в C#… 

за-то в С++ они почти красиво реализуются средствами языка. smile
PM MAIL WWW   Вверх
Beltar
Дата 8.2.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Цитата

именованных параметров


А что это?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
MAKCim
Дата 8.2.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Romikgy @  8.2.2007,  14:18 Найти цитируемый пост)
есть 

нету
Цитата(Daevaorn @  8.2.2007,  17:40 Найти цитируемый пост)
Есть скорей всего только в С99

нету


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Romikgy
Дата 8.2.2007, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(MAKCim @ 8.2.2007,  17:58)
Цитата(Romikgy @  8.2.2007,  14:18 Найти цитируемый пост)
есть 

нету
Цитата(Daevaorn @  8.2.2007,  17:40 Найти цитируемый пост)
Есть скорей всего только в С99

нету

Я имел ввиду С++ , а не просто С
просто не обратил внимания на то что в том посте без плюсов

PS многие здесь программируют на чистом си без плюсов?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Void
Дата 8.2.2007, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Beltar
Код
# это вызов функции
somefunction(x, arg1 = y, arg2 = z)

Помогает, когда у функции много параметров, а указать надо лишь часть. И читается в таком случае лучше.

Это сообщение отредактировал(а) Void - 8.2.2007, 19:07


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Beltar
Дата 8.2.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Но в Delphi тоже можно:
function f(X:Integer;Y:Integer=1):Integer;

И вызывать можно f(x) и f(x,y).

В чем разница?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Void
Дата 8.2.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Попробую словами: при вызове функции опциональные (строго говоря, не только) аргументы можно указывать в произвольном порядке с помощью синтаксиса <имя параметра> = <значение>.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Beltar
Дата 8.2.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Теперь понятно.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Romikgy
Дата 8.2.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Void @  8.2.2007,  18:29 Найти цитируемый пост)
Попробую словами: при вызове функции опциональные (строго говоря, не только) аргументы можно указывать в произвольном порядке с помощью синтаксиса <имя параметра> = <значение>. 

пример можно


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
SergeCpp
Дата 8.2.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Про именованные аргументы Страуструп писал в D&E

Это было предложение Роланда Хартингера

Причина отклонения: группа по расширениям единодушно решила,
что предложение не даёт почти ничего нового,
приведёт к несовместимости с существующим кодом
и будет способствовать распространению неудачного стила программирования

Там есть и альтернативы именованным аргументам,
например, дополнительные типы для представления наиболее типичных вариантов

Void, а ну марш покупать и читать D&E! user posted image

user posted image


Это сообщение отредактировал(а) SergeCpp - 8.2.2007, 20:59
PM MAIL WWW ICQ   Вверх
Void
Дата 8.2.2007, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Я Страуструпа уважаю (а вопросы обратной совместимости уважать себя просто заставляют smile ), но подход с реализацией всего что только можно через библиотеки, не трогая ядро языка, и то, во что он [подход] превратил нынешний C++, как-то не очень… На когда-то желанный C++0x теперь приходится смотреть с опаской.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
SergeCpp
Дата 8.2.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



PM MAIL WWW ICQ   Вверх
Любитель
Дата 8.2.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Насчёт именованных параметров - никогда не будет на уровне языка хотя бы потому, что мы имеем права (и некоторые так делают) в хейдере называть параметры по одному, а в сорсе - по другому. Скажем типично (хотя я не приветствую):
Код

// my_func.h
void my_func(int height, int width);

// my_func.cpp
void my_func(int h, int w)
{
    // ...
}


Естьboost::parameter. Не вглядывался в реализацию, но использование достаточно приятно, правда редко нужно.

Насчёт рестрикта - ещё пару слов. Как таковой он должен применяться не к конкретному указателю, а к их парам. Если функция принимает два параметра, то здесь всё понятно (хотя нелогично к какому именно указателю ставить рестрикт). Но допустим, что у функции три параметра. Между двумя первыми гарантировано соблюдение рестрикта, а вот третий может "вклиниться" в любой из первых двух. Вполне возможно, что однако (теоретически) возможна оптимизация. Возможно, что третий указатель, нужен для просто задания элемента (не из массива). То есть существующий синтаксис рестрикта нелогично описывает ситуацию. Получается мы гарантируем отсутствие алиасов с любыми другими указателями - это возможно очень редко.

Кстати,
Цитата(MAKCim @  7.2.2007,  21:19 Найти цитируемый пост)
GCC полностью поддерживает C99, а значит restrict,

Пддержка не означает использование. Компилер вправе поддерживать его на уровне игнорирования (как это обычно бывает с инлайн). Если функция не экспортируется, то глобальная оптимизация зачастую позволяет выявить отсутствие алиасов (и заюзать оптимизацию) без подсказок с нашей стороны (кроме подсказки в опциях компилера  smile ), что на мой взгляд лучше.


--------------------
PM MAIL ICQ Skype   Вверх
Artemios
Дата 9.2.2007, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 10
Всего: 50



Цитата(Romikgy @  8.2.2007,  21:52 Найти цитируемый пост)
пример можно 


Код

>>> def f(a1=1,a2=2,a3=3,a4=4,a5=5):
...         return a1+a2+a3+a4+a5
...
>>> f(a3=25)
37
>>> f()
15
>>> f(3,4,a5=10)
24
>>> f(a5=1,a3=0,a1=2)
9
>>>


Это сообщение отредактировал(а) Artemios - 9.2.2007, 11:30


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
MAKCim
Дата 9.2.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Любитель @  8.2.2007,  23:28 Найти цитируемый пост)
Компилер вправе поддерживать его на уровне игнорирования (как это обычно бывает с инлайн).

какой-то странный уровень поддержки  smile 
если что то игнорируется в GCC (например export), то warning соответствующий появляется


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Любитель
Дата 9.2.2007, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Но ведь с инлайн именно так часто получается. Или register-переменные (которыми никто не пользуется  smile ) -  боюсь, что компилер не обратит внимание на ваше требование. В то же время для других (обычных) переменных он при желании возможно разместит их в регистрах.


--------------------
PM MAIL ICQ Skype   Вверх
SergeCpp
Дата 9.2.2007, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Цитата(Любитель @  9.2.2007,  23:02 Найти цитируемый пост)
...register-переменные (которыми никто не пользуется)...

Последняя stable версия Perl (5.8.8). Начало одной из функций файла util.c
Код
char *
Perl_fbm_instr(pTHX_ unsigned char *big, register unsigned char *bigend, SV *littlestr, U32 flags)
{
    register unsigned char *s;
    STRLEN l;
    register const unsigned char *little
    = (const unsigned char *)SvPV_const(littlestr,l);
    register STRLEN littlelen = l;
    register const I32 multiline = flags & FBMrf_MULTILINE;

    if ((STRLEN)(bigend - big) < littlelen) {
    if ( SvTAIL(littlestr)
         && ((STRLEN)(bigend - big) == littlelen - 1)
         && (littlelen == 1
         || (*big == *little &&
             memEQ((char *)big, (char *)little, littlelen - 1))))
        return (char*)big;
    return Nullch;
    }
//...

Дата модификации файла: 9 января 2006

PM MAIL WWW ICQ   Вверх
Sartorius
Дата 9.2.2007, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 Мнда. Многовато чего-то регистров. А ведь еще и результаты промежуточные где то хранить нада....
PM MAIL ICQ   Вверх
MAKCim
Дата 9.2.2007, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Любитель @  9.2.2007,  21:02 Найти цитируемый пост)
Но ведь с инлайн именно так часто получается. Или register-переменные (которыми никто не пользуется  smile ) -  боюсь, что компилер не обратит внимание на ваше требование

всегда есть
Код

__attribute__((always_inline))

и
Код

register int a __asm__("eax") = 7;

для таких случаев

Добавлено @ 21:48 
Цитата(Sartorius @  9.2.2007,  21:40 Найти цитируемый пост)
Мнда. Многовато чего-то регистров. А ведь еще и результаты промежуточные где то хранить нада....

так 2 регистра еще есть  smile (в худшем случае)


Это сообщение отредактировал(а) MAKCim - 9.2.2007, 21:48


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Любитель
Дата 9.2.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



MAKCim, я, конечно понимаю твои взгляды, но не надо всё же равнять gcc и стандартные плюсы  smile


--------------------
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 9.2.2007, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Любитель @  9.2.2007,  22:46 Найти цитируемый пост)
MAKCim, я, конечно понимаю твои взгляды, но не надо всё же равнять gcc и стандартные плюсы

нет, подожди
В С++ по стандарту inline функция - есть подстановочная функция, а register переменные - переменные в регистрах
т. е любой компилятор номинально обязан все inline функции подставлять непосредственно (благо ограничений в отличие от register переменных нет) и располагать register переменные в регистрах за исключением ситуации, когда отсутствуют свободные регистров, а заниматься оптимизацией должен при включенной оптимизации
т. е я хочу сказать, что в обычном режиме он должен тупо следовать спецификации языка, а со включенной оптимизацией - заниматься эвристикой и прочим шаманством

Это сообщение отредактировал(а) MAKCim - 9.2.2007, 23:14


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Void
Дата 9.2.2007, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



MAKCim
7.1.2/2
Цитата
The inline specifier indicates to the implementation that inline substitution of the function body at the point of call is to be preferred to the usual function call mechanism. An implementation is not required to perform this inline substitution at the point of call; [...]

Между предпочтением и обязательством есть разница.

Добавлено @ 23:42 
7.1.1/3
Цитата
A register specifier has the same semantics as an auto specifier together with a hint to the implementation that the object so declared will be heavily used. [Note: the hint can be ignored and in most implementations it will be ignored if the address of the object is taken. —end note]



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Любитель
Дата 10.2.2007, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Что бегло нашёл по restrict:
Код

The intended use of the restrict qualifier (like the register storage class) is to promote optimization


Добавлено @ 00:45 
MAKCim, кстати выше я говорил про __atribute__ и __asm__.


--------------------
PM MAIL ICQ Skype   Вверх
SergeCpp
Дата 10.2.2007, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Вот выдержки из довольно старой статьи Денниса Ритчи (1988, noalias comments to X3J11)
Цитата
      `Noalias' is much more dangerous; the committee is planting timebombs that are sure to explode in people's faces.  Assigning an ordinary pointer to a pointer to a `noalias' object is a license for the compiler to undertake aggressive optimizations that are completely legal by the committee's rules, but make hash of apparently safe programs.  Again, the problem is most visible in the library; parameters declared `noalias type *' are especially problematical. 

      In order to write such a library routine using the new parameter declarations, it is in practice necessary to violate 3.3.4: `A pointer to a noalias-qualified type ... may be converted to ... the non-noalias-qualified type.  If the pointed to object is referred to by means of the converted pointer, the behavior is undefined.' Thus, the problem that occurs with `const' is now much worse; there are no interesting and legal uses of strchr. 

      How do you code a routine whose prototype specifies a noalias pointer?  If you fail to violate 3.3.4, but instead try to rewrite the declarations of temporary variables to make them agree in type with parameters, it becomes hard to be sure that the routine works.  Consider the specification of strtok: 

    char *strtok(noalias char *s1, noalias const char *s2);

It retains a static pointer to its writable, `noalias' first argument.  Can you be sure that this routine can be made safe under the rules?  I have studied it, and the answer is conditionally yes, provided one accepts certain parts of the Standard as gospel (for example that `noalias' handles will not be synchronized at certain times) while ignoring other parts.  It is a very dodgy thing.  For other routines, it is certain that complete rewriting is necessary: qsort,  for example, is full of pointers that rove the argument array and change it here and there.  If these local pointers are qualified with `noalias,' they may all be pointing to different virtual copies of parts of the array; in any event, the argument itself may have a virtual object that might be completely untouched by the attempt to sort it. 
      The `noalias' rules have the assignment and cast restrictions backwards.  Assigning a plain pointer to a const-qualified pointer (pc = p) is well-defined by the rules and is safe, in that it restricts what you can do with pc.  The other way around (p = pc) is forbidden, presumably because it creates a writable access path to an unwritable object. With `noalias,' the rules are the same (pna = p is OK, p = pna is forbidden), but the realistic safety requirements are completely different.  Both of these assignments are equally suspicious, in that both create two access paths to an object, one manifestation of which might be virtual. 

      Here is another way of observing the asymmetry: the presence of `const type *' in a parameter list is a useful piece of interface information, but `noalias type *' most assuredly is not.  Given the declaration 

    memcpy(noalias void *s1, const noalias void *s2, size_t n);

what information can one glean from it?  Some committee members apparently believe that it conveys either to the reader or to the compiler that the routine is safe, provided that the strings do not overlap.  They are mistaken. Perhaps the committee's intent is not reflected in the current words of the Standard, but I can find nothing there that justifies their belief.  The rules (page 65, lines 19-20) specify `all objects accessible by these [noalias] lvalues,' which is the entirety of both array arguments. 
      More generally, suppose I see a prototype 

    char *magicfunction(noalias char *, noalias char *);

Is there anything at all I can conclude about the requirements of magicfunction?  Is there anything at all I can conclude about things it promises to do or not to do?  All I learn from the Rationale (page 52) is that such a routine enjoins me from letting the arguments overlap, but this is at variance with the Standard, which gives a stronger injunction. 
      Within the function itself, things are equally bad.  A `const type *' parameter, though it presents problems for strchr and other routines, does usefully constrain the function: it's not allowed to store through the pointer.  However, within a function with a `noalias type *' parameter, nothing is gained except bizarre restrictions: it can't cast the parameter to a plain pointer, and it can't assign the parameter to another noalias pointer without creating unwanted handles and potential virtual objects.  The interface must say noalias, or at any rate does say noalias, so the author of the routine has all the grotesque inventions of 3.5.3 (handles, virtual objects) rubbed in his face, like or not. 

      The utter wrongness of `noalias' is that the information it seeks to convey is not a property of an object at all. `Const,' for all its technical faults, is at least a genuine property of objects; `noalias' is not, and the committee's confused attempt to improve optimization by pinning a new qualifier on objects spoils the language. `Noalias' is a bogus invention that is not necessary, and not in any case sufficient for its apparent purpose. 

      Earlier languages flirted with gizmos intended to help optimization, and generally abandoned them.  The original Fortran, for example, had a FREQUENCY statement that didn't help much, confused people, and was dropped.  PL/1 had `normal/abnormal' and `uses/sets' attributes that suffered a similar fate.  Today, these are generally looked on as adolescent experiments. 

      On the other hand, the insufficiency of `noalias' is suggested by Cray's Fortran compiler, which has 20 separate keywords that control various details of optimization.  They are specified by an equivalent of #pragma,  and thus, despite their oddness, can be ignored when trying to understand the meaning of a program. 

      Perhaps there is some reason to provide a mechanism for asserting, in a particular patch of code, that the compiler is free to make optimistic assumptions about the kinds of aliasing that can occur.  I don't know any acceptable way of changing the language specification to express the possibility of this kind of optimization, and I don't know how much performance improvement is likely to result.  I would encourage compiler-writers to experiment with extensions, by #pragma or otherwise, to see what ideas and improvements they can come up with, but I am certain that nothing resembling the noalias proposal should be in the Standard.

Цитата
      Noalias must go.  This is non-negotiable. 

      It must not be reworded, reformulated or reinvented.  The draft's description is badly flawed, but that is not the problem.  The concept is wrong from start to finish.  It negates every brave promise X3J11 ever made about codifying existing practices, preserving the existing body of code, and keeping (dare I say it?) `the spirit of C.'



Это сообщение отредактировал(а) SergeCpp - 10.2.2007, 01:12
PM MAIL WWW ICQ   Вверх
SergeCpp
Дата 10.2.2007, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Цикл статей Страуструпа о совместимости C и C++

Sibling rivalry: C and C++. AT&T Labs — Research Technical Report. January 2002

C and C++: Siblings. The C/C++ Users Journal. July 2002
C and C++: A Case for Compatibility. The C/C++ Users Journal. August 2002
C and C++: Case Studies in Compatibility. The C/C++ Users Journal. September 2002

Положение дел

David R. Tribble. Incompatibilities Between ISO C and ISO C++

PM MAIL WWW ICQ   Вверх
MAKCim
Дата 10.2.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Void @  9.2.2007,  23:41 Найти цитируемый пост)
Между предпочтением и обязательством есть разница.

но фактически ограничений на сегодня использоанию inline нет, и так как
Цитата

is to be preferred to the usual function call mechanism

то логично было бы в обычном (не оптимизирующем) режиме всегда использовать inline, если это явно указано
тогда бы программист был уверен, как именно будет в итоге выглядеть код
Цитата(Любитель @  10.2.2007,  00:45 Найти цитируемый пост)
MAKCim, кстати выше я говорил про __atribute__ и __asm__. 

я понял



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
mr666
Дата 11.2.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 28.3.2006

Репутация: нет
Всего: нет



Вроде современные компиляторы игнорируют register переменные... анализируя код ..
PM MAIL   Вверх
Любитель
Дата 11.2.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



MAKCim, ну всё же, если компилер будет просто игнорировать инлайн, формально он удовлетворяет стандарту. К тому же не всегда встраивание возможно. Например, имеем рекурсивную функцию (в тривиальный цикл не разворачиваемую - только с использованием стека). Компилер не сможет её заинлайнить. Да и в жебаге мне кажется любую рекурсивную функцию он встраивать не будет. Игнор инлайна гораздо проще, чем развёртывание рекурсии (даже в цикл).

То же имеем и с регистер, и с рестрикт.


--------------------
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 11.2.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Любитель @  11.2.2007,  19:29 Найти цитируемый пост)
Например, имеем рекурсивную функцию (в тривиальный цикл не разворачиваемую - только с использованием стека). Компилер не сможет её заинлайнить

да как нефиг
пусть есть
Код

static inline void recurse(int N) {
    recurse(N + 1);
}

int main() {
    recurse(0);
    return 0;
}

функция
Код

recurse:
    push ebp
    mov ebp, esp
    sub esp, 4
    mov eax, [ebp + 8]
    mov [ebp - 4], eax
    call recurse
...
main:
    push 0
    call recurse
...

inline
Код

main:
    push 0
    push offset @1
recurse:
    sub esp, 4
    mov eax, [esp + 4]
    mov [esp], eax
    call recurse
@1:
...



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Любитель
Дата 11.2.2007, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Любитель @  11.2.2007,  19:29 Найти цитируемый пост)
в тривиальный цикл не разворачиваемую

 smile Только что писал про tail recursion в Nemerle.

А вообще оффтопик почуть пошёл.


--------------------
PM MAIL ICQ Skype   Вверх
unicuum
Дата 15.3.2007, 04:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Как утверждает создатель С++ Бьерн Страуструп в его третьем издании книги «Язык программирования С++» - «не важно на каком языке программируешь, важно что из себя представляешь ты сам». И я с ним полностью согласен.


--------------------
user posted image
обычный день на винграде
PM   Вверх
esperant0
Дата 15.3.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: нет
Всего: 14



Цитата(unicuum @ 15.3.2007,  04:53)
Как утверждает создатель С++ Бьерн Страуструп в его третьем издании книги «Язык программирования С++» - «не важно на каком языке программируешь, важно что из себя представляешь ты сам». И я с ним полностью согласен.

Это еще Тьюринг доказал. А Страуструп всего лишь процитировал в вольной форме.


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
Любитель
Дата 15.3.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Для результата - почти да. Для процесса - ни в коем случае smile


--------------------
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.3265 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.