Какой самый лучший исходный код C ++ для начинающих? [закрыто]

25

Я пытаюсь улучшить свою технику кодирования на С ++, читая исходный код на С ++. Какой проект с открытым исходным кодом вы бы порекомендовали? Хороший ли код библиотек Boost C ++ ?

SnowFox
источник
11
Зачем закрывать голоса? Вопрос понятен и конкретен.
Неманя Трифунович
STLs реализации
Dukeofgaming
12
@dukeofgaming: вы забыли «иронический» тег.
Док Браун
1
Ну, я думаю, что исходный код для повышения не будет хорошей идеей для новичка. Вы, вероятно, утонете в шаблонах и техниках SFNINAE, пока не понимая их работы и причин.
Крис говорит восстановить Монику
7
Закрытое голосование вызвано тем, что этот вопрос, хотя и конкретный, не является конструктивным. Это просто приведет к списку проектов каждого, где ни один ответ не может быть «ответом». Для больше за этим проверьте FAQ .
Уолтер

Ответы:

27

Я бы порекомендовал любой код Google C ++ с открытым исходным кодом, например:

Преимущества использования кода Google:

  • Он написан в соответствии с высокими стандартами и рецензирован (в отличие от некоторого открытого исходного кода).
  • У него хорошая документация для разработчиков (что облегчает его восприятие и понимание).
  • Он использует некоторые умеренно продвинутые методы C ++ (и, следовательно, хорош для обучения).
  • Это, вероятно, легче понять, чем Boost, потому что он не так сильно зависит от расширенного метапрограммирования шаблонов и метапрограммирования препроцессора и не так сильно отягощен бесчисленными взломами совместимости компиляторов и особыми случаями.

Руководство ++ Style Google C , что Google в C ++ код использует , как правило , хорошо, но у него есть некоторые довольно необычные биты (например, некоторые из их руководящих принципов присвоения имен или их запрещая исключения), так что имейте в виду , что их C ++ код будет отличаться в этих отношениях от что вы увидите в поле.

Джош Келли
источник
9

Я бы не рекомендовал читать базу кода. Я бы рекомендовал прочитать C ++ FAQS . Есть также отличная книга, которая идет вместе с сайтом. Лучший способ улучшить свои навыки программирования на C ++.

Онорио Катеначчи
источник
13
-1: я очень сильно не согласен. Чтение кода других людей является очень важной частью улучшения навыков кодирования. Однако исправление ошибок в этом коде еще лучше.
Ян Худек
6
@ Ян Полное согласие от меня. Тем не менее, большинство исходных текстов C ++ отстой и использует все виды плохих шаблонов, которые обучают плохим методам. Знаете ли вы о хорошем проекте OSS, который может служить вводным чтением?
Конрад Рудольф
Я имел в виду это: amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/… но я вижу, что сейчас есть и другие книги.
Онорио Катеначчи
6

Чтение существующего чистого кода C ++ - отличный способ выучить язык.

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

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

user3287
источник
6

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

Сардатрион - Восстановить Монику
источник
2
Вы не узнаете ничего о маленьких игрушечных программах. Вам нужно писать программы, которые решают актуальные проблемы. Они не должны быть большими, вам не удастся писать большие программы в одиночку, но они не должны быть просто игрушками.
Ян Худек
@JanHudec: То, что вы описываете, это то, что я называю игрушечными программами : фрагмент кода, который решает одну проблему. Так, например, алгоритм Рунге-Кутты будет «игрушечной программой», тогда как полное моделирование N-тела не будет.
Сардатрион - Восстановить Монику
2
Это обе «игрушечные программы». Потому что проблемы являются надуманными примерами проблемы, если вы не выполняете численное моделирование, а большинство программистов этого не делают. Фактическая проблема - это то, что вы или кто-то, кого вы знаете, собирается использовать на самом деле. Он, вероятно, будет иметь графический интерфейс пользователя или, по крайней мере, довольно сложный анализ командной строки и манипулировать файлами или подключаться к сети и использовать некоторые существующие библиотеки, и не будет иметь никаких нетривиальных алгоритмов, потому что 99% программ там нет.
Ян Худек
1
@JanHudec Вы говорите, что человек ничему не учится, сначала работая с небольшими ограниченными проблемами? Если программисты сразу же сталкиваются с большими и сложными проблемами, не изучив хотя бы некоторые базовые принципы и некоторые базовые языковые идиомы, именно так мы и получим эти огромные приложения «Большой шарик грязи».
Онорио Катеначчи
3
Я не уверен, отвечает ли это на вопрос, но каждый программист C ++ должен прочитать эту книгу (и ее продолжение)
Gort the Robot
2

Попробуйте прочитать что-то, что существовало годами и имеет большой размер. Потребуется несколько месяцев, чтобы начать понимать код и что-то делать в нем.

Firefox, Thunderbird, OpenOffice.org, LibreOffice приходят на ум. Там должно быть еще много подобных. Эти проекты работают на многих операционных системах и аппаратных платформах. Также им приходится забивать на удобочитаемость. Это могут быть методы, которые вы ищете.

vpit3833
источник
0

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

Возможно, вы можете посмотреть на какое-то приложение KDE. Большинство написано на C ++, и вы можете начать с небольшого.

Ян Худек
источник
-3

Да, код библиотек Boost C ++ - отличный ресурс для изучения, если не один из лучших на планете. Тем не менее, для новичка изучение кода Boost может сделать процесс обучения очень крутым. Если вы действительно хотите попробовать читать Boost, начните с небольших и простых библиотек, таких как Boost.Array .

mloskot
источник
2
Я думаю, это было бы то же самое, что предложить хороший способ научиться кататься на лыжах - это купить склоны с двойным черным бриллиантом.
Gort Робот
@ StevenBurnap, пожалуйста, прочитайте мой ответ еще раз и укажите на это нелепое предложение, которое я сделал. Прекратите это, и укажите на лучшую всеобъемлющую библиотеку, которую стоит прочитать новичкам. Вы придете к выводу, что лучшие примеры, которые подходят для начинающих, взяты из книги для начинающих.
mloskot
-3

Попробуйте прочитать C ++ PDF. Это бесплатно, и я изучил C ++ из него, хотя у меня не было никакого другого опыта программирования, и мне только 14. Удивительно.

Xi_Ensen
источник
3
Можете ли вы добавить ссылку на какой-либо ресурс, связанный с этими проектами?
Джорджио
3
Какой C ++ PDF вы имеете в виду?
Мартин Питерс