LINUX.ORG.RU

Интервью с Бьярном Страустрапом

 ,


0

0

Бьярн Страустрап, автор одного из наиболее широко используемых и успешных языков программирования — C++, пару дней назад дал 8-страничное интервью computerworld.com.au, где рассказал то, что программистам полезно знать о C++:

  • его историю,
  • развитие языка в настоящее время,
  • и его будущее.

>>> Подробности

Ответ на: комментарий от anonymous

>> Аналог чего? Перегрузки оператора+ ? Я бы не делал такие мелкие функции.

>хе-хе-хе. вот он типичный сишник: невежда и копипаста-гей

Тут в параллельном бранче этого треда один плюсофил предлагает вынести имплементацию FontImpl из класса Font и сделать форвардинг вызовов. Там по прикидке будет методов сорок. Без авторефакторинга конечно, так как авторефакторинга такого типа в даже в CDT нет. Предложи решение без копипаста.

А насчет суммы нескольких флоатов/даблов... Я мелько узрел в PDF'ке от Intel процессорную комманду которая может сложить несколько флоатов/даблов за один прием. Компиляторы С++ уже научились эти комманды использовать?

Absurd ★★★
()
Ответ на: комментарий от void_ptr

> Нифигасе.

"Нифигасе" - это то, что твой макрос даже без операторных скобок.

> замечу, что очень быстрая.

Ведет к раздуванию кода и неэффективному использованию кэша -> замедлению программы.

tailgunner ★★★★★
()

Вопрос в другом. Бъярн позиционирует свой язык как язык _универсального_ использования. Может для начала 90х это и было актуально, но сейчас, при наличии такого широкого выбора языков - нафига нужен универсальный?

void_ptr ★★★★
()
Ответ на: комментарий от tailgunner

>Ведет к раздуванию кода и неэффективному использованию кэша -> замедлению программы.

Сам понял что сказал? Это же макрос, инлайн подстановка на уровне препроцессора. С++ был тоже изначально реализован на уровне препроцессора.

void_ptr ★★★★
()
Ответ на: комментарий от void_ptr

>>Написал один раз - работает везде. Называется макросы. Безпроблемное повторное использование гарантировано.

if(a + b > c)
    ...

реализуй.

alex_custov ★★★★★
()
Ответ на: комментарий от void_ptr

>> Ведет к раздуванию кода и неэффективному использованию кэша -> замедлению программы.

> Сам понял что сказал?

Да.

> инлайн подстановка на уровне препроцессора.

Ты понимаешь, что это ведет к раздуванию кода? На это тратится кэш. Вызовы функций на современных процессорах дешевы (за счет того самого кэша), и лучше отдать их оптимизацию компилятору.

> С++ был тоже изначально реализован на уровне препроцессора.

Си++ или "Си с классами"? Си++ был настоящим компилятором - AST, семантический анализ, все дела. Просто на выходе вместо ассемблера - Си. Насчет "Си с классами" - не знаю, но там тоже был отнюдь не стандартный Си-препроцессор.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>> инлайн подстановка на уровне препроцессора.

>Ты понимаешь, что это ведет к раздуванию кода?

По моим наблюдениям бинарный аутпут порожденный Си-компилятором до неприличия медленно раздувается по сравнению с С++.

Absurd ★★★
()
Ответ на: комментарий от Absurd

> Тут в параллельном бранче этого треда один плюсофил предлагает вынести имплементацию FontImpl из класса Font и сделать форвардинг вызовов.

В FontImpl никаких методов не будет, только данные. А все методы будут в Font.

anonymous
()
Ответ на: комментарий от alex_custov

>Ты слегка забыл, что a, b и c, следуя нашему обсуждению, - экземпляры структуры.

Ну С не претендует быть на ООП на уровне макросов :)

void_ptr ★★★★
()
Ответ на: комментарий от Absurd

> По моим наблюдениям бинарный аутпут порожденный Си-компилятором до неприличия медленно раздувается по сравнению с С++.

