Современный C++ становится более распространенным? [закрытый]

Чтобы получить счет, вы можете использовать Aggregations:

const petsCount = await prisma
  .petsConnection({where: {owner: user.id}})
  .aggregate()
  .count()

Источник: Документация

132
задан 6 revs, 4 users 81% 10 March 2012 в 04:33
поделиться

18 ответов

Вот то, как я думаю, что вещи развились.

первое поколение программистов на C++ было программистами C, которые на самом деле использовали C++ в качестве C с классами. Плюс, STL еще не существовал, таким образом, это - каков C++ по существу был.

, Когда STL вышел, который усовершенствовал вещи, но большинство людей, пишущих книги, соединяя программы и обучающие классы, изучило C сначала, затем что дополнительный материал C++, таким образом, второе поколение, усвоенное из той перспективы. Поскольку другой отмеченный ответ, если Вы - удобная запись, регулярная для циклов, изменяясь на использование std::for_each, не покупает Вас очень кроме теплого нечеткого чувства, что Вы делаете вещи "современный" путь.

Теперь, мы имеем преподавателей и заказываем устройства записи, кто использовал весь C++ и получал их инструкции от той перспективы, такие как Koenig & Ускоренный C++ Мычания и новый учебник Stroustrup. Таким образом, мы не учимся char* затем std::strings.

Это - интересный урок в том, сколько времени это берет для методов "прежней версии", которые будут заменены, особенно когда у них есть послужной список эффективности.

76
ответ дан 24 November 2019 в 00:10
поделиться

Лучшая книга для изучения C++. "Ускоренный C++" Koenig & Мычите, преподает то, что Вы описываете как современный C++, таким образом, я предполагаю, что большинство людей в эти дни использует его. Для тех из нас, которые использовали C++ долгое время (с середины 80-х в моем случае), современный C++ является большим облегчением при утомительных задачах записи наших собственных массивов, строк, хеш-таблицы (повторение бесконечно).

2
ответ дан 24 November 2019 в 00:10
поделиться

Стандартизация языка в конце 1990-х была первым шагом, это позволило производителям компилятора фокусироваться на "стандартном" наборе функций, также позволил языку фиксировать некоторые грубые края, которые появились канавка процесс стандартизации.

Это в свою очередь позволило разработку платформ на основе стандартных функций языка, а не на функциях, обеспеченных конкретной реализацией компилятора. Библиотека Boost особенно в этом отношении. Также это разрешило, чтобы новая разработка была основана на предыдущей работе, таким образом делая возможные решения более сложных проблем.

заметное изменение А здесь - то, как ранее платформы были основаны на понятии базовых классов и derivated классов (функция времени выполнения). Но теперь большинство расширенных функций часто в большой степени основано на "рекурсивных" шаблонах (функция времени компиляции).

STL имеет свои за и против, но он выдержал испытание временем, если Вы хотите что-то, что работает и является простым STL, конечно, имеет что-то, чтобы помочь Вам запуститься. Нет никакого смысла в изобретении велосипед (если по дидактическим причинам).

Компьютерное оборудование также сделало большие прыжки с 1990-х, затем память и ЦП больше не являются ограничением для компилятора. Таким образом, большая часть теоретической оптимизации из книг теперь возможна.

следующие шаги языка являются поддержкой многоядерного программирования, которое является частью 0x стандартного усилия.

1
ответ дан 24 November 2019 в 00:10
поделиться

Я не сказал бы что станд.:: вектор квалифицирует как "современный" в эти дни. Это является действительно основным.

Обычно мое впечатление - то, что люди получили некоторый опыт с современным стилем C++ и успокоились немного. Только для взятия простого примера STL for_each был интересен, но на практике он не добавляет ужасную партию значения по простому циклу C. Это более трудно отладить и иногда не обеспечивает лучшую производительность. Также конструкции для функционального программирования в текущем STL являются обычно очень громоздкими, особенно если Вы получили опыт с реального функционального языка как ML.

6
ответ дан 24 November 2019 в 00:10
поделиться

