From the Docs
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_intro.htm
Salesforce has changed the way organizations do business by moving
enterprise applications that were traditionally client-server-based
into an on-demand, multitenant Web environment, the Force.com
platform. This environment allows organizations to run and customize
applications, such as Salesforce Automation and Service & Support, and
build new custom applications based on particular business needs.
While many customization options are available through the Salesforce
user interface, such as the ability to define new fields, objects,
workflow, and approval processes, developers can also use the SOAP API
to issue data manipulation commands such as delete(), update() or
upsert(), from client-side programs.
These client-side programs, typically written in Java, JavaScript,
.NET, or other programming languages grant organizations more
flexibility in their customizations. However, because the controlling
logic for these client-side programs is not located on Force.com
platform servers, they are restricted by:
The performance costs of making multiple round-trips to the Salesforce site to accomplish common business transactions
The cost and complexity of hosting server code, such as Java or .NET, in a secure and robust environment
To address these issues, and to revolutionize the way that developers
create on-demand applications, Salesforce introduces Force.com Apex
code, the first multitenant, on-demand programming language for
developers interested in building the next generation of business
applications.
At least thats the official version