With a new programming language coming out every other day, it may be worthwhile to take a step back and point out past mistakes of past languages and try to learn from them. I consider Delphi, using Objective Pascal as the language, to be a great case study since it does (did?) so many things poorly.

It may be the first toolset/language many people were exposed to and remember it as the productive and easy-to-use complete toolset with rapid GUI development with drag-and-drop. But with it lacking basic toolsets such as decent containers, lacking a proper layout system, aging IDE, poor documentation, missing MVC concepts, etc, I find that its internal toolset these days is extremely prohibitive for making any slightly non-trivial applications without having to manually create another entirely new set of libraries. Even the maintenance of legacy applications utilizing it is bothersome since they, in my personal experience, have generally relied almost exclusively on the drag-and-drop functionality and the base tools and eventually may have resulted a difficult to maintain hodgepodge of ui, models, and everything else logic.

Most of my comments are aimed mainly at the libraries and the toolkit that is shipped, but the underlying language itself also needs to be discussed and the so many things it does poorly. With that in mind, it is worth pointing out that to this very day there remain some avid proponents of the language/framework, and there is even a Lazarus open-source project, which I presume from the name, means to bring it back from the dead. The goal of this post is therefore not to argue whether Delphi is good or bad, but to strictly restrict to many of its deficiencies with the hope that they are not repeated in other languages and frameworks.

Language

The primary goal of a programming language is to let the developer express ideas clearly without causing a hinderance with inconsistencies and poor design choices. I find Objective Pascal to be riddled with inconsistencies and unexpected behavior.

Libraries, IDE, and 3rd party vendors

These have real consequences leading to, for example, some of the community or the vendor itself not knowing how to accomplish basic tasks without using their drag-n-drop and GUI, or countless times top answers on StackOverflow regarding non-gui related tasks being answered involving Forms.