LINUX.ORG.RU

Страуструп о будущем семантических средств разработки с комментариями

 ,


2

0

У Страуструпа имеется книжка о развитии и о будущем средств разработки для языка C++, "Дизайн и эволюция языка C++", в частности о поддержке семантического программирования. Интерес представляют комментарии к книге данные Евгением Зуевым, одним из известных советских программистов и разработчика компилятора C++.

Отредактировано anonymous_incognito

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

anonymous

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

>Нет, жабский код интегрируется замечательно.

С чем?

>Читал. Самое главное то что у него хватило времени на то чтобы и узреть негодность Симулы для его задачи и вовремя написать рабочий код на ассемблере BCPL, не завалив при этом диссертацию. Но почему-то он пришел к странному выводу что на Симуле код был красивее и надо из Си сделать Симулу, что неправильно поскольку Симула просто отняла у него время.

А к какому выводу он должен быть придти по-твоему?

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

Тоесть, ты не в состоянии понять разницу между "функциональное программирование поддерживается на уровне языка" и "возможность программировать в функциональном стиле реализована средствами метапрограммирования"? Печально...

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

>>Нет, жабский код интегрируется замечательно.

>С чем?

Со всем в рамках JVM. Например, со Scala.

>>Читал. Самое главное то что у него хватило времени на то чтобы и узреть негодность Симулы для его задачи и вовремя написать рабочий код на ассемблере BCPL, не завалив при этом диссертацию. Но почему-то он пришел к странному выводу что на Симуле код был красивее и надо из Си сделать Симулу, что неправильно поскольку Симула просто отняла у него время.

>А к какому выводу он должен быть придти по-твоему?

Что написание красивых абстракций - это лишняя трата времени. Он бы мог сделать код для проекта в два раза лучше, если бы сразу начал с BCPL или с Си.

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

>Со всем в рамках JVM. Например, со Scala.

:)))

>>А к какому выводу он должен быть придти по-твоему?

>Что написание красивых абстракций - это лишняя трата времени.

Тебе не кажется странным, что он до сих пор к этому выводу не пришел? Как туева хуча практикующих C++ программистов.

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

>>Со всем в рамках JVM. Например, со Scala.

>:)))

Ну С++ то вообще ни с чем не интергрируется, пока не переизобрести COM или xpcom или bonobo или еще чего.

>>>А к какому выводу он должен быть придти по-твоему?

>>Что написание красивых абстракций - это лишняя трата времени.

>Тебе не кажется странным, что он до сих пор к этому выводу не пришел?

Мне кажется, он боится этой мысли.

>Как туева хуча практикующих C++ программистов.

Давай не будем прикрываться какой-то массой "практикующих С++ программистов".

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

Re^2: Страуструп о будущем семантических средств разработки с комментариями

>>>Нет, жабский код интегрируется замечательно.

>>С чем?


> Со всем в рамках JVM. Например, со Scala.


Бугагец. И это называется "интегрируется".

gaa ★★
()

>>>>Нет, жабский код интегрируется замечательно.

>>>С чем?

>> Со всем в рамках JVM. Например, со Scala.

>Бугагец. И это называется "интегрируется".

А что, не интегрируется? Или это очередное "фи" к жабе?

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

>Ну так также можно сказать, что с++ интегрируется с любым дотнет-языком в рамках дотнета ;)

Ну С++ OO при интеракции с дотнетом я думаю не используется.

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

>>Ну так также можно сказать, что с++ интегрируется с любым дотнет-языком в рамках дотнета ;)

>Ну С++ OO при интеракции с дотнетом я думаю не используется.

