Re[28]: Кстати
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.04.09 19:46
Оценка:
Здравствуйте, criosray, Вы писали:

ГВ>>Хм. В принципе, приблизительно так тоже можно. Некоторые сложности с правильной регистрацией. Мне интересно, как разрешается ситуация, если SomeType содержит конструкторы вроде таких: SomeType(int, string, ISomeOtherType) и SomeType(ISomeOtherType)?

C>Выбирается самый длинный подходящий. То есть если IoC`ку указали значения для аргументов int и string, то сконструирует по первому.

Этого я сейчас делать не стал, чтобы не тянуть буст. Хотя в принципе — возможно.

ГВ>>А .Net переписать не надо по ходу дела?

C>Так ведь тут нам с пеной у рта доказывают, что на С++ все просто чудесно в плане алгоритмизации. В чем проблема-то? А ведь это далеко не все, что позволяют IoC в дотнет. Например, Castle Windsor, Unity, Spring.NET и другие предоставляют до купы мощный механизм AoP (интерцепторы) — путем генерирования прокси-классов на лету...

Генерировать прокси, увы, без чего-то вроде emit можно, но довольно сложно. Так что, это точно не здесь и не сейчас.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[21]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.04.09 20:08
Оценка:
Здравствуйте, Хвост, Вы писали:

Х>лично я заменяю их на императивный цикл for


Мне тебя очень жалко.

Х>сейчас уже есть возможность писать в функциональном стиле, да, скачай msvc10 (CTP) и возрадуйся лямбдам (да ещё и с замыканиями!)


Ой не верю. Для этого нужно GC. Или снова будут UB там и сям.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.04.09 20:11
Оценка: :)
Здравствуйте, catBasilio, Вы писали:

B>Если С# так хорош, то почему всякие Crysis, Quake, FarCry и прочее на нем не пишут?


Банально выжимают производительность. Тот же Quake писался на С. Кормак ООП в принципе не приветствовал никогда.
Кстати, большой объем кода в играх — это логика игры. И его ни один идиот на С не пишет.
Есть и игры написанные на 90% на управляемом коде. Так что выигрышь от применения С++ и С не велик.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.04.09 20:12
Оценка:
Здравствуйте, VladD2, Вы писали:

Х>>сейчас уже есть возможность писать в функциональном стиле, да, скачай msvc10 (CTP) и возрадуйся лямбдам (да ещё и с замыканиями!)


VD>Ой не верю. Для этого нужно GC.


Нет. GC для этого не обязателен.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[23]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.04.09 20:16
Оценка:
Здравствуйте, Хвост, Вы писали:

Х>а погуглить? первая ссылка по запросу static polymorphism даёт представление что ето такое и как ето пользовать.


Погугли и почитай, что за бред там пишется. Все про С++. Это локальная терминалогия отдельных идиотов. Научного понятия статического полиморфизма нет. Есть статическая типизация и разные виды полиморфизма. Но любой из них может отрабатывать в рантайме.

VD>>В общем, не стоит так напрягаться. Этому гнилью даже новый стандарт не поможет. Кстати, где он? (с)

Х>ето твоему немерлю ничего не поможет, мертворождённый проект.

Странный способ ответита на вопрос. Ну, да ладно.

Гы. Шарп уже впитал из Немерла добрую половину и продолжает двигаться в этом направлении. Лет через 10 C# станет немерлом со шрамами оставленными эволюцией. Это как минимум. А как максимум я тебе пришлю эту ссылочку и посмотрю на то как ты будешь выкручиваться.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.04.09 20:17
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Дык!


ГВ>


Не, так не честно. Слюноотделение есть, а вкуса нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.04.09 20:19
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Не, так не честно. Слюноотделение есть, а вкуса нет.


Слюни можно употребить в качестве аргументации. Как раз подходящий форум.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[27]: Простенький IoC на C++
От: criosray  
Дата: 26.04.09 20:54
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Собирается VS2K5, там собственно IoC.h и IoC_COM.h — реализация контейнера, остальное тесты и примочки. Дальше см. комментарии, если что не понятно — спрашивай здесь.


Пока код не читал, но интересно — это нынче стандартная практика пихать в хидеры реализацию?

Комментарии по делу будут позже...
Re[28]: Простенький IoC на C++
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.04.09 21:05
Оценка:
Здравствуйте, criosray, Вы писали:

C>Пока код не читал, но интересно — это нынче стандартная практика пихать в хидеры реализацию?


Там всё на шаблонах.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[17]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.04.09 21:07
Оценка: 3 (2) +2
Здравствуйте, ollv, Вы писали:

O>>> Ну так и есть и ксамл WPF это хорошо иллюстрирует, и плюсам тянуться за гуями, мне кажется, вообще не стоит, за плюсами мегапреимущество в архитектурных и скоростных решениях, за счет высоких абстракций и шаблонов. Гуя же так ил иначе перекочует в XML подобное оформление, кстати при современных фреймворках с парсингом XML тандем его с плюсами мне кажется вполне приемлемым, даже удобным.


VD>>Можно пример высокоуровневой абстракции которую нельзя воспроизвести на языке отличном от С++?

O> на каком конкретно?

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

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

В прочем если тебя интересует пенисометрия, то очень смешно сравнивать С++ с современными ФЯ. Для примера Хаскель, Немерле или Лисп (который, кстати, существенно старше С++).

Теперь по абстракциям и архитектурным решениям. Если под абстракциями понимаются абстракции программирования, то С++ поддерживает ООП, параметрический полиморфизм и (с горем пополам) метапрограммирование. Все это есть в море языков. Причем во многих реализация отдельных фич, а иногда и всех значительно лучше чем в С++. Кроме того С++ не поддерживает парадигму функционального программирования, что приводит к тому, что писать на нем в функциональном стиле становится крайне неудобно.

Если под абстракциями понимаются абстракции прикладной сферы, то это тоже чушь, так как любой язык полный по тьюригу потенциально может реализовать любую абстракцию. Даже скриптовые языки тут ни чем не уступают С++.

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


Еще одно утверждение не достойное серьезного человека. Рабивается простым примером. По верх дотнета реализован С++ в котром возоности шаблонов реализованы полностью.

Теперь я тебе открою правду о шаблонах.
1. Шаблон — это не более чем синтаксический препроцессор который позволяет во время компиляции подставить что-то вместо плэйсхолдеров. Так вот есть куда более мощьные системы типов (например, система типов Haskell) на фоне которых препроцессор вроде С++ просто меркнет.
2. Есть куда более мощные синтаксические препроцессоры (например, Nemerle и Лисп) которые по возможностям и удобству рвут С++ как тузик грелку. К примеру, я воспроизвел linq из спецификации C# написав два макроса. С++ такое сделать не может в приципе.
3. Кроме того шаблоны в С++ были задуманы как средство релизации параметрического полиморфизма. Оных намного лучше реализован почти во всех языках в которых он вообще реализован. И те же дженерики тоже лучше шаблонов за исключением пары неудобств. А уж параметрический полиморфизм в современных ФЯ сделан несравнимо лучше шаблонов С++. Опять же курим Хаскель, ОКамл и т.п. Просто использование шаблонов выходит за рамки параметрического полиморфизма и входят в область метапрограммирования. Но в этой области безоговорочно царят макросы. И убогим возможностям С++ тут делать не чего.

O>дженерики дотнета и не дорастут, а в джаве на сколько я знаю, темплейты так же весьма ограничены (по известным причинам).


Это кто-то другой не дорос до понимания сути вещей.

O> Кроме того, на плюсах вполне реализуемы элементы не родственных стурктур, к примеру итерации for_each, find_if count_if, функторы, придают плюсам оттенки функциональных языков,


Они придают плюсам оттенок помойки. Попиши сначала на полноценном ФЯ, а потом делай такие заявления.
Кстати вместо самопальный (и доволно бессмысленных) терминов вроде "не родственных стурктур" лучше использовать общепринятый термин "параметрический полиморфизм" и "утиная типизация". Тогда станет ясно, что С++ не единственный язык где функции можно применять для разных типов данных. По этому поводу курим таких наследников ML как OCaml.

O>но вообще метапрограммирование видоизменяет плюсы, а говорить, что это все можно реализовать в джава или дотнете — просто не знать плюсы.


Вот нести такую чушь как несешь ты должно быть просто стыдно. А говорить, что все это можно реализовать "все можно реализовать в джава или дотнете" не просто можно, а можно смело. Опять же МП на шаблонах С++ доступно в C++/CLI работающем на VM .NET. Но это пример чисто иллюстративный, чтобы и тебе было понятно, что ты заблуждаешься. Если же серьезно говорить о метапрограммировании, то С++ тут откровенный лузер, если сравнивать его с такими языками, реализованными поверх дотнета, как Nemerle и Lisp. Вот где МП доведено до высшего пилотажа. Причем оно исходно предусмотрено в языка, а не достигается использованием побочных эффектов системы типов.


O> Даже простейший вызов из темплейтного метода непредопределенного класса с оператором () — уже недостижимая мечта для шарпа или жавы.


И и правда мечта. Называется она строгая статическая типизация. Мечта не достижимая в С++.
К метапрограммированию, правда, отношения имеет мало.

O> Впрочем практика показывает, базовый функционал крупных проектов требующих гибкой архитектуры реализуется чаще на плюсах (во всяком случае в моей практике это именно так)


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

Еще раз повторяю, что единственным реальным приемущестом С++ является скорость исполняемого кода которой можно добиться за счет усложнения собственной жизни. А все слова про какие-то там великие абстракции — это просто чуешь и бред. Точнее даже лженаучная ересь вроде торсионных полей или религиозной бредятины. Короче, вера она и есть вера.

O>констрейны дают возможность предопределить поведение при компиляции. Да и еще, плюсы то развиваются, стандарт постоянно дополняется новыми фичами расширяюшими возможности, typeof это не последнее


Стандарт не изменялся с 1998 года. Читай по буквам — Д Е С Я Т Ь лет. Разговоры о том, что вот-вот появится новых стандарт не утихают с 2000-го года. Но, насколько мне известно до сих пор он так и не принят.
Так что ты просто выдаешь желаемое за действительное. На твоем месте я бы почитал об альтернативных решениях и перестал так бодро гнать пургу.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.04.09 21:24
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

VD>>Ой не верю. Для этого нужно GC.


ГВ>Нет. GC для этого не обязателен.


Из известных мне вариантов есть еще только подсчет ссылок. Но он тоже вряд ли может быть применен в рамках С++, так как объект не обязаны его реализовывать. Да и подсчет ссылок приводит к зацикливаниям, которые потенциально тоже можно разрыват (пример — Руби), но это опять же проблематично. По любому, подсчет ссылок или GC — это все вариации на тему автоматического управления памятью.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Работа - с чего начать: С++ или С#?
От: Lloyd Россия  
Дата: 26.04.09 23:08
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Почему самые высоконагруженные сайты написаны не на С++?


Высоконагруженные части некоторых высоконагруженных сайтов-таки написаны на С/C++.
Не так давно на InfoQ было видео выступления одного из разработчиков FaceBook-а. Посмотри, там много интересного было разсказано.
Re[24]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.04.09 03:36
Оценка: -1
Здравствуйте, VladD2, Вы писали:

VD>>>Ой не верю. Для этого нужно GC.

ГВ>>Нет. GC для этого не обязателен.
VD>Из известных мне вариантов есть еще только подсчет ссылок. [...]

Повторю: ни GC, ни подсчёт ссылок для ФП-стиля не обязательны.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[18]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.04.09 05:13
Оценка: 6 (3) +1
Здравствуйте, VladD2, Вы писали:

VD>>>Можно пример высокоуровневой абстракции которую нельзя воспроизвести на языке отличном от С++?

O>> на каком конкретно?
VD>В высказывании утверждалось, что С++ имеет преимущество. Не говорилось, что преимущество именно перед конкретным языком. Значит выбор из всего списка языков. Так что тебе прийдется или признаться, что ты спорол чушь или привести пример абстракции которая не реализуется на одном из существующих на сегодня языке.

Как ты правильно заметил, Тьюринг-полные языки, в общем, эквивалентны по своим возможностям в смысле выражения абстракций. Всё дело в итоговой цене на билет. Я не сомневаюсь, что абстракцию автоматического управления ресурсами вроде std::auto_ptr можно реализовать и на Хаскеле, и на Лиспе и ещё много на чём. Вопрос остаётся тем же самым: сколько это будет стоить пользователю.

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


VD>В прочем если тебя интересует пенисометрия, то очень смешно сравнивать С++ с современными ФЯ. Для примера Хаскель, Немерле или Лисп (который, кстати, существенно старше С++).


Так с современными, или с теми, которые старше и на которых обкатывались идеи, впитанные C++?

VD>Теперь по абстракциям и архитектурным решениям. Если под абстракциями понимаются абстракции программирования, то С++ поддерживает ООП, параметрический полиморфизм и (с горем пополам) метапрограммирование. Все это есть в море языков. Причем во многих реализация отдельных фич, а иногда и всех значительно лучше чем в С++. Кроме того С++ не поддерживает парадигму функционального программирования, что приводит к тому, что писать на нем в функциональном стиле становится крайне неудобно.


В новой версии стандарта — поддерживает.

VD>Если под абстракциями понимаются абстракции прикладной сферы, то это тоже чушь, так как любой язык полный по тьюригу потенциально может реализовать любую абстракцию. Даже скриптовые языки тут ни чем не уступают С++.


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

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


VD>Еще одно утверждение не достойное серьезного человека. Рабивается простым примером. По верх дотнета реализован С++ в котром возоности шаблонов реализованы полностью.


По всей видимости, ollv имеет в виду C#, говоря о .Net. В том же, что кодогенерация C++ перенастроена на IL ничего необычного нет. Тьюринг-полнота, ага. Из C++ можно и Lisp генерировать. И наоборот. Вопрос в практичности такого решения.

VD>Теперь я тебе открою правду о шаблонах.


[skip обнажённая правда, от блеска которой слепит глаза и хочется сморкаться]

Всё это, конечно, правильно, хоть и с некоторыми поправками. Но поправки сейчас не суть важны. Важно другое: что та самая "область" в которой царят все за компанию (кроме C++) магическим образом не пересекается с теми областями, в которых от C++ никак не могут (и не хотят) избавиться по сугубо практическим соображениям. То есть, она как бы есть, но её значимость как бы слегка эфемерна по отношению к тому набору требований, с которым приходится иметь дело C++-никам.

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

O>>дженерики дотнета и не дорастут, а в джаве на сколько я знаю, темплейты так же весьма ограничены (по известным причинам).

VD>Это кто-то другой не дорос до понимания сути вещей.

Суть вещей — многогранное явление. Для каждого она своя.

O>> Кроме того, на плюсах вполне реализуемы элементы не родственных стурктур, к примеру итерации for_each, find_if count_if, функторы, придают плюсам оттенки функциональных языков,


VD> Они придают плюсам оттенок помойки. Попиши сначала на полноценном ФЯ, а потом делай такие заявления.


Помойка или нет — это сугубо эмоциональная оценка. Не нравится — не пользуйся, никто не заставляет. Зато нет никакой необходимости любой ценой приводить структуру потока управления в соответствие с некоторой "правильной парадигмой".

VD>[...] С++ тут откровенный лузер, если сравнивать его с такими языками, реализованными поверх дотнета, как Nemerle и Lisp. Вот где МП доведено до высшего пилотажа. Причем оно исходно предусмотрено в языка, а не достигается использованием побочных эффектов системы типов.


Забавно, что как раз использование "побочных эффектов" и делает C++ столь привлекательным по критерию производительности программиста при сохранении производительности продукта.

O>> Даже простейший вызов из темплейтного метода непредопределенного класса с оператором () — уже недостижимая мечта для шарпа или жавы.

VD>И и правда мечта. Называется она строгая статическая типизация. Мечта не достижимая в С++.
VD>К метапрограммированию, правда, отношения имеет мало.

А чистота "метапрограммирования", или "функционального программирования", или ещё какая "чистота" какой-нибудь очередной мутной "парадигмы" вообще не шибко-то кого и беспокоит (в мире C++). Пуризм — это ещё одно ругательство, как и BASIC, если ты не в курсе. Есть только два критерия: "удобно написать удобную фишку X" и "иметь возможности для отступления в случае потерь производительности". Теоретические же базисы хороши для формирования общей культуры программиста и исследования теоретических же проблем. Хотя это отнюдь не отрицает, например, того, что Lisp хорош в сфере обработки символических данных. Кстати, обрати внимание — Lisp тоже поддерживает императивный стиль одновременно с функциональным.

O>> Впрочем практика показывает, базовый функционал крупных проектов требующих гибкой архитектуры реализуется чаще на плюсах (во всяком случае в моей практике это именно так)

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

Логическая связь этих высказываний остаётся для меня загадкой. Неужели, Влад, ты покушаешься на святое: на миллионы успешных продуктов и вполне успешных программистов? Глазам своим не верю. Грэхема на ночь глядя обчитался, что ли?

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


Я вам не скажу за всю Одессу, но по моей практике язык всегда был самой последней причиной появления этих самых "весьма глючных продуктов". Куда как более существенными выглядят другие возможные причины: неудачный менеджмент, неполная постановка задачи, плохо проработанные требования пользователей, бестолковый маркетинг. А язык...

VD>Еще раз повторяю, что единственным реальным приемущестом С++ является скорость исполняемого кода которой можно добиться за счет усложнения собственной жизни. А все слова про какие-то там великие абстракции — это просто чуешь и бред. Точнее даже лженаучная ересь вроде торсионных полей или религиозной бредятины. Короче, вера она и есть вера.


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

O>>констрейны дают возможность предопределить поведение при компиляции. Да и еще, плюсы то развиваются, стандарт постоянно дополняется новыми фичами расширяюшими возможности, typeof это не последнее


VD>Стандарт не изменялся с 1998 года. Читай по буквам — Д Е С Я Т Ь лет. Разговоры о том, что вот-вот появится новых стандарт не утихают с 2000-го года. Но, насколько мне известно до сих пор он так и не принят.


И это очень хорошо, что не нужно напряженно следить за настроениями в комитете. Нет, это (читай по буквам) О Ч Е Н Ь хорошо.

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


Нет-нет, Девид Блейн, это ты очень основательно ошибаешься в оценке: что, где и когда должно находиться. Больше того, ты же сам и выдаёшь желаемое за действительное, как это делает тьма критиков C++: сначала они апеллируют к мнимому обилию мемори-ликов, потом к мозголомности, потом — к отсутствию "теоретической чистоты" и т.п. Хорошо, до мирового заговора не все доходят. Нормально, ничего, в сущности, нового. История повторяется с периодичностью, достойной метронома.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[27]: Работа - с чего начать: С++ или С#?
От: Mamut Швеция http://dmitriid.com
Дата: 27.04.09 07:25
Оценка:
ГВ> Тут вопрос в другом: удалось реализовать фичу X средствами самого языка ("понятно какими" или "непонятно какими" — совершенно не важно) или нет. Если не удалось — значит возможностей языка для этой фичи не хватает. Если удалось, то относить сей факт к "недостаткам" можно, ИМХО, только по каким-то очень вычурным соображениям вроде очередного "миллиона индусов, которые завалят нас багами".

Все Тьюринг-полные языки равны друг другу по возможностям (ну то есть то, что решается одной строчкой на Хаскеле, можно решить тысячью строк на ассемблере). Другой вопрос — а надо ли, и не взять ли в руки инструмент, котороый повышает эффективность разработки?
avalon 1.0b rev 146


dmitriid.comGitHubLinkedIn
Re[19]: Работа - с чего начать: С++ или С#?
От: criosray  
Дата: 27.04.09 08:52
Оценка: +1 -3
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Как ты правильно заметил, Тьюринг-полные языки, в общем, эквивалентны по своим возможностям в смысле выражения абстракций. Всё дело в итоговой цене на билет. Я не сомневаюсь, что абстракцию автоматического управления ресурсами вроде std::auto_ptr можно реализовать и на Хаскеле, и на Лиспе и ещё много на чём. Вопрос остаётся тем же самым: сколько это будет стоить пользователю.


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

VD>>Теперь по абстракциям и архитектурным решениям. Если под абстракциями понимаются абстракции программирования, то С++ поддерживает ООП, параметрический полиморфизм и (с горем пополам) метапрограммирование. Все это есть в море языков. Причем во многих реализация отдельных фич, а иногда и всех значительно лучше чем в С++. Кроме того С++ не поддерживает парадигму функционального программирования, что приводит к тому, что писать на нем в функциональном стиле становится крайне неудобно.


ГВ>В новой версии стандарта — поддерживает.


Поддерживает 1% от ФЯ? Замечательно.

ГВ>А так — да, бесспорно. На Lisp можно написать очень много всего интересного. Если бы ещё не потеря производительности по сравнению с "убогим" C/C++ — всё было бы совсем хорошо.


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

Лучшее — враг хорошего.

O>>>дженерики дотнета и не дорастут, а в джаве на сколько я знаю, темплейты так же весьма ограничены (по известным причинам).

VD>>Это кто-то другой не дорос до понимания сути вещей.
ГВ>Суть вещей — многогранное явление. Для каждого она своя.
Особенно, если Вы смотрите на вещи сквозь призму непонимания и иллюзии.

VD>>[...] С++ тут откровенный лузер, если сравнивать его с такими языками, реализованными поверх дотнета, как Nemerle и Lisp. Вот где МП доведено до высшего пилотажа. Причем оно исходно предусмотрено в языка, а не достигается использованием побочных эффектов системы типов.


ГВ>Забавно, что как раз использование "побочных эффектов" и делает C++ столь привлекательным по критерию производительности программиста при сохранении производительности продукта.

А вот это иллюзии. В программировании крайне важно сохранять "читабельность кода". Ради этого придумывают много умных терминов вроде SRP, DRY, SoC, Open/close principle, cohesion и т.д. и т.п.

ГВ>А чистота "метапрограммирования", или "функционального программирования", или ещё какая "чистота" какой-нибудь очередной мутной "парадигмы" вообще не шибко-то кого и беспокоит (в мире C++).


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

VD>>Еще раз повторяю, что единственным реальным приемущестом С++ является скорость исполняемого кода которой можно добиться за счет усложнения собственной жизни. А все слова про какие-то там великие абстракции — это просто чуешь и бред. Точнее даже лженаучная ересь вроде торсионных полей или религиозной бредятины. Короче, вера она и есть вера.


ГВ>Ну, что тут скажешь? Я занесу в шпаргалку Абсолютных Противо-C++-ных Аргументов ещё слова: "ересь", "бред" и "вера".


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

VD>>Стандарт не изменялся с 1998 года. Читай по буквам — Д Е С Я Т Ь лет. Разговоры о том, что вот-вот появится новых стандарт не утихают с 2000-го года. Но, насколько мне известно до сих пор он так и не принят.


ГВ>И это очень хорошо, что не нужно напряженно следить за настроениями в комитете. Нет, это (читай по буквам) О Ч Е Н Ь хорошо.

Это очень плохо. Язык должен развиваться. Посмотрите на С# — кому плохо, что за эти 7 лет на пороге уже 4ая версия языка, где каждая версия — серьезный шаг вперед?..
Re[19]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 27.04.09 08:58
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Всё это, конечно, правильно, хоть и с некоторыми поправками. Но поправки сейчас не суть важны. Важно другое: что та самая "область" в которой царят все за компанию (кроме C++) магическим образом не пересекается с теми областями, в которых от C++ никак не могут (и не хотят) избавиться по сугубо практическим соображениям. То есть, она как бы есть, но её значимость как бы слегка эфемерна по отношению к тому набору требований, с которым приходится иметь дело C++-никам.

Ну конечно не избавишься сразу от C++ везде. Есть тонны кода на C++, которые приносят много денег и этот код надо саппортить, есть кучи программистов, которых не выгонишь на улицу в один момент, есть кучи недалеких менеджеров, которые кроме C++ других языков и не слышали.
Только ни один из этих факторов не говорит что С++ чем-то хорош.
Re[20]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.04.09 09:35
Оценка: +1 :)
Здравствуйте, criosray, Вы писали:

ГВ>>Вопрос остаётся тем же самым: сколько это будет стоить пользователю.

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

Началось... Давай вспомним все значения слова "стоимость" и все контексты, к которым его можно привязать.

ГВ>>В новой версии стандарта — поддерживает.

C>Поддерживает 1% от ФЯ? Замечательно.

Ух ты. А что это такое — 1% от ФЯ? А почему не 0,76% и не 3,84%?

ГВ>>А так — да, бесспорно. На Lisp можно написать очень много всего интересного. Если бы ещё не потеря производительности по сравнению с "убогим" C/C++ — всё было бы совсем хорошо.

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

Это как-то опровергает то, что Lisp медленнее C++?

C>Лучшее — враг хорошего.


Бесспорно. На C++ получаются вполне хорошие решения.

ГВ>>Суть вещей — многогранное явление. Для каждого она своя.

C>Особенно, если Вы смотрите на вещи сквозь призму непонимания и иллюзии.

Угу, давай теперь углами призмы непонимания начнём меряться.

ГВ>>Забавно, что как раз использование "побочных эффектов" и делает C++ столь привлекательным по критерию производительности программиста при сохранении производительности продукта.

C>А вот это иллюзии. В программировании крайне важно сохранять "читабельность кода". Ради этого придумывают много умных терминов вроде SRP, DRY, SoC, Open/close principle, cohesion и т.д. и т.п.

С кем-то я совсем недавно спорил по поводу читабельности... А, с Владом как раз. Давай, теперь с тобой. Что такое "читабельность"? Какова связь читабельности и, например, open/close principle?

ГВ>>А чистота "метапрограммирования", или "функционального программирования", или ещё какая "чистота" какой-нибудь очередной мутной "парадигмы" вообще не шибко-то кого и беспокоит (в мире C++).

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

Вот те раз, а мужики-то и не знают, что "лёгкость понимания", оказывается, зависит от чистоты парадигмы.

ГВ>>Ну, что тут скажешь? Я занесу в шпаргалку Абсолютных Противо-C++-ных Аргументов ещё слова: "ересь", "бред" и "вера".

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

Следовательно, для этой ниши C++ вполне подходящий и продуктивный язык, где ему нет достойных конкурентов.

ГВ>>И это очень хорошо, что не нужно напряженно следить за настроениями в комитете. Нет, это (читай по буквам) О Ч Е Н Ь хорошо.

C>Это очень плохо. Язык должен развиваться. Посмотрите на С# — кому плохо, что за эти 7 лет на пороге уже 4ая версия языка, где каждая версия — серьезный шаг вперед?..

Будь я разработчиком компилятора того же C++, меня такая ситуация очень бы устраивала (стабильность спецификации). И потом, я не говорил, что кому-то должно стать плохо от того, что C# меняется.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[20]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.04.09 09:41
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Ну конечно не избавишься сразу от C++ везде. Есть тонны кода на C++, которые приносят много денег и этот код надо саппортить, есть кучи программистов, которых не выгонишь на улицу в один момент, есть кучи недалеких менеджеров, которые кроме C++ других языков и не слышали.

G>Только ни один из этих факторов не говорит что С++ чем-то хорош.

А я разве говорил о дихотомии "хорошо-плохо"?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[20]: Работа - с чего начать: С++ или С#?
От: Хвост  
Дата: 27.04.09 09:46
Оценка: +3 :))
Здравствуйте, gandjustas, Вы писали:

G>Ну конечно не избавишься сразу от C++ везде. Есть тонны кода на C++, которые приносят много денег и этот код надо саппортить, есть кучи программистов, которых не выгонишь на улицу в один момент, есть кучи недалеких менеджеров, которые кроме C++ других языков и не слышали.

G>Только ни один из этих факторов не говорит что С++ чем-то хорош.
просто удивительно, фраза одинаково верна для всех языков из мэйнстрима
People write code, programming languages don't.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.