Jump to content



Photo

  • Please log in to reply
35 replies to this topic

#1 Mr.XXIV

Mr.XXIV

    Shine bright like Iron Man.

  • Tech Issues Solved: 1
  • Joined: 30-April 11
  • Location: Durham, North Carolina
  • OS: OS X Mountain Lion 10.8.5
  • Phone: iPhone 5

Posted 27 September 2012 - 03:09

What is the best book or site where I could learn every aspect of "C"? I've decided next summer that I want to live a little more custom and I want to restructure the way I work. I'm a quick, but thorough person, and I'd like to work with the Linux Kernal from scratch.


#2 Kami-

Kami-

    ♫ d(-_-)b ♫

  • Tech Issues Solved: 2
  • Joined: 28-July 08
  • Location: SandBox

Posted 27 September 2012 - 03:13

There isn't one source sufficient for what you are asking; you'd have to go through an awful lot of sites and books in order to learn 'every aspect' of C.

#3 musty

musty

    Neowinian

  • Joined: 26-March 11
  • Location: Auckland, New Zealand

Posted 27 September 2012 - 03:22

You might want to start with an introductory book to C/C++ (I would suggest C++). Then, you need to build your way up by reading more advanced books. However, reading is not the end to this. Learning a programming language also depends on using it frequently. You will build up experience but that needs patience. Try to get real world jobs that would force you to impliment what you have learned from reading. Be patient. It takes so much time. I would say years. Good luck :)

#4 Andre S.

Andre S.

    Asik

  • Tech Issues Solved: 6
  • Joined: 26-October 05

Posted 27 September 2012 - 03:26

Stackoverflow.com has a good list of books: http://stackoverflow...-guide-and-list

Do you have any prior programming experience or knowledge of how operating systems work? Being able to make sense of the Linux kernel will take more than just a working knowledge of the C language.

#5 OP Mr.XXIV

Mr.XXIV

    Shine bright like Iron Man.

  • Tech Issues Solved: 1
  • Joined: 30-April 11
  • Location: Durham, North Carolina
  • OS: OS X Mountain Lion 10.8.5
  • Phone: iPhone 5

Posted 27 September 2012 - 03:51

Not exactly. That's why I'm starting to read Linux From Scratch and other possible references to get a possible understanding of how it works. I'm only being experimental. Thanks for the link by the way.

#6 gian

gian

    Neowinian

  • Joined: 07-September 04
  • Location: Greece

Posted 27 September 2012 - 09:01

http://www.amazon.co...n/dp/0131103628
http://www.amazon.co...k/dp/1593272200
http://lwn.net/Kernel/LDD3/

and lot's of google. It's A LOT of work.

#7 +Nik L

Nik L

    Where's my pants?

  • Tech Issues Solved: 1
  • Joined: 14-January 03

Posted 27 September 2012 - 09:05

I do love these threads where someone comes in, with little or no prior programming experience, and sets themselves ridiculously lofty goals such as "learning every aspect of C so I can work with the kernal from scratch", and expects a single book or a short timescale.

Don't get me wrong, I applaud people's eagerness to learn, but assuming that it can be done from one book over a short period of time...

It kinda ****es on the 4 years at uni and over 15 years in industry that I (and others) have, and I still don't know "every aspect" of anything.

#8 n_K

n_K

    Neowinian Senior

  • Tech Issues Solved: 3
  • Joined: 19-March 06
  • Location: here.
  • OS: FreeDOS
  • Phone: Nokia 3315

Posted 27 September 2012 - 10:13

I do love these threads where someone comes in, with little or no prior programming experience, and sets themselves ridiculously lofty goals such as "learning every aspect of C so I can work with the kernal from scratch", and expects a single book or a short timescale.

Don't get me wrong, I applaud people's eagerness to learn, but assuming that it can be done from one book over a short period of time...

It kinda ****es on the 4 years at uni and over 15 years in industry that I (and others) have, and I still don't know "every aspect" of anything.


Amen.

#9 ChuckFinley

ChuckFinley

    Neowinian Senior

  • Joined: 14-May 03

