LinuxQuestions.org
Share your knowledge at the LQ Wiki.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 02-17-2017, 08:15 PM   #1
deadstar32
LQ Newbie
 
Registered: Feb 2016
Posts: 26

Rep: Reputation: Disabled
Post More Useful, Modern, and Job-worthy C programming: Becoming a Better C Programmer


I have finished hours of C tutorials online from reputable sources, have spoken with a few C experts at a local university, and have read the amazing "The C Programming Language (Ansi C)" by Brian Kernighan and Dennis Ritchie and have learned quite a lot on my journey, and love the beauty and simplicity of C, but I feel empty, both in mastery, and in terms of marketability towards potential employers.

The types of things I know how to do (Or at least believe I can do) and understand include:

0. Install and configure most IDEs and compiler software.
1. Use the core functions and libraries of C.
2. Make useful programs for computing things that would be pretty tedious by hand, such as a loan calculator (No Gui).
3. Understand how to read and modify small-mid size programs written by others.
4. Have read about and (sometimes) used computer science concepts such as: recursion, programming paradigms (Like Object oriented programming), sorting and search algorithms, and Big-O notation.
5. Have a basic understanding of memory, pointers, free, malloc, etc...

What I want to learn is how to write programs in C that are modern, more useful, and could potentially land me a job or at least get me in on some type of open=source/free project.

All the programs I write are only useful to me. I want to write programs useful for everybody (even non-programmers)!

How do I write C programs for modern Linux, Windows, and Mac Operating systems that can use a GUI and can be used by non-programmers? (It need not be cross-platform)

How do I write C programs that will run on hardware (I believe this is embedded systems programming, but I am not sure.)

How do I write C programs that can interact with the web?

What other things can I learn in C that will propel my skills as a programmer and as a job-seeker?

Every time I see these questions on the web I hear answers like learn this language: (ex. python, Java, C++, C#, etc...) stop using C it is old and dead. (I do not actually believe this as I see C programmers are still getting hired !).

If every time I wanted to write a program that did a certain thing I had to learn a new language I would be ancient by the time I got anything done! Don't get me wrong, new languages are cool, but I want to use C to the fullest. I want to specialize in something for once. Thank you!

Last edited by deadstar32; 02-17-2017 at 08:17 PM.
 
Old 02-17-2017, 08:30 PM   #2
dugan
LQ Guru
 
Registered: Nov 2003
Location: Canada
Distribution: distro hopper
Posts: 11,223

Rep: Reputation: 5320Reputation: 5320Reputation: 5320Reputation: 5320Reputation: 5320Reputation: 5320Reputation: 5320Reputation: 5320Reputation: 5320Reputation: 5320Reputation: 5320
GTK
 
Old 02-17-2017, 08:31 PM   #3
killingthemonkey
Member
 
Registered: Mar 2011
Location: Winston-Salem, NC
Distribution: Fedora, CentOS, Linux Mint
Posts: 259

Rep: Reputation: 24
deadstar,
I can't say I've reached the point you are at, but I've run across this book and will be getting it when I finish K&R. Looks like it may answer some of your questions:
21st Century C

As for GUI work, I know that one of the libraries, or frameworks is Qt. Like I said, however, I'm nowhere near that point.
 
Old 02-18-2017, 12:07 PM   #4
Beryllos
Member
 
Registered: Apr 2013
Location: Massachusetts
Distribution: Debian
Posts: 529

Rep: Reputation: 319Reputation: 319Reputation: 319Reputation: 319
I write in C for fast scientific computing, but I need a GUI. I learned how to do it with Python C extensions for the C end of it, and Tkinter for the GUI end of it. It works very well for me. I mean awesomely. I am not a professional programmer and I was able to figure out how to write such programs in my spare time with information that is available online.

Here is a good overview of Python C extensions:
Ned Batchelder: A Whirlwind Excursion through Python C Extensions
It's a bit out of date with regard to Python 3 but otherwise a fine introduction to the topic.

As mentioned in this overview, there are also lots of third-party products for combining C and Python, some of which I considered, but I settled on C extensions because it is simpler, by which I mean fewer packages to install (and to learn), fewer dependencies, and it eliminates the possibility of bugs introduced by the third-party software.

Last edited by Beryllos; 02-18-2017 at 12:35 PM.
 
Old 02-18-2017, 01:08 PM   #5
sundialsvcs
LQ Guru
 
Registered: Feb 2004
Location: SE Tennessee, USA
Distribution: Gentoo, LFS
Posts: 10,659
Blog Entries: 4

Rep: Reputation: 3940Reputation: 3940Reputation: 3940Reputation: 3940Reputation: 3940Reputation: 3940Reputation: 3940Reputation: 3940Reputation: 3940Reputation: 3940Reputation: 3940
Why not find an open-source project and become involved with it? First of all, you can see the source-code. You can see how the tricks are done.

"Learning how to program" is just like "learning to swim." You have to get into the swimming pool and stay there – staying out of the deep end. You can't read a book to learn this stuff.

And, you can't learn it "instantly." Over five million lines of original source-code have poured from these fingertips over the last thirty-plus years, in over twenty languages now (some of which I'd never encountered before I was expected to be ... and swiftly was ... productive in them). I read these same books and recommend them still ... but there is absolutely no substitute for experience. Therefore, you must create opportunities to gain it.

