# world gone mad



## darkshadow (Aug 8, 2011)

I feel that world gone mad , when I take a look on open source project which most of them programed in c (music player , video converter , operating system , web server , mail server , gtk .... etc) and search for book on these topics I didn't find any most of the book on c just take about basics , there is no book or information specialized on these topic you have to read the code to understand how it is work .

I think this is unfair for some one like me , I learn from books and I hate to read code just to learn some thing new , Im really disappointed , any help please , I want to  start coding till now I have read these books on operating system :

1- Minix (most of it ) .
2- operating system concept (most of it ).
3- Design and Implementation of the FreeBSD Operating System.
4- practice of programing (half).
5- kenrigen the c language (all the book).
6- design of rootkit (first chapter). 

but I didn't write a line of code on operating system till now , (except some rootkit), I just want to  start writing c code to do any thing , what I should do ? (by the way Im php  developer and work for yahoo ) ?


----------



## graudeejs (Aug 8, 2011)

There's online totorial and reference for QT and GTK
There are book about compression etc

There are hardware specifications (hard to get, even harder to read)
There are RFCs you can read


I don't see much of a problem.
The only problem is to started, once you start doing something, you'll get better and better

Like once I couldn't code a thing in asm, Now I have my small (but unfinished) sumo robot, coded in asm for atmega8. I just had to read reference 
And learn basic asm syntax for atmega chips


----------



## xibo (Aug 8, 2011)

I take it that you want to get started with BSD/Unix development given your list of books. The normal order would then be

1. get started with C
Virtually any guide will do (including web based of cause)

2. the 10 commandments for a C programmer


3. Learn about algorithms and data structures.
Most people will like "Introduction to Algorithms" by Cormen, Leisserson, Rivest, and Stein and "Algorithms" by Sedgewick. The later has two versions with C and C++ examples respectively. There are very little web introductions, so you'll need to check your city's library. The good thing is that most common algorithms are several decades old, so old books will do.


4. Learn about Unix, that is, how to use it's userland interfce functions (unistd/sys/net)
There's books about that, I personally used the "see also" section of man pages...


5. FreeBSD is more or less for PC. Some people might disagree as some non-PC targets like ARM are supported, but nevertheless to understand about FreeBSD (or DragonflyBSD, or OpenBSD, ..., or Microsoft Windows) it is advantageous to know about PC architecture. There's a huge amount of literature, though most of it is useless. The last resort would be Intel's "Software Developer Manual" which used to be hosted on Intel's homepage until last week when they decided to use adobe flash for _everything_ (it's the most complete document around, but also the least good for getting started)


6. McKusick's book should be understandable (it should be long before I thought)


I personally don't like Tannenbaum or Knuth. I haven't commited "a line" of kernel code but I modified and tried out a lot of them, and it's not rocket science. Writing "a line" of userspace code shouldn't be an issue - remember cd, ls, echo, cal, ... are part of the OS, and obvious to write (also, man pages are part of the OS).


----------



## fonz (Aug 9, 2011)

darkshadow said:
			
		

> open source project which most of them programed in c
> [snip]
> and search for book on these topics I didn't find any most of the book on c just take about basics , there is no book or information specialized on these topic you have to read the code to understand how it is work .


Even in today's world with Java, PHP and who knows what, C is still very much a part of the UNIX world. However, as you pointed out, it's one thing to learn the basics of the language and another thing to understand the sometimes dazzling things that can be (and are) done with it.

Basically, it's just a matter of experience. If your learn C and learn it properly, in time you WILL be able to understand all the things that people are doing with it. Just don't expect it to be something that can be picked up overnight. Most people who are writing large applications or developing the kernel have had *years* of experience in C programming before they got to the point where they could do what they are doing. Once you've mastered the language itself, it's not that difficult to take the next step and do more complicated things.

To quote a famous cat hanging from a branch on a poster: _"Hang in there, baby."_

Fonz


----------



## Crivens (Aug 9, 2011)

To start on algorithms you could try this page. It looks pretty complete. But having the Corman or Knuth on your shelf never hurts - well, unless you want to move home


----------



## zester (Aug 28, 2011)

There isn't very many tutorials for Gtk. 

I made up a list of tutorial for Gtk a couple of years ago.
http://www.gtkforums.com/viewtopic.php?f=3&t=988

During that time I worked on alot of Gtk docs but the sad fact
is that the Gtk & Gnome development teams have zero interest
in writing tutorials.