По моему опыту, это значительно зависит от возраста программного продукта / проект. Самые новые проекты, о которых я знаю, действительно используют современный C++ (RAII, STL, Повышение). Однако существует много проектов C++, которые больше чем 10 лет, и Вы не видите современный C++ там.

кроме того, имейте в виду, что некоторые самые популярные реализации STL были в значительной степени повреждены до, возможно, 5 лет назад (MSVC < 7.0 и GNU < 3.00)

6
ответ дан 24 November 2019 в 00:10
поделиться

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

я изучил C++ первоначально как что-то как C с Классами; хотя язык совершенствовался далеко вне этого, книги, которые я прочитал и люди, с которыми я работал, твердо застряли на "старом C++". RAII что-то люди думал бы о, вместо того, чтобы автоматически сделать, и я не забывают читать некоторые ранние статьи о проблемах безопасности исключения.

, Как указано, теперь существуют новые книги. Многие старые все еще релевантны, но они все больше, кажется, полны объяснения, почему очевидно плохие идеи плохи. (Точно так же современным читателям трудно понять, как идеи революционера Freud не сознающего ума были, так как это - теперь расхожее мнение.)

Stroustrup просто выпустил учебник, Программирование: Принципы и Практика Используя C++ . Я купил его, потому что я все же узнал о хорошем материале из книги Stroustrup, но не закончил первые несколько глав. До сих пор все, что я могу сказать, - то, что я одобряю способ, которым он начинает, и это - по крайней мере, хорошее введение в то, как C++ должен использоваться.

9
ответ дан 24 November 2019 в 00:10
поделиться

Я думаю, что у Вас просто был начинающийся неудачный опыт.

необходимо вовлечь себя Scott Meyers Эффективные книги C++. Я запустил на C++ в гневе в 1999, мой руководитель группы заставил меня сидеть и считать Эффективный C++ и Более эффективный C++, прежде чем мне разрешили зарегистрироваться в ЛЮБОМ коде.

большая часть его совета находится на строках, "Не используют этот функция , но если Вы должны, сохранить это в памяти"

, Если Вы последуете его совету, то Вы запишете хороший или "современный" C++.

у Него есть книга по STL теперь также, но что я не читал.

12
ответ дан 24 November 2019 в 00:10
поделиться

Я - один из этих парней, которые изучили, как работать с STL и услышали много о RAII и хороших методах программирования на C++ со дня 1. Похож на некоторые наиболее рекомендуемые книги для изучения C++ сегодня (как Ускоренный C++ и Эффективный ряд C++) внимание на использование инструментов STL вместо того, чтобы свернуть Ваш собственный материал, и также дайте много "правил" для эффективного (или "современный") программирование.

, Но говорящий с друзьями я также отметил, что некоторые компании все еще работают с "C с Классами", не "современный C++". Возможно, культура, предложенная авторами и пользователями "современного C++", будет преобладать когда-нибудь :)

15
ответ дан 24 November 2019 в 00:10
поделиться

Абсолютно да. Мне, если Вы не программируете C++ в этом "современном C++" стиль, как Вы называете, затем нет никакого смысла с помощью C++! Вы могли бы также просто использовать C. "Современный C++" должен быть единственным способом, которым C++ когда-либо программируется, по-моему, и я ожидал бы, что все, кто использует C++ и запрограммировал этим "современным" способом, согласились бы со мной. На самом деле я всегда полностью потрясаюсь, когда я слышу о программисте на C++, который не знает о вещах, таких как auto_ptr или ptr_vector. Что касается меня, те идеи являются основными и фундаментальными для C++, и таким образом, я не мог вообразить это никаким другим путем.

57
ответ дан 24 November 2019 в 00:10
поделиться

В эпоху Windows 3.1, C был стандарт. Когда C++ поразил рынок разработчика и позже стал стандартом ANSI, это была новая жаркость. Это популяризировало акроним ООП и некоторые шаблоны базовой конструкции с помощью полиморфизма.

