Перейти к содержанию
Посмотреть в приложении

A better way to browse. Learn more.

Форум Академгородка, Новосибирск

A full-screen app on your home screen with push notifications, badges and more.

Чтобы установить это приложение на iOS и iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
Чтобы установить это приложение на Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Fax Plenus

Пользователь
  • Зарегистрирован

  • Посещение

Весь контент Fax Plenus

  1. Откуда вы знаете сколько и какого кода я видел? Считаете себя, видимо, "мегагуру" относительно которого все остальные ничего в жизни не видели? Ваша интерпретация. Нет, не считаю. Вас, в частности, считаю очень грамотным и опытным человеком. Однако, у вас стоял квантор всеобщности о том, что преобразование типов в старом стиле встречается в коде редко по сравнениею с приведением. Это утверждение неверно, я вам предложил его проверить на примере того C++ кода, который есть на машине практически у каждого C++ разработчика под Windows: Windows SDK. Я понимаю, что преобразование типов искать в коде сложно, но вы можете ограничиться, например, поиском QueryInterface. Найдите там те QueryInterface, в которых делается reinterpret_cast вместо (void**)(). Только этого частного случая будет граздо больше, чем операторов приведения. В base classes DirectShow свободно используется преобразование (LONG_PTR)(). Мой личный опыт общения с программистами, как здесь, так и зарубежом, тоже говорит о том, что ваше утверждение с квантором всеобщности неверно. Раз неверен ваш квантор всеобщности, значит вы видели и анализировали мало кода на предмет встречаемости операторов преобразования/приведения типов. Простой логический вывод, без всяких предположений обо мне, как о супергуру :hz:. Мне кажется, что я достаточно чётко обозначил то, что я хотел сказать: я попросил вас обойтись без указаний на то, что свойственно опытным разрабочикам в отношении их заносчивости. Т.к. это явлется оскорбительным для многих обобщением. Я постарался обосновать свою просьбу. Если вы не согласны, вы, ественно, совершенно свободны не следовать моей просьбе и продолжать указывать программистам на C++ на их заносчивость :hz:. Да, вы совершенно правы. Я в этом отношении полная скотина. Хотя, я всегда пытаюсь обосновать своё мнение. А вот некоторые тут Саттера бараном считают без всяких оснований :).
  2. «Так» — это как? ... Ну да. Я же и написал, что так не пишут и объяснил почему. Но вы, вроде, по тону в чём-то меня переубедить пытаетесь. Я вас и спрашиваю: в чём?
  3. «Так» — это как?
  4. Да бывает, что тип, в принципе, можно и самому вывести. Но сложно. Час работы по расшифроке шаблонов. Например, вместо невинного auto compx = bind(&Point3D::x, _1) < bind(&Point3D::x, _2); Придётся написать нечто такое: typedef lambda_functor< lambda_functor_base< relational_action<less_action> , tuple< lambda_functor< lambda_functor_base< action<2 , function_action<2 , detail::unspecified> > , tuple< double Point3D::* const , lambda_functor<placeholder<1> > const > > > , lambda_functor< lambda_functor_base< action<2, function_action<2, detail::unspecified> > , tuple< double Point3D::* const , lambda_functor<placeholder<2> > const > > > > > > CompX; CompX compx = bind(&Point3D::x, _1) < bind(&Point3D::x, _2); Что мало того, что нечитаемо и невилирует удобство использования вычисления функтора (проще уж тогда написать собственный функционал), так оно ещё и зависит от реализации. Буде авторы поменяют реализацию bind и operator <, придётся и весь этот длинный typedef заново вычислять и менять везде.
  5. Зачем? Равно зачем нам рассматривать эту задачу: ? Это вы просто кода мало видели за пределами непосредственно вам доступного, видимо :). Программисты, последовательно и правильно применяющие приведение типов вместо преобразования, встречаются довольно редко. Да что там, загляните в код Windows SDK, DirectX SDK, обнаружите, что преобразование типов — это вещь не такая уж и редкая, как того хотелось бы. Нет, не по назначению тут как раз используется static_cast. Вo-первых, то, для чего задумывался cons_cast мне мало интетесно. Откройте стандарт и прочитайте про предназначение const_cast в современном C++, а не в задумках Страуструпа дцать лет назад. Раздел 5.2.11, параграф 3. Во-вторых, вся идея за операторами приведения типов — это сделать их узко-специальными. Их использование должно быть минималистким. Т.е. если можно использовать оператор с более узкой областью применения, то нужно использовать именно его. Результат const_cast — это всегда тот же тип, результатом static_cast может быть другой тип. Следовательно, там где не нужно преобразование типов, не нужно использовать static_cast. Q.E.D. В этом-то и проблема. Вы предполагаете, что они, пробелы, у собеседников есть, а не у вас. И рьяно рвясь в бой, начинаете их заполнять, хотя, этого и не требуется. Уровень объяснений, который вы предлагаете, явно говорит о том, что у вас в голове перед вами безграмотные студенты. Возможно, это просто у вас привычка. Прошу меня понять правильно, я не говорю, что я лучше. Я тоже всегда предполагаю, что собеседник знает меньше меня и веду себя безобразно заносчиво и высокомерно. Но я-то по крайней мере это за собой знаю и признаю. А вот вы себя из толпы выделили. Но на мой взгляд необоснованно. Так что давайте будем жить без обобщений того, что свойственно опытным программистам. Вот Tonal опытный программист, но не заносчив. Есть, кстати, мысль восстановить программисткие посиделки с лекциями. Туда можно будет принести миллиметровую бумагу и карандаши и мериться, мериться, мериться...
  6. Кстати, в вас это тоже заметно. Вы всё время становитесь в позу вселенского учителя. При этом зачастую не учитываете, что разговариваете не со студентами.
  7. Почему :shock3:? Ещё и гораздо?
  8. const_cast может использоваться для выбора правильной версии перегруженной функции. void f(const int&); void f(int&); void foo(int &i) { f(const_cast<const int&>(i)); }
  9. const_cast может использоваться для добавления const, если что, а не только для удаления.
  10. А между собой нам можно поговорить?
  11. Именно об этом я и говорю.
  12. Лекции никогда и ни в чём не давали практических навыков :hz:. Лекции нужны для создания общего кругозора и системности знаний. Известно, что тот, кто изучает предмет сам, может иметь глубокие познания в определённых специфических частях предмета, обладая при этом вопиющими белыми пятнами в других. Т.е., как вы правильно про себя сказали: «вроде, что-то знаю». Величина «вроде» при этом совершенно непредсказуема. Наличие практических навыков — вещь к лекциям вообще перпендикулярная.
  13. Посмотрел стандарт. Там, оказывается, сделано ещё более сильное утверждение: любая запись по указателю, в l-value или по указателю на член, которые потеряли const в результате const_cast может являться UB в зависимости от типа объекта (5.2.11.7).
  14. Я так и думал, что это ты, маска :).
  15. «Серьёзность» — термин расплывчатый. Допустим, что в вашей терминологии «желание учить C++» переводится как «серьёзность». Как из вашей «серьёзности» следуют остальные выведенные вами желания и хотения персонажа, как-то: неограниченность применения и широкий охват ООП для целевого языка, если мы ему советуем не C++? Не знаю. Я прочитал в своё время Страуструпа, ещё первое издание. Мне хватило. Почему сложность бы была меньше, если бы я не самостоятельно читал, а кто-то это делал за меня — непонятно. Да какая разница, название человеку нравится. По отдельным пунктам можно поспорить. В целом нет, наверное :hz:. А он собирался в этом контексте составлять ей конкуренцию ?
  16. А зачем учиться ездить на болиде, если человеку нужен самокат и в гробу он видал конкурентно-способность ? Да и значимость питона для совеременного программирования вы принижаете. Видимо, по незнанию.
  17. Во-первых, вы плохо и невнимательно читали то, что писал vsev. Ну и второе — это инверсия вашего очередного голословного утверждения: питон и современное программирование совместимы.
  18. Нет, вы правы, вы сделали совершенно правдивое утверждение.
  19. Дайте конкретную ссылку Г.Буч, Объектно-ориентированный анализ и проектирование с примерами приложений на С++. Второе издание, Пер. с англ. Невский диалект, издательство Бином, 1998 г. Глава 2. Объектная модель. Параграф 2.2 Составные части объектного подхода. Если говорить о первоисточнике, то вот: Object Oriented Analysis and Design with applications, third edition, Chapter 2 Object Model, 2.3 Elements of the Object Model, p.43 - 71. The Addison-Wesley Object Technologies series. Ну дык там и написано, что typing, concurrency и persistence являются полезными, но необязательными элементами концептуальной базы всего объектно-ориентированного. Эти дополнительны принципы не являются неотъемлимо объектно-ориентироваными, а являются полезным дополнением при любом дизайне. Вы пишите много, но я не могу уловить единой концептуальной установки вашей речи. Вроде о том, о сём, а сказать-то что хотите? Единая, цельная мысль, которую я вынес из вашего длинного изложения: на ФИТ всё хорошо с преподованием ООП. Всё остальное как-то раздробленно. Всё началось с утвеждения: «если хочется просто научиться программировать, то лучше учить питон, т.к. проще». Вы в ответ начали говорить про границы применимости. Ну да, границы применимости есть у всего, в том числе и у питона. Но где в исходном утверждении про широкие границы применимости питона ? Когда вам на это указали, вы перепрыгнули на степень поддержки ООП. Где в исходных требованиях ТС или в утверждении Tonal-я что-то о супер-пупер поддержке ООП ? Вы перепрыгнули с одного базиса сравнения, с совешенно на другой. Почему? Зачем? Дальше была песня ФИТ и тому как всё там хорошо. Да, я понял, как я уже сказал — это была единственная цельная мысль. Можно вас попросить сузить размах мысли? Что хотите доказать? Что питон не стоит учить начинающему из-за того, что там нет concurrency и persistence ? Я правильно понял? Можно кратко, без объяснений как крут Буч и как обучают на ФИТ.
  20. Дайте конкретную ссылку где он это определил, а то получится как по 9-му правилу Чапека:
  21. Чушь! У вас прямо таки мания делать голословные утверждения. Если вы не знаете проекты на питоне, то это не значит, что их нет. Вот, например: http://trac.edgewall.org/
  22. Это абсолютно никак не влияет на то, зачем человек этот язык посоветовал. Так что к чему вы перечислили эти общеизвестные вещи — непонятно. «Я рекомендую молоток для забивания гвоздей». «Да, но молоток нельзя проглотить». Так и поговорили.
  23. Саттера возьмите. Herb Sutter "Сложные задачи на С++" "Новые сложные задачи на С++" и т.д. По английски это "Exceptional C++" или что-то типа такого. Саттер — это не для начинающего. Хотя, я не знаю уровень Гатальский 93-го. Хочу ещё раз сказать про Страуструпа. Это лучший учебник. И он с упражнениями, там их много.
  24. Уже кого-то посадили? Или пока только показания снимают?

Аккаунт

Навигация

Поиск

Поиск

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.