В огороде бузина, в Киеве дядька.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Ты понимаешь, что это ведет к раздуванию кода? На это тратится кэш. Вызовы функций на современных процессорах дешевы (за счет того самого кэша), и лучше отдать их оптимизацию компилятору.

И где ты в моем примере увидел вызовы функций? Наоборот, там осталась лишь соль всего действа. Через многократные вызовы функций ты все равно прийдешь к выполнению этих арифметических операций.

void_ptr ★★★★
()
Ответ на: комментарий от void_ptr

> #define f1(a,b,c) (a+b>c)?true:false

ппц, у меня нет слов.

на самом деле пример со сравнением слегка надуманный.
вот более реальный пример: параметрическая векторная функция эллипса

p = center + a*cos(t) + b*sin(t);

извольте доставить


anonymous
()
Ответ на: комментарий от alex_custov

>a, b и c, следуя нашему обсуждению, - экземпляры структуры

Пишем тогда структуры, определяя их поля. Для прикола можешь установить поля с указателями на функции (получится квазикласс). И работай, кто мешает? Я не против С++, я против его позиционирования в качестве универсального языка для _фсего_ - _фсего_. Пусть займет свою нишу - и все будут за него рады.

void_ptr ★★★★
()
Ответ на: комментарий от void_ptr

> И где ты в моем примере увидел вызовы функций?

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

anonymous
()
Ответ на: комментарий от void_ptr

>> Ты понимаешь, что это ведет к раздуванию кода? На это тратится кэш. Вызовы функций на современных процессорах дешевы (за счет того самого кэша), и лучше отдать их оптимизацию компилятору.

> И где ты в моем примере увидел вызовы функций?

Ыыы... ладно, еще раз, в надежде на то, что ты не Absurd. Ты экономишь инструкции вызова/возврата (вызовов в твоем примере и прада нет) за счет подстановки кода "по месту". Если объем подставляемого кода больше, чем объем инструкций вызова, суммарный объем кода увеличивается; на его хранение тратися кэш; из-за промахов кэша программа замедляется. Добавь к этому факт, что на современных процессорах вызов функции - дешевая, хорошо оптимизированная операция.

tailgunner ★★★★★
()
Ответ на: комментарий от void_ptr

> Для прикола можешь установить поля с указателями на функции (получится квазикласс)

хе-хе-хе. еще один малограмотный копипаста-гей.

anonymous
()
Ответ на: комментарий от anonymous

>на самом деле пример со сравнением слегка надуманный. вот более реальный пример: параметрическая векторная функция эллипса

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

void_ptr ★★★★
()
Ответ на: комментарий от anonymous

>хе-хе-хе. еще один малограмотный копипаста-гей.

Ну-ну. А сам-то че умеешь? Копипастить свои дурацкие сообщения? А ну замочи про С++, шоб мы все офигели от его запредельной крутости!

void_ptr ★★★★
()
Ответ на: комментарий от void_ptr

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

хе-хе-хе. жжошш чувак.

anonymous
()
Ответ на: комментарий от anonymous

Частица "не" (вернее ее отсутствие) превратило мой пост в прикол. А сам-то ты что думаешь? Или только отжигаешь тролление?

void_ptr ★★★★
()
Ответ на: комментарий от Absurd

>void_ptr (*) (28.06.2008 22:39:15)

гениально, даёшь C++ на препроцессоре C. Вы определённо умеете поднять настроение :)

>Я мелько узрел в PDF'ке от Intel процессорную комманду которая может сложить несколько флоатов/даблов за один прием. Компиляторы С++ уже научились эти комманды использовать?
>Absurd * (*) (28.06.2008 22:53:58)

это называется MMX, SSE и прочая, для аудио/видео полезная штуковина, для всего остального - бесполезный костыль

anonymous
()
Ответ на: комментарий от void_ptr

> Частица "не" (вернее ее отсутствие) превратило мой пост в прикол

с частицей "не" все впорядке. мне про питон руби и сборку мусора понравилось

anonymous
()
Ответ на: комментарий от anonymous

>> Тут в параллельном бранче этого треда один плюсофил предлагает вынести имплементацию FontImpl из класса Font и сделать форвардинг вызовов.