Равно как не все абстракции Scala могут использоваться совместно с Java и наоборот (http://www.scala-lang.org/faq/4 , http://scala.sygneca.com/faqs/interoperability#i-cannot-access-static-members...)

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

>> Нет, жабский код интегрируется замечательно.

> С чем?

Ни java, ни .NET не могут в принципе хорошо интегрироваться ни с чем, т.е. то и другое продукт коммерческих компаний. И в случае хорошей интеграции с Python, например, может оказаться, что программистам удобнее будет писать на нем, использую библиотеки и другие возможности java платформы. А коммерсанты хотят сохранять контроль над созданной платформой и им выгоднее, чтобы программисты писали только под эту платформу. Так что .NET'овцы и JAVA'вцы заложники выбранной платформы приложений.

Кроссплатформенность .NET, известна, надеюсь. Java нужно одни раз поставить на FreeBSD и его "кроссплатформенность" тоже станет очевидна.

Плюсы меньше всего зависят от маркеторолов.

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

>>> Нет, жабский код интегрируется замечательно.

>> С чем?

>Ни java, ни .NET не могут в принципе хорошо интегрироваться ни с чем, т.е. то и другое продукт коммерческих компаний.

Открой для себя OpenJDK & Mono

>Java нужно одни раз поставить на FreeBSD и его "кроссплатформенность" тоже станет очевидна.

BSD RIP

>Плюсы меньше всего зависят от маркеторолов.

Они зависят от фобий и комплексов Строуструпа, который взял необкатанный экспериментальный язык под свой диссер и чуть не завалился.

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

>>>Ну так также можно сказать, что с++ интегрируется с любым дотнет-языком в рамках дотнета ;)

>>Ну С++ OO при интеракции с дотнетом я думаю не используется.

>Равно как не все абстракции Scala могут использоваться совместно с Java и наоборот

Это проблемы другого уровня.

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

>Ни java, ни .NET не могут в принципе хорошо интегрироваться ни с чем, т.е. то и другое продукт коммерческих компаний. И в случае хорошей интеграции с Python, например, может оказаться, что программистам удобнее будет писать на нем, использую библиотеки и другие возможности java платформы. А коммерсанты хотят сохранять контроль над созданной платформой и им выгоднее, чтобы программисты писали только под эту платформу. Так что .NET'овцы и JAVA'вцы заложники выбранной платформы приложений.

>Кроссплатформенность .NET, известна, надеюсь. Java нужно одни раз поставить на FreeBSD и его "кроссплатформенность" тоже станет очевидна.

>Плюсы меньше всего зависят от маркеторолов. anonymous (*) (15.09.2008 22:35:28)

Хорошо сказал, но не договорил. Плюсы, в принципе, и есть продукт коммерсантов со всеми приколами присущими их потомкам NETу и JAVA. Ты видимо, не застал войну коммерческих компиляторов C++, а она шла до тех пор пока g++ не был допилен до юзабельного состояния и пока не был принят первый iso-стандарт на плюсы. Но было уже поздно плюх-плюх превратился в страшного и мутного монстра, которого можно "асилить" только по частям, и то под мудрым руководством сенсея. Единственное отличие плюсов от их деток НЕТ и ЖАБА - это компиляция в наитивный исполнимый код и возможность попользоваться богатством СИшных библиотек без лишнего головомора, а вот в обратном направлении надо, уже, предпринимать специальные телодвижения в виде extern "C" {}, при этом все "преимущества" (для меня лично ОЧЕНЬ СОМНИТЕЛЬНЫЕ) ООП по плюс плюсному идут лесом.

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

> Единственное отличие плюсов от их деток НЕТ и ЖАБА - это компиляция в наитивный исполнимый код и возможность попользоваться богатством СИшных библиотек без лишнего головомора.....

Ну так ни кто не предложил лучшего решения без виртуальной машины. Да и ООП на си с кучей макросни совершенно не радует.

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

>> Ну так ни кто не предложил лучшего решения без виртуальной машины.

>D?

У D перманентные проблемы роста.

Скорее уж Eiffel (в части ООП он, имхо, более доведен до ума, чем C++). И, может быть, Ada.

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

>У D перманентные проблемы роста.