Теперь, с большим принятием low-barrier-to-entry управлял платформами, как C#/.NET, существует меньше причины использовать C++. Большая часть базы разработчиков будет иметь выбор и давайте будем честны: C++ является переносом для изучения для новичка. С C# можно просто работать с ним.

, Который покидает действительно только платформы, которым НУЖНЫ C++ и несгибаемые евангелисты C++, чтобы продолжить практиковать искусство. Это - сообщество, которое нуждается и хочет все слои абстракции, которую считают "современным C++".

Так да, я верю "современному C++", поскольку Вы заявляете это, становится более распространенным. Хотя, это распространено с другой аудиторией, чем использовал его в прошлом.

25
ответ дан 24 November 2019 в 00:10
поделиться

По моему опыту (испанский Университет), к сожалению, норма не рассмотреть языки сам по себе. Они используют самые легкие языки для обучения программирования (т.е. Java), потому что это, как предполагается, легко для учителей и студентов, и затем они используют C для классов ОС и такого.

C++ представлен очень немного (во всяком случае в любом курсе), только для предоставления C классы. Они не входят в повышение или даже STL. Я думаю, не отставая от всех характеристик, и образ мыслей C++ является дорогостоящим и для учителей и для студентов. Сколько из программистов на C++ здесь знают, что достаточно всех библиотек Boost использует их, чтобы дать лучшему решению или разработать его? Нужно иметь интерес к не отставанию от всех новых библиотек и идиом.

Однако, поскольку я сказал, кажется, что к программированию в целом (и языки программирования в особенности) не относятся слишком серьезно, поскольку это, кажется, временное присвоение, когда они запускают задание, затем забывают, как программировать, когда они повышаются в дереве предприятия. Многие предприятия здесь и сам Университет, имеют чувство, что программирование может быть сделано кем-либо.

, Если Вы следуете за этой философией, затем для большинства людей, я знаю, C++ всегда будет "C с классами".

С уважением,

6
ответ дан 24 November 2019 в 00:10
поделиться

Многие команды, в которых я участвовал и слышал о которых, считают важным «используем ли мы исключения?» вопрос. Это код на тему «Используем ли мы современный C ++?»

Если вы не используете исключения, вы не можете использовать всю мощь языка и его библиотек.

Но многие старые кодовые базы не содержат исключений, и считается, что сложно втиснуть исключения в кодовую базу, которая их не ожидает, или в команду, которая не знает, как их использовать, поэтому ответ в таких случаях часто - «нет».

По моему опыту, современный C ++ нуждается в ком-то, кто увлечен этим в команде, кто не может видеть ничего меньшего, чтобы настаивать на этом. Также необходимо преодолеть возражения тех, кто хочет, чтобы он был больше похож на устаревший код.

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

3
ответ дан 24 November 2019 в 00:10
поделиться

Во время работы над проектом, в котором я сейчас участвую, есть много кода C ++, который развивался за значительный период времени (за 10 лет сейчас). Там ясно видна эволюция, о которой вы говорите: старый код часто представляет собой "C с классами" - необработанные указатели, строки char * и использование связанных функций C, массивов и т. Д .; новый код использует интеллектуальные указатели ATL и тому подобное для управления ресурсами, но большую часть времени по-прежнему придерживается вручную закодированных циклов, а итераторы - редкость; и самый новый из них битком набит контейнерами STL, алгоритмами, shared_ptr (включая специальные средства удаления для управления дескрипторами и т. д.), сильно обобщенными шаблонами функций и классов и так далее. Наиболее традиционные методы кодирования "C с классами", такие как сырые неинкапсулированные указатели с ручным управлением временем жизни, в наши дни очень не одобряются в обзорах кода. Судя по этому, кажется, что ваше наблюдение является точным.

Самая последняя разработка, кажется, является увлечением для лямбда-выражений C ++ 0x, которая имеет положительную сторону в том, что она также склоняет чашу весов в пользу использования стандартных алгоритмов вместо циклы, закодированные вручную, поскольку теперь вы можете встроить весь ваш код в алгоритмы.

7
ответ дан 24 November 2019 в 00:10
поделиться

