Все рассуждения поскипаны, так как дискуссия у нас не выйдет в виду непонимания тобой того о чем говорю я. Очень советую поробовать почитать статьи по Немерле на нашем сайте. Может оказаться, что ты не только изменишь мнение, но и откроешь для себя много интересного. По крайней мере лично я открыл.
T>Кстати, если уж сопоставлять Спирит с сопоставлением, то какой класс грамматик поддерживает сопоставление в Немерле?
Немерле не построитель парсеров. Это язык программирования. По этому на нем у тебя нет ограничений в классе грамматик. В принципе средствами паттерн-матчинга хорошо парсятся LL(k)-грамматики с перемеменным ка. Но так как это полноценный ЯП, то нет проблем парсить грамматики любой сложности.
Самое же интересное, что в этот язык можно встроить парсер любой сложности. Более того один из обитателей этого сайта даже работает над одим таким проектом. А возможно это становится потому, что в Немерле есть офигительной мощьности макросы. По сравнению сними метапрограммирование на шаблонах С++ — это как копание траншеи вилкой супротив копания экскаватором. И я нисколько не приувиличивю.
T>Я согласен, что декларативный синтаксис, в частности сопоставление с образцом и списковые дополнения в сочетании со статической типизацией и автоматическим выводом типов очень удобные и мощные языковые механизмы. С их помощью многие вещи можно записать более выразительно.
Именно.
T>Но от того, что язык их содержит, он не становится автоматически лучшем_языком_в_мире_на_котором_невозможно_писать_неправильные_программы,
Об этом никто и не говрит. Но в купе с другими возможностяси он по крайней мере становится одинм и лучших практических языков имеющихся на сегодня.
T>и наоборот, не имеющий этих наворотов язык не становиться от этого полным_отстоем, как это можно заключить по твоим высказываниям.
Полным — конечно нет. Но и лучше от от этого никак стать не может. А в сочетани с граблями и досисторическими решениями вполе может стать скажем так сильно морально устаревшим.
T>Читая твои посты, создаётся впечатление, что мы не в форуме "философия программирования" а на митинге в поддержку .Net + ХХХ и заклеймению непохожих.
На самом деле мне плевать на .Net просто это один из инструментов предоставляющих мне некоторый набор возможнсотей (компонетность, модульность, динамичность... в сочетании со статической типизацией, быстрой и эффективной компиляцией). В общем, это тот рантайм который позволяет сделать возможным то что мне нравится. Причем он совсем не идеален. Как не идеален Немерле. Но по моим личным ктитериям это наиболее приятная копозиция возможностей и недостатков.
T>
T>Если тебе платят за это — скажи, я наверно пойму. (с) Б.Г.
Наверно если бы мне платили за то что я сижу на форуме, то я бы был уже давно миллиардер.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, dr.Chaos, Вы писали:
DC>Мало того он признает что для прикладного программирования С++ не очень хорошо подходит именно из-за отсутствия GC и плохой компонентной модели.
Плохой? Во как! Век живи, век учись... дураком помрешь...
Откуда в С++ взялась компонентная модель?
Что касается прикладных задач... а какие задачи не прикладные?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Константин Л., Вы писали:
КЛ>это огромнейший недостаток. const это не только способ документирования кода, но и способ избавления от многих ошибок. В c# каждый метод — черный ящик. Что он может сделать с твоим объектом можно только догадываться.
С++ как способ избавиться от ошибок... (задумчиво) что-то в этом есть...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Константин Л., Вы писали:
КЛ>это не важно. Зуб даю, что до появления немерле он с таким же смаком ломал людям кайф и в неподходящих местах ругал с++ и хвалил c#. У него жизненное кредо такое, наверное.
КЛ>это огромнейший недостаток. const это не только способ документирования кода, но и способ избавления от многих ошибок. В c# каждый метод — черный ящик. Что он может сделать с твоим объектом можно только догадываться.
КЛ>А как тебе читабельность?
КЛ>1) отмена :: есть большая ошибка. КЛ>2) возможность называть переменные, свойства и т.п. так же, как и типы — еще одна ошибка.
АХ>>С другой стороны и у C++ много косяков. Как насчет отсутствия override?
КЛ>ерунда.
АХ>>Также можно сказать, что так как в C++ нет GС, то писать на нем — это убийство .
КЛ>отсутствие GC — самое последнее, что заботит с++ программера. Конечно приходится "достраивать", используя smart pointers etc., но это настолько просто, что это даже не обсуждается. И это дает возможность выбора.
АХ>>Вообще для меня нет пока идеального языка.
КЛ>а его и не будет, наверное )
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Cyberax, Вы писали:
>> C>Ну так и в C# точно так же, используешь какой-нибудь системно-зависимый >> C> контрол — и привет портируемости. >> Ну естественно. Но это уж, что называется, сам виноват. C>Так вот, MS делает такие ляпы ну уж ОЧЕНЬ легкими.
Дело в том, что MS хорошо интегрировала .NET со своими предыдущими технологиями — COM, Win32,...
Это, естественно, не случайно .
>> Вот, например, возьмем тот же GUI. Каким он должен быть — на нативных >> контролах или одинаковый на всех платформах? Иконки растровые или >> векторные? Должен смену скинов поддерживать или нет? Слишком много >> разных требований, на всех не угодишь. C>Swing в Java Может использовать свои скины или эмуляцию родного GUI C>для платформы. Работает достаточно прилично.
А иконки там векторные?
>> C>Вот в Java, фактически, такой стандарт есть — это Sun JDK, который есть >> C>на куче платформ. А сейчас вообще открытым стал. >> Да, ну так там тоже зоопарк. GUI на чем делать — на AWT или Swing? C>AWT? Это что такое? здесь.
C>Сейчас есть два фреймворка — Swing и SWT. SWT — обертка над нативным API.
И AWT . Правда, насколько я понимаю, его уже мало кто использует.
Здравствуйте, eao197, Вы писали:
E>Тут, кстати, другое интересно -- механизм шаблонов и исключений был описан для C++ в 1988-1990 годах. Но в Java generic-и добавились только в 2003-м (если я не путаю дату выхода Java 1.5). А появившаяся в 2000-м первая версия C# так же не содержала generic-ов. И это не смотря на то, что шаблоны уже десять лет до этого демонстрировали свою полезность и востребованность! Так что еще совсем недавно C++ предоставлял разработчикам такие языковые возможности, которых не было у его конкурентов.
Небольшое дополнение. Generics, кроме синтаксиса, имеют относительно немного общего с шаблонами, так что и утверждение выше можно считать верным и сейчас. В обратную сторону оно тоже, естественно, верно, как и было верным в 2000-м.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Константин Л., Вы писали:
КЛ>чего стоит мой — я знаю.
Если у всех в вашей команде такой же опыт как у вашего веб-программиста, то дальше можешь не рассказывать. (подсказываю — люди пользуются многими другими браузерами, кроме IE6. И показывать им "ваш браузер не поддерживается" — вопиющий непрофессионализм)
Здравствуйте, WolfHound, Вы писали:
FR>>И для C++ и для разных вариантов GC есть неблокирующие или малоблокирующие распределители памяти, так что подавать это как преимущество GC неккоректно.
WH>Нука покажи мне реализацию неблокирующего менеджера памяти для С++.
Здравствуйте, VladD2, Вы писали:
VD>Дык не развешивай. Я выражаю свое мнение. В 21 веке С++ не место. Это динозавро который забыл вымереть.
Если сам не забыл, то другие не дали. Если язык живет, то кому-то это нужно. Другое дело, что приложения масштаба предприятия на нем писать нецелесообразно, но это уже другой разговор.
Здравствуйте, WolfHound, Вы писали:
WH>>>Там очень легко делается по куче на процессор. CC>>Грубо говоря по куче на поток. WH>Нет. Кучу нужно вешать на процессор.
Резонно, но только в случае если на одном процессоре гарантировать, что во время выделения памяти не произойдет переключения потока. А это опять к локам сводится...
CC>>Это можно и без GC. WH>Очень сложно. Есть проблемы с удалением объектов созданных в другом потоке.
Если откопаю — кину ссылку на библу которая так делает. Насколько я помню там что то вроде отложенного освобождения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, VladD2, Вы писали:
VD>В 21 веке С++ не место. Это динозавро который забыл вымереть.
21-й век давно уже идет. C++ все еще здесь. И будет здесь еще долго.
Я уверен, что за время его жизни ты еще успеешь сменить несколько своих любимых игрушек, обгадив при этом все предыдущие.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Здравствуйте, Константин Л., Вы писали:
КЛ>>>>Хе-хе. Она мне в с# почти ни разу не пригодилась, не говоря уже о с++. Имхо рефлексия нужна там, где есть ошибки проектирования КЛ>>>> (сериализацию и т.п. в расчет не берем).
АХ>>>Почему не берем? Это одна из базовых и необходимейших задач, а ее значение в свете веб-сервисов еще важнее. А также сюда же AOP, Unit Tests и еще много других нужных и полезных технологий.
КЛ>>SOAP сериализация — да. Вэб-сервисы — частный случай.
АХ>Да это для начала. Применений рефлексии еще полно. Да хотя бы нормальный вывод сообщений об ошибках. __FILE__, __LINE__ недостаточно.
и в чем же она нам тут поможет?
КЛ>>Поддержка AOP должна быть на уровне языка.
АХ>Уровень языка должен быть таким чтобы ее можно было безболезненно встроить с помощью подключаемой библиотеки. В этом помогут атрибуты.
не согласен. Полноценный AOP на рефлексии и атрибутах не построишь
АХ>>>COM — это кроссязыковая технология и при этом такой жутик, что MS пришлось сделать .NET. При этом собственно изначально .NET возник из проекта по добавлению метаданных к C++ (здесь), но в процессе оказалось что для полноценной компонентной технологии этого мало.
КЛ>>жутик? А может просто у некоторых людей проблемы с с++ и COM и им надо что-то попроще?
АХ>У самой MS с ним были проблемы, поэтому они и создали .NET. АХ>Дело не в "попроще", а в "логичнее, надежнее и больше возможностей."
ну да. но вот только зачем мне портить настроение? Пусть каждый живет чем хочет.
АХ>Для того, чтобы пользоваться COM мне еще надо всякие дурацкие нестандартные IDL-костыли вроде [in],[out] прикручивать, а потом пропускать через MIDL. Да и вообще даже с ATL с COM столько дурацкой тупой возни, да хотя бы с теми же GUIDами/CLSIDами, что застрелиться можно, а код замусорен макросами.
это какие-то они нестандартные и дурацкие? Это всего-лишь указания на способ передачи параметров. Что тебя тут смущает?
Как ты себе это представляешь по-другому? Какая возня? У меня нету возни с гуидами. Что-то ты путаешь.
АХ>Ну и к тому же COM поддерживает очень малую часть возможностей C++. АХ>Как мне с помощью COM любой стандартный контейнер типа std::vector передать ? АХ>Или boost::lambda воспользоваться? АХ>А могу ли я сделать шаблонную библиотеку? АХ>Как насчет исключений?
все так. Но какая альтернатива у .net? Remoting? те же яйца только в профиль.
КЛ>> Ну так пусть юзают что попроще, но к нам сюда не лезут.
АХ>Мы уж лучше что помощнее. Попроще это к PHP-товарищам.
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, Константин Л., Вы писали:
КЛ>>чего стоит мой — я знаю.
AF>Если у всех в вашей команде такой же опыт как у вашего веб-программиста, то дальше можешь не рассказывать. (подсказываю — люди пользуются многими другими браузерами, кроме IE6. И показывать им "ваш браузер не поддерживается" — вопиющий непрофессионализм)
не говори о том, чего не знаешь. Это просто смешно. Очень очень смешно. К сожалению я не могу раскрывать имена заказчиков. Всем бы таких, да далеко не все могут получить.
Здравствуйте, VladD2, Вы писали:
VD>А ничего. Используется один из примитивнеших алгоритмов. На простых тестах довольно шустро, но в реальных условиях практически не применимо. Тут где-то рядом кто-то делал тест (после пиара Губановым крутости ЖЦ Оберона), так там Оберон умер после создания нного количества объектов.
Поискал, к сожалению, не нашел... т.к. флейма больно много в поиске находится... а вот вам еще коллега контр-тесты привел...
Я, лично, понимаю, что можно подобрать именно такие тесты в которых выигрышь будет на нужной стороне. Вопрос в том, как себя будет вести ГЦ в реальных приложениях, в которых ведется активное выделение памяти?
Здравствуйте, konsoletyper, Вы писали:
K>Здравствуйте, dr.Chaos, Вы писали:
DC>>>>ИМХО С++ довольно неплохо подходит для создания графических движков, это одна из тех задач, откуда его будет очень не просто вытеснить .
K>>>Да на ассемблере тоже можно неплохой движок написать. DC>>Напиши . Я хочу на это посмотреть . Видел демки 200-300Кб с нормально 3D графикой и музыкой, но это не движок
K>Да ладно, не вопрос. Только мне понадобится $2'000'000'000 и 10 лет.
А теперь приведи такие же цифры для С++ и других технологий, при этом чтоб скорость и удобство были на одном уровне . Причем желательно обосновать эти цифры, впрочем как и предыдущую.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, dr.Chaos, Вы писали:
DC>>Мало того он признает что для прикладного программирования С++ не очень хорошо подходит именно из-за отсутствия GC и плохой компонентной модели.
VD>Плохой? Во как! Век живи, век учись... дураком помрешь...
VD>Откуда в С++ взялась компонентная модель?
Ну в виде dll и статических библиотек она таки есть.
VD>Что касается прикладных задач... а какие задачи не прикладные?
Влад если еще не читал "Дизайн и эволюция С++" Страуструпа очень рекомендую он там довольно подробно все написал.
Как сильные стороны С++ он обозначил:
низкоуровневое системное программирование
высокоуровневое системное программирование
встроенные системы
численные и научные расчеты
общее прикладное программирование (с определенными оговорками)
Если интересно ознакомься подробнее сам.
ЗЫ Могу книгу по почте прислать на русском .
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, dr.Chaos, Вы писали:
DC>>Что именно? То что неплохо подходит или то что непросто вытеснить? Хм, а графический движок не с битами возиться? Или я чего-то недопонимаю?
VD>Нет, не с битами. Они уже давно такой фигней не страдают. Почитай внимательно призентацию. Там есть про это не мало слов. На ассемблере они уже ничего не пишут. Все вычисления хотят сделать фукнциональными, чтобы ошибок по меньше было, и чтобы параллелились они хорошо.
Статью прочту позже.
По поводу того с чем работает движок мне рассказывать не надо , мне приходилось участвовать в разработке одного движка.
VD>Графика давно живет в разных дитеркиксах и шейдерах.
Кроме того FR вроде сказал что они предъявляли требования к не к языку реализации, а к языку прикладной логики.
DC>>Дык я и не утверждал что инструмент лучший. Но только на данный момент есть только требования к новому языку, но языка то еще нет. Так что мимо кассы, как появиться инструмент так и говорить можно будет.
VD>В общем-то ОКамл или Немерле удовлетворяют большинству указанных там требований. Не всем конечно, но уж точно они в сто раз ближе к тому идеалу чем С++.
А движки на них есть?
VD>Собственно весь разговор о том, что ищется замена С++.
DC>>Полагаю что новый стандарт решит часть проблем в С++.
VD>Ни одной!
Здорово, вот сошлась куча специалистов отрасли, потрындела 10 лет и в итоге выдала полный бред?? Я так понял твое высказывание? Т.е. несколько сотен непоследних специалистов по твоему неспособны решать какие-либо проблемы?
Здорово . Аплодирую стоя.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
на более важный, с моей точки зрения вопрос Влада, ты не ответил, а именно
Скромный список вопросов.
1. Ты лично занимался обеспечением работоспособности "вашего двигла" на этих платформах?
2. В какой игре можно увидить "ваше двигло"?
3. Сколько лет вы его разрабатываете?
Здравствуйте, konsoletyper, Вы писали:
K>Здравствуйте, jazzer, Вы писали:
J>>Разница была еще и в том, что Ада не была объектно-ориентированной.
K>А вот это смотря что считать ООП. В Аде 83 года не было tagged types. Это что-то вроде virtual в C++. Причём не сказать, что в Аде вообще не было ООП. Были инкапсуляция, наследование. А с полиморфизмом разобрались только к 95 (точно не знаю, но видимо до этого его реализовывали обходными путями). При этом в стандарте 83 года уже были generics.
Когда, когда в Ада появилось наследование?? в 83?
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы