Hi CommonTater,
Thank you very much for the detailed reply. I truly enjoyed reading and learning from your post. I did read your suggested thread titled, "How to learn C....so it sticks". The thread was extremely educational. It is very difficult to find such honest and flat-out 'plain vanilla' advice in regards to taking that first step.
I posted this same question on the Code::Blocks forum to be sure I'm receiving the opinions of both sides.
Perhaps I need to further explain what my programming intentions are.
I have experience in HTML and CSS web page coding albeit at a very basic level. Although this is not related to 'C' programming, it's just something I have some experience with. That's all.
Please see my most recent web page that I created.
(yes,I am a musician as well)
http://education.heliohost.org/elizabethreed/index.html I am currently running four operating systems GNU/Linux (Debian), Win7, WinXP, and win2k. I'm primarily on the win7 and win2k system all day. I dual boot Win2k and Debian on the same system.
I enjoy working in windows and have for many years. My goal is to 'eventually' to be able to program in both GNU/Linux and Windows using a cross-platform IDE although using separate IDE's or compilers for both OS's is always an option. That is why I originally considered Code::Blocks which to my understanding is cross platform.
I am just learning the interface 'GNOME' on Debian and slowly learning how to maneuver around in this new environment. The programming tools for Linux are amazing from what I've read.
My search for a compiler and IDE started with this well detailed wiki page: Specifically the comparison section titled, "C/C++".
http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environmentsI have briefly used Code::Blocks and found it very helpful but would like to consider something more 'plain vanilla'. I also tend to work better in a smaller environment with a core group of people.
A hurdle with some of the bigger IDE's (for a new programmer) is that they are too good! They include most everything. I get lost wondering why I'm at a specific location accomplishing a specific task. In other words, I would like to understand the function and structure of the tool prior to programming code.
I understand that to learn some aspects of structure coding is required. However, beginning the process by following a hello-world tutorial is certainly a wonderful beginning but I would also like to learn the the tool itself (what files need to be created for a project, what the files are used for and why they are needed, what is a Bitmap, a string table, a table editor and libraries etc. etc.). I have searched google and found answers to some of my questions.
I do watch programming videos, read, study and pick up bits and pieces to help answer some of my questions.
QUESTION #1 please:Would you recommend learning Visual Basic first prior to learning the 'C' programming language? Or do you recommend starting with the 'C' programming language immediately? I'm certainly not a complete newbie to programming but I have run across this topic from time to time.
I have also been studying Linux for the past couple of months and have finally installed my first Linux OS (distro). I am very happy to have succeeded at this. During my studies I have become fairly familiar with GNU, GCC, emacs, MinGW, wsWidgets, GTK+, etc.. However as one dreams to program on a cross-platform basis, and utilize the tools that work in both environments (Linux and windows), the setup time, configuration, familiarity of the interfaces as well as the learning curve can be quite an uphill climb.
QUESTION #2 please:At this point, I simply prefer to 'back-up a bit' and start learning how to program in windows. That is the level I am most fluent.
and familiar with. After all, I've been using windows since 1993. It's just where I'm at now. Also the language of 'C' doesn't change if applied to Linux or Windows. 'C' is 'C' no matter where deployed? Is this correct?
Then there's the question of "what programming architecture". Is it Win32, .NET, wxWidgets, GTK+ on and on. It becomes daunting to someone just entering the programming field. And then there's Linux! I have briefly worked with MS Visual Basic Express 2005 and have found it to be a very helpful IDE but I wanted to learn just plain 'C'.
QUESTION #3 please:Eventually as I become familiar with Linux and coding in both Windows and Linux, I can simultaneously work with a cross-platform IDE and learn to install GNU tools and begin to experiment. Or as I mentioned earlier, utilize separate IDE's or compilers and text editors that are geared for a specific OS and design architecture. Correct?
Many people on the Linux side are just as helpful as you have been on this thread. Complete professionals with a knack for quality advice and support.
> Code Blocks is bloatware that comes with the MIN-GW flavour of C++ and is missing a lot of
> helpful tools for Windows programming, such as resource editors, message table editor, etc.I did read on particular forum this:
**Begin**The big advantage of PellesC over Code::Blocks is the IDE features. If you go with Code::Blocks and MinGW you will need to find your own Resource, Dialog, Icon, Bitmap, String Table and Message Table editors, all of which are included in PellesC from the git-go. (And good luck finding a free standing Message Table editor!)**End****Note**
I also read that if a programmer embeds tools such as ResEd into Code::Blocks that it can make Code::Blocks a very powerful IDE.
QUESTION #4 please:Any opinion please on the above statements? Does it affect me at my level of experience (as in just starting to learn 'C' programming)?
> I generally recommend starting off with "Teach Yourself C Programming in 21 days" for a good > general base, then you should follow up with Kernahan and Richie's "The C Programming
> language" for a more indepth understanding.
Yes I do already own, "Teach Yourself C Programming in 21 days" but it is the 1995 'premier edition'. Not the current 6th edition. Not sure if this is a huge difference but it is a bit hard to follow but a very thick book full of info. Just not sure if it is C-99. I don't believe so as it is dated 1995.
I have also heard about, Kernahan and Richie's "The C Programming language" as well as Petzold's book on programming in windows. Thank you.
I've read much about which language is the best to start with and I was convinced (actually educated) by some articles and links that suggested 'C' is the place to start. , I have also known for years that languages written closer to machine language such as 'C' language (besides Assembly Language) can be more powerful and stable (if correctly coded).
http://crasseux.com/books/ctutorial/Introduction.html#Introductionhttp://crasseux.com/books/ctutorial/Advantages-of-C.html#Advantages%20of%20Chttp://www.gnu.org/prep/standards/html_node/Source-Language.html#Source-LanguageHe also promotes 'Lisp' as a language to consider as well but I don't want to get over indulged in choices. It becomes too overwhelming. To my understanding every other language -at some point- branches off 'C'.
Alex Allain's article on
www.cprogramming.com was also inspiring.
http://www.cprogramming.com/whyc.html> Also be aware that MIN-GW, while a perfectly sound implementation of C is primarily intended > for C++ and is thus not entirely standard C. You want to learn C-99 and C-11 the two
> currently active standards (Both supported by Pelles C)... you can learn about the variants
> later.QUESTION #5 please:I'm glad you brought that to my attention. I did not know about certain standards such as you mentioned. I did read this article below but not sure of the date. I assume 1999 Standard C is abbreviated C-99 and 2011 Standard C is abbreviated C-11 ? Yes, that is what I need to hear...."you can learn about the variants later."
QUESTION #6 please:As mentioned earlier, I already own, "Teach Yourself C Programming in 21 days" but it's the 1995 'premier edition'. Not the current 6th edition. Not sure if it is C-99. Is this version still usable?
Articles I found very helpful:
http://www.gnu.org/prep/standards/html_node/Source-Language.html#Source-Languagehttp://www.linfo.org/create_c1.htmlI have also looked and Lcc-Win32
http://www.cs.virginia.edu/~lcc-win32/QUESTION #7 please:My understanding is the compiler in Pelles C is based on Lcc albeit in a much upgraded capacity. Is Lcc-win32 still a popular program used by programmers?
> Pelles C is an excellent C compiler. Currently there are some problems with the optimizer so,
> while learning, you should build your projects with Optimizations set to NONE in Project ->
> Project Options. I've used it for commercial as well as private software for a long time and, like
> the IDE, I've repeatedly looked for better without finding it.Ok, I will be aware of that. Thank you
> For CProgramming.com forums... one word: "Politics"... Programmers are pretty direct --often > blunt-- people. They criticise one and other very directly, mistakes are pointed out in flat
> terms, bad ideas are tagged as such.Fully aware. Thank you
> But, on CProg there is a core group who basically make sure everyone either does it their way > or gets picked on mercilessly... including some who carry outright prejudices about things like > Windows API and C. To me this is not an atmosphere condusive to learning. Yes I understand. I try to ignore it, learn what I can and move on.
> It's a fiefdom. Now there's a new word! Fiefdom - Something over which one dominant person or group exercises control.
> You need helpers who will be honest and direct with you about the best ways to do things
> and correcting your mistakes... and you should be grateful for the criticism. Yes, I understand. In my experience, I find there exists those who are true professionals who help build-up your self-esteem and your character to think a problem through and conquer it. They are the best support that one can experience.
> About C++, well, what can I say? It's a different language. While the underpinnings are C the > language and it's programming paradigm are totally different. QUSTION #8 please:The reason for C++ (I thought), was to create GUI programs. Apparently GUI programs can be constructed using 'C' but at a more difficult level ?
> I'd suggest you spend a year or two with C, get good at it, absorb as much programming
> concept as you can... then move to C++ with an open mind. Comparing the two is a mistake.
> You'll be learning all over again.
Question #9 please:Ok, thank you. Is there any advantage to knowing 'C' prior to learning C++? I read opposing views on this.
> Throughout this keep in mind that Programming is about 70% research and planning, 10%
> writing code and 20% fixing your own mistakes.
Now that's an eye-opener!
Thank you very much