Re[57]: C+ vs C#
От: alexeiz  
Дата: 14.02.06 10:32
Оценка: -2
Здравствуйте, Кодёнок, Вы писали:

Кё>Здравствуйте, alexeiz, Вы писали:


Д>>>4. Замыканий


A>>Функторы.


Кё>Бред. Вот пара примеров навскидку:

...

Все примены из Nemerle идут лесом. Сравнивать C++ с функциональным языком, это слоны и бегемоты. Подумай тот ли язык программирования ты выбрал, если тебе приходится писать функциональный код. Здесь идет сравнение с C# — основным языком программирования для .NET.

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


Твоё обобщение не имеет смысла. Пока что ты показал, что из C++ трудно сделать функциональный язык. Это так. Но не то, что C++ — не является языком высокого уровня.

Кё>Наличие замыканий — это дополнительный уровень абстракции. Недавно всплывали числа Черча — чем не абстракция? На С++ эта абстракция недоступна.


Опять в том же стиле. Ты не понимаешь о чём речь. Никто не пытается сказать, что всё можно сделать на C++ (легко).

Д>>>5. Уверенности в том, что безобидный на вид код не окажется злостным UB

A>>Не замечено. Давай ты приведёшь пример well-formed C++ кода, использующего высокоуровневые абстракции, в котором тебя ждут упомянутые тобой проблемы.

Кё>Не раз в форуме C++ были темы с безобидной функцией, в которой находили до десятка потенциальных проблем. Проблема как раз в выделенном — трудно сразу сказать, является код ill-formed, или это well-formed с UB, или всё правильно. К примеру:


Кё>
Кё>struct A
Кё>{
Кё>  T* x, y;
Кё>  A() : x (new T), y (new T) {}
Кё>};
Кё>


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

Д>>>2. Необходимость писать килограммы оберток каждый раз, когда тебе нужно использовать чужую библиотеку (см п.1 и п.2)

A>>Проблемы библиотек. Объясни мне, как херовые сторонние библиотеки вдруг стали проблемой языка?

Кё>Всегда были. Я тебе продемонстрировал


Ты еще ничего не продемонстрировал.

> Такие мелочи, когда из-за недостатка фич в языке неожиданно приходится писать какую-то муть, в совокупности заставляют отказаться от некоторых выгодных стилей программирования. Например, мне бы хотелось услышать, как ты объяснишь новичку в С++ (умеющему создать вектор чисел и отсортировать) приведенную реализацию Sort, зачем там ещё класс, почему так? Или может приведёшь более понятную реализацию (отсортировать два двухмерных массива (jagged) по заданному номеру столбца, опционально с инверсией)?


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

Д>>>3. Заботливо разложенные на каждом шагу грабли, в качестве ярких примеров — vector<bool>, auto_ptr в котейнерах, и прочие радости.

A>>Эти грабли хорошо изветсны и никакой опасности не представляют.

Кё>


Кё>Про массив auto_ptr все знают. Везде написано. А вот про это — не везде:


Кё>
Кё>void foo(auto_ptr<T> param)
Кё>{
Кё>}
Кё>


Ха! Ты привёл один из основных способов использования auto_ptr. Я уж не знаю, где ты что читал, если тебе это не было сразу объяснено.

A>>Все твои "аргументы" даже и на йоту не ближе к тому, чтобы показать, что на С++ нельзя программировать на высоком уровне абстракции.


Кё>Насколько высоком? Более высоком, чем на Си? Да. На не менее высоком, чем позволяет любой другой существующий язык? Увы, нет.


Более высоком, чем на C#. См название темы. Я не собираюсь обсуждать здесь функциональные языки программирования.

Кё>Факт в том, что в других языках есть нужные и полезные возможности, которых в С++ нет.


Где?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.