More Useful, Modern, and Job-worthy C programming: Becoming a Better C Programmer
ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
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.
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.
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.
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.
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.
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
Location: Geneva - Switzerland ( Bordeaux - France / Montreal - QC - Canada)
Distribution: Slackware 14.2 - 32/64bit
Posts: 609
Rep:
Quote:
Originally Posted by deadstar32
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.)
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.