Perhaps a post on these programming languages needs no fore ward. But then again, for the skeptics who are rooting for Go and Swift, here’s a little bit of background that reinforces the fact that despite not being the most popular ones today, these object-oriented languages still form the base for many applications.
Why bother
Java and C# were touted as the pet languages of the 2000s. Now, people talk Python and Ruby, Javascript and PHP. However, fundamental programming skills still necessitate a solid foundation in C and C++. (You can read more here- Top programming languages that will be most popular in 2017)
TIOBE may be scorning C now, but Dice and other job portals show a significant demand for these skill sets across industries. Beginner-friendliness, scalability, and a sizable community continue to make C++ a major player as well.
“They [C and C++] are the native tongue for system-level programming, and they probably will be for many years. Eventually, though, languages like Google Go or D may replace them,” says Gartner Research Analysts Mark Driver. “The trial-by-fire of learning C tends to weed out the noncommitted, so knowledge of C at the very least makes you stand out,” he added.
These languages act like a “mental model” that helps you go where places you thought you couldn’t. Bjarne Stroustrup, the C++ creator, says, “Basically, nothing that can handle complexity runs as fast as C++.” Used with some scripting language, it is for “high performance, high reliability, small footprint, low energy consumption, all of these good things.”
With a plethora of resources available, choosing the best can leave you in a tizzy. We’ve got a list, a valuable one, which keeps the curious ones who wonder what’s beneath the hood get as “close to the machine” as possible.
What’s better than studying from the guru himself? Bjarne Stroustrup created C++ in 1979.
The book covers the language in its entirety, talking about containers, algorithms, abstraction mechanisms, concurrency, utilities, basic facilities, standard libraries, and design models. This reorganized edition discusses C++11, a version that followed C++03, and then got superseded by C++14 and C++17 later on. A must-have for programming enthusiasts, because it certainly is a definitive reference book for general programming principles and practice using C++. Reviewers are raving about the code examples and the way the language has been presented. It may not be the best book for novices according to some readers; it is more of a “description of the features and the reasoning” than answering how-tos. Look at the detailed table of contents here and access the exercises here.
You can buy the book here.
For learners who are eager to get into the practical aspects of C++, this book, which is a part of Stroustrup’s C++ in-depth series, is the go-to reference. If you don’t have time for the basics, then you can go directly into the coding bit with the help of Koenig and Moo’s “accelerated” C++. Topics covered include “basic string handling, loop and flow-control statements, arrays, functions and methods, iterators, file I/O, operator overloading, inheritance, polymorphism and virtual functions.”
Founding member of the ANSI/ISO C++ committee, Dag Brück, says “This is a first-rate introductory book that takes a practical approach to solving problems using C++. It covers a much wider scope of C++ programming than other introductory books I’ve seen, and in a surprisingly compact format.” The authors talk about features using understandable examples, teaching you how to use the features rather than trying to explain the whats and whys. It takes you from standard library abstractions to defining your own. Key takeaways that crystallize low-level and high-level concepts and end-of-chapter exercises cement your understanding.
With this book, you can begin programming right away!
You can buy the book here.
In the C++ primer, the authors focus on the 2011 revised standard. In the Why Read This Book section, they say they “emphasize good style and explain the rationale behind the rules.” The first part of the book covers basics of C++ such as variables, strings, vectors, arrays, expressions, statements, functions, and classes. The next section deals with the I/O library, sequential and associative containers, generic algorithms, and dynamic memory. Another part takes you through copy control, overloaded operations and conversions, OOP, templates, and generic programming. The primer teaches you high-level programming techniques, such as specialized library facilities and tools for large programs, in the later sections. Learners don’t have to know C, but they need to be familiar with writing, compiling, and running a program “in at least one modern block-structured language.”
You can buy the book here.
Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 (1st Edition) by Scott Meyers
A part of his Effective C++ book series, this edition talks about how you can use the new features of C++11 and C++14, such as lambda expressions and move semantics, effectively. A software architect at Microsoft and chair of ISO C++ standards committee, Herb Sutter, says: “After I learned the C++ basics, I then learned how to use C++ in production code from Meyer’s series of Effective C++ books. Effective Modern C++ is the most important how-to book for advice on key guidelines, styles, and idioms to use modern C++ effectively and well. Don’t own it yet? Buy this one. Now.”
With this book, Meyers ensures that you can “create software that’s correct, efficient, maintainable, and portable.” Topics covered include perfect forwarding, except specifications, braced initialization, auto type declarations, and differences between std:: atomic and volatile and their relation to the concurrency API of C++.
A few reviewers feel that some basic knowledge of C++ is required to fully appreciate this edition on modern C++. Lots of great examples and bite-sized “items” tell you why the features have been added and what they can do; it is a set of guidelines on the newer additions to C++ rather than an introductory text to learn C++.
You can buy the book here.
This top-quality book is a part of Stroustrup’s C++ in-depth series. Written by Herb Sutter, a renowned expert in C++, the book talks about the what, the why, and the how-to of “solid software engineering” using scenarios in a problem-solution format. Sutter answers questions such as “How does writing inline affect performance? How does exception safety go beyond try and catch statements? What’s the real memory cost of using standard containers?”
If you want to be one of the best C++ programmers around, Exceptional C++ is a definitive guide to topics such as generic programming, writing reusable templates, exception safety issues, compiler firewalls, class design, inheritance, and polymorphism, and optimization. Exemplary presentation and entertaining puzzles make this a must-buy. His next book, More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions continues the journey. With an aim to help you write exceptional code, the book comes with new detailed sections (e.g. multi-threaded environments) and insights on vital topics covered in the prequel.
You can buy the book here.
Despite having been originally published in 1978, this amazing book continues to be the bible for C programmers. Ritchie (1941–2011) was the original C language designer, and he also co-designed the UNIX OS. The K&R (authors) C version is different from the ANSI C or the earlier version.
The book discusses has challenging exercises to help you attain a working knowledge of C. It concisely and clearly types, operators, and expressions, control flow, functions and program structure, pointers and arrays, structures, input and output, and the UNIX system interface. You need some programming background; you need to know what a compiler is; the book teaches you the syntax and not exactly the programming principles. For example, when it talks four pages about functions, it doesn’t actually tell you what a function is. Still, this seminal text has the first Hello World program.
In the preface to the second edition published in 1988, the authors write: We have improved the exposition of critical features, such as pointers, that are central to C programming. We have refined the original examples, and have added new examples in several chapters. For instance, the treatment of complicated declarations is augmented by programs that convert declarations into words and vice versa. As before, all examples have been tested directly from the text, which is in machine-readable form.
You can buy the book here.
Kelley and Pohl have put together a great tutorial on ANSI C. The authors have used unique and clear explanations of program code, along with all-encompassing exercises and summary tables, to highlight the power of C, a general purpose programming language.
The USPs of the book include a chapter on how to move to Java from C, detailed coverage of pointers, multi-file programming, and recursion, an improved standard library functions appendix, and more focus on abstract data types. The comprehensive tutorial on ANSI C also discusses input/output and the operating system, lexical elements, operators, and the c system, the preprocessor, structures, functions, unions, transitioning to C++ from C, how ANSI C is different from traditional C, and advanced applications.
You can buy the book here.
This book isn’t for a beginner either. Once you have learned C from K & R, Linden’s book can answer questions such as “How can you debug linker errors? What is an activation record? Why are arrays and pointers not identical?” Unlike most bland technical books, Linden has managed to keep the reader engaged with humor, puzzles, depth of content, cultural references, and exercises. Although some bits in the book may not seem relevant anymore, it is still a satisfying read with its hacker stories and more.
John Barry, the author of Sunburst, Technobabble, and other books says “In Expert C Programming, Peter van der Linden combines C language expertise and a subtle sense of humor to deliver a C programming book that stands out from the pack. In a genre too often known for windy, lifeless prose, van der Linden’s crisp language, tongue-in-cheek attitude, and real-world examples engage and instruct.”
For C programming enthusiasts, this book is about the background stories and the appreciation for the language. The lore aside, Linden discusses advanced concepts related to compiling, pointers, and memory usage. The 11 chapters have positive titles that make you curious about linking, runtime data structures, declarations, arrays, and so on.
You can buy the book here.
This is a book that helps you learn C from scratch. The author, who says he picked up the language from Dennis Ritchie’s book on C programming, has explained the basic concepts such as decision control instruction, complex decision making, loop control instruction, complex repetitions, case-control instruction, functions, pointers, recursion, data types revisited, the c preprocessor, arrays, strings, structures, console input/ output and file input/ output, C in Linux, and operations on bits in an easy-to-understand format. The book also teaches you how to create programs using Visual Studio and NetBeans.
You can buy it here.
This is what Daniel Spielman, Henry Ford II Professor of Computer Science, Mathematics, and Applied Science at Yale, has to say about this book, “Introduction to Algorithms, the ‘bible’ of the field, is a comprehensive textbook covering the full spectrum of modern algorithms: from the fastest algorithms and data structures to polynomial-time algorithms for seemingly intractable problems, from classical algorithms in graph theory to special algorithms for string matching, computational geometry, and number theory. The revised third edition notably adds a chapter on van Emde Boas trees, one of the most useful data structures, and on multithreaded algorithms, a topic of increasing importance.”
The book is meant for readers at all levels. With a bit of programming background, learners can grasp the magic—design, and analysis—of algorithms. The book broadly covers foundations, sorting and order statistics, data structures, advanced techniques such as dynamic programming and greedy algorithms, advanced data structures such as Fibonacci Heaps and van Emde Boas Trees, graph algorithms, and a few selected topics such as matrix operators, linear programming, polynomials and FFT, string matching, computational geometry, and NP-completeness.
You can buy the book here.
For whom is this book? Prof. Hsin-Mu Tsai, National Taiwan University, answers it in his book review. He says, “This book is a good supplement to a conventional data structure textbook, as it offers many good code examples and selections of relevant problems **with solutions**. There is no deep analysis or detailed proof in this book, which is not what this book is for (for example, as a textbook to teach algorithm and complexity analysis), and what you would be able to find in a conventional data structure textbook. The book could also be good for a professional who just wants a quick review of important data structure concepts and implementations.”
Reviewers on Amazon believe that this book is a must-have for job interviews and competitive exams. The author emphasizes problem analysis over theory. The book is coded in C and C++. A comprehensive introduction, recursion and backtracking, linked lists, stacks, queues, trees, heaps, graph algorithms, sorting, searching, selection algorithms, symbol tables, hashing, string, divide-and-conquer, and greedy algorithms, complexity classes, and dynamic programming are the key chapters in the book. Looks like he has covered just about everything you need for a binge-reading evening!
You can buy the book here.
Summary
Computers are not about calculations, they are about information—organizing, retrieving, and manipulating it. You want to write efficient programs? Then you need to understand and learn to work with data structures. Data structures and algorithms tell you how you can put the programming languages you mastered to good use. Pick up C and C++ and implement and play around with data structures, and see how exciting it all is. In spite of young upstarts, dependable C and C++ continue to be the programming languages of choice for several applications.
Defining a Recruitment Management System In today's competitive talent landscape, attracting and retaining top performers…
Understanding the Recruitment Funnel Imagine a broad opening at the top, gradually narrowing down to…
With the growing demand for highly skilled professionals, traditional hiring methods such as reviewing resumes…
Finding the perfect fit for your team can feel like searching for a unicorn. But…
In today's competitive job market, attracting and keeping top talent is crucial for small businesses…
The tech industry thrives on innovation, and at the heart of that innovation lies a…