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.
Well, yes, in theory. In practice, it isn't always that easy as this seems however.
I am working on a cross-platform project myself (with targets being Windows (XP/7/8), Linux and Mac OS X) and can tell from experience that there is no such thing as easy cross-platform development. Having the advantage of wxWidgets (fka wxWindows) can level a lot of the GUI part, but then you might run into a lot of more low-level issues like string encoding (the lovely Unicode/UTF/blablabla fun stuff) and basic file/folder conventions. That's where the real fun (or not) begins...
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.
Well, start using them and then re-assess that statement...
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.
Well, that comes down to what I referred to in different threads in this (and other) forum(s) before. IMHO, People need to learn programming basics before the start dabbling in any specific language.
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.
Neither nor. Start learning by programming Pascal. Real programmers DO program in Pascal... <BFEG>
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..
emacs? I hope you washed your eyes and hands properly after that...
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.
And that's just the beginning. But again, if you are familiar with the basics, building on that can easy all those little steps...
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?
Well, that's what some people are trying to tell you. In reallity, this simply is not the case as I mentioned before. There are a lot of low-level tripwires that you will stumble upon, and that can be an issue regardless which programming language you are using...
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!
If you are serious about cross-platform and using C, anything that is using wxWidgets is probably your best bet. It levels a lot of of teh GUI stuff, but as mentioned, it also still leaves a lot of low-level stuff to consider to "get it right"...
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.
It really depends on what your goals are and how comfortable you are/how easy it is for you to learn. The overall task that you seem to have in mind is not a small one, so you can't expect wonders...
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)?
IMHO, get somewhat proficient in C first, independent from any OS. It doesn't help you programming in any GUI stuff, be it Windows, Linux or any other OS, if you do not know your way around the basics of the language, like pointers, pointers to arrays/strings, string handling, etc,....
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.
Doesn't really matter IMHO. The basics of C are still the same. K&R is a bit dated as it precedes ANSI C (as in C89/C90) and can lead to some bad habits that pretty much all newer (post K&R) compilers by default might not take that lightly...
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.
As mentioned, K&R is a bit dated. Programming for Windows on the other hand is not directly related to programming in C, though it uses it a lot for it's examples IIRC....
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).
Well, any language, if correctly coded can be powerful and stable. I personally still use Pascal (in one form or another) for all my own everyday programming tasks...
He 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'.
Well, not by a longshot. And please, don't program with a lisp...
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?
I had once a look at it, but did not see any reason to get involved with it. When I was looking for a specific project a few years back for a freely available C compiler, that's when I stumbled upon Pelle's C and think for plain C programming in Windows, it's simply the best choice...
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 ?
C++ directly has nothing to do with GUI program. It was just a development by Stroustrup to bring object oriented program to a more or less vaguely C like programming language. Some things like basic stream input/output are completely different (and I personally despise that <</>> syntax).
What made C++ (beside at that time "en vogue") appealing to GUI programmers is that it by design supports threads, which in a multi-tasking/threading environment like most GUIs is a main feature to deal with. This is where plain C needs to use some crutches IMHO to achieve the same functionality. But that doesn't make it impossible either....
Ok, thank you. Is there any advantage to knowing 'C' prior to learning C++? I read opposing views on this.
Yes and no. As mentioned somethings are completely different, specially if you
properly use OOP techniques in your programming. IMHO this is also the point where a lot of people completely fail in their attempts to do simply "over do it" with a completely impenetrable maze of classes/methods/etc...
> 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!
But oh so true. A lot of people, specially in Open Source projects, make the mistake to just sit down and hack along. It really shows and makes it a lot of time unnecessary hard for outside people to follow what was done for what reason. And just don't get me started on that stupid "the documentation is in the code" mentality....
Ralf