(Part 2) Best products from r/cpp

We found 36 comments on r/cpp discussing the most recommended products. We ran sentiment analysis on each of these comments to determine how redditors feel about different products. We found 123 products and ranked them based on the amount of positive reactions they received. Here are the products ranked 21-40. You can also go back to the previous section.

Top comments mentioning products on r/cpp:

u/just_had_to_reply · 52 pointsr/cpp

For the salty:

What is the best advice you can give someone just starting a CS education?

Get good at the fundamentals: algorithms, data structures, machine architecture. Learn to use a programming language (or their support system), and not just a language. Work on other major projects.
All the trendy stuff you will learn along the way. When you will be good at the fundamentals, you will be good at games, graphics, web design, networking, security, etc. It’s also beneficial if you know some mathematics.
Here are some links on software, and education.

Hey Bjarne. Which C++ compiler do you use?

GCC or Microsoft, soon Clang (again) as well. To be certain and achieve portability it’s better to use more than one. When I teach students it’s always Linux, Windows AND Apple.

Hey Bjarne. Have you heard of Mozilla's newly developed Rust programming and, if so, what is your opinion about it? It seems to me that it could be a really good competitor to C ++, with, among other easily guaranteed memory safety and safe parallelism .

I know a little bit of rust, and many other languages, but my work is focused on C++ and the use of C++.

If has long (decades) been my ideal to make C++ completely type and resource safe. We are almost there: http://www.stroustrup.com/resource-model.pdf. It's part of a fairly ambitious program to modernize the C++ use: https://www.youtube.com/watch?v=1OEu9C51K2A and https://github.com/isocpp/CppCoreGuidelines.

All too often C++ is used as if it's still 1990.

What is your opinion about C (and C ++)'s use of null - termination of strings. Opposed to, for example, Pascal. With many security holes to follow. C ++ will of course have to continue using the null - termination for simple strings, in order to remain compatible with C. (/u/kingguru stresses that you have the ability to use std :: string ) https://en.wikipedia.org/wiki/Null-terminated_string#History

I prefer std :: string. It is not zero- terminated and easier to use than char. You get nothing from using char to communicate with C. "Safety" is much more than just using a single type (or not). "Security" has to do with the whole system; a hacker goes after what is now the easiest to break through. As far as I know SQL injection is still language dependent (SQL can be used from any language) and very popular with hackers. C ++ is type and resource safe: http://www.stroustrup.com/resource-model.pdf.

Hey Bjarne. I have heard that you are good at answering emails, etc., I would like to say thank you for coming here to answer our stupid questions ;) My first question is probably one that could trigger a much and too long answer:

  1. If you had the knowledge that you have now when you originally made ​​C ++ - What would you have done differently?
  2. What little popular/known language do you think deserves more love?
  3. I have heard that D is trying to implement the " language " that you often citereret to hiding in C ++ ( " Within C ++, there is a much smaller and cleaner language struggling two get out"), do you think that there is a truth to that statement ?

    Almost every new language would be a "C++" Killer. Almost every language wants to and tries to be "general purpose". Almost every language wants to try and be for "system programming". But that is difficult. C++ is in fact, not quite bad and is still being developed to cope with new problems and clear old problems and feel better. E.g. http://www.amazon.com/Tour-C--Depth/dp/0321958314/ref=asap_bc?ie=UTF8 And with approximately 4.4 million C++ programmers: http://blog.jetbrains.com/clion/2015/07/infographics-cpp-facts-before-clion/. Moreover, it is good that there are many programming languages. The world would be a boring place if there was only one. But, there is no language that is close to being the "little language stored in C++ that wants to get out" as I sometime dream about: http://www.stroustrup.com/hopl-almost-final.pdf

    Edit: Will update if there is any interest in it.
u/HPCer · 1 pointr/cpp

