UNCOL ( Universal Computer Oriented Language ) — универсальный промежуточный язык для компиляторов . Идея была предложена в 1958 году специальным комитетом SHARE . [1] Она никогда не была полностью определена или реализована; во многих отношениях это была скорее концепция, чем язык.
UNCOL был призван сделать компиляторы экономически доступными для каждой новой архитектуры набора инструкций и языка программирования , тем самым сведя проблему N×M к N+M. [2] Каждая архитектура машины потребовала бы только одного компилятора back end, а каждый язык программирования потребовал бы одного компилятора front end. Это была очень амбициозная цель, поскольку технология компиляторов находилась в зачаточном состоянии, и мало что было стандартизировано в компьютерном оборудовании и программном обеспечении.
Концепция такого универсального промежуточного языка стара: в отчете SHARE (1958) уже говорится, что «[она] обсуждалась многими независимыми лицами еще в 1954 году». Макракис (1993) резюмирует ее судьбу:
UNCOL был амбициозным усилием для начала 1960-х. Попытка решить проблему написания компилятора, в конечном итоге провалилась, поскольку язык и технология компиляторов еще не были зрелыми. В 1970-х компиляторы-компиляторы в конечном итоге внесли свой вклад в решение проблемы, которую поставил перед собой UNCOL: экономичное производство компиляторов для новых языков и новых машин.
UNCOL иногда используется как общий термин для идеи универсального промежуточного языка. Архитектурно-нейтральный формат распределения является примером UNCOL в этом смысле, как и различные системы байт-кода , такие как p-код UCSD Pascal и , в частности, байт-код Java . [3]