As an experienced author of several software development books, and also someone who has had a successful career in software development, I would like to recommend Delphi as the language that is the most useful of all. I've used most languages, and they typically have weaknesses, but Delphi has very few. With Visual Basic, the user interface and the design method (which is similar to Delphi) is excellent, but the fundamental weakness of the BASIC programming language always provides barriers for the developer. Its strength of integrating with other Windows applications, especially Office programs, provides a useful way of reducing the loading of the main program, but often it is difficult, and complex, to properly integrate these into the main program.
With C and then with C++ we had a programming language which was developed by software developers. Unfortunately it has, in the past, relied too much on the professionalism of developers to catch potential problems before they occur. C had, and still has, many pitfalls, including running off the end of arrays, pointer problems, and it was difficult to react to events. C++ improved things by providing for design methods which allowed the data to be properly modeled, but the underlying problems of C were still there. It also did not cope with events, and, initially, with Windows programming. New versions of C++ compilers deal with Microsoft Windows programming and integrate event-driven software, but they do this in a rather complex way. This is fine for professional programmer, but is a nightmare for anyone starting with programming, or who just want to get a program create a few windows, and react to a few events. C++ for Windows is likened to Assembly Language programming, where large programs where produced for relatively simple operations. This problem has become so bad that many Windows-environments for C++ have a template-driven system which produces the initial framework for the code, into which the programmer must add their own. This has been developed as it is often difficult in C++ to produce simple windows, with menus and to make it mouse-driven. C++ is often a complex language to learn, and I've seen many undergraduate struggle with its actual syntax. Much of the Windows operating system is actually written in C++ so it is the most natural language for developing windows applications, but, of course, this does not make it the best language. This is likened to saying that the most natural device to chop down a tree is an axe, but an axe is not the best device to chop it down with. In fact, in some circumstances, C++ can be likened to an axe and Delphi to a chainsaw.
The coming of the Internet saw new applications for programs, especially in creating applications which could run over networks, using client-server architecture, and for different types of computers to connect to each other. These computers could have differing operating systems, and could range from supercomputers to simple mobile devices. There was thus a demand for a language which could be run of many different types of systems. This called for an interpreted language which could run on the system with the original source code. The interpreter could then interpret the language and convert them for its own hardware. In the past computers were not powerful enough for this to occur, but increasing processing power, and increasing memory capacity has allowed these systems to compete with traditional software languages. The language most relevant to this is Java. As with C++ it is aimed at the professional software developer , as it is often a difficult language to read and write code for. Java has many strengths, such as that it is extremely strong on the definition of data structures in the program and its portability and integration with the Internet. Unfortunately it has many weaknesses, especially in that large programs are generated for simple programs. It has also lacked proper integrated development systems, which included a graphical design environment, code editor, compiler, debugger, and so on. Thus Java wins on many fronts, but fails on just as many. Unfortunately when it fails, it fails badly. When it does something well, it does it very well.
Most of the other languages, such as COBOL, Assembly Language, FORTRAN, and so on, are also rans. They obviously still have their niche is certain areas, but are so weak in most areas that they can never really be considered for new software projects.
Thus we return to Delphi. Well it is strong in virtually every area, and has excellent integration with databases, the Internet, the operating system. It also produces strong and robust applications. One of its major strengths is that is has a similar design feel to Visual Basic (as it designs around forms which have associated code), but it scores over Visual Basic in that it has a proper object-oriented programming language which has been properly defined and developed. The thing that has made Delphi so good was that Borland took just two versions of Delphi to get it right. Delphi 1 was a good start, but Delphi 2 was an excellent package, which was at least five years ahead of anything else. Versions after this basically followed the same theme, and just refined an already near perfect product. Unfortunately there was not much further that the product could go, and the competition, mainly C++ and Visual Basic, and then Java, where allowed to catch up with it. It has thus lost shares of the market, which it should have gained, typically due to the strength of Microsoft products. Companies such as Novell (in networking), Lotus (in spreadsheets) and IBM (in operating systems) have all succumbed to the power of Microsoft. Delphi has survived purely because it has an excellent foundation, and provides one of the most general-purpose environments for software development.
As an academic I have observed how quickly students have taken to initially
developing an application, and then further developing it. The initial
phase is important to students, as without a working version, it
is often difficult to add the required functionality. C++ and Java
are typically non-starters for developing an initial program, as
students tend to spend too long in getting the framework produced.
Visual Basic is great for getting an initial program, but often
fails when the program becomes more complex. Thus it is Delphi that
I have found to be the best for initially developing the program,
and then having the power to fully develop it.