When I started, the most memorable three resources I know I had were the following:

  • Bjarne's book - I don't think any C++ developer can truly call themselves even intermediate until they have absorbed at least half the content in the book. I started off with his 3rd edition, which is way less intimidating and shorter, but I subsequently ran through this entire book after it came out. There are no shortcuts on here - you need to read it.
  • Effective C++ 3rd Edition - I would almost require this one as it prevents any new C++ developer from getting caught in C++ gotchas. You should ideally follow this book up with his 4th edition afterwords. The reason why I recommended the 3rd first is because that book is much more newbie friendly. The 4th edition is targeted towards experienced C++ developers that already have had their feet wet with C++11/14 and want to figure out some best practices. Note the 3rd edition is for C++98 while the 4th is for C++11/14.

    After you're done with the two above required books, here are some useful readings:

  • What Every Programmer Should Know About Memory - This is an absolutely essential reading whether or not you've taken any systems courses. It's the foundation of what you will be programming towards (optimizing CPU cache usage).
  • 1024cores - I believe this guy works/worked at Google at one point, but his site is essential to understanding multi-threaded programming (which is essential in the field). Browse through his site and learn what you can.
  • Linux Kernel Development - Robert Love (who also works at Google) has probably written the most concise and understandable book on the Linux kernel I've ever read, and I've run through the Daniel Bovet's book and Michael Kirrisk's. For one thing, they're 1,000 and 1,500+ pages, respectively. Secondly, all I've found in those two books that I didn't find in Robert Love's is the implementation details in some areas as well as the details on the scheduler. Robert Love's incredible descriptions on the bottom-half/tasklets were already more than effective for normal understanding. I believe the latter books were more detailed in the networking areas as well, but in that case, you're better off with Understanding Linux Network Internals.

    The above readings will probably be a solid 6-12 months to read and absorb assuming you spend a couple hours a day, but I think it'll be well worth it in the long run since this type of stuff sticks with you for a long time. I read the above around 2013, and I can still talk about the CFS/other schedulers, software interrupts, and how the CPU cache works. It'll also make converting to other languages even more of a breeze because you'll know how everything works underneath the hood.
u/JonKalb · 28 pointsr/cpp

Modern C++ (C++11 or later) books are not nearly as plentiful as those for Classic C++, but there are a few notables.

Bjarne's college text may be what you are looking for:

Programming: Principles and Practice Using C++ https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784/ref=pd_sim_14_2/144-7765085-0122037

It is aimed at engineers, which makes it less general, but might be good for you.

Of course his general intro is also updated to C++11.

The C++ Programming Language https://www.amazon.com/C-Programming-Language-4th/dp/0321563840/ref=pd_sim_14_2/144-7765085-0122037

This is aimed at experienced systems programmers, so it may be a bit heavy for students, which makes the Primer (that you mentioned attractive).

C++ Primer https://www.amazon.com/Primer-5th-Stanley-B-Lippman/dp/0321714113/ref=pd_bxgy_14_img_2/144-7765085-0122037

Be certain to get the 5th edition.

Of Scott's books only the latest is Modern.

Effective Modern C++ https://www.amazon.com/Effective-Modern-Specific-Ways-Improve/dp/1491903996/ref=pd_sim_14_2/144-7765085-0122037?_encoding=UTF8

This is less an introduction for students than for Journeymen (Journeypeople?) programmers.

For just plain good programming style consider Ivan's book.

Functional Programming in C++ https://www.amazon.com/gp/product/1617293814

Don't be put off by "Functional." This style of programming will make your students excellent programmers.

There are some modern books of high quality that are niche.

The ultimate guide to templates:
C++ Templates https://www.amazon.com/C-Templates-Complete-Guide-2nd/dp/0321714121/ref=pd_sim_14_1/144-7765085-0122037

The ultimate guide to concurrency:
C++ Concurrency in Action https://www.amazon.com/C-Concurrency-Action-Anthony-Williams/dp/1617294691/ref=pd_sim_14_1/144-7765085-0122037

Some library options:

Despite its name, this is mostly reference. A very good reference.
The C++ Standard Library: A Tutorial and Reference (2nd Edition) https://www.amazon.com/Standard-Library-Tutorial-Reference-2nd/dp/0321623215/ref=pd_sim_14_2/144-7765085-0122037

Arthur's book covers C++17, which makes it one of the most modern on this list:
Mastering the C++17 STL: Make full use of the standard library components in C++17 https://www.amazon.com/Mastering-17-STL-standard-components-ebook/dp/B076CQ1RFF/ref=sr_1_fkmrnull_1

To what extent are you teaching C++ and to what extent are you teaching programing?

Good luck and have fun!

u/adi123456789 · 2 pointsr/cpp

I'm an embedded software developer who used to use C and now primarily works with C++.

Learning C is relatively easier when you start off and gives you a better appreciation of memory handling and it's complexities than C++ does in my opinion. The C knowledge will also transfer well to C++.