>В FontImpl никаких методов не будет, только данные. А все методы будут в Font.

Хорошая еще-одна-плюсовая-быдлоидиома. Только вот понадобилось допустим нам унаследоваться от класса, написанного таким идиологически подкованным С++-гуру - что будем делать?

Absurd ★★★
()
Ответ на: комментарий от anonymous

>>Я мелько узрел в PDF'ке от Intel процессорную комманду которая может сложить несколько флоатов/даблов за один прием. Компиляторы С++ уже научились эти комманды использовать?

>это называется MMX, SSE и прочая, для аудио/видео полезная штуковина, для всего остального - бесполезный костыль

А я думал для 3D рендеринга очень полезная вещь.

Absurd ★★★
()
Ответ на: комментарий от tailgunner

>> По моим наблюдениям бинарный аутпут порожденный Си-компилятором до неприличия медленно раздувается по сравнению с С++.

>В огороде бузина, в Киеве дядька.

По существу что-то будет? Есть пример медленного Си-кода, где медленность вызвана применением макросов?

Absurd ★★★
()
Ответ на: комментарий от alex_custov

>наследуйся, кто тебе на даёт?

Весь код использующий такой класс Font построен на семантике значений.

Absurd ★★★
()
Ответ на: комментарий от Absurd

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

anonymous
()
Ответ на: комментарий от tailgunner

>> Однако неясно, в чем заключается ой.

>В вере. Мы говорим об узкотехнических вещах, в них нужно разбираться. Знать историю, иметь опыт.

Да что вы говорите. И где же вера? Чтобы понимать в "узкотехнических вещах" достаточно уметь понимать логическое объяснение. У Луговского и якобы-Луговского я его вижу на поверхности, у тебя - его надо вытягивать клещами.

>> Таки в первом приближении я, как человек несильно разбирающийся, поверю ему, нежели красноглазым лоровцам, которые кричат

>Это говорит только о том, что стиль "а-ля Луговский" на тебя хорошо действует.

Стиль "а-ля Луговский" - это стиль, когда рационально обосновывают точку зрения?

Таки мое утверждение было скипнуто посередине, и вторая, самая важная часть осталась без ответа. Наверное, отмазать "плюсоебов" от гентушнегов не получается? Вот они со стороны выглядят совершенно одинаково.

vit122
()
Ответ на: комментарий от anonymous

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

Еще один предварительный проектировщик.

Absurd ★★★
()
Ответ на: комментарий от Absurd

>>> По моим наблюдениям бинарный аутпут порожденный Си-компилятором до неприличия медленно раздувается по сравнению с С++.

>> В огороде бузина, в Киеве дядька.

> По существу что-то будет?

Я уже сказал по существу.

tailgunner ★★★★★
()
Ответ на: комментарий от Absurd

>_Возвращать InputStream_ в Яве - обычное дело.

