LINUX.ORG.RU

Вторая часть интервью с Bjarne Stroustrup


0

0

Автор языка программирования C++ рассказывает о лучших примерах использования своего детища, об обобщённом программировании, о перспективах аспектно-ориентированного программирования, о сложностях изучения языков программирования и о невеждах, которые их используют, о том, что Java был во многом навязан общественности с помощью огромных бюджетов на рекламу и о многом другом.

Первую часть интервью можно прочитать здесь: http://www.techreview.com/InfoTech/17...

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

★★★★★

Проверено: Shaman007 ()

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

>"Ниасилил, многабукаф"? Понятно.

Читать умеем? Ничего нового автор не написал. Управление сложностью, domain analysis, subsystem recognition, commonality & variability, и соответсвующий анализ - это нихрена не многопарадигменность с точки зреня языка.

>Наличие шаблонов и позволяет применять сразу аж 2 парадигмы: шаблонное метапрограммирование (почитайте Александреску, удивитесь) и обобщённое программирование.

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

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

Что вы вообще называете парадигмой программирования? В каком таком разрезе C++ - мультипарадигменный? Какие там хотя бы две?

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

>ну и таких проблем в с++ до попы

под этим я имел ввиду не только недостатки языка, но и недостатки окружения языка: - компиляторы и их баги, библиотеки и их баги(даже stl и тот бажный) - до сих пор нет нормального IDE:

msvc2005+visual assist(глючит при поиске reference на member), со временем перестал вообще работать только подсветка оставалась(вылечил переустановкой студии и остального брахла), иногда неправильно показывает autocomplete, скудные средства рефакторинга кода

и в общем плохие впечатления от работы visual assist и особенно от скорости и прожорливости памяти msvc2005

slickedit 11: под linux какая то проблема с парсингом stl, а так вообще замечательный редактор, за исключением что не поддерживает msvc компилятор и коряво работает с его solutions, да и вообще еще тоже много проблем у него(достаточно взглянуть на его официальный форум)

vim - не IDE -), ибо универсальное средство для редактирования

про emacs не буду писать и так все знают -)

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

> Не особо поворотлива и пускается не везде где пускается opera.

Да? На чпуксах работает? А на аиксах? А на соляре 2.0? С айриксом у нее как?

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

> Хм... Читаю "Горький вкус Java"... Автор называет C++ низкоуровневым языком =)
Ну по сравнению с java & .net это так и есть =)

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

> А теперь попробуем добавить в C++ средствами C++ сборщик мусора и автоматическое управление памятью, чтобы было прозрачно для программиста. У меня получилось.

Плиз! Покаж! Глянуть хочу! =)

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

>да, и парочку классов с полиморфизмом каких нибудь, потом повызывать. В общем твоё решение - это вызов Си из Си, а не с++ из Си. Это как вариант обходной иногда возможно, но не всегда.

main - http://www.everfall.com/paste/id.php?ihejosnceb5p foo.h - http://www.everfall.com/paste/id.php?f65l9ttr0ic9 foo.cpp - http://www.everfall.com/paste/id.php?rn8frph6hyvt

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

>да, и парочку классов с полиморфизмом каких нибудь, потом повызывать. В общем твоё решение - это вызов Си из Си, а не с++ из Си. Это как вариант обходной иногда возможно, но не всегда.

main - http://www.everfall.com/paste/id.php?ihejosnceb5p

foo.h - http://www.everfall.com/paste/id.php?f65l9ttr0ic9

foo.cpp - http://www.everfall.com/paste/id.php?rn8frph6hyvt

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

>Прозрачно можно реализовать сборщик мусора, сигналы и прочее, что в язык C++ _НЕ ВХОДЯТ_. Ну нет c++ этого, а с помощью языка реализовать можно.

Можно, но только через ж.

>Чем не метаязык?

