We occasionally get asked about the difference between Salesforce and ABL.
The most obvious difference is that Salesforce is a complete platform, whereas ABL is only an engine meant to be plugged into a platform. So Salesforce provides an end-to-end solution, and ABL is only a component of a solution.
But of course, what the question really drives at is: "what does ABL do that I couldn't do in Salesforce?"
The main difference is that ABL uses declarative logic, whereas Salesforce uses procedural business logic. A typical example:
Here, the code is very conventional. It looks very Java-ish/C#-ish. Note in particular that you have to declare for which actions (insert, update, delete) the code should run.
As you can see, the code is much shorter and clearer, but most importantly, it is always enforced, no matter what the context might be.
Even more importantly, because Salesforce uses a conventional programming language, the programmers are still responsible for managing all the dependencies in their code. But that's precisely where most of the difficulty resides: as the system grows, and the amount of code increases, it becomes more and more difficult to maintain, because the number of dependencies increases at an exponential rate.
Declarative logic, on the other hand, handles these dependencies automatically, and reorders the logic as necessary, any time it changes. This makes it far more scalable, and much easier to maintain.
Salesforce is a good platform for all kinds of applications, but its value comes from its PaaS architecture and its scalability, not its programming environment. You will encounter the same problems in Salesforce as in any traditional platform: as complexity increases, development and maintenance become increasingly difficult, expensive and risky.