Best c programming books according to redditors
We found 43 Reddit comments discussing the best c programming books. We ranked the 15 resulting products by number of redditors who mentioned them. Here are the top 20.
We found 43 Reddit comments discussing the best c programming books. We ranked the 15 resulting products by number of redditors who mentioned them. Here are the top 20.
Sure :)
EDIT: Added links to Amazon just in case anyone wants to see reviews.
[$1 Or More Tier]
Head First Ruby
Head First C
Head First Object-Oriented Analysis and Design
Head First SQL
Head First Statistics
[$8 Or More Tier]
Head First Javascript Programming
Head First PMP
Head First HMTL and CSS
Head First C#
Head First Agile
[$15 Or More Tier]
Head First Design Patterns
Head First Java
Head First Python
Head First Learn to Code
Head First Android Development
If you want to get her a Raspberry Pi, you will need a couple of things. (I will assume that you intend to get her a Raspberry Pi 3 Model B, more commonly referred to as just the Raspberry Pi 3.)
For one, you'll almost certainly want a mouse, and a keyboard is a must-have. You need a microSD card (at least 8GB recommended) for her to keep files on, though you may want to get her a larger one if she will benefit from having more space. (You will also want to get an adapter like this if your microSD card doesn't come with one to make the microSD card easier to connect to some computers.)
Finally, you will need to find a power source of some sort. You will probably want one that connects with micro USB, though other adapters can work (though they're a little more complicated, so I won't get into that). A good adapter should be about five volts (nearly all micro USB adapters are about five volts, so this shouldn't be a problem), but it should also be at least 1.5A (1500mA) or 2A (2000mA) to be usable. More is better. (For more detailed information regarding power supplies, see the FAQ.)
Some Raspberry Pi starter guides state that you should buy a USB Wi-Fi adapter as well, but this is usually not needed to maintain a Wi-Fi connection with the Raspberry Pi 3, as it comes with a built-in Wi-Fi adapter (and a Bluetooth adapter, too).
If she wants to get into coding or programming, she should learn a little bit about various programming languages and decide which one she wants to learn first. The steps that must be taken to learn programming vary greatly upon the language she chooses. Below, I have listed some resources for the most popular ones.
HTML, CSS, and/or JavaScript: W3Schools, Codecademy, Khan Academy
C and/or C++: Tutorials Point, Head First C
Edit: I made it more clear that one amp power supplies are minimalist and their use should be discouraged.
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!
ubuntu, cmake, gcc, learn about references, pointers and const correctness, these books: my favorite data structures book, and stupid simple tutorial book
edit: also, I've recently started using Visual Studio Code as an editor. Its pleasant to look at, is multi platform and gets rid of the normal nastiness that you'd normally have to deal with from real visual studio.
Head First C is very good. It not only covers C but also valgrind, make, threads, sockets and networking, etc. It is a great introduction to C and commonly used tools. I was surprised at how much they covered as normally a beginners book in a lower level language do not cover the more complicated things such as networking and threads.
I found myself in a similar circumstance years ago.
I would recommend learning C first. Programming in C is a very friendly intro.
After that I'd recommend Advanced C and Data Structures in C.
These 3 books will teach you the basics of programming, recursion, sorting, stacks, queues, graphs, hashing, etc...
After you can do that in C, everything else will be much easier.
I know a lot of people recommend Java or other OOP languages but in my opinion it's best to start out in C and then transition to an OOP language.
I recommend installing ubuntu and using vi as a text editor. Compile using gcc.
If you decide to go with another language The New Boston has lots of video tutorials in various languages. Personally I don't care too much for his tutorials, although I know some people do like them, but one thing that is helpful is that the first few videos in any particular language series shows you how to install a compiler or IDE and get it up and running. If you're not too computer savvy these can be helpful.
If you go the python route I recommend these free sources:
Learn Python the Hardway
Think Python (this book is used with MIT's intro to CS course)
MIT's intro CS course
Think Stats (use python to do statistics)
Tons of other sources:
http://freevideolectures.com/
http://academicearth.org/
(note: at academic earth you can find programming courses from Stanford University. Their intro course is in Java. So if you want to learn Java that could be a good way to go.)
Right. But don't be so quick to judge. =)
The issue is that there isn't anything much better out there. A lot of the issues with teaching C is C itself.
C it a very simple language, maybe too simple. A lot of the safety in C is difficult because C doesn't give you anything to get that right. The solution to this is being very good at it, know what you're doing and avoid the problems. Modularity barely is possible in C (it is only through simple means). Dynamicity is a pain. All of these things that other languages simply support out of the box, you have to go through major hops in C so you get them.
From what I understand, most uses of C today only exist when nothing else is applicable. That is, when they really need the sort of benefits you get from using C, because the language itself isn't that great.
You could write whole books on getting modularity right in C, on getting dynamicity right in C, on getting security right in C, and so forth. And in fact there are:
It goes on and on and on. The C standard library is extremely thin (in comparison to everything out there). How can K&R2 teach you how to write highly sophisticated programs if the most advanced stuff in the standard library is sorting? I'm being a bit simplistic in this argument, but it's not so much distant from the truth.
If you ever thought Amazon or Goodreads reviews are worth anything, check out the reviews of OP's book, and Traister's book:
C# In Depth on Goodreads
C# In Depth on Amazon
Mastering C Pointers on Goodreads
Mastering C Pointers on Amazon
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.
I used Head First C which has a friendly style. Just yesterday I found Beginning C which looks pretty good.
Some people go with THREE. Monsters.
I'll take a shot at this.
This is definitely enough to get you started. Best of luck!
For just starting out, my favourite is C++ Programming in Easy Steps. It explains everything clearly using plain English and covers the basics of the language.
これ思い出した。
エキスパートCプログラミング―知られざるCの深層
I know this might not be as helpful as the other posts here, but I suggest learning Python first. Python is quite easy and will get you started with programming. After learning Python, head into C. C is a great language, and it is used for many things. The Linux kernel was written in C, the Apache Web Server was also too. After C, I suggest learning C++. Hope that helps on where to start.
Here is a great place to learn Python
EDIT: After doing the courses on CodeAcademy, you can purchase a great book on C. Written by the guy who made it (Dennis Ritchie)
K&R it's not latest C book but it gives an acceptable tour of C enough to get the basics cover.
And that's why I recommended the ISO C Standard along with K&R: by this way you have an introduction plus the ultimate C reference... everything covered.
Secure coding should be left to other books such as this one.
I've read almost all the books on C. I think you can get by with just:
Well, I'm a little afraid to recommend this book to you since it doesn't hold your hand if you're a first time programmer. But since you have a little Python knowledge in your head, try taking a look at a book called "Head First C." If you follow along with the book, do every exercise, and complete the labs, I think you'll come out ready to tackle the world like a 240-pounds football linebacker.
So, (IMO) the raspberry pi doesn't specifically bring anything to learning C++ that I think you couldn't get on any other computer. And I'm assuming you have a computer because you're posting here (could be a phone but i don't know).
If you've got windows I tend towards Visual Studio and on a Mac I'd go with Xcode. When I'm in Linux I tend to just go straight to gcc and make (this won't make sense to you yet)
Books: These are the ones that were used in my C++ focused classes:
Big C++
ADTs, Data Structures and Problem Solving in C++
Hope this helps.
Help charities by using this Amazon link:
Link 1: Supports The Electronic Frontier Foundation
=====
This comment was posted by CharityBot, a Reddit bot that helps raise money for charity. Learn how CharityBot works
I'm a senior computer engineering student, and if I was going to relearn how to program, I'd pick this. It's written by the actual creator of C and the paperback is only $15.
C has a wrongly given reputation for being archaic and complex. But really it is programming distilled into its most simple form. Also, much of C's syntax is common across other major languages like C++, C#, and Java.
Ερμ όχι, που τέτοια τύχη. Απλώς έχοντας βλακεία με το σπορ, έκατσα και έμαθα Pascal μόνος μου give or take και μετά το γύρισα στη C μαζί με ένα φιλαράκι λίγο καιρό μετά που βγήκε η Βίβλος. Αλλά αν δεν είχα περάσει από Pascal στα formative years μου (12-15) δεν θα μπορούσα να εκτιμήσω την ελευθερία και τη δύναμη της C και δεν ήμουν σίγουρος αν θα άντεχα να διαβάσω WinAPI.
(Προφανώς τις γνώσεις μου για προγραμματισμό τις απέκτησα πριν πάω στο (Αγγλικό) πανεπιστήμιο όπου από ένα σημείο και μετά απλώς δεν πατούσα στα μαθήματα προγραμματισμού γιατί ήθελα να βρίσω κοσμάκη για τις απίστευτες παπάτζες που έλεγαν (χαρακτηριστικό παράδειγμα ότι μας δίδασκαν Borland containers & collections, με τη Standard Template Library της C++ να ετοιμάζεται να γίνει ANSI και ότι μας έδειχναν αυτοί οι κόπανοι θα γινόταν obsolete μέσα σε κάτι μήνες... γίδια).
Τα γράφω αυτά όχι για τίποτε άλλο, αλλά μας διαβάζουν και νεότεροι εδώ και ίσως θα είχε ένα νόημα να παρατήσουν τη DotAρα και τη LoLάρα και να πιάσουν καμιά Delphi και κανά VS Community Edition / JDK και να δούνε πως δουλεύει το πράμα.
If you're able to get a book, there's a book that teaches very well the basics of C++, from there you can build on it by looking at learncpp.com and www.cpluscplus.com
The book is called C++ programming in easy steps by Mike McGrath ( amazon link)
the books i have:
C++ 8th edition by Tony Gaddis amazon link
C 8th edition by Paul & Harvey Deitel amazon link
Schaum's Outline: Advanced Mathematics for Engineers and Scientists amazon link
the books i want:
Shigley's Mechanical Engineering Design (in SI units); ISBN 978-9339221638
Machinery's Handbook; ISBN 978-0831130916
Machine Shop Trade Secrets by James Harvey; ISBN 978-0831132279 or 978-0831134778 (prefer second edition)
*CNC Trade Secrets by James Harvey; ISBN 978-0831135027
you can PM me your offer and we'll negotiate from there :) note it doesnt really need to be a 1:1 trade. if you have other things in mind PM me anyway i might be interested
i'll delete the post when it's all out. thanks!
I used following book to learn C, Pretty good book but 1000+ pages, mostly because they take a lot of time to explain things and give lot of exercises. Some you can skip.
https://www.amazon.com/How-Program-8th-Paul-Deitel/dp/0133976890
C How to Program (Deitel & Deitel) - Great book that introduces C programming as well as concepts of programming, and a bit about C++.
One comment I would make is that you're trying to do too many things. Pick one and work at it until you get to a point of feeling "fluent". You'll know you're fluent when you feel that you can express anything that you like in the language.
http://www.amazon.com/gp/aw/d/1449399916?pc_redir=1409139465&robot_redir=1
That's completely fine.
Here is an excellent book on learning C. I really enjoyed this book, it might be up your alley.
You can start with Head First C. I think, this book is good for starting.
Let me recommend a very good book to use: https://www.amazon.com/Head-First-C-Brain-Friendly-Guide/dp/1449399916
This will teach you the basics of C, and just how computers work in general. I found it immensely useful when I was taking a class in C last summer. Any book in the Head First series is fantastic.
Here's part of a passage that really explains the differences well. I hope it's as helpful for you as it was for me.
This is from Problem Solving and Program Design in C:
Section 2
The College experience: Computer Disciplines and Majors to Choose From
Computer Science
> Computer science as a discipline encompasses a wide range of topics from theoretical and algorithmic foundations to cutting-edge developments. The work computer scientists are trained to do can be arranged into three categories:
> Designing and implementing useful software
> Devising new ways to use computers
> * Developing effective ways to solve computing problems
>A computer science degree consists of courses that include computing theory, programming, and mathematics. These courses ultimately develop the logic and reasoning skills integral to becoming a computer scientist. The math sequence includes calculus I and II (and in many cases, calculus III) as well as discrete mathematics. Some students also study linear algebra and probability and statistics. A computer science degree offers a comprehensive foundation that permits graduates to understand and adapt to new technologies and new ideas. Computer science departments are often found at universities as part of the science, engineering, or mathematics divisions.
> Computer scientists take on challenging programming jobs, supervise other programmers, and advise other programmers on the best approaches to be taken. Computer science researchers are working with scientists from other fields to perform such tasks as using databases to create and organize new knowledge, making robots that will be practical and intelligent aides, and using computers to help decipher the secrets of human DNA. Their theoretical background allows them to determine the best performance possible for new technologies and their study of algorithms helps them to develop creative approaches to new (and old) problems.
Software Engineering
> Software engineering (SE) is the discipline of developing and maintaining large software systems. These systems must behave reliably and efficiently, be affordable, and satisfy all requirements defined for them. SE seeks to integrate the theory of computer science and mathematics with the practical engineering principles developed for physical objects.
> An SE degree program is closely related to the computer science degree
program, and they are usually offered within the same department. In fact, most computer science curricula require one or more software engineering courses. An SE degree can be considered a specialized degree within the confines of the field of computer science.
> SE students learn more about software reliability and maintenance of large systems and focus more on techniques for developing and maintaining software that is engineered to be correct from its inception. Most programs require SE students to participate in group projects for the development of software that will be used in earnest by others. Students assess customer needs, develop usable software, test the product thoroughly, and analyze its usefulness.
Professionals who hold a software engineering degree expect to be involved with the creation and maintenance of large software systems that may be used by many different organizations. Their focus will be on the design principles that make the system viable for many people and through many years.
> Although an SE degree has a recognized description, the term software engineer is merely a job label in the workplace. There is no standard definition for this term when used in a job description, and its meaning can vary widely among employers. An employer may think of a programmer or an IT specialist as a software engineer.
My General Thought
I find it is best to learn and get exposure from several book/media sources coupled with actual application of things learned.
----
Introductory Texts/Links
Short Intro
http://heather.cs.ucdavis.edu/~matloff/unix.html
C Programming: A Modern Approach
http://knking.com/books/c2/index.html
Head First C (Different Presentation Style, check amazon preview)
http://www.amazon.com/Head-First-C-David-Griffiths/dp/1449399916/
Programming in C
http://www.amazon.com/Programming-C-4th-Developers-Library/dp/0321776410/
PDF Tutorial
http://phy.ntnu.edu.tw/~cchen/pdf/ctutor.pdf
Original Here > http://www.tutorialspoint.com/cprogramming/index.htm
C The HardWay (Mostly complete)
http://c.learncodethehardway.org/book/
Zed's K&R Critique
http://c.learncodethehardway.org/book/krcritique.html
Practical C Programming
http://shop.oreilly.com/product/9781565923065.do
Ben Klemens Modeling with Data book has a short C introductory section.
http://ben.klemens.org/pdfs/gsl_stats.pdf
-----
Reference
Harbison and Steele C Reference Manual
http://www.careferencemanual.com/
Plan on developing on Linux?
The Linux Programming Interface: A Linux and UNIX System Programming Handbook
http://www.amazon.com/dp/1593272200/
Didn't get Pointers?
http://www.amazon.com/dp/1449344186/
21st Century C, This book got dogged a lot, but I think its a nice text.
http://www.amazon.com/21st-Century-Tips-New-School/dp/1449327141
K&R Scan (If you want an idea what's inside K&R)
http://www.iups.org/media/meeting_minutes/C.pdf
-----
Need an Editor?
VIM Book
ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf
Vim Video Tutorials
http://derekwyatt.org/vim/
-----
Back in the Day
I used these books years ago. They're somewhat dated, but still useful and cheap.
Programming in ANSI C
http://www.amazon.com/Programming-ANSI-Hayden-Books-library/dp/0672484080
Advanced C: Tips and Techniques (Hayden Books C Library)
http://www.amazon.com/Advanced-Techniques-Hayden-Books-Library/dp/067248417X/
----
C Language Basics
How do I read/write files
How things are implemented at a lower level
Compiler Options and Functionality
What is a make file?
Debugging... How to do it... How do I use a standard debugger like GDB?
For the absolute beginner, go for the coolest book on c
People seem to like it, based on the reviews. I'm just not convinced it fits the needs of the op. From the preface:
>As an analogy, think of a short sightseeing tour of a city, such as Copenhagen or New York. In
just a few hours, you are given a quick peek at the major attractions, told a few background stories,
and usually given some suggestions about what to see next. You do
not
know the city after such a
tour. You do
not
understand all you have seen and heard. You do
not
know how to navigate the
formal and informal rules that govern life in the city. To really know a city, you have to live in it, often for years. However, with a bit of luck, you will have gained a bit of an overview, a notion of
what is special about the city, and ideas of what might be of interest to you. After the tour, the real
exploration can begin
This would seem to imply more books being read afterwards. What I would argue is that you may as well skip the fast-tracked books like this and learn it from the ground up the first time. I don't know about other books being mentioned, but C++ Primer does that for sure.
I learned from C++ Primer, and then at university there was a course learning from Big C++, which is another big book, and even then there were always questions on the forums that I knew would have been unnecessary had C++ Primer been used (although data structures and the like were definitely covered better in Big C++). C++ is like that, and it's best not to try and learn it in a day like you can some other languages.
Head First C .. Best C book i've ever read. Thank me later.
Big fan of C
C: A Reference Manual
Pointers on C
Expert C Programming
The C Puzzle Book
If by computer engineering you mean including programming then
Big C++ by Horstman & Budd was an amazingly good book for learning C++. Reading this I probably didn't even need to go to my lectures.