programming jobs

Pages: 123
Qt gives the native looks. Qt is going to be the future for cross platform GUI applications.

see here which applications are built using Qt:
http://qt.nokia.com/qt-in-use


There are applications like google earth, picasa, vlc etc which use Qt.

But for beginners, its better to first get a good hand in C++ otherwise you will be lost. Using Qt is not that easy for beginners.

** Quite surprised to see that we have such experienced people like
kfmfe04
in our forum.
So.. qt OS harder to learn than c++? Is it its own programming language?
@stevenpalomino: Qt is not an OS. It is a C++ library.

C++ is a standard that has been clearly defined so if you write a standard C++ program it should compile and run on any OS. Unfortunately, with standard C++, you could only do so much. You cannot build a GUI with standard C++. However, some people have decided to write C++ libraries on various OSes that essentially hide the underlying OS from the developer. So Qt essentially says, if you use my objects and call my methods, you will be able to run your program on OS1 and OS2 and OS3, as long as you compile and link to Qt on those machines (but without changing any of your code). As for the difficulty, it's hard to say - usually, I'm too busy learning things to think about how hard or easy something is. If it's so hard that I get stuck too often, then I look for alternatives. This applies to both programming languages and libraries. YMMV so you should check it out yourself.

@writetonsharma: there are many smarter people with more experience than I responding on this forum. For example, Galik immediately comes to mind.
Last edited on
so.. C++ is not OS specific then? C++ programs will run on mac and windows? I know windows runs exe's and mac runs dmg's. What is the difference when you write a program for mac and windows code-wise? Is there a difference with how you write the code? Or does it depend on the GUI that's compatible with windows or mac? I'm just wondering because I have to use both OSs and I want to be able to write simple programs for mac and windows without having to change a whole lot with the code. But from what I understand if I use C++ and Qt I won't have to change anything?
Standard C++ is not OS specific.

If you start writing C++ code that links with OS-specific GUI libraries, it is no longer portable.

However, if those calls are hidden behind a common interface like the Qt libraries, then your code is portable again. So using Qt is a good idea in your case.
You say standard c++ .. but is non standard c++ common? Is coding in c++ always a good thing to do or are there times to use it?
Most popular compilers will implement standard C++ and then add their own features, often for the purpose of dealing with OS-specifics. However, most of what's there is standard.

What is more common are non-standard C++ libraries. Examples of Standard C++ libraries include iostream and STL. Non-standard libraries are mostly third party libraries. But Qt is a special kind of non-standard library which happens to be cross-platform (which is nice). Boost is a popular cross-platform free library.

In general, if you want your code to be portable, you want to use as many standard libraries and cross-platform libraries as you can.

