Sponsored by Dragon Age: Origins
Follow the Dragon Age: Origins development team on Twitter view!
twitter.com/DragonAge - EA presents BioWare's new dark fantasy epic Dragon Age: Origins. '9/10' from Game Informer.
96 Comments
- drlha, on 10/12/2007, -3/+46Apparently C++ is 21 times harder to learn than C as well.
- inactive, on 10/12/2007, -2/+36It's great that this stuff is available but don't be fooled. Understanding C syntax will not teach you to program. Programming is a wholly different skill that take experience and a good mentor.
I know how to hammer and saw but I guarantee that if I built a house it would fall down in a stiff breeze. - diatrevolo, on 10/12/2007, -1/+35do{
diggdown(1bloke);
}while (beingAnAss == 1); - wbreim, on 10/12/2007, -3/+26this is great. I give it +3 Internets.
- adamkmccarthy, on 10/12/2007, -2/+17nice one, but where's the teach yourself C in 3 hours book? i have to submit my C assignment on linked lists....
- weijie90, on 10/12/2007, -3/+18That's very useful. I've always liked Sams Teach Yourself series, even though I never complete them within 24 hours.
- diatrevolo, on 10/12/2007, -1/+15There are also people who know C that aren't on Digg.
When will people understand that tech person != programmer? - honds, on 10/12/2007, -3/+13C is still being used extensively. Specifically in the Open Source movement. I personally use C++ and C# for most of my projects and PHP for most of my web apps. But I wouldn't discount C.
Hell, I still write some x86 assembly code. No language is useless (except Basic... go ahead, Digg me down for that).
On another note... I have a copy of this book at home. It is the first book I ever read on programming. Over a decade ago. So yeah, I guess it is old. - weddle, on 10/12/2007, -4/+12Is Jack Bauer teaching it?
- nofxjunkee, on 10/12/2007, -2/+11diatrevolo: tsk tsk, you're digging him down before checking to see if he's being a jack ass first. Grade: A-
while (1bloke->jackassness > 0) bury(1bloke->last_comment);
Seriously though, if you want to really learn C, buy the K&R book and do all the exercises. Yes, all of them. They're great at making you think. - iarenzana, on 10/12/2007, -5/+13Teach yourself assembler in 3 minutes and a half. (Then go and write Windows).
- elbrakiachi, on 10/12/2007, -3/+11Or you can actually teach yourself to program in just 10 years...
http://norvig.com/21-days.html - JQP123, on 10/12/2007, -5/+13The three most important things in C --- pointers, pointers and pointers.
The three most dangerous things in C --- pointers, pointers and pointers. - darkstar949, on 10/12/2007, -4/+11I'll bite, what does the bible have to do with computer programming?
- avlasics, on 10/12/2007, -3/+9Here's a link where Guido van Rossum states the original design goal for Python.
http://www.artima.com/intv/pyscale.html
Guido van Rossum: "Actually, my initial goal for Python was to serve as a second language for people who were C or C++ programmers, but who had work where writing a C program was just not effective."
C is still very relevant and widely in use. It is an excellent first language to learn. To say it is only used for graphics and embedded systems is false. - DookieNukem, on 10/12/2007, -2/+8Damnit, digg ate my <stdio.h>!
- Ozymandias42, on 10/12/2007, -1/+7This is great and all, but I still maintain the most thorough and concise read on the C programming language is "The C Programming Language," by K & R.
- honds, on 10/12/2007, -8/+13The other one was for C++. That is a different language.
- phr0ze, on 10/12/2007, -3/+8Or learn to grammar.
- diatrevolo, on 10/12/2007, -1/+6@lpcustom
No, I specifically wanted to digg down preemptively, and then check for further assery. - ishmal, on 10/12/2007, -2/+7What's better, is that it is concise and written clearly, without a lot of jargon. It is somewhat minimalist, much like the style of e.e.cummings. That is good if you want to be able to read the book -and- do the exercises in the allotted 24 hours.
- darkstar949, on 10/12/2007, -2/+7C is not dead, and it not likely to be dead for a very long time. The biggest reason why is that C is closer to the hardware than other languages. As such C is a better language for lower level work (i.e. operating systems) than C++ is, so until such time that there is a better lower level language to replace C, C will not die.
- diatrevolo, on 10/12/2007, -2/+6"who want to learn this crap anyway. If you want to learn something, buy a bible and go to the church."
What's the URL? - inkyblue2, on 10/12/2007, -3/+7""C" is becoming archaic by todays standards."
i think what you really meant to say was "i am ignorant of the situations where one might use C." Java, C#, python, etc. are all very nice, but when you need to do something very big, very fast, or with very limited resources, then you turn to C or C++. nothing has come along to replace them yet. - spider418, on 10/12/2007, -3/+6#include
main()
{
printf ("Damn it! Where is Kim!?.n");
return 0;
} - lowesch, on 10/12/2007, -3/+6but it's still heavily in use...
- inactive, on 10/12/2007, -4/+7I learned how to program C using this book. Now I'm a professional c# coder.
- diatrevolo, on 10/12/2007, -1/+5Other than for OS kernels, C is also widely used to program consumer electronics, instead of assembly, for microcontrollers, such as the PIC and the AVR ATMega, making C the most widely used language in the world.
- msikma, on 10/12/2007, -2/+4Some assembly environments are extremely simple and could be learned in a very short time. I've been amazed at the simplicity of 6502 assembly (most well-known as the instruction set that also powered the Nintendo Entertainment System). It's very simple because of how low level it is. If you want to learn assembly, you need to invest time in the logic of programming.
- trypeewee, on 10/12/2007, -3/+5@culbeda
"Poll: Anyone still using C instead of C++, Java, C#, etc?"
It depends a lot on the kind of program you're writing.
If you're writing some driver or something for a kernel you'll probably use C or C++.
Also if you need to implement complex algorithms that are highly time-consuming, and you need them to operate as quickly as you can, C might be a good option! You can trust me on this one! I once had a program execution time cut in half just by replacing C++' "cout and cin" by "fscanf and fprintf" ;)
But I agree that most programs nowadays can be written with "higher-level" programming languages, such as java, c#, python, lisp, and so on and so forth...
my 2 cents anyway - Urusai, on 10/12/2007, -1/+3I'm waiting for "Teach Yourself COBOL in 040.000 Excruciating Hours"
- havuk, on 10/12/2007, -2/+4Hello World!
- amikael999, on 10/12/2007, -0/+2wow, another free book. Thanks god, this time there is only 1 book, I am still reading other thousands of free books, which will take me next 10 lifes ... -:( LOL
http://digg.com/programming/Massive_List_Of_5000_Programming_Computer_Internet_Books_-_For_Free_
http://digg.com/linux_unix/5000_Free_Linux_Computer_Programming_books_by_Tag_Cloud - Homunculiheaded, on 10/12/2007, -2/+4I think maybe you mean hemingway? I would never want to read a text book by ee cumings. While he's a great poet, I think learning to program C by ee cumings would not be fun, I've posted one of his more famous poems 'Buffalo Bill' below (hopefully digg will perserve cuming's intentionally odd formating.
*edit it didn't preserve the formating, check the poem out here: http://www.poetryfoundation.org/archive/poem.html?id=176654 - meadot01, on 10/12/2007, -4/+5Most well known for use in Nintendo? Tell that to all the Commodore PET/64 , Apple I/II and Atari users. A lot more people programed some of those than the Nintendo.
- petdance, on 10/12/2007, -0/+1Don't use printf() for simple unformatted strings. Use puts().
- bbbrian, on 10/12/2007, -0/+1If you want to understand programming in-depth, it will take some time. On the order of years of consistent effort. There is just a lot of breadth and depth to the subject.
I have found that one of the keys to learning a new area of programming is to set an anchor in a reasonable place, then begin exploring outward from there. You get much less frustrated if you have things to build on rather than just floundering from place to place.
That said, C programming is a brilliant place to begin. It has a concise syntax, without a lot of OO features to confuse you with right off the bat. And it is a thin layer of abstraction that allows you to feel the hardware underneath without requiring you to completely understand a modern CPU architecture. And trust me, modern CPUs (especially Intel/AMD) are freakingly complex beasts. So just accept the fact that starting from the lowest level and working your way up just doesn't make any sense in this case. The effort required to understand the low levels will derail you quicker than anything. And as it turns out, learning at a higher level like C will teach you lots about the lower levels, which you can then work your way toward once you have a nice foundation to start from.
So where to begin programming C? If you're using Linux, you should have all of the the tools you need. To start with, don't worry about make. Make is simply a tool that allows you to build (compile) large applications in a reproducible way. It basically reads scripts, called 'make files' that tell it which source code files to send to the compiler in which order with the various dependencies that are required to wrap everything up into an executable program. For a beginner, make is unnecessary. When you start to need it, you will know. Just learn how to use a text editor like vi or emacs, and write your first 'Hello World' program. Then learn how to compile it from the command line using cc or its open-source equivalent, gcc. Then run the program you wrote. Once you have done that, you are a programmer. Then plan on spending several-to-many years learning to become a good, experienced programmer.
If you want to learn low-level stuff, learn about data structures and algorithms. Learn the difference between a hash-table, a linked-list, a stack, a queue, and an array. Learn why a quick-sort is faster than a bubble-sort. Learn what Big-O notation means. These are the fundamental building blocks used by programmers everyday, regardless of which language they are using. Start with a good C primer book like the one in this story and your Linux box. That and Google is all you need. - artanis, on 10/12/2007, -1/+2or you could open your eyes and realize religion is the poison keeping you from truly understanding the world.
Is this a flame?
oops! :P - inkyblue2, on 10/12/2007, -3/+4if you're saying "learn something easier before attempting C", then good. i mostly agree.
if you're really saying "C is an obsolete language", then you're crazy. rapid prototyping and interpreted languages have their place in the world, but they are not replacements for C/C++. - petdance, on 10/12/2007, -0/+1Too bad nobody cares about the copyright violation in posting this book. :-(
- xlent, on 11/19/2007, -0/+1?asdf
- goyira, on 10/12/2007, -2/+3@culbeda and @Topher06 : I Think that all the guys working in the Linux kernel codes in C, and probably all or most of the guys working in the GNU project (including GNOME, the GIMP, etc)
Also important scientific programs like the GROMACS app for computational chemistry are in C, not to mention many, many python modules written in C.
I, personally, use the Python language, but still write in C the most time-consuming parts of the program
So please stop the dogmatic statements. - ivanjs, on 10/12/2007, -1/+2Very nice. Love to see more material like this released on the web (x86 assembler in 24 hours, anyone?)
Did anyone catch the typo about pointers?
"For instance, after the integer variable x is declared and assigned to a value like this:
int x;
x = 7;
the variable x now has two values:
Left value: 1000
Right value: 7
Here the left value, 1000, is the address of the memory location reserved for x. The right value, 7, is the content stored in the memory location. Note that depending on computers and operating systems, the right value of x can be different from one machine to another."
It says "the right value of x can be different from one machine to another" when he obviously meant left value of x since the address might change from one machine to another, but 7 is 7. - dimension128, on 10/12/2007, -0/+1Ive been running into all of these questions example(Is it better to start with OOP or not?) and more. But the one that really bugs me is: "shouldn't I start with the lowest possible level language that I can, and then work my way up?" For me at least, every tutorial, how to, lesson, or whatever that I find all have one thing in common. They all assume that you know a bunch of things that you just don't know. In some circumstances that can be tolerated, you can sometimes just continue with the mindset that "it just works, I don't understand how, but it just works". And then sometimes, quite a while later, you will finally understand that one little thing that you had to ignore before. But usually I don't have such luck, usually that particular thing is never explained.
And then to make matters worse, a lot of times people explain things incorrectly just because they assume it will somehow make the concept as a whole easier to understand. For me, this just causes me to eventually rethink the entire thing and sometimes become even more confused.
The way I see it is, If C# automatically takes care of things for you that C wouldn't, it is hiding things from you and you then never fully understand how it works. And then later when you encounter these subjects your screwed. But from what I read, C does the same thing compared to some kind of assembly language.
I have talked to people who are programmers, and many times they have suggested that I study LISP, apparently the way I think fits very well with how that language works. (so they tell me, maybe its just some kind of joke).
So then some (should be very simple to solve) problems arise, where the hell do I find an IDE, compiler, and CLEAR instructions on how to use them, for any language I may decide to work with?
I have VS2005 Team Suite, but that's not what I want at all. (well its basically what I want as far as an easy to use IDE goes). But I don't want all of the behind the scenes junk to be, well, behind the scenes. Also I want to develop on Linux, not windows.
I understand that If I want to start writing some C, assembly, or lisp programs I'm probably not going to find some bloated GUI IDE for it. But I cant really find any (easy to understand) information on wtf a makefile is, where I get the compilers, how to use them when I do find them, and I just have so many questions that "man whatever" doesn't answer. Ive been at this for almost 2 years now, granted most of that time has been spent just learning the differences between languages and deciding what one to start with. But when the instruction manual cant give you the answers, and then the people cant give you the answers because their egos wont allow it....
Go ahead and dig me down if you must, but from a beginners perspective, programming on Linux sucks ass. And I'm that rare idiot that just wont use windows even if I had to chose between using windows or not having a computer at all. - lpcustom, on 10/12/2007, -3/+4diatrevolo:
Yeah you want to use a pre-test loop there instead of a post-test. This is exactly what others have said about learning to "program" rather than learning a particular language's syntax. You may know how to write a post-test loop but that doesn't mean you are using it correctly. - gemsy88, on 06/09/2009, -0/+0ok so im just starting on this c programming book and im planning to go thorugh every chapter. i have a test on this in a few days!
however, i was wanting to know where aapendix e is? is it possible ot get that?
thankyou! loving this book - lilrabbit129, on 10/12/2007, -1/+1"i think what you really meant to say was "i am ignorant of the situations where one might use C." Java, C#, python, etc. are all very nice, but when you need to do something very big, very fast, or with very limited resources, then you turn to C or C++. nothing has come along to replace them yet."
I agree on the second two, but if you want to write something very big, then you probably don't want to use C. C++ or even Java would be better ( because of the built in OO capabilities and checking ). - badogg, on 10/12/2007, -1/+1@southport:
"Some of you people need to learn how to type first"
fcuk ahf ;) - lilrabbit129, on 10/12/2007, -1/+1The syntax hasn't changed that much in that amount of time. I would suggest that if anyone wants to learn to program, right after reading this tutorial they find a tutorial on what NOT to do using C... for example goto is bad.
-
Show 51 - 97 of 97 discussions



What is Digg?