Last edited by sundialsvcs; 02-18-2017 at 01:12 PM.
 
Old 02-18-2017, 06:43 PM   #6
Mill J
Senior Member
 
Registered: Feb 2017
Location: @127.0.0.1
Distribution: Mint, Void, MX, Haiku, PMOS, Plasma Mobile, and many others
Posts: 1,258
Blog Entries: 2

Rep: Reputation: 542Reputation: 542Reputation: 542Reputation: 542Reputation: 542Reputation: 542
I like wxwidgets http://www.wxwidgets.org for gui. Remember the C programming language is still the base. Switching to c++ or java is fairly easy. So all your C skills are still worth a lot
 
Old 02-21-2017, 08:23 AM   #7
NoStressHQ
Member
 
Registered: Apr 2010
Location: Geneva - Switzerland ( Bordeaux - France / Montreal - QC - Canada)
Distribution: Slackware 14.2 - 32/64bit
Posts: 609

Rep: Reputation: 221Reputation: 221Reputation: 221
Quote:
Originally Posted by deadstar32 View Post
I have finished hours of C tutorials online from reputable sources, have spoken with a few C experts at a local university, and have read the amazing "The C Programming Language (Ansi C)" by Brian Kernighan and Dennis Ritchie and have learned quite a lot on my journey, and love the beauty and simplicity of C, but I feel empty, both in mastery, and in terms of marketability towards potential employers.

The types of things I know how to do (Or at least believe I can do) and understand include:

0. Install and configure most IDEs and compiler software.
1. Use the core functions and libraries of C.
2. Make useful programs for computing things that would be pretty tedious by hand, such as a loan calculator (No Gui).
3. Understand how to read and modify small-mid size programs written by others.
4. Have read about and (sometimes) used computer science concepts such as: recursion, programming paradigms (Like Object oriented programming), sorting and search algorithms, and Big-O notation.
5. Have a basic understanding of memory, pointers, free, malloc, etc...

What I want to learn is how to write programs in C that are modern, more useful, and could potentially land me a job or at least get me in on some type of open=source/free project.

All the programs I write are only useful to me. I want to write programs useful for everybody (even non-programmers)!

How do I write C programs for modern Linux, Windows, and Mac Operating systems that can use a GUI and can be used by non-programmers? (It need not be cross-platform)

How do I write C programs that will run on hardware (I believe this is embedded systems programming, but I am not sure.)

How do I write C programs that can interact with the web?

What other things can I learn in C that will propel my skills as a programmer and as a job-seeker?

Every time I see these questions on the web I hear answers like learn this language: (ex. python, Java, C++, C#, etc...) stop using C it is old and dead. (I do not actually believe this as I see C programmers are still getting hired !).

If every time I wanted to write a program that did a certain thing I had to learn a new language I would be ancient by the time I got anything done! Don't get me wrong, new languages are cool, but I want to use C to the fullest. I want to specialize in something for once. Thank you!
That's great, I might have things to propose for you but the main subject is YOU: what would you like to learn ? Which topics are interesting you ? So you like people using your software (we all appreciate that ), but do you have some domains which could "drag" you ? (Computer Graphics, admin/system tools, productivity tools, compiler, mathematics, video games, network, gui, etc.)
 
  


Reply

Tags
programming language



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
programming with modern IDEs Asido Programming 8 04-28-2010 08:18 PM
Finally, got a job as a game programmer :D Mega Man X General 30 09-30-2007 04:49 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 03:58 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration