Впервые я столкнулся с исключениями в ADA 83. Насколько мне известно, разработчики ADA изобрели концепцию исключений. Так ли это, или любой язык программирования, который появился раньше, тоже использовал исключения?
В каком языке впервые появились исключения?
Ответы (3)
Согласно странице новаторских языков c2.com, это был PL/I.
Это зависит от того, как вы определяете дженерики. Параметрический полиморфизм, который позволяет вам определять функции и типы, не привязанные к конкретным типам аргументов/полей, присутствовал в ML уже — и это 1973 год. Пример стандартного ML из Википедии:
fun reverse [] = []
| reverse (x::xs) = (reverse xs) @ [x]
Обратите внимание, что эта функция статически типизирована, но полиморфна («общая») для любого типа списка.
Хотя этот пример — SML (более поздний), насколько мне известно, эта концепция присутствовала и в самых ранних версиях ML.
Из Википедии:
Универсальные средства программирования впервые появились в 1970-х годах в таких языках, как CLU и Ada, и впоследствии были приняты многими объектно-ориентированными и объектно-ориентированными языками, включая BETA, C++, D, Eiffel, Java и ныне несуществующий язык Trellis-Owl компании DEC. Реализации дженериков в таких языках, как Java и C#, формально основаны на понятии параметричности Джона К. Рейнольдса.