Здравствуйте, jazzer, Вы писали:
ГВ>>А какое отношение имеет "Вау!" от "всех программистов" к истории метапрограммирования вообще и истории квазицитирования в частности?
J>Абсолютно никакого.
Правильно!
J>Это имеет отношение исключительно к упреку в адрес С++ за то, что он не имеет такой "базовой вещи" как рефлексия. Во времена создания С++ это базовой вещью ("вау" от "всех программистов") не было. Также как и исчисление бесконечно малых не было базовой вещью во времена Зенона. J>Смотри переписку с еао197, я уже устал по 10-му разу повторять.
Ёлки зелёные! Флейм на километр, ради того, чтобы вычислить апелляцию к коллективу в тезисе "рефлексия — это базовая возможность для языка программирования". Батенька, вы больше так не делайте.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Ёлки зелёные! Флейм на километр, ради того, чтобы вычислить апелляцию к коллективу в тезисе "рефлексия — это базовая возможность для языка программирования". Батенька, вы больше так не делайте.
ну сам же знаешь, как это бывает
Когда отвечаешь на первые два-три сообщения — флейма еще нет и все в теме, а потом, когда ветки разрастаются, никто уже не читает, с чего все началось и привязываются к одному сообщению (и сам грешен, если вижу новый большой флейм, обычно читаю только оцененные сообщения, хотя по-хорошему, конечно же, их тоже надо читать в контексте всей дискуссии). А изначально эта тема вообще была выделена из обсуждения нового стандарта С++, темы сугубо локальной.
P.S. Мне все это напомнило известную хохму с цитатой из полн. соб. соч. В.И.Ленина.
Цитировалось следующее: "Было бы ошибкой думать". И ссылка на том, страницу, все как положено.
При этом в оригинале было: "Было бы ошибкой думать, что .....".
Вот что хорошо чувствуется в его ответах, так это огорчение от повсеместного идиотизма и деградации образования. Вот это — действительно проблема. А всё прочее — чепуха.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, VladD2, Вы писали:
VD>С++ из 85-го. С теми концепцияи которые были хороши тогда.
Повсюду вижу эту фразу и меня удивляет следующая вещь. C++ не на пустом месте возник. Он же прямой наследник C. Собственно, именно совместимость с C обеспечила ему такую популярность. Ведь были и другие ОО-языки, так все выбрали именно C++.
Вот появились в C# 2.0 generics. А в C# 3.0 — LINQ. Из-за этого мы можем утверждать, что C# 3.0 — совсем другой язык? Или вот в C++ до определённой поры не было шаблонов. Почему же с добавлением такой значимой фичи его не переименовали в C++++?
Так вот, когда мы говорим о C++ с его проблемами, нужно помнить, что эти проблемы были заложены ещё в 70-е годы во время становления C. И C++ потому язык даже более старый, чем принято упоминать.
Здравствуйте, jazzer, Вы писали:
J>Вот если бы в С++ не было поддержки ООП — такой упрек был бы корректным. Потому что в то время было четкое понимание, что языки должны поддерживать ООП в том или ином виде.
Это уже преувеличение. Ведь именно благодаря С++ идея "все должно быть объектным и ориентированным" овладела массами.
Здравствуйте, Трурль, Вы писали:
Т>Здравствуйте, jazzer, Вы писали:
J>>Ну если верить этой странице (http://en.wikipedia.org/wiki/Timeline_of_programming_languages), то Ада и С++ — ровесники: 1983 год.
Т>С той разницей, что для Ады 1983 год — дата принятия стандарта, а для С++ — смены названия.
Разница была еще и в том, что Ада не была объектно-ориентированной.
И для С++ это тоже была не просто смена названия:
New features were added including virtual functions, function name and operator overloading, references, constants, user-controlled free-store memory control, improved type checking, and a new single-line comment style with two forward slashes (//).
Здравствуйте, VladD2, Вы писали: VD>Здравствуйте, Tonal-, Вы писали: T>>Чем этот код плох? VD>Тем что его очень сложно понять. А ведь это совершенно примитивный пример. Реальные грамматики куда сложее.
Понять его не сложнее, чем Вариант на Немерле
мне кажется хуже, но тирпим. VD>Твой же просто не приемлем.
Может будешь аргументировать свои высказывания, иначе получается просто трёт.
Или тебе просто так трепаться по приколу, заваливая собеседников едкими ответами подкреплёнными только гонором и спесью?
Ты даже не заметил ошибок в моём коде, которые были бы невозможны в декларативном синтаксисе.
С моей точки зрения, проблемы здесь в другом: т.к. в С++ отсутствует рантаймовское сопоставление с образцом, эмуляция почти всегда проиграет синтаксису.
Вот несколько действительных аргументов:
Не унифицированно, значит надо изобретать/изучать заново для каждого случая.
Все таки многословность — примерно в 1.5 2 раза больше писать.
Проверка синтаксиса компилятором затруднена или отсутствует.
Невозможна оптимизация компилятором.
С другой стороны, у тебя всегда есть возможность подогнать решение под задачу.
Ну и можно создать двольно общую библиотеку.
Здравствуйте, eao197, Вы писали:
E>Поверьте, если не вестись на пропаганду местных .NET евангелистов и не зачитываться экстремалами от C++ (Александреску того же), то на C++ можно писать очень даже спокойно, качественно и не напрягаясь.
Верю. Имхо, современные проблемы C++ очень хорошо изложил Маршак
Ты старомоден. Вот расплата
За то, что в моде был когда-то.
Здравствуйте, VladD2, Вы писали:
VD>>>MFC входит в комплект VC, и по сути является стандартной библиотекой. CC>>С каких пор VC стало стандартом С++ ? VD>>>WinForms стандартной библиотекой не является. Он является частной библиотекой МС. CC>>Равно как и MFC в таком случае. VD>Значит ты согласен, что вхождение библиотеки в комплект поставки продукта от МС еще не означает, что библиотека становится стандратной?
Да. Тут у нас с тобой ничья
VD>Я тебе просто продемонстрировал твои же двойные стандарты. Ведь ты не считаешь С++ непереносимым в следствии того, что у него нет стандартной библиотеки ГУИ? Ну, так почему же точно такой же факт в CLI ты склонен считать основанием для не пререносимости?
Ну, потому как ошибочно считал что WinForms входит в стандартные библиотеки.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, VladD2, Вы писали:
E>>не нужно оценивать астролябию с позиции пользователя GPS приемника.
VD>+1 Согасись, что так же глупо использовать астролябию в наше время для навигации по местности. Вот об этом люди и говорт. С++ из 85-го. С теми концепцияи которые были хороши тогда. Но используют его сейчас и с теми концепциями (плюс немного новых) что были тогда. Вот и выходит, что ты предлагаешь не говорить о том, что современные люди используют доисторические инструменты.
Я, прежде всего, предлагаю не осуждать кого-либо за использование какого-либо инструмента. И исхожу из того, что люди в большинстве своем, вполне разумны и делают осмысленный выбор на основании своих конкретных условий. Если кто-то использует C++ -- значит в его конкретных условиях это нормально и выгодно.
А развешивание ярлыков вроде "доисторических" инструментов вызывает только неприятие как самого говорящего такие вещи, так и его идей.
Тем более, что даже в наше время использование GPS приемников не всегда возможно как по техническим, так и по финансовым, так и по идеологическим причинам. Например, не может наша военка устанавливать на военную технику GPS приемники в качестве основного средства навигации -- просто из-за того, что данной системой владеет потенциальный противник. Использование секстантов для определения широты является обязательным предметом при подготовке морских штурманов (что вполне разумно, т.к. техника временами выходит из строя и GPS приемники здесь не исключение). И, если не ошибаюсь, GPS приемники бесполезны в зонах высоких помех для радиосигналов.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, konsoletyper, Вы писали:
VD>>С++ из 85-го. С теми концепцияи которые были хороши тогда.
K>Повсюду вижу эту фразу и меня удивляет следующая вещь. C++ не на пустом месте возник. Он же прямой наследник C. Собственно, именно совместимость с C обеспечила ему такую популярность.
Это, имхо, спорное утверждение. Совместимость с C оказала очень серьезное влияние на дешевизну и распространение C++ на различные платформы. Ведь, во-первых, C++ просто напросто унаследовал всю готовую стандартную библиотеку из C (хотя на тот момент она еще и не была стандартом). И, во-вторых, C++ изначально существовал как Cpre, затем как Cfront -- т.е. препроцессор, который из C++ кода генерировал C-шный код, который затем обрабатывался C-ным компилятором и линкером.
Так что разработчики C++ в то время пошли по пути, по которому сейчас идут разработчики Scala и Nemerle -- использование готовых библиотек вместо написания собственных.
Что же касается популярности C и воздействие этой популярности на популярность C++ -- это, имхо, открытый вопрос. Ведь C всегда, и в то время так же, рассматривался как низкоуровневый системный язык. А C++ проектировался как более высокоуровневый, т.е. для другой ниши, как конкурент Simula, но настолько же эффективный, как C.
K>Ведь были и другие ОО-языки, так все выбрали именно C++.
Далеко не все выбрали C++. Был еще и Smalltalk, был Object Pascal для Apple, был Objective-C, был Eiffel.
K>Вот появились в C# 2.0 generics. А в C# 3.0 — LINQ. Из-за этого мы можем утверждать, что C# 3.0 — совсем другой язык? Или вот в C++ до определённой поры не было шаблонов. Почему же с добавлением такой значимой фичи его не переименовали в C++++?
А C++ и так переименовывали, ведь он был изначально C with Classes, затем было промежуточное название C84, и лишь потом, в 1983-м появилось название C++. Причем смена названия была вызвана именно необходимостью показать, что C++ собирается идти гораздо дальше, чем C with Classes. А желание добавить в C++ шаблоны возникло у разработчиков языка еще в 1986 (если не раньше). Так что можно считать, что шаблоны и исключения были изначально запланированы в языке. Поэтому и не нужно было менять название из-за их появления.
Тут, кстати, другое интересно -- механизм шаблонов и исключений был описан для C++ в 1988-1990 годах. Но в Java generic-и добавились только в 2003-м (если я не путаю дату выхода Java 1.5). А появившаяся в 2000-м первая версия C# так же не содержала generic-ов. И это не смотря на то, что шаблоны уже десять лет до этого демонстрировали свою полезность и востребованность! Так что еще совсем недавно C++ предоставлял разработчикам такие языковые возможности, которых не было у его конкурентов. Тем более, что даже в 2000-м и 2001-м у той же Java производительность ни шла ни в какое сравнение с производительностью C++.
K>Так вот, когда мы говорим о C++ с его проблемами, нужно помнить, что эти проблемы были заложены ещё в 70-е годы во время становления C. И C++ потому язык даже более старый, чем принято упоминать.
Если даже не брать историю C, то сам по себе C++ намного старше. Поскольку работы над C with Classes Страуструп начал в 1979-1980, а в 1980-м году первый Cpre был даже использован в реальном проекте (по воспоминаниям Страуструпа).
Вообще же, для понимания идей и пути развития C++ очень рекомендую прочитать "Дизайн и эволюция языка C++". Особенно первые главы -- отношение я языку меняется значительно.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Hello, Cyberax!
You wrote on Wed, 31 Jan 2007 22:39:08 GMT:
C>>> Gen. GC в Java весьма сложно отключить >> Сорри, incremental GC хотел написать. C> Его как раз отключать не надо, так как он сильно помогает C> уменьшить частоту полных сборок.
Разве я писал что его нужно отключать?
Меняем generational на incremental:
Если причиной тому был большой размер кучи, то возможно проблема решалась бы включением incremental GC и соответствующей настройкой размера young/old generations.
C>>> Механизм HotSpot напрямую к GC не относится. >> Не совсем понял. Разве то, что понимается под HotSpot не включает >> в себя generational GC? C> HotSpot — это механизм перекомпиляции кода "на лету", по C> результатам профилирования.
The Java HotSpot Virtual Machine is Sun's VM for the Java platform. It delivers the optimal performance for Java applications using many advanced techniques, incorporating a state-of-the-art memory model, garbage collector, and adaptive optimizer. It is written in a high-level, object-oriented style, and features:
— Uniform object modelInterpreted, compiled, and native frames all use the same stack
— Preemptive multithreading based on native threads
— Accurate generational and compacting garbage collection
— Ultra-fast thread synchronization
— Dynamic deoptimization and aggressive compiler optimizations
— System-specific runtime routines generated at VM startup time
— Compiler interface supporting parallel compilations
— Run-time profiling focuses compilation effort only on "hot" methods
Скорее всего, проблема в том, что ты понимаешь под HotSpot механизм JIT-компиляции, а я имел в виду HotSpot VM. Строго говоря, наверное их стоит различать, хотя как ты сам видишь, даже в документах от Sun этого не делается: часто под HotSpot понимается VM полностью.
C> Непосредственно к GC он отношения не имеет, в JRE от SUN есть C> несколько независимых алгоритмов GC.
Разумеется есть различные алгоритмы, только все они основываются на модели поколений. Это базовый подход к сборке мусора в HotSpot (HotSpot VM).
Здравствуйте, konsoletyper, Вы писали:
K>Здравствуйте, dr.Chaos, Вы писали:
DC>>Мощный — это как?
K>Это так, как мы себе и прдставить не можем. Вот рассказал бы кто-то про нынешние 3D-игры лет 20 назад, его бы психом посчитали.
Хм. Однако . Слышу звон, но не знаю где он.
DC>>ИМХО С++ довольно неплохо подходит для создания графических движков, это одна из тех задач, откуда его будет очень не просто вытеснить .
K>Да на ассемблере тоже можно неплохой движок написать.
Напиши . Я хочу на это посмотреть . Видел демки 200-300Кб с нормально 3D графикой и музыкой, но это не движок
K>Просто сейчас C++ — это лучшее, что подходит для данной задачи. Но надо понимать, что это не навсегда.
Да именно лучшее, на это есть объективные причины. Сам Страуструп никогда не считал C++ лучшим из языков, он просто его называет достаточно хорошим для решения практически любой задачи.
Мало того он признает что для прикладного программирования С++ не очень хорошо подходит именно из-за отсутствия GC и плохой компонентной модели.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, dr.Chaos, Вы писали:
DC>>Мощный — это как?
VD>Мощьный — это значит фунциональный, удобный надежный и в меру быстрый.
DC>>ИМХО С++ довольно неплохо подходит для создания графических движков, это одна из тех задач, откуда его будет очень не просто вытеснить .
VD>Это заблуждение. С++ уже ни для чего кроме возни с битами не подходит хорошо.
Что именно? То что неплохо подходит или то что непросто вытеснить? Хм, а графический движок не с битами возиться? Или я чего-то недопонимаю?
VD>Тут как-то пробегала ссылка на презентацию ролов создающих (если не ошибаюсь) новый Анрлиэл. Там как раз говорилось, что С++ не удоволетворяет современных потребностей и что нужен новый язык. Описывлись требования к этому новому языку. И что забавно большинство из этих требований удивительно пересекались с Немерле.
VD>Обсуждение с ходу не нашел, но нашел ссылку на презентаху: VD>http://www.cs.princeton.edu/~dpw/popl/06/Tim-POPL.ppt VD>Вот мнение о С++ из нее: VD>
Reliability
VD>Error-prone language / type system leads to wasted effort finding trivial bugs
VD>Significantly impacts productivity
VD>Concurrency
VD>Hardware supports 6-8 threads
VD>C++ is ill-equipped for concurrency
Дык я и не утверждал что инструмент лучший. Но только на данный момент есть только требования к новому языку, но языка то еще нет. Так что мимо кассы, как появиться инструмент так и говорить можно будет.
Полагаю что новый стандарт решит часть проблем в С++.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Здравствуйте, konsoletyper, Вы писали: K>Или вот в C++ до определённой поры не было шаблонов. Почему же с добавлением такой значимой фичи его не переименовали в C++++?
Потому что С++ — это не lvalue, соответственно, (С++)++ не скомпилируеться
[]
VD>Ну, нормальный человек и так прочесть может . Здесь очевидно разбирается некий язык токены которого лежат в списке decls.
ну ты никогда не можешь удержаться, чтобы не попытаться унизить собеседника. Оказывается большинство программистов уже просто обязаны "читать" немерле, дожили...
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Константин Л., Вы писали:
КЛ>>Люди, но неужели вы до сих пор не поняли, что на с# нельзя писать программы с нетривиальной логикой просто потому, что он для этого не предназначен? Он просто убог для этого. КЛ>>Simple data flow — да, но не больше.
КЛ>>Одно отсутствие const параметров методов — это убийство.
КЛ>>Я это говорю, исходя из личного опыта. У меня "эйфория" от него прошла довольно быстро.
VD>Как ты думаешь, чего стоит твой опыт после таких заявлений?
чего стоит мой — я знаю. А вот чего стоит твой? Кроме шапкозакидательства, хамства, снобизма, и т.п. пока ничего толкового не увидел.
На днях планирую посмотреть подробнее на немерле и написать о впечатлениях.
Здравствуйте, Cyberax, Вы писали:
C>Андрей Хропов wrote: >> C>Это не сильно больше, чем в новом Стандарте С++. >> В каком? который 0x? Так он еще когда выйдет. C>Через два года.
Это они только
expressed a strong desire
.
C>Следующий ISO-стандарт для C# тоже еще не близко.
Так то, что я привел, уже стандарт и уже реализовано в MS.NET и Mono.
C>Ну это точно такая же ситуация, как и с С++. Необходимо будет C>тестировать на совместимость со всеми средами так же, как и в случае с C>С++ требуется тестировать с разными компиляторами.
Если у тебя портабельная библиотека, то это требует минимальных усилий (ну как с Java ситуация).
C>Ну так и в C# точно так же, используешь какой-нибудь системно-зависимый C> контрол — и привет портируемости.
Ну естественно. Но это уж, что называется, сам виноват.
>> Стандарт должен обеспечивать возможность простой интеграции библиотек и >> базовую функциональность. Все остальное — в портабельные библиотеки. C>Если нет стандарта на библиотеки — то будет зоопарк (собственно, он УЖЕ C>есть).
Стандартная библиотека не может охватывать все области человеческой деятельности. В ней должен быть необходимый минимум для интероперабельности.
Вот, например, возьмем тот же GUI. Каким он должен быть — на нативных контролах или одинаковый на всех платформах? Иконки растровые или векторные? Должен смену скинов поддерживать или нет? Слишком много разных требований, на всех не угодишь.
C>Вот в Java, фактически, такой стандарт есть — это Sun JDK, который есть C>на куче платформ. А сейчас вообще открытым стал.
Да, ну так там тоже зоопарк. GUI на чем делать — на AWT или Swing?
MS заинтересована прежде всего в поддержке своей платформы поэтому они более высокие уровни (ASP.NET, ADO.NET, WinForms, WWF, WCF, WPF) не вносят в стандарт. Но в Mono первые 3 почти доделали их для совместимости, а также предлагают и свои портабельные альтернативы (тот же Gtk#).