What is Delphi and what's it for?[]
Short history, short explanation, and a masterful statement promoting it as a high-productivity tool versus VS without slamming VS or Microsoft. (1 page)
Delphi is a general purpose development environment for all versions of Windows. It is the most powerful tool available for software developers working on the Windows platform. It can produce any kind of Windows application, including Service and Console applications, IIS extensions, etc, but in the specific case of GUI applications and database access, it is the best tool available, bar none.
It can create programs that run on any version of Windows, access every major kind of Database, including ORACLE, SQL Server, DB2, Interbase, Firebird, and supports n-tier and Client/Server architectures. It supports Win32, Win64, MacOS, iOS, Android, IoT and Web.
For native code development, Delphi is a "force-multiplier" tool that provides native code performance and yet provides a fast design, implementation, and build environment that allows users to slip into a "rapid" mode of development. Delphi enables Rapid Application Development, without the overhead of runtimes, interpreters, JIT compilers, garbage-collectors, etc. In short, Delphi hits a sweet spot in the developer tools segment that no other tool hits, giving the performance and zero-runtime-requirements of native coding environments, while giving the developer the speed of RAD, but without the drawbacks of either.
Interestingly, the underlying architecture of the Delphi product and its object-oriented VCL framework (Visual Control Library) has allowed it to bring its considerable strengths to .Net development as well. Experienced Delphi programmers can be productive in .Net immediately because they can continue to use the same VCL framework classes and powerful GUI design environment they have used for native-code development, yet the resulting .Net executable is a 100% managed .Net application. Existing application code, perhaps dating all the way back to Delphi's first version in 1995, can often migrate with little or even no change into .Net where it can be leveraged by being able to introduce new features and abilities found on the .Net platform. New development for .Net can leverage this VCL platform, or use the Winforms framework provided by Microsoft, and Delphi provides ASP.Net development too.
Delphi features[]
Bullet points on features, which although referencing technical features, will not bury by non-techs (3 pages).
High productivity for advanced programmers[]
Delphi is designed to greatly multiply the productivity of advanced programmers. This has attracted a great number of the top, highly-experienced programmers to Delphi. It is widely known in the world of software development that you can get the greatest ROI by investing in tools that maximize the output of the staff that are already at the top of your current team.
Enable the line programmers to benefit from the senior programmers and team leaders[]
Although Delphi has many advanced capabilities, the source code you wind up with is extremely readable by all programmers - even those who are unfamiliar with Delphi. Delphi minimizes the risk of having advanced programmers on your team creating source code that can't be supported or maintained by anyone else, making IT dependent on single individuals. Delphi handles that issue because code created by technical programming specialists can easily be put to work by business-line, industry, category, and product specialist programmers.
Fast Delphi learning curve for programmers with experience in other languages[]
Delphi's feature advantages are usable and obvious to programmers who have any solid experience in other languages. This allows Delphi to co-exist in environments where more than one programming language or tool is in use. Some companies have a Delphi programming team to produce fast, working prototypes. If and when they want to shift to a company-standard or market-specified language, the much larger development project will find that its programmers can follow and translate Delphi code without the full involvement of the prototyping team.
The Pascal language that Delphi uses is ideally suited to expressing coded logic in a way that's easy to read, understand and maintain. Many of the other languages popular today are derived from C which is used predominantly to build operating systems and device drivers. Not only is C more difficult to read than Pascal, it seems that many C programmers actually take pride in writing code that is hard to understand and maintain. And it is easy to see that begin, end, and, or, not, procedure and function are more readable than {, }, &&, ||, !, void and ().
Also, the fact that the Pascal language originates from the academic world, where it is taught to I.T. students, means there is no shortage in young professionals who are proficient in the language.
Full support for all active Microsoft Windows desktop and server operating systems[]
Delphi has always delivered both compatibility and feature-support for computers running Windows (other platforms are supported by some "flavors" of the CodeGear's programming-language products). (Note there is currently no support for 64 bit).
Extended leveraging of Windows under-the-hood capabilities[]
Obviously, there are several languages and tools that support Microsoft's Windows platforms. Delphi makes it easy to use many deeply-buried capabilities of the operating systems, far beyond what is required for Microsoft Product logo approval. Delphi actually takes advantage of Windows capabilities that are there on every workstation and server, by supplying use of these features right from the Delphi application designer, and without the programmers needing to understand these deep Windows capabilities.
Ease of roll-out and maintenance[]
Delphi is capable of generating complete stand-alone executables that do not rely on any run-time environment other than Windows itself. Thus there is no need to accompany an install with the latest 30MB version of a run-time environment. This can make roll-outs, distributions, upgrades, patching and maintenance easier, and can help avoid "DLL hell".
Because a Delphi program is compiled the resulting executable is guaranteed to run reliably on all versions of Windows whereas the behaviour of a program developed with an interpreted language is dependent on the version of the installed scripting engine. (This is the hidden reason many software developers are forced to use the Software-As-A-Service (SaaS) model because without full control of the system on which the program is running they are unable to guarantee a reliable operation.)
Wide range of third party components[]
Delphi comes with a large range of built-in components which can be dropped on to forms and used straight out of the box. But there is also a large community of developers creating and distributing third party components, which you can drop in to your application. These developers run the full range from open to commercial. This allows you to leverage code created by others, helping to decrease development time and cost.
Complete support for Unicode[]
Starting with Delphi 2009 it completely supports the Unicode standard to make development of multilingual or international applications easier than before.
Support for new user interface paradigms[]
Since Delphi 2007 some newer user interface thinks like Vista's Aero Glass are supported. Delphi 2009 adds a Office 2007 style ribbon control to it, but using it requires to sign a royalty free licence agreement with Microsoft. Which binds you to over 100 pages of rules what you may do or not do with it. Delphi 2009 now also supports PNG files and the transparency information included in them (if included).
Thriving in a Microsoft environment[]
Delphi has leveraged the MS platform and co-existed successfully with MS's tools on the MS platform since 1995. Delphi is designed to be a specific kind of productivity tool for the MS platform; it is not an anti-MS platform tool or non-MS platform tool. C# and VB.net programmers and managers usually have no trouble reading and understanding Delphi Pascal code. Single-EXE deployment; no drivers or special platform-based setup required to use Delphi-generated programs. Delphi includes the source-code for its own components, and always has. Many pre-built solutions are available from 3rd parties. Typically, they are free or inexpensive and include source code. Solid numbers of programmers are trained and experienced in Delphi, and while this number is exceeded by Microsoft's own tools, the Delphi numbers in turn is far from niche. When developers need to drill down to Windows API functions, a complete translation of most Win32 C APIs to Delphi is included within the product. Note that .NET does not cover the entire WIN32 API.(1 page)
Protecting your development investment[]
Your source code is your intellectual capital. If the thought of having it made worthless when the platform it is built upon is yanked out from under your feet is discomforting, consider a platform with a 12 year commitment to supporting and enhancing existing code whilst simultaneously giving you access to the latest operating system features.
Consider the changes to your current development environment that have forced you to rewrite your code over the past 12 years. Are you using an old version of your development tool because the latest version would require you to rewrite your code?
Now consider that Delphi code written in 1995 for Windows 3.1 will compile and run today with minimal or no changes in the latest version of Delphi as either a native Win32 executable or a .NET assembly with easy access to the latest Windows Vista and .NET features.
If you only use/buy controls that have source code (most do) moving to the next version of Delphi is not only possible, but relatively easy. This is the case even if the company/person that originally created the component is no longer available.
The Delphi VCL has been carefully architected from the ground up to avoid the need for these huge breaking changes. From Windows 3.1 all the way through to Windows Vista, code written in Delphi can be brought up to date with the latest Microsoft platforms (including .NET) with a modest amount of incremental work, and without throwing everything out and starting over.
Does your current development environment have this sort of commitment to maintaining your investment in your code?
Roadmap[]
CodeGear's RoadMap for Delphi is a clear guide to CodeGear's goals for feature development and release schedules over the next 3 years. And CodeGear will update the details in the RoadMap as the plan is tuned to adapt to changes in the market and technology environments The RoadMap for Delphi clearly establishes Delphi's continuing commitement to use existing Windows capabilities in ever-more productive as well as standards-driven ways. And the RoadMap also establishes CodeGear's intended commitment to support emerging technologies and then go behind "support" with new usability interfaces and creative implementatinos of those technologies.
Delphi versus...[]
(Comparisons of Delphi with other major environments, tools, IDEs and languages, showing where Delphi is stronger, without attempting to claim that Delphi is the be-all and end-all.)
C#, VB.NET[]
.NET applications run within the .NET run time environment. There are presently three major versions of this environment, and a .NET app will typically only run in the one that it is compiled for. This run time must be present on the target PC, and must be correctly patched. By comparison, Win32 Delphi apps require no run-time other than Windows itself.
Incidentally, the lead architect for .NET's C# language, Anders Hejlsberg, was also the original architect of Delphi.
Delphi can produce .NET applications as well as "native" Win32 applications, and Delphi source code can be written to be very portable between the two platforms. A big advantage of this is that the same code-base can be used in Win32 for fast, interactive clients and also in ASP.NET for wide distribution and low maintenance web pages.
Delphi's VCL for .NET has better graphics performance than WinForms. Currently .Net up to version 2.0 and 3.0 is supported by Delphi.
Note: Alternatively, .NET applications run using the Mono environment on Linux, Solaris, Mac OS X, Windows and Unix.
Comparing Delphi Language to C# Language and .NET Runtime[]
- C# language is newer, less mature. (An alternate view would be that C# is a more modern language than Delphi, benefiting from features simply not present in Delphi that coders take for granted in other languages, such as C++).
- The C# language is extremely large, specially if you factor in all little modifiers and attributes. This makes building custom source transformers hard, and requires care when purchasing one (you have to make sure that an your daily subset is supported). In this light, the fact that C# is advocated as "easy to learn" is outright funny.
- Deploying .NET applications requires a runtime.
- Use Garbage Collection, which introduces delays, wastes memory and has bad behaviour when multiple GCed applications are running for a long time on the same server
- Managed (.NET) code generally runs slower than native (Delphi) code.
- Accessing native Win32 is more difficult than within Windows. However, trying to mix a Delphi project with C++ is just as difficult. Its not the access to the WIN32 layer that is the issue, but shared source files.
- .NET has a smaller set of available third-party components.
- Resource consumption (especially memory) is significantly bigger relative to native (Delphi) code
- If real speed is required Intel assembler can be used directly and seamlessly within the Delphi source code. (Try doing that in a C# or Java managed environment!)
- What to use for GUI applications under .NET long term remains a mystery. Winforms is said to be EOL, all hail WPF.
Comparing Delphi Language to VB.Net language[]
- Microsoft had to break everything to move from VB 6.0 architecture to VB.Net. The latest Delphi (Code Gear Delphi 2007 Win32) still can compile (with very few changes) most of the old source code written in the original Delphi 1.0 (1995). The VCL architecture has survived a 16-bit to 32-bit transition already without causing headaches for developers, and the upcoming 32-bit to 64-bit transition will also be made easier, because the VCL will function as a kind of "insulation" layer, protecting well-written Delphi apps from most common 32-bit to 64-bit porting headaches.
- Many developers have abandoned VB.Net and expect it to go the way of J#, leaving only C# as a viable option.
- The debacle of VB6 to VB.Net transition shows how not to handle an existing code-base. When changes are needed, they should be done in some way that makes it possible for developers to update their source code, not forcing them to abandon it completely. Since version 1.0, Delphi has protected your source code, opened the way to 32 bit, and .NET, without forcing a rewrite onto you.
- Visual Basic developers who move to Delphi appreciate the increase in compiled application speed. They also appreciate the more powerful and more elegant syntax of ObjectPascal, applications without runtimes (DLL Hell, or OCX Hell) and the rich set of open-source and commercial third-party tools and components available for Delphi/VCL.
Java[]
Like .NET, Java requires the appropriate run-time to be installed and patched on the target PC.
Additionally, because Delphi is designed specifically for Windows, it is easier to create a product that looks and behaves the way a user expects a Windows app to look and behave in Delphi than it is in Java.
C, C++[]
Note C++Builder.
Scripting languages[]
Most of the popular scripting languages, also known popularly as "very high level languages", or "dynamic" languages, such as PHP, Perl, Python, JavaScript, Ruby, offer the following general features:
Dynamic Languages:
- Interpreted
- Dynamically, not Statically Typed
- Require wrappers to access native APIs.
- Usually wrappers to some C/C++ Library are needed to provide a GUI
- Slower than native code.
- Applications written in scripting languages can be packaged, obfuscated, or built into a single file deliverable, but are not truly "compiled" into native code.
- Always require a runtime, whether installation of a Runtime image (size from a single EXE or DLL, to a full MSI installable runtime package containing hundreds or thousands of files) to run.
Dynamic languages are the "right" solution for a whole bunch of relatively small problems. However, statically typed compiled languages are still ideal for other types of problems, and in generally better controlable to build large scale applications. For professional quality Win32 GUI applications, which must be used by typical office and home users, on the Windows platform, nothing can touch Delphi. Delphi's advantages over dynamic scripting languages include:
- Compile once, run on any copy of Windows.
- No Runtime
- Faster performance on any CPU
- Smaller memory overhead
- Users can't get your source code (important to commercial and shareware developers)
- Richer library of graphical controls than any library (ie, wxWidgets on Python/Ruby, QT on Python/Ruby)
Development speed:
Scripting languages offer a much faster development speed than C or C++ development, however Delphi, though compiled, still offers a faster rapid-application-development iteration speed, due to its lightning fast compilation speed, and very slick form-designer, and rich visual and non-visual component-based development architecture. When developing in the IDE, there are no "GUI builder" tools for any of the scripting languages that are as powerful as the Delphi IDE form-designer, and associated design-time tools. There are Java IDEs (including CodeGear's JBuilder) that provide a delphi-like RAD experience in Java, but there is not a full-featured commercial quality RAD tool for Ruby, Python, or others, that provides a Win32 deskop application RAD experience. There is however a Delphi-like RAD tool for Web Application Developers (Delphi for PHP, CodeGear's newest product). There are RAD tools for Python, like Boa COnstructor, that aim towards providing a slick RAD tool for Python, but these are at a "version 0.1" level of funtionality and usability, compared to a robust commercial product like Delphi 2007.
FreePascal/Lazarus (FP/LZ)[]
- In current versions of Lazarus, the GUI controls on screen sometimes look a bit win95, this is slowly improving though, and often related to bad defaults of the properties which with a little work it can be fixed manually, since all widgets are native like Delphi.
- The Lazarus IDE itself is not very well polished. It is workable though, and some of the extra features are nice. IMHO the biggest differences are in debugging. Delphi6/7 really shines there.
- FP/LZ is running on many OSes together with all kinds of CPUs
- FP/LZ allow development for smart phones and PDAs. It is hard to judge the quality of this, because there is no comparison (generating native apps for e.g. CE)
- Delphi is more mature and stable, and the Lazarus component library (LCL) is missing many core VCL-workalike components used in any real-world Delphi application. There is a TButton and TMemo for example, but not a full-featured data-aware component support that is comparable to DataSnap, ADO DataSet. (The DB components are parts that are developing quite quickly)
- The most fundamental Delphi language feature missing from Lazarus right now is a runtime/designtime package system like the Delphi "BPL" "binary package library" files. To install a new component in Lazarus requires a recompile of the Lazarus IDE source code. This is still the case, but some damage control has lessened the impact, The internal linker in FPC 2.2 made it faster, and the LazarusSVN version (0.9.26 to be) now only relinks the ide, not a full recompile.
- Contrary to what many people think, there are also more than a handful fulltime users that migrated, specially in recent years (though commercial use of FPC goes back to pre Kylix 1995 due to its Dos and Linux support). Some only for non win32 builds (with OSX, Linux and wince and Win64 support being major factors). Most converts seem to have a large code/designtime ratio, or somehow have a non standard Windows vs other OS ratio among their clients. (e.g. publishing world where OS X is still strong, and of course Linux). A very high percentage converts still own and keeps using Delphi.
- Also the high rate of conversion of components is a telling something, though again quite often the less gui oriented components are converting.
- Fewer libraries and extensions are available for FP/LZ, though they are rapidly increasing.
- FP/LZ is OpenSource i.e. free including all components like compiler, debugger (gcc, c code), linker, IDE. The IDE is GPL. Most libraries/components have a more permissive license (modified LGPL) that allows commercial use without needing to disclose your application source.
- Professional users generally find it worthwhile to buy Delphi, because commercial support for Delphi development is provided (see Embarcadero).
- Most professional Lazarus users don't abandon Delphi, but build some of their apps for other platforms with Lazarus. Sometimes even only subsets of the apps (e.g. server only for non Windows/OS X, or just a portable "lean" Lazarus GUI client and separately in Delphi/Windows a fully windows specific made-up GUI client).
Embarcadero[]
Public company parent, cash-flow positive language division, briefs analysts regularly, stock 60% institutionally held, whatever else.
CodeGear has been sold recently by Borland to a company called Embacadero which is owned by a private equity firm.