delphi programming forums mysql charset mget recursive synonimos
free ventrilo servers hosting cs javascript delay python find in list
Back Forum New
abstract:

What languages are absolutetly essential for a windows programmer to know?
Thanks, Mark


We are in the process of hiring some high level programmers to start in on some software development, making windows based applications. What languages are absolutetly essential for a windows programmer to know?
Thanks, Mark

TOP

By Windows programmer, do you mean specifically for GUI development on the Windows operating systems?
You can do Windows GUI programming in a lot of languages, e.g.:
- C++ with MFC
- C++ with an alternative framework such as wxWindows
- Visual Basic
- C# and .NET
- Java
- Delphi
- Python
Each language has its strengths and weaknesses, so I would first decide which language would be best for your particular applications, then hire programmers that have those skills.
Alternatively look for programmers that have experience in several of the above (plus perhaps others that I have not included), since they will be more flexible and have more options to draw on.
There is a bigger question hidden in your post, i.e.  "what makes a good programmer?", since the qualities that make a good programmer is independent of what platform he is working on.
Here are some of the qualities I would look for:
- experience of a wide range of languages and technologies, for the reason I gave above, and the ability to learn new things quickly
- good problem solving skills and creativity
- good communication skills
- ability to work closely with others as part of a team
- willingness to learn new skills, including people skills and new ways of working
- knowledge of software architecture, design patterns, and development processes
In the long term I think these are more important than knowledge of a particular language or operating system, although those are important too in the short term.  Knowledge can be easily acquired, while attitude and skill are much harder to develop.
Dave - The Developers' Coach

TOP

Dave,
Thanks a bunch for your comments.
So some follow up questions if you don't mind:
We have a good undestanding of what we want our application to do. With that in mind, what's a good way to evaluate the strength's and weaknesses of coding languages?

TOP

Firstly, what are the requirements of your application?
- How complex is the application?  Some languages are fine for simple applications but become unwieldy for larger applications.
- how fast does it need to run?  Most GUI applications do not need to be particularly fast, since most of the time is spent waiting for the user to do something.  However if you need to do a lot of processing, then speed may be significant.
- does it need to be cross platform, or only run on Windows?  If it is Windows only then which versions do you need to support - XP, NT, 95/98, Windows 3.1?
- how quickly does it need to be developed?  Some languages are far more productive than others.
- are there third-party libraries or components that you need to use?  You can buy components to do all sorts of things - graphing, mapping etc.  If so you need to make sure you are using a language that is compatible with the components you need.
- what is your tools budget?  Some languages and tools cost hundreds of dollars per developer, others are free.  Expensive does not always mean better though.
Here is a quick overview of the strengths and weaknesses of different languages.  This is all my personal opinion of course, and other may (and probably will) disagree.
- C++
This used to be the standard language for Windows programming, using the MFC framework.  C++ is a big complex language and it can take years for developers to become proficient in it.  It is compiled down to machine code so if efficency is a big concern then it is the first choice.  The MFC framework is rather dated and is not cross platform but is still widely used.  There are also cross-platform frameworks available such as wxWindows.  C++ development is generally slow compared to most of the other languages here.  Although still widely used, C++ is gradually being replaced by more modern languages.
- Visual Basic
This is a Windows-only language that allows simple GUI programs to be thrown together quickly, but in my opinion becomes unwieldy for larger projects.
- Java
Java is very popular, especially as a server language.  It is not as fast as C++ and can be a big memory hog, and GUI applications using it can feel sluggish if not carefully written.  Due to its popularity, Java programmers tend to be fairly cheap and plentiful.  Java is cross platform, so a well written program should run on any system that supports Java.  Java also has a huge number of supporting tools, including things like refactoring browsers that can massively improve productivity.
- C# and .NET
Microsoft is pushing C# as an alternative to Java and C++ for Windows development.  It has all the features of Java plus some enhancements, and the library that comes with it is very similar to Java's in scope.  However it is Windows only, and is only supported on the more recent versions of the Windows OS.  Older versions of Windows such as Win98 will need to download and install the .NET runtime from Microsoft.  The tool support for C# is not as good as for Java, although that will probably change over time since MS is pouring a huge amount of money into it.
- Delphi
Delphi is a development environment similar to Visual Basic, but based on Pascal rather than BASIC.  I have not used it, but I know some developers swear by it.  It is not as widely used as any of the above, so Delphi programmers are thinner on the ground.
- Python
This is my language of choice, since it is far more productive than C++, Java or C#.  There is a good cross-platform GUI framework called wxPython (built on top of the wxWindows C++ framework).  However Python is not as widely used as it deserves to be and Python programmers are hard to come by.
Dave - The Developers' Coach



What languages are absolutetly essential for a windows programmer to know?
Thanks, Mark

TOP

Back Forum