Язык может быть и мета (и даже гипер или супер). Вот только для того что бы писать понастоящему обощенный код, надо на каждый чих генерить строк по 100 бессмысленного кода (причем в ручную)

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

> Зато межплатформенна, и не на уровне исходных кодов, а гораздо лучше - на уровне бинарных кодов (точнее байт кодов).

Java is not cross-platform, Java is a platform...

no-dashi ★★★★★
()

Назвать Си подмножеством Си++ - это, извините, перебор. Гнать ссаными тряпками из IT.

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

Используя GTK, QT или ещё чего, строк будет столько, же сколько и на java.
А вы вот напишите хотябы текстовую программу по выводу "Hello World!" на экран компьтера работающего под Free Dos, контроллера с LCD экраном и т.д.

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

> А первым коммерческим компилятором с ООП был вообще turbo pascal 5.5. Тогда плюсы сообще никак не дышали. Я прекрасно помню то время (286/ 386 процессоры. Программы на TC / TP летали а проги на TC++ ползали как черепахи даже на 486). И нет этому никаких оправданий.

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

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

>>А за libjpeg подметает?

> Нет, а вам сложно сделать обертку которая будет представлять удобный объектный интерфейс и всё подеметать? Или опять в стиле C пишем?

В баню тормоз libjpeg, libavcodec быстрее жмёт. И обёртка на c++ проще, чем к libjpeg =)

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

>> Опятьже pthreads - С стиль. Взять кросплатформенную обертку и небудет проблем. (по крайней мере с win, unix (linux, mac))

> Ну опять же если есть эта обертка. Парень из параллельной группы пытался найти, в итоге написал свою

Баклан с узким кругозором (и наверняка потом хаял, что даже библиотеки такой нет в природе). Нормальные люди пользуются boost'ом.

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

>> Ну Вы ведь не пишете имплементацию связанных списков каждый раз как она понадобится?

> Так сложно написать? На c++ 20 строк будет тупого кода.

Код в студию. Реализация контейнера типа список для произвольного типа данных в 20 строках c++ кода.

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

> Ага - они все шизонулись. Кернел хакеры шизонулись со своей buddy. Ребяты которые пишут долгоживущие серверные приложения (типа постгреса) - все как один больны на голову со своими MM. А всего то было просто использовать new/delete и все вопросы были бы решены....

PG на си написан вроде как? Штатно в си нельзя выделять структуры там, где захочется (в сегменте shm)

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

> Гораздо правильнее использовать готовое, отлаженное и стандартное решение. Правда в некоторых случаях зависимости важны, да. boost, qt и там еще мало ли что качать ради консольной утилитки в 50 строк было бы прямо скажем, напряжно :)

Часто благодаря boost, qt и что там ещё 50 строк и получается. Без них - лисапед о многих кб кода.

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

> А вы вот напишите хотябы текстовую программу по выводу "Hello World!" на экран компьтера работающего под Free Dos, контроллера с LCD экраном и т.д.

freedos на arm7/9 ?

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

> Java is not cross-platform, Java is a platform...

Вот это более соответствует истине.

Компиляторы C++ разрабатывались ГОДАМИ, в них вложено столько трудов и идей, что транслятор C++ оказался поистине бриллиантовым. Себестоимость системного и тем более прикладного ПО на C++ в РАЗЫ выше, чем для типобезопасных языков и языков в управляемых средах. Сложность чего-то выдающегося, которое ещё можно написать на С++, ограничивается приложениями уровня MS Office, OpenOffice, JVM HotSpot. Всё, что выше и толще,- неподъёмно для С++. Конечно, можно развить модульность как в Си и Ada, но ООП-интерфейсы на C++ вряд ли способствуют пониманию взаимодействия частей сторонними программистами без прочтения талмудов документации. Поэтому большие системы, особенно распределённые пишутся на java, так как проще обозреть и понять архитектуру.

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

> Поэтому большие системы, особенно распределённые пишутся на java, так как проще обозреть и понять архитектуру.