C++ is definitely a much more powerful language and you can get your tasks done quicker with it. There are a lot of things to learn in C++, but you can get them with time. A lot of embedded processors, particularly the ARM based ones, support C++ as well, so that is not a problem

Like someone else mentioned though, embedded development relies on a good knowledge of programming as well as a good understanding of computer architecture.

Here's a nice book I've read which is useful for new embedded developers - Making Embedded Systems: Design Patterns for Great Software https://www.amazon.com/dp/1449302149/ref=cm_sw_r_cp_apa_i_MuFhDb1WWXK3W

u/grbgout · 1 pointr/cpp

I have a background in C and C++, with an emphasis on C. It's been a while since I did anything in C++, and thought this C++11 update would be an excellent opportunity to familiarize myself with the language again.

I have the following C++ texts on my shelves:

  • Problem Solving, Abstraction, & Design Using C++ by Friedman and Koffman (college text used about 7 or 8 years ago)
  • Data Structures and other Objects Using C++ by Main and Savitch (college text used 7 years ago)
  • The Complete C++ Primer by Weiskamp and Flamig (picked it up second hand more recently, '06-'07, haven't read it)
  • C++ Weekend Crash Course by Davis (bought in 2000 before starting a CS degree — "I should probably learn how to program before I start this Major in programming — school taught Java instead, haven't read it; changed schools, incidentally)

    I'm thinking about buying a more updated C++ book to replace the aforementioned texts (donating them to my local library), hence the self.post.

    I never knew about cppreference.com, it looks great and has a very clean layout. Thanks for that. I'm always on the look out for excellent freely available online learning resources, especially for programming languages: /r/Programming has an excellent faq in that regard.

    I wanted to ask for opinions on the quality of the C++ tutorial at cplusplus.com, especially as a companion to the cppreference.com site you provided, but it seems to be down at the moment.

    I find I'm torn regarding dead-tree media for CS texts: on the one hand, I enjoy sitting down with a good book; on the other, digital media lends itself so well to the world of programming-language textbooks: especially considering the potential for automatic update availability (like erratas).

    * Awesome, cppreference.com even has an Archive for Offline viewing!
u/povilasb · 2 pointsr/cpp

It is normal :) I've read somewhere that 20% of our work time we develop new code and 80% new simply maintain the old code. And after a while it sound like true :)

I've been in a situation like you. I've been assigned to maintain a 0.5 million line c++ code base with no tests and no previous maintainers.

Considering that most of the time you're going to spend maintaining your/someones code base, code refactoring, modernizing practices are very valuable. And right now it seems like you have a chance to learn to do so.

Personally, what really saved me was this book: http://www.amazon.co.uk/Working-Effectively-Legacy-Robert-Martin/dp/0131177052/.
So I believe that working on your project is one of the paths you can become a better software developer :)

u/AnHeroicHippo · 1 pointr/cpp

Advanced C++ Programming Styles and Idioms is pretty unconventional: the author assumes you are already familiar with programming concepts and C++ syntax, and presents a plethora of C++ idioms, at least half of which are... let's say unconventional applications of C++'s power of abstraction, that make you think outside the box. Amazon's synopsis and the reviewers there do a better job at describing it though, so give that a read.

You should read an intermediate-level C++ book or two before diving into this one in order to truly appreciate its eccentricity (which should open your eyes considerably). It is a rather strange book: it reads more like a novel than a desktop reference.

u/mart7n · 4 pointsr/cpp

Thanks for your input.

I saw Meyers new book and I have a great respect him (I have other books he has written) but his new book seems more focused on "does and don'ts" rather than syntax for the new standard (based on his own words). I want to concentrate on the basics first.

According to amazon and reviews on amazon, Stroustrups book is heavily C++ 11 focused...
http://www.amazon.co.uk/C-Programming-Language-Bjarne-Stroustrup/dp/0321958322/ref=tmm_hrd_title_0?_encoding=UTF8&sr=8-9&qid=1407752251

What makes you believe otherwise? Have you checked out this title?

u/acwaters · 4 pointsr/cpp

I would pick up both a data structures book and a C++ book; for instance, Data Structures and Algorithms in C++ and Programming: Principles and Practice Using C++.

Of course, you can use any data structures book you like; some are better than others, but they all teach the same stuff. But when you're learning the abstract stuff at the same time as basic programming, it can be nice to see examples in your language. Principles and Practice is one that I wholly recommend, though, as an excellent introduction to modern C++.