Ну опять.. Давайте-ка объяснять что у него за проблемы роста. А-то люди пишут и эти проблемы их не касаются..

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

>>У D перманентные проблемы роста.

>Ну опять.. Давайте-ка объяснять что у него за проблемы роста. А-то люди пишут и эти проблемы их не касаются..

D1 - недоделка, а D2, который еще альфа, обсуждать рано, но уже сейчас invariant и const не всем нравится. Кстати, набор целочисленных типов там тоже не маленький и некотрые товарищи апсирающие C++ будут здесь же апсирать и D.

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

>D1 - недоделка, а D2, который еще альфа, обсуждать рано, но уже сейчас invariant и const не всем нравится.

И тем не менее на этой недоделке написана мощнейшная библиотека(я про tango). А D2 уже близок к релизу этой осенью. invariant и const это то что меня тоже очень волнует, но я еще вторую ветку не пробовал. Вы ее судя по всему тоже не пробовали, потому что просто говорите что она альфа - без указания конкретных проблем.

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

"...но уже сейчас invariant и const не всем нравится". Мне подход не нравится и const в С++ нравится больше. Давай подождем примеров применения в реальных условиях, или тебе хочется слюной побрызгать?

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

> И тем не менее на этой недоделке написана мощнейшная библиотека(я про tango).

О да. Это показатель ))) На С++ тоже много чего написано, но язык здесь ругают как могут.

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

> ну тогда в чем его недоделанность. жду факты.

Речь идет о D1:

- допустим opAssign у классов, из-за чего A a = b; может вызывать Access Violation
Для примера, можно сделать следующее:
tango.io.FilePath dirname = tango.io.FileSystem.getDirectory();

- отсутствие конструктуров у структур из-за чего много где используется костыль в виде opCall.
BigInt v = BigInt( "10" ); // На пустом месте имеем одно лишнее копирование

- состояние Tango нестабильное. Классы контейнеров помечены deprecated, а новых еще нет (точнее, есть, но частично и без интеграции).

- Phobos D1 не совместим с Phobos от D2. Так сказать, все сидят на чемоданах

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

Все эти проблемы абсолютно некритичные, и будут исправлены уже в ближайшем будущем. Недостатки С++ начисто их перекрывают если уж сравнивать напрямую. Ничто не мешает вести на D разработку уже сейчас. Главные проблемы имхо в уже развитой инфраструктуре С++. Но это надо решать только повсеместным переходом на D.

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

> Все эти проблемы абсолютно некритичные, и будут исправлены уже в ближайшем будущем.

Зато, из-за них D1 выглядит как разработка десятиклассника.

Список критичных проблем С++ так и не прозвучал. Многие из неназванных проблем С++ тоже будут исправлены в недалеком будущем.

Повсеместно перейти на GC точно не получится, а C иногда слишком примитивен.

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

> Но это надо решать только повсеместным переходом на D.

Большой объем кода на D не даст его довести до ума.

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

>Зато, из-за них D1 выглядит как разработка десятиклассника.

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

Озвучивать недостатки С++ в который раз не буду, за меня это сделали другие, более грамотные люди. От себя хочу лишь добавить - что чтобы написать что-то более менее приличное я копался в 1000страничной книге по С++, плюс обязательно надо читать Мейерса, обе книги, там очень важные вещи, незная которых писать нельзя. В случае с D мне достаточно 200страничной книги по D и Tango. Всё. Можно начинать писать. Нужно еще более сильное доказательство??

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

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

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

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

Пролистал. Если это и будет использоваться, то лет через 15-20, да и то при удачных обстоятельствах. Да и не понятно, что там делает сборщик мусора?

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

Приличное - это что? Примеры в студию можно?

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

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

Это ерунда. Если здесь и сейчас появится мегаязык, который объективно лучше, то проблем не будет. Всё равно 80% либ - сишные. А пока есть монстры, вроде java/mono или язычки, которые нестабильны и представляют только академический интерес.

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

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

