:: Re: [DNG] Dng Digest, Vol 10, Issue…
Góra strony
Delete this message
Reply to this message
Autor: Nate Bargmann
Data:  
Dla: dng
Nowe tematy: [DNG] Compilation: was (and shouldn't have been) Dng Digest, Vol 10, Issue 12
Temat: Re: [DNG] Dng Digest, Vol 10, Issue 12
* On 2015 04 Jul 05:02 -0500, John Jensen wrote:
> Hi All,
>
> I've been following this list for a long time. I'm a supporter of open
> source and the philosophy around it. I studied programming years ago but as
> the work where I live, at the time, was in other areas I moved on to other
> things. If one wnated to learn C to contribute to the community what is the
> most direct approach? What books would be most relevant? Do those of you
> who program use IDEs and if so which? There's an IDE called CODE::BLOCKS
> (?) that I've looked and I've read is quite good.
>
> I have a book on C basics, C Primer Plus, that I'll have to work through to
> get my mind back into that thought process, but after that where?


Knowing C is a good start as you've already surmised. A lot of
programmers regard "The C Programming Language" for ANSI C by Kernighan
and Ritchie as definitive. C as implemented by GNU follows the C
standard but also adds its own extensions they you may or may not need
to be aware of.

A lot of software is built using GNU Autotools. It is a very extensive
system that has a very steep learning curve in proportion with its
power. The GNU documentation serves more as a reference manual than a
HOWTO, however, one site I found very useful was the Autotools Myth
Buster:

https://autotools.io/index.html

More packages are using Cmake, but unless the package you're interested
in is using it, you can safely avoid its details for now. Also, if
you're developing in Qt you'll need to be familiar with Qmake. These
are just the more frequently found alternatives to the Autotools. The
alternative is writing Makefiles by hand.

If your package uses third party libraries you'll want to get familiar
with their documentation. In most all cases the GNU C library
documentation will prove indispensable. When you need to access the
kernel API directly, the book "The Linux Programming Interface" by
Michael Kerrisk, maintainer of the Linux man pages, goes plenty well in
depth:

http://www.man7.org/tlpi/

As for an IDE, I use GNU Emacs for my editor and GDB debugger
interface. I'm still working to get comfortable with it. I handle
building and source code management directly from a terminal (Xfce
Terminal to be precise). This is less objective and a quite more
personal decision that you will need to sort out for yourself. Plenty
of options exist for you to try.

Finally, there is source code management. Right now the most popular
SCM in the Linux world is Git. Learn it on a most basic level as it in
use by most projects you will encounter. Second place is Subversion.
Distant third place contenders are Mercurial, Bazaar, and CVS.
Knowledge of these SCMs is only needed if the project uses them,
otherwise just knowing they exist is sufficient.

That is a lot to digest and this is just a road map based on what I have
found exists in the F/OSS world as packaged by Debian/Devuan.

- Nate

--

"The optimist proclaims that we live in the best of all
possible worlds. The pessimist fears this is true."

Ham radio, Linux, bikes, and more: http://www.n0nb.us