Also, be aware that there is way more bad C++ material out there than there is good C++ material. If in doubt, check out the semi-official book list or ask around here.

u/[deleted] · 1 pointr/cpp

Given the current shortage of books on the topic, I ended up buying Professional C++. It's no classic but on the surface it looks pretty good.

u/Resident_Trent · 4 pointsr/cpp

If you can manage, check out Starting Out With C++. You can find a free PDF of the book with a simple google search. Move through the chapters and do the practice questions and exercises at the end of each chapter. If you can manage that, you will better off than 95% of any other students in your future introductory CS courses.

u/CubbiMew · 3 pointsr/cpp

While John Lakos is working on the new version of his book, it may be a good idea to look at what he's talking about at various conferences today (whether you agree or not, it's something to know if you're in this space).
For example, "Applied Hierarchical Reuse" talk from C++Now 2013 is fairly representative: https://github.com/boostcon/cppnow_presentations_2013#wednesday (slides)
https://www.youtube.com/watch?v=ASPj9-4yHO0 (video)

u/mttd · 10 pointsr/cpp

"Large-Scale C++ Software Design" by John Lakos is pretty much about that and far more (definitely beyond structuring directories, but rather the entire codebase architecture). However, it's from 1996 -- and the update isn't out, yet: https://www.amazon.com/Large-Scale-Architecture-Addison-Wesley-Professional-Computing/dp/0201717069

That being said, I believe BDE follows these principles (given John's role) and may be somewhat more recent:

u/hhrjrq · 1 pointr/cpp

I like this book: http://www.amazon.de/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275

It starts with quickly skimming over the basics because it assumes the reader to be familiar with C or Java. Later it deals with algorithms and data structures. Those were always my favorite programs to learn a new language.

Oh and I use Emacs but I think you are fine with Eclipse.

u/huike · 2 pointsr/cpp

I recommend you watch this video:

https://www.youtube.com/watch?v=xnqTKD8uD64

and read this book:

http://www.amazon.com/gp/product/0321958314/ref=ox_sc_act_title_3?ie=UTF8&psc=1&smid=ATVPDKIKX0DER

My personal advice to you is to just start programming. Pick a slightly ambitious project and work really hard on it, that's the best way to learn. Ignore people who tell you that there is only one way to write code and if you don't do it their way you're doing it wrong. Programming shouldn't be that complicated (and it doesn't have to be).

u/TheSuperficial · 1 pointr/cpp

I'm not under any illusion that everyone on the internet lives in the U.S., but FYI Amazon could have the book to you by Friday Feb 15. Was that email maybe from the publisher?

If I didn't already have the first edition I'd jump on it. Will probably hold off for now...

u/pjmlp · 12 pointsr/cpp

Get Bjarne's latest book, "Tour of C++", it describes how to write modern safe C++.

http://www.amazon.com/Tour-In-Depth-Series-Bjarne-Stroustrup/dp/0321958314

u/1Bad · 1 pointr/cpp

A Tour of C++ comes highly recommended for beginners

u/bames53 · 16 pointsr/cpp

This book is more for teaching programming to a beginner than for teaching C++ to an experienced programmer.

Stroustrup has a book aimed at teaching C++ to experienced programmers: A Tour of C++.

u/polkm · 2 pointsr/cpp

I got this book for learning c++11 http://www.amazon.com/Professional-C-Wrox-Guides/dp/0470932449/ref=sr_1_sc_1?s=books&ie=UTF8&qid=1333596913&sr=1-1-spell. Though some of the features of c++11 that they explain aren't in vs10 yet so i haven't been able to test them. The book goes over basic c++ too but you can just jump ahead to the juicy stuff.

u/TemplateRex · 5 pointsr/cpp

Books: First A Tour of C++ and then Effective Modern C++. Website: isocpp.org (it features many blogs, conference announcements, Stackoverflow questions regarding C++11/14).

u/LegalizeAdulthood · 3 pointsr/cpp

There's also the book "Functional Programming in C++" by Ivan Cukic that's coming out soon. See his Functional Programming: Data talk from Meeting C++ 2017 for a description of how to do some immutable data structures.

u/doom_Oo7 · 7 pointsr/cpp

forget everything you learnt in college in programming. Your teachers are so full of shit it's not even funny. Read this book : https://www.amazon.com/Tour-C-Depth/dp/0321958314