Ответ 1
Дженерики были долгое время и могут быть свободно по сравнению с шаблонами С++, хотя концепция (и, вероятно, реализация на других языках) предшествует даже этому.
.Net 1.0 - это первый разрез платформы, поэтому план должен был отправить что-то, что работает разумно. Дженерики должны были быть в "запланированном будущем", если бы какой-нибудь достойный архитектор находился в команде, но это то, что можно было добавить позже. Фактически, документ по внедрению generics для .NET вышел за год до того, как окончательно RTM-версия RTM появилась.
Сроки: (http://en.wikipedia.org/wiki/List_of_.NET_Framework_versions)
2002-03-05 .Net Framework version: 1.0.3705.0 released
~May, 2001 Don Syme paper on "Design and implementation of generics for .NET"
Microsoft, возможно, потратила 10 лет на создание .Net Framework 4.0 (как версия 1.0), но с таким количеством кода и так много функций сразу, потребуется 5 лет, чтобы найти все ошибки и проблемы юзабилити, если проект может даже преуспеть.
Итак, ответ на ваш вопрос будет # 2.
Don Syme разработал и внедрил обобщения в С# и .Net.
Ресурсы
- Функции языка, добавленные в С# со временем (С# - это демонстрационный язык для .Net-функций)
- Разработка и реализация генериков для .NET Common Language runtime
- Формализация дженериков для среды выполнения .NET общего времени
- Андерс Хейлсберг, ведущий архитектор С#
- Андерс Хейлсберг немного рассказывает о дженериках
Андерс Хейлсберг - мой герой - из Википедии - оригинальный автор Turbo Pascal, главный архитектор Delphi, позже возглавляющий архитектор С#