I have a confused question.I have already the foundation of C++. I'm beginning to programm with MFC.However,I know MFC has not updated for a long time.Many people say if one thing doesn't update ,it will die.I want to ask whether it has necessary to learn MFC.And can you give me a clear way to learn programming? Thank you.
And I want to know why microsoft spend a lot of spirits on .net?(I think the visual studio is primary for .net framework.The .net framework is used mostly in network.Are the opinions right?)
How do I learn Unix/linux?can you give me some advises.(the learing process:
what can I learn first,then second....)
Personally, I'm no familiar with MFC.
I know that it's for databasing, but I think making your own C++ database system would be easier.
Look at the tutorials on this website, they help a lot.
http://www.cplusplus.com/doc/tutorial/
Even if you have a basic foundation of C++, it's good to go over those.
I know how it feels.. it's super boring because you know half the stuff, but it shouldn't take too long.
It only took me about a week when I first started programming in C++.
To your second question, I don't use windows for programming, so I have no idea..
What do you mean how to learn Linux? You mean learn how to use Linux?
Ubuntu is a very easy to use distribution of Linux, I recommend it.
Here is their website.
http://www.ubuntu.com/
If you have any questions about Ubuntu, go to...
http://www.ubuntuforums.org/
I'm programming with MFC a lot lately. I use it instead of .NET because my program is a lot faster and does not require the .NET framework to be installed to be able to run. To be honest, I don't care if it dies some day, I'll just learn the (possibly) new API or something, or switch to POSIX support and port it to Windows, which won't be as fast ofcourse but I'll blame Microsoft for it ;).
Anyway, speaking of POSIX, that'll be probably where you're looking for if you want to program for Linux/Unix, it may also work on other Operating systems like OS X. But I'm not sure if that's what you're looking for, just like edward probably thinks, the question is not really clear. If you want to start learn working with Linux/Unix you should, in my opinion, start with a simple Linux distro, like Ubuntu. Adward already gave you some instructions for that.
Linux is Unix based, they are pretty well the same thing.
GNOME and KDE are desktop environments, nothing to do with programming in C++, just for preference
I have thought the framework is a package of libraries, when you programming with CLI, you need to know the command line interfaces to Linux; while if you programming with GUI, you need to know the libraries about X window or GNOME or KDE, correct?
So, is POSIX for CLI or GUI? if some one could provide some systematic info about this, that will be really helpful. Thanks.
EDIT: @northfly
No... you're not correct, except about programming with the CLI.
For programming in C++ on GNU/Linux using a GUI, try
GTK+
or
QT4
These let you interface with the window system underlying GNOME's and KDE' window managers (it's the same system). This is probably what you need.
As to which one, that's a matter of personal preference. For GNOME, it might be better to use GTK+, though, and for KDE it might be better to use QT4.
POSIX is a set of standards for all Unix-like systems. GNU/Linux is Unix-like, and most distributions are mostly POSIX compliant. POSIX has nothing to do with the GUI and not much more to do with the CLI. It has to deal with the underlying operating system itself.
.NET is a software framework made by Microsoft for Windows developers.
And I would recommend Ubuntu for when you're starting to learn your way around a GNU/Linux system. Install it, and from there, just explore all the directories, get to know the shell, etc. Mess with it, though never mess with it as root (you'll find out what that means when you start messing around with Ubuntu).
Thanks,
Then, what is the main obstacle prohibiting one program running on another OS? Libraries?
I see some scientific software using Java to create any GUI related parts and use C++ to create the underlying computing parts. why do like this? because GUI related part have to comunicate with OS frequently and the underlying part don't have to? Can this method make us free from the study of QT or GTK or .Net?
So is that like this?: No matter whtat, QT GTK .Net SWT, I have to learn one of them, and any of them acclaimed they are able to cross platform.
But QT and SWT have the eclipse integrated with, does that mean they are better?
I'd like to see an example of this software that uses Java to create the GUI and C++ to create the underlying system. They'd probably use Java so that it's portable and scalable (GUI features tend to use a lot of system-specific features), and then use C++ for the underlying system because it's faster. Way faster. (I wonder how they got the two to communicate? Via GCJ and G++ and then link the object files?)
.NET cannot work as a cross-platform utility, as far as I know. It's limited to Windows. GTK+ and Qt can work across any GNU/Linux system with the proper packages, and it has been heard of for them to be used on OS X and Windows (Skype uses Qt). SWT is the only one that's 100% cross platform, as it uses Java.
Eclipse is an IDE... unless you meant their billions of side projects? No, it doesn't guarantee they're better...
I personally cannot decide which I like more.
Alternatives exist to Qt, GTK+, and SWT, though. Like SFML.
Actually, Java also need your machine to install a Java virtual machine to run java program.
so if QT is installed on your machine, you can also code both GUI and underlying computing in c++, and that program could be easily cross-platform and faster and free from the trouble linking java and c++, right?
It is said Java don't need to be compiled, then what java programmer deliver to user? the source code directly? or the object file?
we know compiler do two things:
1, create object file
2, link object file to executables
which step is machine specific or operating system specific? Thanks.
Java is compiled, it just compiled into Java byte-code, which the JVM will interpret and run the corresponding machine code based on whatever platform you are running it on.
It makes it slower than C++, but it has the advantage of being able to run from places like a web applet.
The beauty of using java to build GUI is they can provide some kind of javascript tool for user to record/execute some commands, right?
C++ cannot do this, right?
I think it's a bad idea to link C++ and Java. For me that would take more effort to care about this two language being compatible. BTW .Net is not cross platform.
You can do virtually anything in C++, though it might take a lot of pain and sweat to implement some things that other languages (like LISP or Assembly, those are the ones I'm thinking of) have implemented better (self-modification), IMO.
Hello, magnificence7
I want to learn to program for linux/unix,can you give me some advises,for example classic books ,which operating system is used better(freebsd,solaris,federal linux.etc),and which aspects uses mostly in job.Can you give me clear direction for working or learning.
thank you.