Я думаю, что существует много примеров влияния мира функционального про-
граммирования на Java. Можете ли вы привести несколько?
—.Самый.очевидный.—.это.лямбда-выражения..И.знаете,.не.совсем.справедли-
во.называть.их.концепцией.функционального.программирования,.поскольку.
лямбда-исчисление.предшествует.возникновению.вычислительной.техники.
на.несколько.десятилетий..Это.естественная.модель.для.описания.и.формиро-
вания.поведения..В.таком.языке,.как.Java.или.C#,.это.имеет.такой.же.смысл,.
как.и.в.Haskell.или.ML..Так.что.это.однозначно..Другой.аналогичный.метод.—.
сопоставление.с.образцом,.которое.большинство.пользователей.связывают.
с.функциональными.языками,.так.как.это.первое.место,.где.они.его.увидели,.но.
на.самом.деле.сопоставление.с.образцом.в.первую.очередь.относится.к.таким.
языкам,.как.SNOBOL.из.1970-х.годов,.который.был.языком.обработки.текста..
Сопоставление.с.образцом.очень.четко.вписывается.в.объектную.модель..Это.
не.чисто.функциональная.концепция..Просто.так.случилось,.что.функцио-
нальные.языки.заметили,.что.это.полезно,.немного.раньше.нас..Многие.из.
концепций,.которые.мы.ассоциируем.с.функциональными.языками,.имеют.
смысл.и.в.объектно-ориентированных.языках.
274
Глава 10.
Интервью с Брайаном Гетцем
По многим параметрам Java — один из самых популярных языков програм-
мирования в мире. Как вы думаете, что привело к такому успеху и почему он
будет иметь успех в будущем?
—.Вы.должны.осознавать,.какую.роль.успех.сыграл.в.вашей.жизни..Я.думаю,.
что.во.многих.отношениях.Java.появился.как.раз.в.подходящее.время..В.то.
время.принималось.решение.о.переходе.с.C.на.C++..Тогда.C.был.домини-
рующим.языком,.а.C++,.с.одной.стороны,.предлагал.лучшую.основу,.чем.C,.
а.с.другой.—.был.очень.сложным..Неужели.мы.действительно.хотим.совершить.
этот.прыжок?.И.появился.язык.Java,.в.котором.предоставлялась.большая.часть.
того,.что.было.в.C++,.но.без.особых.сложностей..Да,.пожалуй,.это.то,.что.мы.
хотим!.Это.было.правильно.и.в.подходящее.время..На.вооружение.был.взят.
ряд.старых.идей,.которые.годами.изучались.в.компьютерном.мире,.включая.
сборку.мусора.и.встраивание.параллелизма.в.модель.программирования,.
которые.ранее.не.использовались.в.серьезных.коммерческих.языках..Все.это.
было.связано.с.проблемами,.которые.люди.решали.в.1990-е.годы.
Джеймс.Гослинг.сравнивал.Java.с.волком.в.овечьей.шкуре..Людям.нужна.
была.очистка.памяти.от.ненужных.данных,.им.нужна.была.интегрированная.
модель.параллелизма,.которая.была.бы.совершеннее.библиотеки.Pthreads..Но.
им.не.нужны.были.языки,.с.которыми.эти.вещи.традиционно.поставлялись,.
так.как.они.поставлялись.со.множеством.других.вещей,.которые.чертовски.
пугали..В.то.же.время.язык.Java.аналогичен.C..На.самом.деле.разработчики.
изо.всех.сил.старались.сделать.синтаксис.похожим.на.C..По.поводу.создания.
Java.возникало.множество.идей..Одна.из.них.состояла.в.том,.что.создатели.
спроектировали.всю.среду.исполнения.языка.в.ожидании.того,.что.своевре-
менная.компиляция.должна.была.появиться,.но.не.совсем.там..Первая.версия.
Java.1995.года.была.строго.интерпретирована..Java.развивался.медленно,.но.
каждое.дизайнерское.решение.относительно.языка,.формата.файла.класса.
и.структуры.времени.выполнения.принималось.с.учетом.ноу-хау,.позволя-
ющего.сделать.это.быстро..В.конце.концов.Java.стал.достаточно.быстрым,.
а.в.некоторых.случаях.даже.быстрее,.чем.C.(хотя.некоторые.разработчики.до.
сих.пор.не.верят,.что.это.возможно)..Было.много.замечательных.идей.о.том,.
где.будут.развиваться.технологии.и.что.действительно.нужно.людям..Все.это.
привело.к.развитию.Java..Однако.чтобы.Java.оставался.на.первом.месте,.нам.
необходимо.было.нечто.большее..И.я.думаю,.что.то,.что.поддерживало.нас.
даже.в.те.мрачные.времена,.—.это.неустанная.приверженность.совместимости.
Внесение.несовместимых.изменений.нарушает.ваши.обещания..Это.делает.
недействительными.вложения.ваших.клиентов.в.свой.код..Всякий.раз,.когда.
вы.изменяете.код,.практически.вы.даете.возможность.переписать.его.на.ка-
ком-нибудь.другом.языке,.а.в.Java.никогда.такой.возможности.не.было..Код.
Java,.который.вы.написали.5,.10,.15,.20,.25.лет.назад,.все.еще.работает..Это.
означает,.что.мы.развиваемся.немного.медленнее,.но.наше.понимание.кода.
Интервью с Брайаном Гетцем
275
и.того,.как.работает.язык,.сохраняется..Мы.не.нарушаем.своих.обещаний.
и.не.причиняем.вреда.нашим.пользователям..Проблема.в.том,.как.найти.ба-
ланс.между.продвижением.вперед.и.стремлением.к.совместимости..Я.думаю,.
что.это.наше.секретное.оружие..За.последние.25.лет.мы.придумали,.как.это.
сделать,.и.у.нас.это.неплохо.получается..Это.то,.что.позволяет.нам.добавлять.
универсальные.шаблоны,.лямбда-выражения,.модули,.сопоставление.с.об-
разцом.и.другие.вещи,.которые.могут.показаться.чуждыми.Java,.потому.что.
мы.выяснили,.как.это.сделать.
Do'stlaringiz bilan baham: |