So why would anyone want to use non cross-platform libraries? First of all, it can take a lot of work to keep libraries cross-platform. Libraries may also remain native for the purpose of optimization to specific hardware (eg NVidia's GLUT). For a long time, many developers didn't care about anything non-MS so those developers would just use MS libraries. However, as hardware speed ever-increases and as MS loses its foothold slowly over time, advantages for cross-platform libraries seem to outweigh their disadvantages.

As a side-note, one of the advantages of Java over C++ has been the former's extensive and useful standard library (including GUI libs and a ton of other functionality). IMHO, this difference is one of the main reasons for the massive flocking of developers to Java over the last decade. Unfortunately, we haven't seen an equivalent standard for C++ on *nix systems. There are enough disparate open source libs on *nix systems, but you have to take the time to look for them, chose one, and deal with different APIs.

In contrast, C++ on Windows benefits from the standard libraries as supplied by .Net. Since .Net benefited from Java as a predecessor, its API is just as easy to use and just as extensive. Of course, the disadvantage is, you are essentially tied to MS if you choose to use the .Net libs.

One other note: with the fall of Sun under Oracle, enthusiasm for Java has waned somewhat. But the Java libraries are so useful that an entire slew of old and new languages for the JVM (Java Virtual Machine) have been developed. You can find a list of them here:

http://en.wikipedia.org/wiki/List_of_JVM_languages

These days, I personally spend 95% of my time developing on C++ (sever-side) and Scala (client-side) which is a relatively recent JVM language. The other 5%, I will use Ruby, php, UNIX command-line or whatever else is needed to get the job done efficiently and effectively.
Last edited on

What I meant was directly jumping to a GUI C++ library without having good experience in C++ will not come easily. Knowing C++ well with strong basics, Qt or any GUI library comes naturally. Otherwise how things are happening will be a just a mystery.

@kfmfe04: :O I thought you must be the most experienced person here on the forum.. who can beat 25 years of experience here... people more than your experience... this is amazing...
@stevenpalomino: What writeonsharma says is true. If you have a lot of time and are persistent, you can learn to do C++ and GUI C++ programming at the same time. If you don't, but still want to learn how to program Java is a good first choice - you can always pick up C++ later as long as you break Java habits. Like many developers, I have a love-hate relationship with C++. OTOH, Java is very nice 99% of the time until that 1% that you have a hard time trying to make the hardware do something specific, but that's rather rare.

@writetonsharma: you are too kind, but I assure you - there are plenty of more experienced developers on this site :^P I was just lucky enough to have worked with people smarter/more experienced than I.


@kfmfe04: I take your point. :)
Is c++ GUI programming like html where you just reference the icons where you want them? Or so you have to go through some other way?
No, it's much harder than that. The closest thing are HTML forms (POST/GET), but that's even easier than C++ GUI programming.

For most C++ GUI libraries, you must understand at least the following:
1. Event Loops/dispatch
2. Form Widgets (for placement of GUI objects)
3. Container hierarchies which is a hierarchy separate from the inheritance hierarchy
4. Basic OOP
5. Basic pointers
And every C++ GUI library implements things differently.

In HTML, most of the lines don't affect each other, whereas when you code in C++, there are actually a lot of dependencies between your widgets.

So writetonsharma is right - you actually need to get C++ down, at least to the late beginner to intermediate level before doing some decent GUI programming.

But I don't want to discourage you - if you can look at Qt code and understand what it's doing, then more power to you. However, if you find yourself progressing very slowly, then it's time to get the basics down.
Ahh well that makes plenty sense! Getting back to the original topic.. how available are programming jobs? From what I hear they're harder to get because of outsourcing? Or are they still on high demand?
anyone?
that's a weird question to ask - one person will say it's easy to get a job while another can't do it at all

if what you care about is if you can get a programming job, then that would be a function of
1 job market
2 how good your skills are (technical + communication + teamwork)
3 what kind of pay you demand

in general, unless you've learned something extremely esoteric, have no skills, or demand crazy amounts of pay, there are jobs out there

and there will be for a while - why? there are some very smart programmers out there, but there are also lots of crappy programmers, and for every crappy programmer writing code, it probably takes two or three more programmers to maintain that code

but all this doesn't matter - you can control 2, but you cannot really control 1 and 3

so imho, you are asking the wrong question - instead, you should be asking yourself, am I passionate enough about programming that my skills will stand out amongst others?
excuse me for interrupting but kfmfe04 the fact that you only capitalize the N in .NET is annoying the crap out of me :o its .NET!!!!!!!
@ascii

hahaha - ty for correcting me - I haven't touched a Windows machine for 4 years - I'll be more careful!
just to clarify. Is the GUI built within the C++ IDE? Or through another way?
just to clarify. Is the GUI built within the C++ IDE? Or through another way?

That depends on the IDE. You can write the whole thing yourself, or you can have some tool that builds the whole thing for you, or something in-between. I don't use an IDE myself, and I've coded up many a GUI. Others like to use a wizard that bangs the whole thing together. It's personal preference and what's most appropriate for the task at hand.
ahh okay.

Also, just to get an idea. How hard would it be to write an application that shares files. Not in the p2p sense. But let's say I'm working on a design project and I want to be able to make an application where I use my website server to upload the files so that my partner in South America can access them and we can collaborate on it. It'd be more than just sending a file, but almost like a project manager. Does that sound difficult? Would that be "makeable" in C++? Or would that have to be done in Java?
Pages: 123