Жалко, что вы продемонстрировали свой настоящий уровень настолько поздно. В бесполезном общении с вами было потеряно слишком много времени :(((

eao197 ★★★★★
()
Ответ на: комментарий от Absurd

> Еще один предварительный проектировщик.

хе-хе-хе. Ты бы еще от стринга унаследовался, бездарь.

anonymous
()
Ответ на: комментарий от vit122

>Наверное, отмазать "плюсоебов" от гентушнегов не получается? Вот они со стороны выглядят совершенно одинаково.

Мне они шлакварщиков напоминают. Идеологии плюсов и шлаквари очень схожи.

Absurd ★★★
()
Ответ на: комментарий от anonymous

> На западе ООП преподают только на Ява, а не каких-то говноплюсах.

Ткнешь тут в курс OOP, да еще и на Java: http://www-inst.eecs.berkeley.edu/classes-eecs.html#cs ?

ООП лучше всего преподавать как концепцию в картинках, с примерами на C#/Java/Python/Ruby/C++, а еще объяснять, что оно не нужно. ;)

sv75 ★★★★★
()
Ответ на: комментарий от eao197

>>_Возвращать InputStream_ в Яве - обычное дело.

>Жалко, что вы продемонстрировали свой настоящий уровень настолько поздно. В бесполезном общении с вами было потеряно слишком много времени :(((

Метод для выфетчивания blob'а в драйвере Оракла возвращает InputStream. Apache http клиент возвращает ответ сервера в виде InputStream. Разобрался бы в вопросе.

Absurd ★★★
()
Ответ на: комментарий от Absurd

> Мне они шлакварщиков напоминают. Идеологии плюсов и шлаквари очень схожи.

хе-хе-хе. ты лучше себя дебаж, быдлокодер.

anonymous
()
Ответ на: комментарий от vit122

> И где же вера?

Слово "вера" использовал ты, так что она где-то у тебя.

> Стиль "а-ля Луговский" - это стиль, когда рационально обосновывают точку зрения?

Нет, это когда много умных слов и эффектных оскорблений. Умные слова заменяют доказательства, эффектные оскорбления придают живость изложению. В результате получается увлекательное представление.

tailgunner ★★★★★
()
Ответ на: комментарий от Absurd

>Идеологии плюсов и шлаквари очень схожи.

Ну Вы это, не путайте божий дар с яичницой. Причем тут Слака к плюсам? Они схожи только в одном - хороший инструмент. Но в случае С++ кричат, что это _единственный_ вменямый язык.

void_ptr ★★★★
()
Ответ на: комментарий от anonymous

>> Еще один предварительный проектировщик.

>хе-хе-хе. Ты бы еще от стринга унаследовался, бездарь.

std::string - хороший пример плохо спроектированного класса [Sutter 2004].

Сразу видно предварительные проектировщики писали.

Absurd ★★★
()
Ответ на: комментарий от Absurd

Всем быдлокодерам включая "Луговского" посвящается:

CW: It often feels like a large number of programmers have never really used templates, even if they are C++ programmers.

BS: You may be right about that, but many at least - I think most - are using the templates through the STL (or similar foundation libraries) and I suspect that the number of programmers who avoid templates is declining.

CW: Why do you think this is?

BS: Fear of what is different from what they are used to, rumors of code bloat, potential linkage problems, and spectacular bad error messages.

P.S: Mифотворцы хреновы !

anonymous
()
Ответ на: комментарий от Absurd

>Мне они шлакварщиков напоминают. Идеологии плюсов и шлаквари очень схожи.

Хоть я их изначально и объединил, но все же есть разница. Слакварщики кричат: "У нас этого нет, и нам это не нужно!". А гентушнеги - "у нас это есть, и в сто раз круче вашего!", а на деле их гениальные задумки не работают. Вот так и с плюсами.

vit122
()
Ответ на: комментарий от void_ptr

> в случае С++ кричат, что это _единственный_ вменямый язык.

Кто и где? :D

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>> Стиль "а-ля Луговский" - это стиль, когда рационально обосновывают точку зрения?

>Нет, это когда много умных слов и эффектных оскорблений. Умные слова заменяют доказательства, эффектные оскорбления придают живость изложению. В результате получается увлекательное представление.

Однако даже в том треде таких заявлений было предостаточно. Заявленную тобой цитату в этом треде разложили по полочкам, и опять же логично объяснили. Ты же не привел обратных аргументов.

vit122
()
Ответ на: комментарий от Absurd

> std::string - хороший пример плохо спроектированного класса

хороший он или плохой дело десятое. само желание наследования от value типа - идиотизм

anonymous
()
Ответ на: комментарий от vit122

>Слакварщики кричат: "У нас этого нет, и нам это не нужно!".

(оффтопик) Странно, сижу под Слакой. Все что есть нужно. ЧЯДНТ?

С++ если можно так выразиться перемудрили. А потом запутанность и плохую читаемость кода объяснили крутостью. Реально, С++ код - один из наиболее трудночитаемых, уступаю наверно только Perl и Tcl(хотя в в последнем случае этого можно избежать).

void_ptr ★★★★
()
Ответ на: комментарий от sniper21

> sv75, открой уже для себя FreePascal в котором есть генерики (обобщения)

Обсуждался, вообще-то, именно Дельфи. Про генерики во фрипаскаль я в курсе.

sv75 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.