Опять бездоказательное хаяние С++ и заманивание на еще не сформировавшееся поделие. Поговорим о D через пару лет. Пока, даже C# гораздо логичнее спроектирован.

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

>Опять бездоказательное хаяние С++ и заманивание на еще не сформировавшееся поделие. Поговорим о D через пару лет. Пока, даже C# гораздо логичнее спроектирован.

О недостатках С++ написано куча статей, подробных и обстоятельных. И в многочисленных флеймах здесь на лоре.. Да и любой адекватный человек поймет что недостатков куча. повторять то что 1000 раз сказано было нет смысла.

Никто вас не заманивает - не хотите, не надо, юзайте плюсы на здоровье. Только потом не жалуйтесь.

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

> Да и любой адекватный человек поймет что недостатков куча

Ну. Куча. Дальше что? Найди язык без недостатков.

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

> Это ерунда. Если здесь и сейчас появится мегаязык, который объективно лучше, то проблем не будет

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

> Всё равно 80% либ - сишные

4.2. Может в опенсурце оно так и есть, но в индустрии всё совсем наоборот.

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

>Ну. Куча. Дальше что? Найди язык без недостатков.

А кто тут пытался искать недостатки в D?? Их там меньше, намного. а в ближайшем времени их вообще не будет

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

> От себя хочу лишь добавить - что чтобы написать что-то более менее приличное я копался в 1000страничной книге по С++, плюс обязательно надо читать Мейерса, обе книги, там очень важные вещи, незная которых писать нельзя. В случае с D мне достаточно 200страничной книги по D и Tango. Всё. Можно начинать писать. Нужно еще более сильное доказательство??

Начинать можно хоть с бейсика, хоть с php (если под веб). А дальше что будешь делать, когда освоишь язык и упрешся в его ограничения?

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

>>У D перманентные проблемы роста.

>Ну опять.. Давайте-ка объяснять что у него за проблемы роста. А-то люди пишут и эти проблемы их не касаются..

1. Слишком длительный период перед выходом первой "стабильной" версией (релиз в 2007, разработка начата в 1999).

2. Переменчивость взглядов автора языка. Вначале в D категорически не было шаблонов, потом они туда были добавлены. Вначале в D категорически не было константности, теперь константность является одной из killer features новой версии языка.

3. Слишком короткий период времени между выпуском первой стабильной версии и разработкой следующей версии, не совместимой с предыдущей. Фактически D1 и D2 -- это разные языки. В свете этого не понятно, зачем делать что-то на D1.

4. Непредсказуемость процесса развития языка. В D2 заявлена поддержка pure функций и nothrow. Но до сих пор они не реализованы (хотя уже осень, время обещанного релиза D2). Зато в недавней версии 2.018 были добавлены векторные операции, необходимость которых для D2 вообще не анонсировалась.

Ну и еще пару замечаний до кучи.

Tango нифига не выдающаяся библиотека. Даже я в свое время вылавливал в ней баги. Она, насколько я могу судить, до сих пор изменяется и за 2 или 2.5 года своего развития так и не доросла до релиза версии 1.0. Кстати, для C++ есть похожая по стилю и функциональности -- POCO.

Не знаю, кто и что серьезное делает на D сейчас, но когда года полтора назад я всерьез рассматривал D как альтернативу C++, то пришел к выводу: мне безопаснее начать серьезный проект в 1-1.5 года разработки и 3-4 года последующей эксплуатации и сопровождения на C++/Java/C#/Eiffel/Ada чем на D. Как по стабильности/глючности компиляторов, так и по обширностью/стабильностью/качеством библиотек.

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

>4.2. Может в опенсурце оно так и есть, но в индустрии всё совсем наоборот.

В какой индустрии? Пока тут все кричат про java и т.п.

>Унаследованный C++ код есть практически везде, в огромных количествах.

Ну и что? Пока нет альтернатив, поддерживающих это из коробки ни какой речи о замене с++ идти не может.

