
Ask HN: C for Application Development - edwinnathaniel
Hi HN,<p>Lately I&#x27;ve been thinking to move &quot;back&quot; to C to build tools for my own personal use (fun, curiosity, and the urge to go back to basic).<p>At the same time too, lately I noticed that there were resurgent of C discussions&#x2F;materials here and there. Not a lot, but there&#x27;s definitely something brewing, something shaping up in the corner of C world to make the experience less painful and more &quot;standardized&quot; as-per modern software development practice.<p>A background to describe my experience: your typical &quot;cloud&quot; software developer (Java, Go at the backend. Understand design-patterns, enterprise architecture patterns, clean code and the whole shebang. JS at the front-end. K8S + AWS as-needed base. Python for small stuff).<p>What I&#x27;d like to pursue on my free time: FreeBSD (or Linux). C as application-development to start with (think of GTK+, small CLI tools). Eventually, I might want to dig deep and build (or extend&#x2F;expand) infra-related software (think of network software, server software, system-level) but this is not the top priority.<p>If I want to start learning C today to satisfy the top goal: app-dev (GUI, Text-UI, CLI). How should I tackle C? Where should I start from?<p>Imagine I&#x27;m a typical Java-dev who enjoy streamlined experience:<p><pre><code>  - Maven for project management
  - IntelliJ for IDE
  - JUnit for automation-test (integrated with IntelliJ)
  - Swing&#x2F;JavaFX for Desktop-App
</code></pre>
And also armed with your typical Java &quot;best-practice&quot; books like:<p><pre><code>  - Effective Java
  - Fowler&#x27;s Enterprise Architecture Patterns
  - Java-version of Design-Pattern
  - Uncle Bob Clean Code (just for SOLID principles).
</code></pre>
I know that there are several books on &quot;modern C&quot; lately:<p><pre><code>  - Modern C (Manning)
  - Head First C
  - Learn C The Hard Way
  - 21st Century C
</code></pre>
If I can only purchase one C book for the purpose of my single goal: App-Dev. Which one should I go with first that hopefully covers software project management as well as &quot;good practice&quot;.
======
olkyt
"Build Your Own Lisp: Learn C and build your own programming language in 1000
lines of code!"
[http://www.buildyourownlisp.com/](http://www.buildyourownlisp.com/) not app,
but fun

~~~
compilr
It is a very bad book for learning C. Please see here
[http://www.iso-9899.info/wiki/Main_Page](http://www.iso-9899.info/wiki/Main_Page)

------
dave84
I honestly don't think the book you're looking for exists, "Learn C The Hard
Way" is probably the closest but it's very opinionated and has its critics.
The others, as most C books seem to be are concerned largely with the minutia
of the language.

~~~
edwinnathaniel
> "Learn C The Hard Way" is probably the closest but it's very opinionated and
> has its critics.

I have similar feeling too. When I looked around, I had this feeling that
majority of experienced C developers may not have experienced higher level
language or work in app-level and went back to C to adjust their previous
experience.

Either the developers decided to abandon C in favour of high-level languages
or the developers didn't like what they tasted the high-level languages enough
to learn the better practice to bring it back to C. The latter group tend to
go back to where they came from and stick with C.

This could be the reason why "Learn C the Hard Way" and another commenter up
there posted a link as to why "Build Your Own Lisp" considered harmful/bad. On
the other hand, these two materials could fit for what I'm looking for.

I glanced over "Modern C" and while I can pick up a few things better than my
previous learning C experience, my experience match to your statement that
most of the books are covering minutia details of the language :(.

Thank you for clarifying and confirming what I felt so far.