Да и нет. Конечно, для новых проектов он становится все более популярным. Однако для принятия все еще существуют препятствия практического, а не политического характера, о которых другие не упоминали. Существует множество коммерческих библиотек C ++, которые используют ABI из древних компиляторов, которые не поддерживают должным образом функции, представленные в Modern C ++, и многие компании полагаются на эти библиотеки. Sun Studio на Solaris, например, не может работать с Boost без использования STLport, но для любой сторонней коммерческой библиотеки, которую вы хотите использовать, потребуется версия STL от Sun. Та же история с GCC 2.95 и Redhat Enterprise Linux.

1
ответ дан 24 November 2019 в 00:10
поделиться

Я просмотрел C ++ Jobs на самом деле , и «современные» библиотеки все больше и больше используются в описаниях должностей, MFC, которая является довольно «старой» библиотекой C ++ используется реже.

2
ответ дан 24 November 2019 в 00:10
поделиться

Прежде чем ответить на такой вопрос, вы должны согласиться с тем, что такое «Модерн». Это вряд ли произойдет, поскольку «современный» - это плохо определенное слово и означает разные вещи для разных людей. Название книги Александреску («Современный дизайн C ++») тоже не помогает, поскольку это в основном книга по метапрограммированию шаблонов, которая является специфической областью C ++, но никоим образом не единственной.

Для меня «Современный C ++»! = «Метапрограммирование шаблонов». Я бы сказал, что функции C ++ поверх C можно разделить на следующие категории:

  • Классы (конструкторы, деструкторы, RAII, Динамическое приведение типов и RTTI)
  • Исключения
  • Ссылки
  • Структуры данных и алгоритмы в стандартной библиотеке (STL)
  • iostreams
  • Простые шаблоны классов и функций
  • Метапрограммирование шаблонов

Ни одно из этих особенно современны, так как все они существуют около 10 или более лет. Большинство из этих функций полезны и позволят вам работать более продуктивно, чем обычный C, во многих случаях использования. Хороший программист должен и будет использовать их все в проекте приличного размера, но одна из этих вещей не похожа на другую:

Метапрограммирование шаблонов.

Краткий ответ на метапрограммирование шаблонов - просто сказать нет. К сожалению для некоторых людей из-за книги это синоним «современного программирования на C ++», но, в конце концов, это создает больше проблем, чем решает. Если в C ++ не будут разработаны более совершенные механизмы общего программирования, такие как отражение, он будет плохо подходить для общего программирования, а языки более высокого уровня, такие как Python, будут лучше подходить для этих случаев использования. По этой и многим другим причинам см. C ++ FQA

3
ответ дан 24 November 2019 в 00:10
поделиться

It's amaizing how little effort goes into making c++ more stable. The warning system is in place, but it's not evolving much. It's even easier to shoot yourself in a foot than it was 10 years ago. Dont know why, but c++ is still my favorite language. :)

-4
ответ дан 24 November 2019 в 00:10
поделиться

Я думаю, что самым большим препятствием, с которым я столкнулся, является поддержка инструментальных средств, особенно в кроссплатформенных проектах. Еще несколько лет назад в примечаниях к сборке говорилось, что «платформе x для работы необходим STLport, потому что ее компилятор не работает». Даже сейчас я вижу проблемы с людьми, пытающимися использовать несколько сторонних зависимостей, привязанных к разным версиям BOOST. Это делает связывание невозможным, а это означает, что вам придется вернуться и перестроить свои хранилища с нуля.

Теперь, когда почти все перестали использовать MSVC ++ 6, беспорядок с STLport остался позади. Но как только TR1 выходит, мы возвращаемся к тому, «какие версии каких сред поддерживают его и делают это правильно», и снова это замедлит принятие.

Я работаю над проектом, начатым на C (а не на C ++ ) в 1992 году. Внедрение современных методов в устаревшую кодовую базу было бы невозможно. Точно так же я работаю над другим проектом, который намного ближе к передовым технологиям языка C ++.

4
ответ дан 24 November 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: