Ohne den Umstieg auf Systeme mit mehreren Prozessoren wird sich der in den letzten Jahren erzielte Zuwachs an Rechenleistung kaum in der Zukunft fortführen lassen. Multiprozessorsysteme gewinnen deshalb heutzutage, auch im Bereich der Personal Computer, schon zunehmend an Bedeutung. Mit der Erhöhung der Prozessorenanzahl steigert sich auch die Rechenleistung. Um aus Multiprozessorsystemen aber auch den gewünschten Geschwindigkeitszuwachs zu erzielen, benötigt man geeignete parallele Algorithmen. Eine sorgfältige Wahl der Programmiersprache bei der Implementierung dieser Algorithmen ist wichtig, weil die Unterstützung der Parallelität in verschiedenen Sprachen sehr unterschiedlich sein kann.
Objektorientiertes Programmieren verspricht gesteigerte Modularität gegenüber prozeduralen Sprachen und die Möglichkeit einzelne Komponenten einfach wieder zu verwenden. Genauso verspricht funktionales Programmieren die Modularität über die Möglichkeiten des objektorientierten Programmierens hinaus, vor allem für allgemeine Algorithmen, zu erhöhen. Zusätzlich helfen funktionale Konzepte die Ausdruckskraft des Codes und dessen Lesbarkeit zu steigern. Um den Ansprüchen heutiger Projekte gerecht zu werden entstehen immer häufiger Programmiersprachen die mehrere Konzepte vereinen und so abhängig von der Problemstellung passende Lösungsansätze ermöglichen. Jedoch ist der Umstieg auf eine andere Programmiersprache nicht immer möglich und so kann es eine gute Alternative sein fremde Konzepte in einer Programmiersprache nachzubauen.
Diese Arbeit gibt einen Überblick über die Grundlagen des parallelen und funktionalen Programmierens. Danach werden die Sprachen Java und OCaml bezüglich dieser Gesichtspunkte miteinander verglichen.