Re[21]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.04.09 18:49
Оценка: +1 :))
Здравствуйте, Геннадий Васильев, Вы писали:

VD>>У тебя проблемы с терминологией. std::auto_ptr — это помощник упрощающий ручное управление памятью. В языках с автоматическим управлением памятью они ненужны. Меж тем сделать их не сложно.


ГВ>GC научился удалять строго указанные объекты (освобождать занятую память) в строго указанный момент времени? Он же, вроде, с точностью до поколения может работать?


GC бывают разные, но их объединяет одно — при наличии GC не надо управлять жизнью объектов вручную.

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

VD>>1. Где эта версия? Стандарт уже зарелизили? А то мне про него последние 10 лет рассказывают, рассказывают...

ГВ>Ну... Комитет (tm).


Ага. Комитет — это жизненная форма, наделённая шестью или более ногами, и лишенная мозга. (с) Роберт Хайнлайн. Потому и развитие С++ такое бурное.

VD>>2. Без GC толку от этого будет не много.


ГВ>ИМХО, ты ошибаешься.


Да? Объясни тогда оду простую вещь. Для эффективного использования замыканий сами замыкания и все на что они замкнуты (т.е. имеют ссылки) должно жить столько сколько живет само замыкание. А замыкание может быть передано в ФВП которая так же может передать его в другие ФВП. Как не имея системы автоматического управления памятью реализовать безопасные (не приводящие к UB ошибкам времени выполения) замыкания?

VD>>Ошибаешься! Такие как ollv по незнанию или из фанатических побуждений применяют С++ там где ему совсем не место и в условиях где он противопоказан.


ГВ>Это слишком сильное утверждение, насчёт незнания и фанатизма. Так что, тут я согласиться не могу.


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

ГВ>Не надо переворачивать с ног на голову. Сайты бывают разные, и требования — тоже разные.


Ага. Не надо. Не надо разглагольствовать о разных задах сайтов. С++ там по любому не место. Если только в виде какого-то там драйвера или мелкого компонента вроде ISAPI-фильтра.

ГВ>MS и IBM (как и все остальные) вольны поступать так, как им заблагорассудится.


Ага. И выбирают для сайтов Яву и дотнет.

ГВ> И кроме всего прочего, слишком мало критериев для отсечения C++: "в кратчайшие строки получить надежное решение, когда денег на разработку нехватает". Он запросто может оказаться наилучшим выбором с учётом других факторов.


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

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


Глюкавость приписывают не языку, а коду на нем написанном. И не почему-то, а исходя из общирного опыта и объективных логических рассуждений. Язык не типобезопасен, возлагает на программиста массу ответственности.
Есть такое умное высказывание (не помню чье) — человек не должен делать работу которую может сделать машина. А С++ заставляет человека делать работу которую можно возложить на машину. Все остальное последсвия. Ну, и С++ как раз очень сильно сковывает программиста в выборе абстракции. По сути, большинство С++-программистов, начинают решать все задачи с помощью шаблонов. Причем очень распростронено мнение, что производительность важнее качества.

Многие защитники С++ приводят в качестве примера 3D-игры. Мол, "почему их пишут на С++?". А стоило бы посмотреть на другой аспект. Почти все эти игры безбожно глючат. Играть в некоторые до выхода патчей просто невозможно. Большая часть ошибок в этих играх могла бы быть попросту не допущена, будь программа написана на более качественном языке.

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

VD>>Когда-то давно производительность Лиспа была огромной проблемой. Но сейчас есть высокопроизводительные компиляторы.

ГВ>AFAIK, на данный момент Lisp примерно на 5-20% проигрывает C++, пробегало где-то на www.franz.com.


Твой AFAIK. Высосан из пальцев. В прочем я не Лиспер и дать тебе точных данных не могу. Но я проверял их данные и скорее соглашусь с ними, а не с тобой. Кстати, проигрышь в 20% это вообще смешно. Отдельные компиляторы С++ проигрывают друг-другу в разны на разных задачах.

В прочем можно посмотреть здесь.

ГВ>Про SBCL я знаю, но сильно с ним не возился.


Я его пробовал. Очень быстрый, но глюкавый и не очень стандартный. Главная проблема в том, что для Винды его делают в последнюю очередь. Верся для Винды значительно отстает. Но для пенисометрии идеален. На многих тестах рвет С++-ные компиляторы как тузик грелку.

ГВ>Тоже неплохо.


Еще как не плохо. И это технологии про которые уже забыл. А ведь им 50 лет!

ГВ>Да нет, она эмоциональная по сугубо формальным признакам. find_if и Co вполне решают свои задачи в рамках STL/C++. Понятно, что это не filter/fold, но тем не менее.


Офтоп — Люблю русский "да нет".
Если понятно, то лучше помалкивать про find_if и компанию. И уж точно не заикаться о "применимости к объектам разного класса" или как там?...

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

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

ГВ>Удивительно, но именно шаблоны я и имел в виду.


Да? Иди прочти еще раз свои слова. Если ты говорил о шаблонах, то они вообще теряют смысл.

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

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

ГВ> Скажем так, это квинтэссенция практических мотиваций.


Это э....ыы... жопа, если одним словмо.

VD>>Ты с книгами Александеску хорошо знаком?


ГВ>Наизусть не помню, конечно. А что?


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

VD>>Да, да, да. Зачем наука в программировании? Ты давно всем доказал, что программирование особая отрасль и мозг в ней не нужен. Главное трясти по сильнее. То ли дело автомобили. Вот там наука важна. Ведь на автомобилях ездеем мы сами, а софт используют какие-то ламеры.


ГВ>Да ну?! Вроде как я обычно доказываю прямо противоположное. Мозг как раз нужен и теоретическая подготовка — тоже. Так что, что-то ты перепутал.


Я перепутал? Ну, не знаю. Я тебя читал.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.