Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: http://www.ustream.tv/recorded/47947981
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа:
1.1GB, чтобы только поржать над С++? Не, я и так вдоволь наржался, когда вышел C# и стала очевидна мысль "как на этом г*** можно было писать??"
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа:
Здравствуйте, Ikemefula, Вы писали:
I>Еще один монстр из плюсового мира назвал вещи своими именами. Однако
Первый — это Александреску? Ну, бывает Не всё же изображать хорошую мину при плохой игре!
Исторически, С++ был единственным вразумительным языком для написания приложений, Паскаль был тупо многословен и считался "языком для обучения". Но когда вышел C#, вся костыльность и неуклюжесть С++ вылезла наружу и сейчас не найдёшь шарповодов, добровольно желающих вернуться в это царство уродов.
Однако, есть такая штука как D — вот кому логично было бы уделить внимание как преемнику.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, michae1, Вы писали: I>Не смеши, все нестыковки, а Саттер показал буквально доли процента, требуют времени на изучение и запоминание. I>При чем нужно не просто запомнить, а довести до автоматизма. Пока этого не будет, С++ это адский ад. I>Собственно когда просветление пришло, в С++ ничего интересного нет — громоздко, многословно. I>Вобщем это объясяет, почему Си до сих пор удерживает большую долю рынка — примерно как С++, Джава и С# вместе взятые.
Я в замешательстве ты тролишь или не шаришь?
С точки зрения логичности и обдуманности C# как и Java плетуться за с++ где-то за горизонтом, а с — топчеться на месте уже много лет.
Чего стоит не поддержка перегрузки операторов в Java, тупорылые using и геморой с освобождением unmanaged ресурсов в .Net, отсутствие поддержки const для аргументов и методов, замыкания, которые выстреливают сразу в голову, partial классы, которые заточили в язык чисто под генерацию, Generic-и, или кастрированые шаблоны и весь этот синтаксический сахар за которым скрывают кривости языка, на которые закрыли глаза в угоду комерции.
Знаешь в чем разница? С++ — развивается долго, иновации добавляются медленно и обдуманно, без привязки к рынку, а c# — это просто комерческий инструмент, который будет таким каким потребует рынок.
Что касается С, то на нем написано столько всего, что еще не один десяток лет он будет живым. Хотя на счет доли рынка ты конечно прогнал.
Здравствуйте, andyag, Вы писали:
DM>>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>>http://www.ustream.tv/recorded/47947981
A>В 2014 году гнобить C++ — это как смеяться над инвалидом, что тот не может ходить: всем очевидно, но смешного ничего нет.
Отчего же. Смешно то, что в 2014м году до сих пор старательно псят на С++, а караван тем не менее продолжает идти.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Mazay, Вы писали:
B>>Я не про "пишу на обоих", я про "пишу с удовольствием на С++, имея знания по C#". C# объективно проще и для чтения, и для понимания, и для написания.
M>Когда тебе надоест код читать/писать/понимать, когда начнёшь искать интересные задачи, тогда и распробуешь плюсовый кактус.
Я занимаюсь интересными задачами. Протоколы, поддержка 100500 устройств от 100500 разных производителей, автоматизинованное управление фабриками/заводами и так далее. В этой области этот ваш C# даже не кактус, а садо-мазо с букаке в одном флаконе. Только пользовательские междумордия и писать, разве что
А дело в том, что каждой задаче — свой инструмент. Внезапно.
The "best" example of this maintainability problem could be found in the old implementation of the printf family of functions. The CRT provides 142 different variations of printf, but most of the behavior is the same for all of the functions, so there are a set of common implementation functions that do the bulk of the work. These common implementation functions were all defined in output.c in the CRT sources(1). This 2,696 line file had 223 conditionally compiled regions of code (#ifdef, #else, etc.), over half of which were in a single 1,400 line function. This file was compiled 12 different ways to generate all of the common implementation functions.
Здравствуйте, btn1, Вы писали:
B>Я не про "пишу на обоих", я про "пишу с удовольствием на С++, имея знания по C#". C# объективно проще и для чтения, и для понимания, и для написания.
Я пишу с удовольствием на С++. Вообще говоря, C# со своим куцым набором библиотек очень неудобен. Пытался из него использовать плюсовые либы, но вылезает огромный гемор с отладкой. Хотя не исключаю, что для некоторых узкоспециализированных задач типа "десктопные приложения под Windows" он и хорош.
Здравствуйте, btn1, Вы писали:
B>Здравствуйте, D. Mon, Вы писали:
DM>>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа:
B>1.1GB, чтобы только поржать над С++? Не, я и так вдоволь наржался, когда вышел C# и стала очевидна мысль "как на этом г*** можно было писать??"
когда вышел C# и я немного пописал на нем, у меня возникло недоумение как на этом говне можно разработать что-либо отличное от хеллоуворлда?
Здравствуйте, CreatorCray, Вы писали:
I>>Трудно объяснять именно толковым ученикам, потому что у них завсегда много вопросов "а почему" CC>Толковым — не трудно. Трудно бестолковым.
Бестолковые не задают вопросов. Им все что угодно легко объяснить.
_>Просто за 30 лет набралось много изменений и не всегда удавалось достичь общего единообразия и простоты. Посмотрим, что будет с другими языками к 30-ти годам (если доживут).
Что-то не так с благородным C ?
Или может Fortran так же уродуют как C++?
Здравствуйте, smeeld, Вы писали:
S>Здравствуйте, vladimir_i, Вы писали:
_>>Просто за 30 лет набралось много изменений и не всегда удавалось достичь общего единообразия и простоты. Посмотрим, что будет с другими языками к 30-ти годам (если доживут).
S>Что-то не так с благородным C ?
Может и "не так", мы же не видели аналогичную лекцию по С.
Полагаю, что С развивается в полной совместимости с С++, чтобы тот сохранял обратную совместимость. Так что материал для лекции наверняка есть.
S>Или может Fortran так же уродуют как C++?
Что значит уродуют? Нет выбора уродовать или делать красиво. Есть выбор: или сделать как сейчас или не делать никак.
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>http://www.ustream.tv/recorded/47947981
Еще один монстр из плюсового мира назвал вещи своими именами. Однако
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, jazzer, Вы писали:
I>>>Еще один монстр из плюсового мира назвал вещи своими именами. Однако
J>>А то, что этот монстр на эту тему не одну книжку написал, не в счет?
I>Думаешь, если написать книгу о существующей проблеме, то это снижает значимость самой проблемы ?
А называние самой проблемы своим именем снижает значимость самой проблемы?
Я что-то не успеваю за скачками твоей логики
Не говоря уже о том, что как раз книга о путях обхода/борьбы с проблемой, очевидно, снижает ее значимость
Здравствуйте, jazzer, Вы писали:
J>>>А то, что этот монстр на эту тему не одну книжку написал, не в счет?
I>>Думаешь, если написать книгу о существующей проблеме, то это снижает значимость самой проблемы ?
J>А называние самой проблемы своим именем снижает значимость самой проблемы?
А я где то такое сказал ?
J>Я что-то не успеваю за скачками твоей логики
Может тебе просто читать внимательно ?
J>Не говоря уже о том, что как раз книга о путях обхода/борьбы с проблемой, очевидно, снижает ее значимость
_>Все с точностью до наоборот: он много раз подчеркнул, что все в языке имеет смысл и конкретную практическую причину. В этом вся суть лекции. _>Просто за 30 лет набралось много изменений и не всегда удавалось достичь общего единообразия и простоты. Посмотрим, что будет с другими языками к 30-ти годам (если доживут).
Ну вот Эрлангу 28 лет в этом году. Ничо, жив, курилка, и несуразностей и проблем в нем явно меньше, чем в С++
Здравствуйте, SleepyDrago, Вы писали:
SD>Здравствуйте, andyag, Вы писали:
A>>Здравствуйте, CreatorCray, Вы писали: SD>... A>>>>В 2014 году гнобить C++ — это как смеяться над инвалидом, что тот не может ходить: всем очевидно, но смешного ничего нет. CC>>>Отчего же. Смешно то, что в 2014м году до сих пор старательно псят на С++, а караван тем не менее продолжает идти.
A>>...нагавногу. Глупо спорить, что он _есть_. Но есть он не потому, что живёт и развивается, а просто потому что его на пике было очень много и всё никак не рассосётся. SD>а куда ему рассасываться? вот типичный пример проблемы выбора: http://thedeemon.livejournal.com/82173.html там в каментах пытаются выбрать на чем писать =)
Проблема выбора появляется из-за предпосылок типа "Ради них тонны фреймворков и рантаймов слать неуклюже как-то". Да, тащить. Это ни разу не проблема. API для мониторинга изменений в папке есть и в Java, и в .NET. Оба позволяют сравнительно легко написать те самые "3 окошка". И то, и другое ставится в 2 клика мышкой (по сравнению со всякими Python/Ruby/Node). А всякие "такая программа должна весить 20 кб и не тянуть за собой зависимости" — это специальная олимпиада для тех, кому скучно.
Здравствуйте, andyag, Вы писали:
A>>>В 2014 году гнобить C++ — это как смеяться над инвалидом, что тот не может ходить: всем очевидно, но смешного ничего нет. CC>>Отчего же. Смешно то, что в 2014м году до сих пор старательно псят на С++, а караван тем не менее продолжает идти.
A>...нагавногу. Глупо спорить, что он _есть_. Но есть он не потому, что живёт и развивается, а просто потому что его на пике было очень много и всё никак не рассосётся.
Так на пике его было очень много как раз потому, что все остальные претенденты на инвалидное кресло C++ оказывались еще большими калеками. Да и сейчас во многих областях применения альтернатив так и не появилось.
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>http://www.ustream.tv/recorded/47947981
Спасибо за линк. Очень познавательно (как и всегда у Майрса).
Но с "гнобит" не согласен
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>...
Все с точностью до наоборот: он много раз подчеркнул, что все в языке имеет смысл и конкретную практическую причину. В этом вся суть лекции.
Просто за 30 лет набралось много изменений и не всегда удавалось достичь общего единообразия и простоты. Посмотрим, что будет с другими языками к 30-ти годам (если доживут).
Здравствуйте, vladimir_i, Вы писали:
DM>>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа:
_>Все с точностью до наоборот: он много раз подчеркнул, что все в языке имеет смысл и конкретную практическую причину.
Ага, например, что {0} иногда имеет тип. Или что list::sort гарантирует стабильность (на фоне sort vs. stable_sort), и что там, где почти у всех erase, у некоторых контейнеров remove и т.д.
Понятно, что причину (хотя бы "так сложилось") можно всегда найти, "Everything's there for a reason (except for auto type deduction rule)." Но хорошо видно, что несуразностей все же довольно много.
Здравствуйте, D. Mon, Вы писали:
DM>и что там, где почти у всех erase, у некоторых контейнеров remove и т.д.
erase это удаление по известной позиции (итератор или ключ), а remove/remove_if это поиск и удаление всех элементов соответствующих значению/предикату. Например у std::list есть и erase (удаление по позиции) и remove* (поиск и удаление).
Более того, давать им одинаковые имена было бы ошибкой: value_type у std::map<key, mapped> это пара из key и mapped, а у std::list<T> — просто T. std::map::erase — выбирает по key, а std::list::remove выбирает по всему value_type — соответственно с позиции range'ей у них и параметры и постусловия разные.
Здравствуйте, btn1, Вы писали:
I>>Еще один монстр из плюсового мира назвал вещи своими именами. Однако
B>Первый — это Александреску? Ну, бывает Не всё же изображать хорошую мину при плохой игре!
Здравствуйте, jazzer, Вы писали:
I>>Еще один монстр из плюсового мира назвал вещи своими именами. Однако
J>А то, что этот монстр на эту тему не одну книжку написал, не в счет?
Думаешь, если написать книгу о существующей проблеме, то это снижает значимость самой проблемы ?
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, jazzer, Вы писали:
J>>>>А то, что этот монстр на эту тему не одну книжку написал, не в счет?
I>>>Думаешь, если написать книгу о существующей проблеме, то это снижает значимость самой проблемы ?
J>>А называние самой проблемы своим именем снижает значимость самой проблемы?
I>А я где то такое сказал ?
Да в той строчке, что ты стер.
J>>Я что-то не успеваю за скачками твоей логики
I>Может тебе просто читать внимательно ?
А я и читаю внимательно. Похоже, внимательнее, чем ты пишешь.
Хотя есть второй вариант — что твои реплики никак не связаны логически одна с другой.
J>>Не говоря уже о том, что как раз книга о путях обхода/борьбы с проблемой, очевидно, снижает ее значимость
I>Нисколько не снижает
Здравствуйте, btn1, Вы писали:
B>. Но когда вышел C#, вся костыльность и неуклюжесть С++ вылезла наружу и сейчас не найдёшь шарповодов, добровольно желающих вернуться в это царство уродов.
Я являюсь таковым. На работе пишу в основном на шарпе, дома — на плюсах.
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, btn1, Вы писали: B>>. Но когда вышел C#, вся костыльность и неуклюжесть С++ вылезла наружу и сейчас не найдёшь шарповодов, добровольно желающих вернуться в это царство уродов. K>Я являюсь таковым. На работе пишу в основном на шарпе, дома — на плюсах.
Я не про "пишу на обоих", я про "пишу с удовольствием на С++, имея знания по C#". C# объективно проще и для чтения, и для понимания, и для написания.
Здравствуйте, btn1, Вы писали:
K>>Я являюсь таковым. На работе пишу в основном на шарпе, дома — на плюсах. B>Я не про "пишу на обоих", я про "пишу с удовольствием на С++, имея знания по C#".
А разве koandrew не именно это утверждает? Или думаешь он дома из мазохизма плюсы использует?
Здравствуйте, btn1, Вы писали:
B>Здравствуйте, jazzer, Вы писали:
J>>А называние самой проблемы своим именем снижает значимость самой проблемы?
B>Называние голого короля голым, позволяет объективнее относиться к языку и осторожнее выбирать инструмент для новых приложений.
Все проблемы языка и стандартной библиотеки были озвучены в его (и не только его) книжках и статьях в вебе аж с 1992 года. Тебе мало?
Здравствуйте, btn1, Вы писали:
B>>>. Но когда вышел C#, вся костыльность и неуклюжесть С++ вылезла наружу и сейчас не найдёшь шарповодов, добровольно желающих вернуться в это царство уродов. K>>Я являюсь таковым. На работе пишу в основном на шарпе, дома — на плюсах.
B>Я не про "пишу на обоих", я про "пишу с удовольствием на С++, имея знания по C#". C# объективно проще и для чтения, и для понимания, и для написания.
Когда тебе надоест код читать/писать/понимать, когда начнёшь искать интересные задачи, тогда и распробуешь плюсовый кактус.
Здравствуйте, btn1, Вы писали:
B>Здравствуйте, Ikemefula, Вы писали:
I>>Еще один монстр из плюсового мира назвал вещи своими именами. Однако
B>Первый — это Александреску?
Неа, первый — это некий Страуструп.
Вся его эпохальная книга состоит из 2 частей — 10% собственно описание своего творения и 90% описание костылей, засад и как их обходить используя другие костыли.
Я всегда поражался как можно было имея С и Pascal породить такое г....
Здравствуйте, vladimir_i, Вы писали:
_>Полагаю, что С развивается в полной совместимости с С++, чтобы тот сохранял обратную совместимость. Так что материал для лекции наверняка есть.
Это неправда.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, vladimir_i, Вы писали:
_>>Полагаю, что С развивается в полной совместимости с С++, чтобы тот сохранял обратную совместимость. Так что материал для лекции наверняка есть. E>Это неправда.
Вы отрицаете тот факт, что комитеты по C и С++ работают сообща?
...
Некоторые обязательные функции C99 становятся опциональными в C11 (массивы переменной длины, комплексный тип данных и др.), но добавляются некоторые функции C++. Комитеты C и C++ плотно сотрудничали, чтобы обеспечить максимальную совместимость языков.
...
Подспудно в статье отмечается, что путь развития Си был тернист. Это к вопросу о материале для лекции.
...
Проблемы возникли из-за того, что некоторые обязательные функции C99 оказалось трудно реализовать на некоторых платформах. Другие были признаны спорными или экспериментальными до такой степени, что некоторые вендоры (например, Microsoft) дошли до того, чтобы советовать программистам C перейти на C++.
...
Здравствуйте, vladimir_i, Вы писали:
_>Здравствуйте, Erop, Вы писали:
E>>Здравствуйте, vladimir_i, Вы писали:
_>>>Полагаю, что С развивается в полной совместимости с С++, чтобы тот сохранял обратную совместимость. Так что материал для лекции наверняка есть. E>>Это неправда.
_>Вы отрицаете тот факт, что комитеты по C и С++ работают сообща?
Я написал, что конкретно я отвергаю жеж...
Примеры несогласованных новелл в С и С++:
inlinе имеет в этих языках разную семантику
В С99 можно заводить на стеке массивы переменного размера, а в С++ -- нет.
Впрочем ты сам про это ниже цитату приводишь
всякий разный main(void) забанили...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>http://www.ustream.tv/recorded/47947981
ну если быть точным, то Scott Mayers НЕ гнобит С++ (not bashing C++)
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>http://www.ustream.tv/recorded/47947981
Очевидно ты принимаешь желаемое за действительное. С++ был, есть и будет нравиться это кому-то или нет.
Здравствуйте, michae1, Вы писали:
M>Здравствуйте, D. Mon, Вы писали:
DM>>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>>http://www.ustream.tv/recorded/47947981
M>Очевидно ты принимаешь желаемое за действительное. С++ был, есть и будет кривым, нравиться это кому-то или нет.
Здравствуйте, michae1, Вы писали:
M>Знаешь в чем разница? С++ — развивается долго, иновации добавляются медленно и обдуманно, без привязки к рынку, а c# — это просто комерческий инструмент, который будет таким каким потребует рынок.
Скотт Мейерс утверждает, что С++ адски сложно объяснять, даже в простых вещах. Это она есть, логичность и обдуманность ?
M>Что касается С, то на нем написано столько всего, что еще не один десяток лет он будет живым. Хотя на счет доли рынка ты конечно прогнал.
Ты видео посмотри, теоретик, — на третьей минут вполне понятная диаграма.
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>http://www.ustream.tv/recorded/47947981
В 2014 году гнобить C++ — это как смеяться над инвалидом, что тот не может ходить: всем очевидно, но смешного ничего нет.
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>http://www.ustream.tv/recorded/47947981
Ничего такого сложного или несуразного. Но аудитория меня поразила своей тупостью. Сидят как stoner'ы, боятся на тривиальные вопросы ответить.
Здравствуйте, btn1, Вы писали:
B>Здравствуйте, Ikemefula, Вы писали:
I>>Еще один монстр из плюсового мира назвал вещи своими именами. Однако
B>Первый — это Александреску? Ну, бывает Не всё же изображать хорошую мину при плохой игре! B>Исторически, С++ был единственным вразумительным языком для написания приложений, Паскаль был тупо многословен и считался "языком для обучения".
Здравствуйте, Ikemefula, Вы писали:
M>>Знаешь в чем разница? С++ — развивается долго, иновации добавляются медленно и обдуманно, без привязки к рынку, а c# — это просто комерческий инструмент, который будет таким каким потребует рынок. I>Скотт Мейерс утверждает, что С++ адски сложно объяснять, даже в простых вещах. Это она есть, логичность и обдуманность ?
Ну и пусть дальше утверждает. Если ученик тупой то ему что угодно будет аццки сложно объяснить.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, uncommon, Вы писали:
U>Ничего такого сложного или несуразного. Но аудитория меня поразила своей тупостью. Сидят как stoner'ы, боятся на тривиальные вопросы ответить.
Видимо это и есть те, кому сложно объяснить С++.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, btn1, Вы писали:
B>Я не про "пишу на обоих", я про "пишу с удовольствием на С++, имея знания по C#". C# объективно проще и для чтения, и для понимания, и для написания.
Ну вот пишу больше на С++, а C# больше для макетирования, наколенных утилит и ГУИ.
Просто однажды задолбало приличную часть C# проектов переводить в нейтив. Сейчас сразу шарпу выделяется его, вполне заслуженное, вспомогательное место.
Здравствуйте, Ikemefula, Вы писали:
I>Собственно когда просветление пришло, в С++ ничего интересного нет — громоздко, многословно.
Однако, язык популярен. Объяснить это лишь хорошими компиляторами не выйдет, увы.
Он популярен потому, что программист хорошо понимает происходящее во время работы программы, не хуже, чем в программе на С. Даже в Паскале не всё было так прозрачно, как в более сложном С++.
Джава тоже когда-то стала популярной именно из-за этого — абсолютной ясности происходящего... Хоть некоторые вещи требовали жертв — те же паузы во время ГЦ. А в плюсах никаких жертв — на руках только достаточно универсальный инструментарий.
Здравствуйте, CreatorCray, Вы писали:
M>>>Знаешь в чем разница? С++ — развивается долго, иновации добавляются медленно и обдуманно, без привязки к рынку, а c# — это просто комерческий инструмент, который будет таким каким потребует рынок. I>>Скотт Мейерс утверждает, что С++ адски сложно объяснять, даже в простых вещах. Это она есть, логичность и обдуманность ? CC>Ну и пусть дальше утверждает. Если ученик тупой то ему что угодно будет аццки сложно объяснить.
Трудно объяснять именно толковым ученикам, потому что у них завсегда много вопросов "а почему"
Самостоятельный поиск ответов на такие вопросы это месяцы и годы хождения по граблям. Собтсвенно именно это и определяет высокий уровень вхождения
Здравствуйте, Ikemefula, Вы писали:
I>Трудно объяснять именно толковым ученикам, потому что у них завсегда много вопросов "а почему"
Толковым — не трудно. Трудно бестолковым.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, andyag, Вы писали:
DM>>>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>>>http://www.ustream.tv/recorded/47947981
A>>В 2014 году гнобить C++ — это как смеяться над инвалидом, что тот не может ходить: всем очевидно, но смешного ничего нет. CC>Отчего же. Смешно то, что в 2014м году до сих пор старательно псят на С++, а караван тем не менее продолжает идти.
...нагавногу. Глупо спорить, что он _есть_. Но есть он не потому, что живёт и развивается, а просто потому что его на пике было очень много и всё никак не рассосётся.
Здравствуйте, andyag, Вы писали:
A>Здравствуйте, CreatorCray, Вы писали:
... A>>>В 2014 году гнобить C++ — это как смеяться над инвалидом, что тот не может ходить: всем очевидно, но смешного ничего нет. CC>>Отчего же. Смешно то, что в 2014м году до сих пор старательно псят на С++, а караван тем не менее продолжает идти.
A>...нагавногу. Глупо спорить, что он _есть_. Но есть он не потому, что живёт и развивается, а просто потому что его на пике было очень много и всё никак не рассосётся.
а куда ему рассасываться? вот типичный пример проблемы выбора: http://thedeemon.livejournal.com/82173.html там в каментах пытаются выбрать на чем писать =)
Здравствуйте, rusted, Вы писали:
R>Здравствуйте, andyag, Вы писали:
A>>>>В 2014 году гнобить C++ — это как смеяться над инвалидом, что тот не может ходить: всем очевидно, но смешного ничего нет. CC>>>Отчего же. Смешно то, что в 2014м году до сих пор старательно псят на С++, а караван тем не менее продолжает идти.
A>>...нагавногу. Глупо спорить, что он _есть_. Но есть он не потому, что живёт и развивается, а просто потому что его на пике было очень много и всё никак не рассосётся.
R>Так на пике его было очень много как раз потому, что все остальные претенденты на инвалидное кресло C++ оказывались еще большими калеками. Да и сейчас во многих областях применения альтернатив так и не появилось.
Так я ж и не спорю. Когда-то были такие времена, да.
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>http://www.ustream.tv/recorded/47947981
Интересно, кто из комментаторов удосужился таки посмотреть видео. Оно дельное, интересное, но не холиварное.
Здравствуйте, Константин, Вы писали:
К>Интересно, кто из комментаторов удосужился таки посмотреть видео. Оно дельное, интересное, но не холиварное.
Посмотрел. В секции про STL практически всё не по делу, такое впечатление что он готовился спустя рукава:
* Сложность binary_search — в стандарте написано чётко "Complexity: At most log2(last — first) + O(1) comparisons" то есть тут Майерс придирается не по делу;
* binary_search возвращает bool, а не итератор как у него;
* в C++11 std::sort O(N logN), а не квадратичная;
* erase vs remove — там действительно нужны разные имена
, и всё вполне консистентно;
Замечание про list::stable_sort более-менее адекватное, и то думаю можно поспорить (вспоминается что Степанов говорил в своих лекциях
А в общем, да — можно найти вагон и маленькую тележку мест которые можно было бы радикально упростить, если не оглядываться на обратную совместимость. Тут больше всего подходит следующее высказывание Страуструпа:
There are only two kinds of languages: the ones people complain about and the ones nobody uses.
И да, было бы неплохо если бы был современный и мощный язык, с теми же фундаментальными design principles — а именно, с той же приверженностью к производительности — тогда можно было бы говорить о приемнике (или какой там термин более подходящий). Но вот что-то ничего не видно на горизонте
Например, авторы того же D, явно говорят в одном из своих интервью, что готовы жертвовать производительностью ради других benefits. Я бы даже сказал, что D это скорее альтернатива C#/Java/Objective-C, чем C++.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, Константин, Вы писали:
К>>Интересно, кто из комментаторов удосужился таки посмотреть видео. Оно дельное, интересное, но не холиварное.
EP>Посмотрел. В секции про STL практически всё не по делу, такое впечатление что он готовился спустя рукава: EP>* Сложность binary_search — в стандарте написано чётко "Complexity: At most log2(last — first) + O(1) comparisons" то есть тут Майерс придирается не по делу; EP>* binary_search возвращает bool, а не итератор как у него; EP>* в C++11 std::sort O(N logN), а не квадратичная; EP>* erase vs remove — там действительно нужны разные имена
Да плохие имена, чего уж тут говорить.
Я вот старый уже совсем ни не помню, какие имена за что отвечают, если честно.
Вот было бы move_to_back вместо remove — и не было бы проблем.
binary_search — то же самое. Вообще непонятно, нафига нужна эта функция, когда нет никаких проблем сравнить итератор с last. Я тоже постоянно эту ошибку совершаю, потому что ну нелогично — если ищешь, так, наверное ж, хочешь итератор на то, что нашлось же (я знаю про lower_bound).
Про std::sort — я не помню, он говорил про С++11 или про С++03 — вроде в 03 (или вообще в 98) не было такого ограничения, т.е. был возможен квиксорт с его наихудщим квадратичным случаем. Но реально всегда интросорт используется во всех современных реализациях STL, так что это устарело на практике сто лет как.
В целом ничего нового (для меня), кроме пары моментов с лямбдой, он не сказал.
Но цель его спича и не была в том, чтобы сказать что-то новое о С++ (или вообще говорить о С++).
Цель он изложил в своих заключительных словах, и обращены они, как и весь спич, как разработчикам D — делайте язык как можно более логичным и простым и самосогласованным, чтоб не нужно было никаких майерсов и саттеров с книжками, разъясняющими неочевидности и тонкости, как это нужно в С++ с его 30-летней историей.
За мир во всем мире, в общем.
Здравствуйте, jazzer, Вы писали:
... J>В целом ничего нового (для меня), кроме пары моментов с лямбдой, он не сказал. J>Но цель его спича и не была в том, чтобы сказать что-то новое о С++ (или вообще говорить о С++).
J>Цель он изложил в своих заключительных словах, и обращены они, как и весь спич, как разработчикам D — делайте язык как можно более логичным и простым и самосогласованным, чтоб не нужно было никаких майерсов и саттеров с книжками, разъясняющими неочевидности и тонкости, как это нужно в С++ с его 30-летней историей. J>За мир во всем мире, в общем.
И что снова опять наново D №3 ?
Здравствуйте, jazzer, Вы писали:
J>Я вот старый уже совсем ни не помню, какие имена за что отвечают, если честно. J>Вот было бы move_to_back вместо remove — и не было бы проблем.
Ты видимо имеешь в виду std::remove (отдельный алгоритм), а не обсуждаемый std::list::remove.
J>binary_search — то же самое. Вообще непонятно, нафига нужна эта функция, когда нет никаких проблем сравнить итератор с last. Я тоже постоянно эту ошибку совершаю, потому что ну нелогично — если ищешь, так, наверное ж, хочешь итератор на то, что нашлось же (я знаю про lower_bound).
Проверки с last недостаточно — lower_bound может вернуть итератор на внутренний элемент, который не равен данному.
Для тех случаев, когда нужен конкретный элемент, у меня есть алгоритм binary_find возвращающий optional (хотя можно и просто итератор/указатель).
А про binary_search Степанов рассказывал в своих видеолекциях, вот ссылка на конкретный момент:
And, now there is an embarrassing function. So, I worked on STL, and if you remember — there was a [...], they threw a lot of useful functions. But then they inserted some functions, very few. And one of them was a function called binary_search.
There was an conversation, when my opposite number, let him [don't name] since he was a very good friend of mine. So this opposite number, says "but where is binary search?". And I say "well, there is upper_bound, lower_bound, [...] equal_range". But he says "where is binary search?" — "That is binary_search" — "No, no, we need binary search".
So, I say "what kind of interface would you like?", "Oh, like normal binary search interface: you give it a range, and an element, and it true or false".
Whether it is there or not? There is a function like that in STL. Who would argue with the best friend.
Have I ever used it? No.
[...]
I have to say something about standardization, I have scars all over my body, so I earned it. This is why I wear long pants and shirt
J>Про std::sort — я не помню, он говорил про С++11 или про С++03 — вроде в 03 (или вообще в 98) не было такого ограничения, т.е. был возможен квиксорт с его наихудщим квадратичным случаем.
Да, до C++11 не было такого ограничения, там был просто average.
Но в том то и дело, что во всех этих слайдах он говорит про C++11: auto, unordered_map, forward_list. Поэтому не упоминание про гарантированный O(N logN) в C++11 является очевидным недосмотром.
J>Цель он изложил в своих заключительных словах, и обращены они, как и весь спич, как разработчикам D — делайте язык как можно более логичным и простым и самосогласованным, чтоб не нужно было никаких майерсов и саттеров с книжками, разъясняющими неочевидности и тонкости, как это нужно в С++ с его 30-летней историей. J>За мир во всем мире, в общем.
Это всё понятно, и я с этим согласен. И, как уже сказал выше, в C++ таких мест вагон и маленькая тележка.
Просто большинство примеров про STL которые он показал — далеко не самые удачные, и такое впечатление что он их выискивал спустя рукава. Мог бы, например, показать ошибку в интерфейсе у std::copy_n.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
J>>За мир во всем мире, в общем.
EP>Это всё понятно, и я с этим согласен. И, как уже сказал выше, в C++ таких мест вагон и маленькая тележка. EP>Просто большинство примеров про STL которые он показал — далеко не самые удачные, и такое впечатление что он их выискивал спустя рукава. Мог бы, например, показать ошибку в интерфейсе у std::copy_n.
В этом плане довольно прикольная багофича была, что std::lower_bound принимает функтор от (*It, val) а std::upper_bound(Val, *it). Наверняка кто нибудь придумает оправдание почему это так, но выглядит прикольно.
Здравствуйте, denisko, Вы писали:
D>В этом плане довольно прикольная багофича была, что std::lower_bound принимает функтор от (*It, val) а std::upper_bound(Val, *it). Наверняка кто нибудь придумает оправдание почему это так, но выглядит прикольно.
Всё правильно. Например, есть бинарный предикат less, опорное значение pivot, и некоторое значение x.
Чтобы проверить x < pivot, нужно вызвать less(x, pivot).
Чтобы проверить x <= pivot, нужно вызвать !less(pivot, x).
lower_bound разделяет range на два — в одном все значения меньше [first, lower_bound), а во втором не меньше заданного [lower_bound, last).
upper_bound разделяет range на два — в одном все значения не больше [first, upper_bound), а во втором больше заданного [upper_bound, last).
Или другой пример: имея только бинарный предикат less и std::partition_point (тот же самый бинарный поиск), реализовать lower_bound и upper_bound.
Здравствуйте, denisko, Вы писали:
D>В этом плане довольно прикольная багофича была, что std::lower_bound принимает функтор от (*It, val) а std::upper_bound(Val, *it). Наверняка кто нибудь придумает оправдание почему это так, но выглядит прикольно.
если б у функтора в upper_bound была бы сигнатура (*It, val) , то тогда в этот алгоритм нельзя было передовать тот функтор, которым сортировали контейнер.
template <typename It, typename T, typename Comp>
It my_upper_bound(It first, It last, const T& val, Comp comp)
{
using namespace std::placeholders;
return upper_bound(first, last, val, std::bind(comp, _2, _1));
}
int main()
{
vector<int> v{5,2,3,1,4};
auto compare = greater<int>();
sort(v.begin(), v.end(), compare);
auto std_upper = upper_bound(v.begin(), v.end(), v[1], compare);
cout << "std::upper_bound = " << std_upper - v.begin() << endl;// 2, как и ожидалосьauto my_upper = my_upper_bound(v.begin(), v.end(), v[1], compare);
cout << "my_upper_bound = " << my_upper - v.begin() << endl; // 5??? WTF ?return 0;
}
Здравствуйте, D. Mon, Вы писали:
DM>Шедевральное и очень веселое выступление одного из корифеев С++ о том, как много там косяков, несуразностей и ненужных сложностей прямо со входа: DM>http://www.ustream.tv/recorded/47947981
Пургу гонит.
Не инициализирован int по умолчанию, причем здесь C++. Например, Borland компиляторы по умолчанию инициализировали нулем.
Зачем эта хрень с auto?
Понятно дело, что нормальные люди их используют только чтобы избежать длинные шаблонные типа, а не все подряд и везде объявлять auto.
Здравствуйте, HolyNick, Вы писали:
HN>Не инициализирован int по умолчанию, причем здесь C++. Например, Borland компиляторы по умолчанию инициализировали нулем.
Если эта самодеятельность не отражена в стандарте или даже противоречит ему, то это проблема борланда. Причем здесь С++ только?