Αυτό το λήμμα χρειάζεται μορφοποίηση ώστε να ανταποκρίνεται στις προδιαγραφές μορφοποίησης της Βικιπαίδειας. |
Το λήμμα παραθέτει τις πηγές του αόριστα, χωρίς παραπομπές. |
Η MultiLisp είναι συναρτησιακή γλώσσα προγραμματισμού και διάλεκτος της διαλέκτου Scheme της Lisp, με κάποιες επιπλέον εντολές και εκφράσεις για παράλληλη εκτέλεση και κοινή (μοιραζόμενη) μνήμη. Η MultiLisp υλοποιείται σε Interlisp. Αυτές οι επεκτάσεις περιλαμβάνουν παρενέργειες, με συνέπεια η MultiLisp να είναι μη-ντετερμινιστική. Εκτός των επεκτάσεων για παράλληλο προγραμματισμό, η MultiLisp έχει επίσης κάποιους ασυνήθιστους αλγόριθμους για συλλογή απορριμμάτων και χρονοπρογραμματισμό εργασιών. Η MultiLisp, όπως και η Scheme, είναι προσανατολισμένη σε συμβολικούς υπολογισμούς. Σε αντίθεση με κάποιες άλλες γλώσσες παράλληλου προγραμματισμού, η MultiLisp ενσωματώνει εντολές που προκαλούν παρενέργειες και για τη ρητή δήλωση του παραλληλισμού. Σχεδιάστηκε από τον Robert H. Halstead στις αρχές της δεκαετίας του 1980 για χρήση στον υπολογιστή Concert που είχε 32 επεξεργαστές και αναπτυσσόταν στο Τεχνολογικό Ινστιτούτο της Μασαχουσέτης (MIT). Επέδρασε στην ανάπτυξη της διαλέκτου Gambit της Scheme [1] και της Interlisp-VAX.
Η MultiLisp επιτυγχάνει τον παραλληλισμό με τη μακροεντολή PCALL, με τον κώδικα:
(PCALL Fun A B C ...)
να είναι ισοδύναμος με τον:
(Fun A B C ...)
με τη διαφορά ότι τα ορίσματα A, B, C, κλπ. μπορούν να αποτιμηθούν παράλληλα, κάτι που έρχεται σε αντίθεση με τη συνηθισμένη σειρά εκτέλεσης, που είναι σειριακή από τα αριστερά προς τα δεξιά. Χρησιμοποιεί επίσης μια έκφραση του παράλληλου προγραμματισμού, το μέλλον (future), το οποίο μοιάζει με την εντολή fork σε συνδυασμό με οκνηρή αποτίμηση. Με αυτόν τον τρόπο, μπορεί να γραφεί μια έκφραση όπως η
(cons (FUTURE A) (FUTURE B))
η οποία θα επικαλύψει την αποτίμηση όχι μόνο των εκφράσεων A και B μεταξύ τους, αλλά και αυτών με το αποτέλεσμα της κλήσης cons, μέχρι να εκτελεστεί μια λειτουργία που να απαιτεί πραγματική πληροφορία για την τιμή του A ή του B.