А как большое с распределенным связанно?

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

> Сложность чего-то выдающегося, которое ещё можно написать на С++, ограничивается приложениями уровня MS Office, OpenOffice, JVM HotSpot.

Пример чего-то выдающегося? Обсчёт тепловых процессов в эпицентре ядерного взрыва вот в маш.кодах писали и тумблерами программировали - и ничего, живы-здоровы. Даже рады были, что три десятка математиков для числодробильных операций привлекать больше не надо.

> Всё, что выше и толще,- неподъёмно для С++. Конечно, можно развить модульность как в Си и Ada,

Т.е. парадигма ООП в целом и C++ в частности по сравнению со структурным программированием на портабельном ассемблере - фигня полная?

> но ООП-интерфейсы на C++ вряд ли способствуют пониманию взаимодействия частей сторонними программистами без прочтения талмудов документации

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

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

Столько бреда я давно не читал, спасибо повеселили ))) Половина понятия не имеет о чем говорит.

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

>(Ой, счас будет флейм...)

Это было понятно уже исходя из присутствия "C++" в тексте новости =)

MYMUR ★★★★
()

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

P.S. пионерам просьба не беспокоить

--седайко стюмчик

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

>парадигма ООП в целом и C++ в частности по сравнению со структурным программированием на портабельном ассемблере - фигня полная

согласен ;)

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

>> парадигма ООП в целом и C++ в частности по сравнению со структурным программированием на портабельном ассемблере - фигня полная

> согласен ;)

Как объяснить использование широкое ООП-приемов в ядре линукса, которое, как общеизвестно, написано на голом си (asm для mm и подобных вещей не в счёт)?

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

>да кста, а какие проблемы вызова из С С++ кода ? -)

Иди вон расскажи это svu и geek-у, а то они который год протестуют против Qt именно потому, что её можно использовать из C++-программ, но нельзя изпользовать из C-программ.

MYMUR ★★★★
()

> Java был во многом навязан общественности с помощью огромных бюджетов на рекламу

Ой, вей! Беня наехал на Жабу? Беня таки не понимает, что аффтору языка С++ "место в дурке, либо на погосте" (с) проф.В.С.Луговский.

Беня не знает, что такое gc? Ну можно и не ассемблере проги пейсать, еще быстрее таки уже работать будут. Только вот не понимают "титеретики" от программирования, что нет таки в реальной жизни "программирования ради программирования". Для каждой фирмы важен гешефт как конечная цель.

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

>> А теперь попробуем добавить в C++ средствами C++ сборщик мусора и автоматическое управление памятью, чтобы было прозрачно для программиста. У меня получилось.

> Сурьезно? И heap compaction оно делать умеет? А за libjpeg подметает?

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

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

>Ну напишите C++ окошко с надписью Hello world. Под win32 и Linux. И под сотовый. Сравните код. Мы посмеёмся.

Насчет сотового не скажу, а вот для Win32/Linux/BSD/MacOS X получится что-то типа такого:

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QLabel hello("Hello world!");
    hello.resize(100, 30);

    hello.show();
    return app.exec();
}

Можете начинать смеяться, ага.

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

>А вы вот напишите хотябы текстовую программу по выводу "Hello >World!" на экран компьтера работающего под Free Dos, контроллера с >LCD экраном и т.д.

Free Dos ? Пожалуста ставим RTKerenel и работаем как с обычным C. Для LCD ищё проще просто читаем мануал по инициализации и тратим пару часов для написания библиотеки стандартный выражений!

И вообще опять всё в куче почему то оказалось. Сравнивать язык с платформой ну это уже история с бородой! По таким наклонностям можно сказать, что тут собралось скопище кодеров первогодок! А вот кто может сказать что напишет без проблем и в сроки систему в которой должена быть часть для embedded system, часть работать с базами данных и часть реализующая web service. Если есть такие что всё это делаю используя только С или С++ - ищите стену товарисчи.