Ну и от себя добавлю требования к языку, которые ИМХО, он должен обеспечить.

1. Стабильность

2. Компиляторы в нативный код под любой платформой

3. Поддержка си/си++ без костылей в виде биндингов

Пока что не один альтернативный язычок эти требования обеспечить не может.

ЗЫЖ это скорее относится даже не к самому языку, а к средствам разработки.

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

Короче, понятно. Если меняется библиотека, то это уже головная боль. А если ещё и сам язык, то это вообще ппц.

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

Re^2: Страуструп о будущем семантических средств разработки с комментариями

> О недостатках С++ написано куча статей, подробных и обстоятельных. И в многочисленных флеймах здесь на лоре.. Да и любой адекватный человек поймет что недостатков куча. повторять то что 1000 раз сказано было нет смысла.

Какой громкий слив!

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

> А кто тут пытался искать недостатки в D?? Их там меньше, намного. а в ближайшем времени их вообще не будет

Не существует объективных, инвариантных недостатков. Любой "недостаток" любого языка - это недостаток относительно того или иного способа употребления языка. И с этой точки зрения, в любом языке и для любого применения всегда найдутся недостатки. Языка без недостатков быть не может даже в теории.

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

> В какой индустрии? Пока тут все кричат про java и т.п.

Их, индустрий, много разных. В околоинженерных С++ и Фортран как рулили последние десятилетия, так и будут лет 50 минимум ещё рулить.

> ни какой речи о замене с++ идти не может.

Именно так. По этой причине все стоны и плачи о его "недостатках" относим к проблемам эмо-культуры, и соответствующим образом игнорируем.

> Пока что не один альтернативный язычок эти требования обеспечить не может.

Ждём C++0x (да, это совсем уже другой язык).

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

для тупых

>1. поинтересоваться зачем нужно программисту видеть семантическое дерево компилятора? Не говорит ли это желание о том, что язык имеет какие-то недостатки. Если программисту приходится свою семантику сверять с тем, как её понял компилятор, то скорее всего дело в том, что язык труден для понимания, имеет какие-то неоднозначности, вольности?

не семантическое дерево компилятора (такого вообще в природе не существует, а для тупых напоминаю - синтаксическое древо), а синтаксическую структору программы. большинство систем RAD умеют это делать, даже больше - emacs умеет делать. Все это не более чем возможность просматривать программу семантическими еденицами, а не посимвольно.

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

И ? Возразили ? Легче стало ? Хотите поговорить об этом ?
Это что то вроде синонима - попердеть в лужу ?

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

синтаксическую структору -> семантическую структуру

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

>Поддержка си/си++ без костылей в виде биндингов

Будто бы под С++ не надо писать обертки и биндинги под системное API. Вообще, С++ - безусловный чемпион по написанию boilerplate-кода который ничего не делает.

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

> 1. поинтересоваться зачем нужно программисту видеть семантическое дерево компилятора?

Много зачем. Для статического анализа кода, для полнтекстной оптимизации, для метапрограммирования, для лучшей поддержки IDE (всякие фишки вроде intellisence, которым требуется информация о типах), для автодокументирования, для верификации кода.

Всё это доступно в Lisp, в Haskell, даже в Java, но до недавнего времени было абсолютно недоступно в C++, благодаря его уродскому синтаксису у чрезмерному злоупотреблению препроцессором.

> Не говорит ли это желание о том, что язык имеет какие-то недостатки.

Это желание от языка не зависит вообще.

> Если программисту приходится свою семантику сверять с тем, как её понял компилятор, то скорее всего дело в том, что язык труден для понимания, имеет какие-то неоднозначности, вольности?

Скорее всего ты тупишь и не догоняешь простейших вещей.

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

>Стабильность

Это тоже идиотский пункт, как это я его пропустил. По количеству быдлоидиом, раскрученных в старых книжках и преданных анафене в более поздних книжках С++ - тоже безусловный чемпион.

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