Posted 27 September 2012 - 10:34

Amen.


I love threads like this,

First of all to be a Kernel Developer learn how to spell Kernel. You must have a good understanding of how a Operating System Kernel works, Right?

You say you want to work with the Kernel. Why? You have an idea for a Kernel App? Maybe a Firewall? Or Anti Virus/Malware Program that runs at the Kernel level?

You have this warped view of how you can pick up a C Book and then start writing Kernel Mode Applications that plug straight into the Kernel API. What OS are you going to be working with? Linux Maybe. Windows I doubt it. For obvious reasons...

#10 +Karl L.

Karl L.

    xorangekiller

  • Tech Issues Solved: 15
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Testing

Posted 27 September 2012 - 16:13

Not to be a Debbie Downer, but while learning the internals of an operating system and how to program at the kernel level is a lofty goal, it probably isn't something that you're going to learn in just a year, no less a summer. If you are just starting out with C and have very little understanding of how operating systems interface with hardware (or provide services to higher levels), its likely to be extremely difficult. If you are really serious about it, you can do it, but don't expect it to be fast or easy.

I am a meticulous and thorough person, like you claim to be. While it has helped me gain a deep understanding of some subjects, it certainly has not made me fast. I started learning C++ 7 years ago, C 4 years ago, GNU/Linux 3 years ago, and kernel level programming within the last year. While it is something that I am very interested in, I'm still not at the point where I could write my own kernel module from scratch. I understand just enough to read Linux kernel code, debug it (to some extent), and patch it where necessary. I watch the Linux commit logs and mailing lists and hope to eventually learn enough to be able to write my own kernel module from scratch -- but I'm not there yet.

In my experience, most descent programmers have a healthy ego: that's why programmers tend to suck at giving time estimates. You could learn kernel programming faster than me. In fact, I'm sure that many others have. I'm not the best programmer out there -- I'm probably not even above average -- but I am thorough. Don't give up because you can't learn it as fast as you would like. Start at an upper level (such as C++ desktop application development) and work your way down (to kernel level). If you really love it, stick with it: you will get there eventually.

#11 f0rk_b0mb

f0rk_b0mb

    Neowinian Senior

  • Tech Issues Solved: 3
  • Joined: 02-June 12
  • Location: 'Murica
  • OS: Windows, Linux, OS X
  • Phone: Motorola Moto G

Posted 27 September 2012 - 16:16

Take a class. Learning C by yourself is like picking your nose in public- you can do it, it isn't pretty tho. :laugh:

Take it from somebody that tried...

If you just want to screw around with a simple OS, get virtual box and play with this:

http://mikeos.berlios.de/

#12 OP Mr.XXIV

Mr.XXIV

    Shine bright like Iron Man.

  • Tech Issues Solved: 1
  • Joined: 30-April 11
  • Location: Durham, North Carolina
  • OS: OS X Mountain Lion 10.8.5
  • Phone: iPhone 5

Posted 28 September 2012 - 01:34

I said "I'm only being experimental.", don't be so hard on me. Sorry I spelled it wrong, I was typing quick and was in a hurry at the time.

I'm aware of how hard it really is, I was so much in interest about a custom OS since before Codename "Longhorn". Not even, ever since I was once a member in the old JoeJoe forum.

Other than that, I just want to start learning C because I want to live a little custom throughout the next few years and experience new things since I grew up a Web Developer.


#13 +Karl L.

Karl L.

    xorangekiller

  • Tech Issues Solved: 15
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Testing

Posted 28 September 2012 - 02:10

I don't think that anyone was overly harsh on you. There are some very helpful and constructive comments above. Its not that we are trying to discourage you, its just that some of us with more experience (and I'm not claiming to be one) see the warning signs and are trying to warn you. Although they haven't posted much in this thread, Dr_Asik and n_K in particular have extensive experience: listen to them.

#14 FightAndLive

FightAndLive

    Neowinian

  • Joined: 31-August 12

Posted 28 September 2012 - 02:17