Нада для кокретных задач искать инстурменты, а не для инструментария адаптировать задачи . . .

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

>Как объяснить использование широкое ООП-приемов в ядре линукса

Тем что кернел-девелоперы - вменяемые люди, и используют ООП только там, где это нужно. И то не весь ООП, а только инкапсулирование (в основном)

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

>Иди вон расскажи это svu и geek-у, а то они который год протестуют против Qt именно потому, что её можно использовать из C++-программ, но нельзя изпользовать из C-программ.

мы не протестуем. Мы твёрдо убеждены, что библиотеки общего назначения писать на плюсах могут только больные на голову люди. Ну или те, кто не знает, что кроме плюсов есть ещё дофигища других ЯП (что говорит как минимум о необразованности)

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

>>> У с++ компиляторов несовместимый ABI. Стандартного средства вызывать с++ код из Си-кода не существует. extern "C" - как логично можно было бы предположить, как раз для обратной задачи.


дебильчик ! - берешь и вызываешь
c++ и с полностью совместны по ABI

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

>>> И самая шизонутая - мозилла со своими coding conventions, где хтэмэлом по белому написано - что самое первое правило C++ в таком большом проекте как мозилла - никакого C++, для сохранения портабельности кода. Им забыли объяснить про обертки мультиплатформенные, которые пишутся на раз.

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

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

>Ну или те, кто не знает, что кроме плюсов есть ещё дофигища других ЯП (что говорит как минимум о необразованности)

Ну или те, которых "проблемы негров не волнуют" © =)))

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

>>> У с++ компиляторов несовместимый ABI. Стандартного средства вызывать с++ код из Си-кода не существует. extern "C" - как логично можно было бы предположить, как раз для обратной задачи.


дебильчик ! - берешь и вызываешь
c++ и с полностью совместны по ABI

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

Супер! "Неllo, world!" - это очень практически полезная программа. Ну а теперь веб-сервис на Qt.:) Или хотя бы компонент для объектно-реляционного отображения таблиц СУБД на сервере приложений в многозвенной архитектуре.

Bioreactor ★★★★★
()

Так, гхм. Эта... ну... интервью!
Да-да, мне понравилось.
Хорошая статья. Определённо.

Господа, вы продолжайте, извините за оффтоп...

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

Будьте таки снисходительны. Не все хотят вести ментально здоровый образ жизни.

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

>c++ и с полностью совместны по ABI

ну-ну. Покажи мне как из C вызвать ну хотя бы конструктор и деструктор класса. Без написания всяких оберток с заворачиванием класса в структуру и калякания врапперов

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

>> Таки Стив Джобс послал в тухес Бенино поделие (оставив, правда этот недоязычок для мазохистов) и предлагает Objective C. (&& Java.)


вообще-то Джобс предлагает Objective-C++
это так для дебилов, к сведению

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

>Ну или те, которых "проблемы негров не волнуют" © =)))

вообще-то любое ограничение использования библиотек в OSS-коммунити - это дурной тон, как минимум. В том числе и ограничения по вызову функций библиотеки из других ЯП. Хотя до КДЕшнегов это наконец-то дошло, и они часть сервисов DE переводят на c-библиотеки и сервисы.

Ждем когда дойдет до трольтеков =)

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

> ну и где в C vtable out of the box?

Общепринято считать, что в ООП кроме наследования с полиморфизмом есть еще и инкапсуляция. Использование техники инкапсуляции в языке, не имеющем прямой поддержки оной, считается как раз ООП-приемом.

Более того, в VFS можно даже найти признаки наследования =)

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

>Супер! "Неllo, world!" - это очень практически полезная программа.

Включи мозг и перечитай моё сообщение с хеловорлдом целиком, ВКЛЮЧАЯ ПРОЦИТИРОВАННУЮ ЧАСТЬ.

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