Давно уже пишу на С++, и чем больше работаю с этим языком, чем вернее убеждаюсь, что этот язык — большпя спекуляция... Для решения конкретных практических проблем этот язык слишком перегружен и непоследователен. Берём Java, С#, тот же VB горячо любимый — изучаешь за пару недель и спокойно пользуешься. Не надо каждый месяц убеждаться, что что-то ты не знаешь, нету геморроя с перегрузкой, правилами инстанциирования шаблонов, мучительным выбором что имеено использовать — потоки std или Сишные потоки и многое многое другое, не надо разбираться с проблемами при генерации исключений... Постоянно натыкаешьяся на мысль что ты не знаешь языка — что то совершенно не очевидно и не до конца понятно, а зачем мне разбираться пол жизни с языком когда передо мной стоят более прозаичные проблемы — решить конкретную прикладную задачу. Зачем эти горы спекулятивных книг типа Александреску, написанных с одной целью — показать что я могу так извернуться, что вы нихрена не ппоёмёте Зачем это всё ?! Переносимости у С++ нет до сих пор — элементарно даже исходники не затачиваются под конкретный компилятор, про объектные модули я даже не заикаюсь... Зачем проблемы на пустом месте ? Если я захочу низкоуровневый интерфейс то возьму С, в котором несколько простых ивполне очевидных правил и сделаю всё что я захочу — в том числе никто и не мешает писать в ООП стиле... Если я захочу красивого ООП и высооуровневых конструкций то возьму C#, Java или VB... Где место С++ если исходить из банального прогматизма а показать как круто ты можешь кодировать что никто не разберётся в твоих извращённых конструкциях ?
ЗЫ Это так, о наболевшем Сам пишу на С++ в основном, хотя переползаю на С# и С
Здравствуйте, Аноним, Вы писали:
А>Давно уже пишу на С++, и чем больше работаю с этим языком, чем вернее убеждаюсь, что этот язык — большпя спекуляция... Для решения конкретных практических проблем этот язык слишком перегружен и непоследователен. Берём Java, С#, тот же VB горячо любимый — изучаешь за пару недель и спокойно пользуешься. Не надо каждый месяц убеждаться, что что-то ты не знаешь, нету геморроя с перегрузкой, правилами инстанциирования шаблонов, мучительным
А>ЗЫ Это так, о наболевшем Сам пишу на С++ в основном, хотя переползаю на С# и С
А мне даже очень нравится каждый день познавать в С++ что-то новое, хотя пишу на нем уже более 3-х лет
На С# вообще не хочу переходить. Когда писал на нем проект — получил массу НЕудовольствия. Да, некоторые моменты быстрее, но кафйа от программирования никакого.
С++ форевер! Хотя мне кажется эта тема уже неплохо объезжена на рсдн.
Re[2]: Почему я не люблю C++
От:
Аноним
Дата:
27.01.05 07:39
Оценка:
Здравствуйте, Myk, Вы писали:
Myk>Здравствуйте, Аноним, Вы писали:
А>>Давно уже пишу на С++, и чем больше работаю с этим языком, чем вернее убеждаюсь, что этот язык — большпя спекуляция... Для решения конкретных практических проблем этот язык слишком перегружен и непоследователен. Берём Java, С#, тот же VB горячо любимый — изучаешь за пару недель и спокойно пользуешься. Не надо каждый месяц убеждаться, что что-то ты не знаешь, нету геморроя с перегрузкой, правилами инстанциирования шаблонов, мучительным
А>>ЗЫ Это так, о наболевшем Сам пишу на С++ в основном, хотя переползаю на С# и С
Myk>А мне даже очень нравится каждый день познавать в С++ что-то новое, хотя пишу на нем уже более 3-х лет
Если программирование ради программирование то С++ — то что надо — единственное наверное в своём жанре, но для решения конкретнх прикладных задач когда хочется получить результат не в виде просто красивого или изощрённого кода, а кокретных расчётов или работающей программы — я выбираю то что понятнее и проще
Только что была проблема: перменной типа system.intptr присвоить 1, что VB.NET делать не хотел
пришлось ковырять MSDN и находить конвертор, который intellisens'ом не показывается.
Здравствуйте, Аноним, Вы писали:
А>Если я захочу красивого ООП и высооуровневых конструкций то возьму C#, Java или VB...
Что касается Java: в последней версии этот язык сильно усложнился (в основном из-за
кривых generic'ов, как и в С++ появились конструкции которые "без бутылки" не поймешь).
IMHO java спецификация все распухает и распухает, скоро превратится в еще
один C++ (С++ 21 века )
Здравствуйте, Аноним, Вы писали:
А> Для решения конкретных практических проблем этот язык слишком перегружен и непоследователен. Берём Java, С#, тот же VB горячо любимый — изучаешь за пару недель и спокойно пользуешься.
Твой выбор — Оберон, одназначна
"For every complex problem, there is a solution that is simple, neat,
and wrong."
>конкретную прикладную задачу. Зачем эти горы спекулятивных книг типа Александреску, написанных с одной целью — показать что я могу так >извернуться, что вы нихрена не ппоёмёте Зачем это всё ?! Переносимости у С++ нет до сих пор — элементарно даже исходники не
эти "шаблонные извращения" имеют одну весьма прагматичную цель — увеличить степень повторного использования кода,
и избавиться от плохой практики копи-паст программирования (неизбежной в других языках где шаблонов нет)
Здравствуйте, Аноним, Вы писали:
А>Если программирование ради программирование то С++ — то что надо — единственное наверное в своём жанре, но для решения конкретнх прикладных задач когда хочется получить результат не в виде просто красивого или изощрённого кода, а кокретных расчётов или работающей программы — я выбираю то что понятнее и проще
Есть обратный опыт. Чем сложнее алгоритм, тем больше выигрыш в удобочитаемости, времени разработки и т.п. Для меня это самый лаконичный и понятный язык.
На "линейных" задачах (типа копать от забота и до обеда) конечно лучше VB и ему подобные макроязыки. Но в более сложных ситуациях рулят плюсы, однозначно. Там, где "другие не могут".
...А отсюда наливаем, когда рецепт написан совсем неразборчиво...
Вот-вот. С++ — это круто. Исключения, шаблоны, классы, ООП — здорово. Вот только при взаимодействии между dll-ями C++ превращается в самый что ни на есть обычный С. И вообще, при разбиении достаточно большого проекта на независимые части на "стыке" этих частей IМНО нет места шаблонам, исключениям, классам, выделяющим память с помощью malloc/new и т.д.
Ну и наконец. Кто за какое время сможет без компилятора найти ошибку:
Здравствуйте, Dirichlet, Вы писали:
D>Ну и наконец. Кто за какое время сможет без компилятора найти ошибку:
Хороший пример плохого кода с точки зрения naming conventions. Я бы не стал указатель на строку обзывать тем же именем, что и метод стринга.
Могу привести другой пример из модной ныне жабы. Попробуй без компилятора догадаться, что будет напечатано на экране.
public class A
{
private static Random rnd = new Random();
public static void main(String[] args) {
StringBuffer word = null;
switch(rnd.nextInt(2)) {
case 1: word = new StringBuffer('P');
case 2: word = new StringBuffer('G');
default: word = new StringBuffer('M');
}
word.append('a');
word.append('i');
word.append('n');
System.out.println(word);
}
}
Почему добро всегда побеждает зло? Потому что историю пишут победители.
Здравствуйте, AndrewJD, Вы писали:
AJD>Здравствуйте, Аноним, Вы писали:
А>> Для решения конкретных практических проблем этот язык слишком перегружен и непоследователен. Берём Java, С#, тот же VB горячо любимый — изучаешь за пару недель и спокойно пользуешься.
AJD>Твой выбор — Оберон, одназначна
Здравствуйте, Dirichlet, Вы писали:
D>Вот-вот. С++ — это круто. Исключения, шаблоны, классы, ООП — здорово. Вот только при взаимодействии между dll-ями C++ превращается в самый что ни на есть обычный С. И вообще, при разбиении достаточно большого проекта на независимые части на "стыке" этих частей IМНО нет места шаблонам, исключениям, классам, выделяющим память с помощью malloc/new и т.д.
mfc42.dll
D>Ну и наконец. Кто за какое время сможет без компилятора найти ошибку:
D>
Здравствуйте, d Bratik, Вы писали:
DB>Привет, товарищ по несчастью.
DB>Вся кривизна С++ вылезает, когда пишется система с GUI. Правильно Вирт говорит — "дом, построенный на песке".
Ну вот хоть кто-то Вирта помянул. Устроился недавно на работу в контору, которая пишет здоровую ИС на С++. Поймал себя на мысли что я думаю не о реализации нужной логики, а о том как мне извернутьсяи что все эти скобочки и звездочки означают
Здравствуйте, d Bratik, Вы писали:
DB>Привет, товарищ по несчастью.
DB>Вся кривизна С++ вылезает, когда пишется система с GUI. Правильно Вирт говорит — "дом, построенный на песке".
А что значит "система с GUI"?
И чем GUI так отличается от других областей применения?
И ещё, приводи примеры кривизны и как она вылезает, только не такой бред, который ты запостил в другой ветке. Желательно ещё и с примерами на других менее кривых по-твоему языках.
Думаю, видя конкретные примеры, можно будет показать, что это не кривизна С++ вылезает, а чего-то другого.
Здравствуйте, Михаил, Вы писали:
М>Здравствуйте, Аноним, Вы писали:
А>>Если программирование ради программирование то С++ — то что надо — единственное наверное в своём жанре, но для решения конкретнх прикладных задач когда хочется получить результат не в виде просто красивого или изощрённого кода, а кокретных расчётов или работающей программы — я выбираю то что понятнее и проще
М>Есть обратный опыт. Чем сложнее алгоритм, тем больше выигрыш в удобочитаемости, времени разработки и т.п. Для меня это самый лаконичный и понятный язык. М>На "линейных" задачах (типа копать от забота и до обеда) конечно лучше VB и ему подобные макроязыки. Но в более сложных ситуациях рулят плюсы, однозначно. Там, где "другие не могут".
Для того, что бы нарезать колбасы необязательно доставать все лезвия швецарского ножа, но и необязательно таскать с собой обычный кухонный нож.
Надеюсь, метафора понятна?
Здравствуйте, d Bratik, Вы писали:
DB>Привет, товарищ по несчастью.
DB>Вся кривизна С++ вылезает, когда пишется система с GUI. Правильно Вирт говорит — "дом, построенный на песке".
А кто говорил, что С++ — это просто? Да, его тяжело выучить, приходится ДУМАТЬ, прогая на нём.
Устоявшееся мнение "программер с пивом" никак не относится к программистам на С++
Лично я способен стерпеть от С++ любые недоделки и сложность ради изящности, с которой решается кажущаяся неразрешимой проблема, стоит лишь подумать...
Здравствуйте, Аноним, Вы писали:
А>Давно уже пишу на С++, и чем больше работаю с этим языком, чем вернее убеждаюсь, что этот язык — большпя спекуляция... Для решения конкретных практических проблем этот язык слишком перегружен и непоследователен. Берём Java, С#, тот же VB горячо любимый — изучаешь за пару недель и спокойно пользуешься. Не надо каждый месяц убеждаться, что что-то ты не знаешь, нету геморроя с перегрузкой, правилами инстанциирования шаблонов, мучительным выбором что имеено использовать — потоки std или Сишные потоки и многое многое другое, не надо разбираться с проблемами при генерации исключений... Постоянно натыкаешьяся на мысль что ты не знаешь языка — что то совершенно не очевидно и не до конца понятно, а зачем мне разбираться пол жизни с языком когда передо мной стоят более прозаичные проблемы — решить конкретную прикладную задачу. Зачем эти горы спекулятивных книг типа Александреску, написанных с одной целью — показать что я могу так извернуться, что вы нихрена не ппоёмёте :))) Зачем это всё ?! Переносимости у С++ нет до сих пор — элементарно даже исходники не затачиваются под конкретный компилятор, про объектные модули я даже не заикаюсь... Зачем проблемы на пустом месте ? Если я захочу низкоуровневый интерфейс то возьму С, в котором несколько простых ивполне очевидных правил и сделаю всё что я захочу — в том числе никто и не мешает писать в ООП стиле... Если я захочу красивого ООП и высооуровневых конструкций то возьму C#, Java или VB... Где место С++ если исходить из банального прогматизма а показать как круто ты можешь кодировать что никто не разберётся в твоих извращённых конструкциях ?
А>ЗЫ Это так, о наболевшем :) Сам пишу на С++ в основном, хотя переползаю на С# и С ;)
Кто ж его любит ...
С C++ как с Microsoft или как с проституткой (кому как удобнее):
никто не любит, но многие используют.
Здравствуйте, Amethyst, Вы писали:
A>Здравствуйте, Dirichlet, Вы писали:
D>>Ну и наконец. Кто за какое время сможет без компилятора найти ошибку: A>Хороший пример плохого кода с точки зрения naming conventions. Я бы не стал указатель на строку обзывать тем же именем, что и метод стринга. A>Могу привести другой пример из модной ныне жабы. Попробуй без компилятора догадаться, что будет напечатано на экране.
A>
A>public class A
A>{
A> private static Random rnd = new Random();
A> public static void main(String[] args) {
A> StringBuffer word = null;
A> switch(rnd.nextInt(2)) {
A> case 1: word = new StringBuffer('P');
A> case 2: word = new StringBuffer('G');
A> default: word = new StringBuffer('M');
A> }
A> word.append('a');
A> word.append('i');
A> word.append('n');
A> System.out.println(word);
A> }
A>}
A>