Now I just use Qt it has great docs lots of tutorials and there
forums are very friendly.

98 Qt4 Video Tutorials
http://www.voidrealms.com/tutorials.aspx?filter=qt

25 C++ Video Tutorials
http://www.voidrealms.com/tutorials.aspx?filter=cpp

Qt4 Docs
http://doc.qt.nokia.com/4.7/index.html

Qt Tutorials
http://doc.qt.nokia.com/4.7/tutorials.html

Qt Example Applications
http://doc.qt.nokia.com/4.7/all-examples.html

Qt C++ and Qt Quick (QML/Javascript)
http://doc.qt.nokia.com/4.7/qtquick.html

Qt Getting Started
http://doc.qt.nokia.com/4.7/gettingstartedqt.html

Qt Educational Videos
http://developer.qt.nokia.com/videos#c-141

Qt Course Materials (Tutorials)
http://qt.nokia.com/learning/education/course-materials


----------



## vertexSymphony (Aug 29, 2011)

Â¿Wtf? real documentation doesn't exists, basically because there are stuff that only can be understood by reading code (and being able to read and understand what a code does is *a must* skill if you don't wan't to be fired often)

A *perfect* documentation would require almost the effort of rewriting the code in a literal way, and that's simply too much effort.

So don't blame "world gone mad" to your lack of skill understanding C code.
Also, before complaining, try finishing a book.

Cheers.

P.S: Sorry for the strong words, but someone had to say it.


----------



## zester (Aug 29, 2011)

vertexSymphony said:
			
		

> Â¿Wtf? real documentation doesn't exists, basically because there are stuff that only can be understood by reading code (and being able to read and understand what a code does is *a must* skill if you don't wan't to be fired often)
> 
> A *perfect* documentation would require almost the effort of rewriting the code in a literal way, and that's simply too much effort.
> 
> ...



So you expect a beginner to read an api's source code in order to learn how to use it?
If thats what your referring to your in lala land my friend, there is a thing code level abstraction its what makes all that code pretty to look at and easy to use and almost impossible to interpret unless your the one who wrote it. I dare you to go dig through gobjects header files and learn it that way lol.


----------



## vertexSymphony (Aug 29, 2011)

zester said:
			
		

> So you expect a beginner to read an api's source code in order to learn how to use it?
> If thats what your referring to your in lala land my friend, there is a thing code level abstraction its what makes all that code pretty to look at and easy to use and almost impossible to interpret unless your the one who wrote it. I dare you to go dig threw gobjects header files and learn it that way lol.



No, what I wanted to say is that documentation IS NEVER enough (is good to have, but usually, you'll end up reading the code anyways), and usually you have to peek at code that's not written by you ... and if digging in other's people code is a problem, well, he's in a very complicated situation....

Cheers.


----------



## zester (Aug 29, 2011)

vertexSymphony said:
			
		

> No, what I wanted to say is that documentation IS NEVER enough (is good to have, but usually, you'll end up reading the code anyways), and usually you have to peek at code that's not written by you ... and if digging in other's people code is a problem, well, he's in a very complicated situation....
> 
> Cheers.



I can agree with that. And to the OP programming isn't something you do as a hobby if you
want to get really good at it. It a lifestyle choice. Myself and everyone I know puts in 
around 16 hours a day and have been doing so for 10+ years, And that still doesn't make any of us an expert. Being an expert at programming requires a natural talent.


----------



## zester (Aug 29, 2011)

But I didn't write a line of code on operating system till now, (except some rootkit), I just want to start writing c code to do any thing  what I should do ? (by the way I'm php developer and work for yahoo)?

Yahhh that has BS all over it in so many different ways lol


----------



## darkshadow (Sep 2, 2011)

*mmm*

Thanks for the advice , it is not that I can't program but I get use to program in php (4 years) so it is hard for me to go to lower level language like c thats all .

I need some one to cheer me up but some of you guys tries to create reflection of his failure on others people which is wrong ..

Regards


----------



## expl (Sep 2, 2011)

zester said:
			
		

> So you expect a beginner to read an api's source code in order to learn how to use it?
> If thats what your referring to your in lala land my friend, there is a thing code level abstraction its what makes all that code pretty to look at and easy to use and almost impossible to interpret unless your the one who wrote it. I dare you to go dig through gobjects header files and learn it that way lol.



You dont have to read or even study api's code. You need to study code of application/library that use that api to understand it. Any decent api will ship some minimalistic examples for study.

By the way this topic fails at life.


----------

