The C family, should I dig deeper?

Roquen: I disagree. C++ has many more concepts that Java doesn’t have that I believe are invaluable to learn!

They’re just details. If you write an OOP style and only know one of (say) java,c++,c#,etc. You learn a new one and you’ll just write in an OOP style. If you learn C, well you still can, but you’ll have to lower the abstraction your self and you’ll end up realizing that it’s not really buying yourself that much that’s useful in the general case.

Thanks for every ones input! This has been great, I got CrunchBang setup on VirtualBox and I am checking out C as we speak. So far it has been pretty straight forward and I have been following this guide, which seems ok. Anyone got recommendations?

So are you basically saying that since I understand Java, moving to another OOP based language is well, easy?

I have been meaning to study algorithms, data structures and all that jazz. The problem is that all the credible books are hella expensive, usually span 1000 pages or so and with a job, college and a high maintenance wife; not easy to dedicate vast amounts of time to encyclopaedia sized books. Which really upsets me, for example this website for design patterns is short, concise and gets to the point. It leaves plenty of questions that can be answered by further reading, if necessary.

I managed to get about 150-200 pages in to Introduction to Artificial Intelligence which was highly recommended by my cousin, who has a PHD in Robotics and a Master degree in Computer Science, so had to believe it was good.

I am currently studying HND Games Development myself, and first year we learn C# and Unreal Engine 4. Second we do pure C# and Scripting + AI and data structures. Third year, for some reason we move right over to Java and C++ (like wtf?), start to learn more about software architecture and design patterns. Not actually looked into 4th and 5th year yet.

So yeah, whatever helps me get a head start in that is golden.

[quote=“princec,post:12,topic:51950”]
I would say more that C is a high-level assembly language which allows you to use a portable style, but no-one ever does. Just at the basic level of types: stdint.h / inttypes.h are 15 years old, but still terribly underused even in new projects.

Knowing a language from a given major family and learning a second, third, etc. gives you less mileage than learning something that requires you to think differently when (and more importantly about) programming. Learning how to think differently is useful regardless of what languages you end up using.

Learn any language, but don’t deviate from the logical thinking of OOP style. C Programs are written Top-Down, they focus more on the procedural paradigms. While high level programs are written with a focus on the data. The thinking is different for C style, C++ style and Java/C# style.

hmm I’d say that was not the case. C, C++, and Java all largely think about data and the operations on that data in the same way: they are in the family of “imperative programming” languages, differing only by the levels of abstraction over the operations and storage of that data. If you want to learn something truly alien have a go at a functional language such as a Lisp derivative.

Cas :slight_smile:

I’d say the opposite. There’s nothing particularity interesting about OOP style. Well structured code is dictated by the data. The details of the structure are related to the language.

Right I would like to update you guys on what I have chosen to do.

I first attempted (not saying I failed) to learn C on this website, I enjoyed it but as I got more and more into it and started to question wither I should just go for C++, after all it is widely used in the industry and we get taught it at University year 4.

I done some Google foo and got myself a copy of C++ Primer and well I was at it I picked up all 3 volumes of “The Art of Computer Programming” as recommended by many people (even although it is older than me 3 fold).

I am using OpenBlocks IDE, if anyone has a better recommendation that is just as lightweight let me know, I un-installed VS for the simple fact I only have a 60GB SSD and it HAS to be installed on the same drive as Windows.

Also, after some more Google foo I found this framework that looks nice, has anyone ever used it? Much like Java, when I am creating a game, as in properly and not purely for learning it would be nice to have abstraction from the low-level GPU code and such.

Thanks for every ones input! I do intend to learn C as well, I am currently watching the stream by this guy pointed out by Roquen in this thread.

OP, definately learn C. Chasing rouge pointers teaches you to keep your house in order (which is something you tend to keep as you move onto other languages)

The Art of Computer Programming is definitely a good buy. These are books you attempt to digest over a long time period. Note that there is useful information in the exercises which are not in the main text.

They are forcing you to do it at college? im at GCSE level and they are currently letting me do it within C++ . I love C++ its an intuitive hands on language with lots of features , all of it done in such a clear manor (my faiviroute -> member access its a wee arrow!), thats personal , C is a bit different from most other languages , it is sequential non class based , it has structures which are a bit similar. C in general is not very useful in most industry now HOWEVER it is an extremely useful language , you may never need to use it however the fundementals of the strucutre of the language and conventions that you will pickup along with way along with pointer handling is brilliant for other languages and will make you code in a much more mindful way. If you want to do anything with a C type language I would say do it with C++ its c but with extra stuff, also learning a language I would reccomend using safaribooks , very clear , very detailed books written by people from oreilly books to fifth edition god programming books.

Heh, with typography, spelling and grammar like yours you’re going to grow to hate C++ :wink:

Cas :slight_smile:

Again, because C++ is a superset of C isn’t a good reason to skip on C. If you only know Java and then learn C++ then you won’t be learning to think differently about programming…you’re just learning pragmatic C++ details. If you learn C…you’ll have to think different.

I heavily agree, plus C is much more bite-size of a language. I highly recommend the book The C Programming Language 2nd Edition by Brian Kernighan and Dennis Ritchie

Seconded.

The closest you’d get in C++ would be A Tour of C++ by Bjarne Stroustrup (“most notable for the creation and development of the widely used C++ programming language.” - wikipedia). It doesn’t cover everything, but it serves as a very good introduction to C++11.

[quote=“pjt33,post:24,topic:51950”]

I see a possible connection. Why do people keep recommending using a completely outdated language reference? You wouldn’t recommend a book on Java 1.1 to someone wanting to learn Java in 2014.

Ugh I type quickly and concentrate on other things way more than I should :D. My current pet hate is .length functions within programming , java array.length , string.length() ,arraylist.size() WUT? ugh even python does it , len(array) string.length … I think though c++ is the worst offender here though , length of array = sizeof(array)/sizeof(Type). I’m just glad thats everything , oh wait vectors… but there are iterators for that sort of thing.

On the topic of C and C++ books , theses are just a couple that I have found that you might want to take a look at and give them a try.
C Programming for the Absolute Beginner, Third Edition
Programming in C, Fourth Edition

The C Programming Language, Second Edition

C++
The C++ Programming Language, Fourth Edition

C++11 for Programmers, Second Edition

C++ Primer 5th edition <- I would recommend this one , very clear with lots of examples in a structured manor.

Hope this helps.

[quote=“lcass,post:38,topic:51950”]
Why’s that?

[quote=“lcass,post:38,topic:51950”]
Maybe I misunderstood your post, but you should know that java lets you iterate over arrays and anything implementing the Iterable interface using a foreach loop.