I do love these threads where someone comes in, with little or no prior programming experience, and sets themselves ridiculously lofty goals such as "learning every aspect of C so I can work with the kernal from scratch", and expects a single book or a short timescale.


Everyone when they first start programming usually ask ambisous questions like this, I've been programming for 17 years and I vagually remember when I first started programming I posted on some board "I want to develop my own operating system how do i do it?" I personally actually like when people ask questions like this, it shows a great level of ambition in people, that I think is personally lacking in to many people.


It kinda ****es on the 4 years at uni and over 15 years in industry that I (and others) have, and I still don't know "every aspect" of anything.


Why would you want to know every aspect of everything? Over 17 years I've specialized in a lot of different areas, and I can tell you over the years it all starts to blur together and as I'm sure your aware with every new thing you learn the more cynical you get :p.


First of all to be a Kernel Developer learn how to spell Kernel.


Lol seriously get over yourself : ).

I'm aware of how hard it really is


You have no idea how difficult and time consuming this is going to be.

Lets start off by saying, you want to do something that is really boring and what you want to do has very little pay off at the end of the day. A kernel is really the unspoken "hero" of any modern operating system, its basically a abstraction layer between the hardware, memory, and software. There are just too many concepts there that you need to know that you don't know, and you won't be able to learn all of the stuff before you get bored and give up.

On the off chance you actually coded a kernel that was a half assed best thing you could come up with, no one will use because of a few things.
  • There is a good chance it will be a insecure nightmare. No beginner programmer can even fathom how to code something securely because you don't know how a computer really works.
  • You won't have any drivers, so your kernel couldn't fully use key devices like the graphics card. Unless you force all of your programmers to code there stuff for every single device out there(anyone remember the DMX sound engine? :p ).
  • IHV - Indepedent hardware vendors half ass their driver code to the point that all of their drivers(even if you code a 100% complient linux kernel) that won't work under your kernel besides you did something different than whats in the main stream linux kernels.
I would steer clear of any type of kernel development. Let us assume that you are superman and can learn everything on the job. You can still do operating system level coding without having to touch the kernel stuff, you can basically grab a unix(not LINUX, but UNIX) kernel and try and build something off of that. But again this is all very dry and boring stuff.

Frankly if you have very little coding experience I would basically start else were(if your favorite game has public source code out there, I would do some basic mods for that first). You want a challenge that not to many people are doing that you can learn how to think while learning how to program, hell try some kinect stuff. Focus your ambition in a area that you can get a decent pay off at the end of day.

its just that some of us with more experience (and I'm not claiming to be one) see the warning signs and are trying to warn you


A lot of professional developers with years of experience always try and bite off more than they can chew(DNF anyone?), its a human trait to always to do something AWESOME and BAD ASS :). You will notice really quickly why programmers are hid away in isolated areas in a company that no body goes to; were arrogant, personality challenged individuals.

Posted Image

Don't stop programming because of some of stuff on here, and if you continue programming you will soon end up like us...its inevitable.

#15 OP Mr.XXIV

Mr.XXIV

    Shine bright like Iron Man.

  • Tech Issues Solved: 1
  • Joined: 30-April 11
  • Location: Durham, North Carolina
  • OS: OS X Mountain Lion 10.8.5
  • Phone: iPhone 5

Posted 28 September 2012 - 02:36

Yea, but it's not like I'm trying to make an OS to replace a part of my life here. :p

I just want to know what it's like to work on a new OS, I have family that can definitely code like crazy and I'm just the youngest who would love to understand the concepts. :) If anything, being experimental is what should count, right? That's what I've been trying to say here. I'm using the Linux kernal to start off with and reading documents of LFS and such to know where to start. But I never said I was starting now was I? I mean shoot, reading, examining, etc to even code basic programs for starts are what I'm actually trying to do before I go to something even more complex. I'm just trying to create steps in my journey as a 19 year old who's been trying to code at all since 12 years old starting with html/css php & javascript. Come on guys, try to boost spirits at the same time as giving warning shots! :D



Click here to login or here to register to remove this ad, it's free!