Smalltalk по-русски
четверг, Февраль 10, 2005
Big talk with the creator of Smalltalk

В номере "ACM Queue" за декабрь/январь вышло интервью с Аланом Кеем.

Цитата:

В конце 60-х гг. Джин Сэммет (Jean Sammet) описывал около 3 тысяч языков программирования, живых на то время.
Цитата:
Внедрение языков программирования происходило зачастую случайным образом, и не однократно основной акцент делался на лёгкость реализации языка, а не на его возможности. Например, Бейсик никогда бы не был выявлен, потому что были языки подходящие лучше Бейсика для той цели. Таким языком был Joss - великолепный язык созданный раньше Бейсика. Но так вышло, что Бейсик работал на системе разделения времени GE, которая была создана в Дартмуте. И когда начали выдаваться лицензии на эту систему, то начал распространятся и Бейсик. Только потому, что он работал на этой системе, а не из-за каких-либо особых качеств.
Цитата:
Грубо говоря, большинство проблем в ИТ, которые мы имели за последние 25 лет, от того, что дизайнеры пытались вносить краткосрочные исправления, не думая о том, будут ли внесённые идеи масштабироваться, в случае их принятия.
Цитата:

Как только появляется нечто, развивающееся быстрее чем растёт подготовка людей, вы тут же сталкиваетесь с поп-культурой. Хорошо известно, что я пытался подавить Smalltalk в конце 70-х гг. Это были годы, когда Smalltalk был наиболее прекрасной системой в мире. Он позволял сделать что угодно более компактным и удобным способом, чем всё, что существовало до того. Но время шло. Как только мы узнавли больше и стали более претенциозными в отношении того, что мы хотели получить, оказалось что в Smalltalk есть возможности, которые не масштабируются в нужной степени. Например, возможности рефлексии. Smalltalk был одним из первых языков способных "увидеть" самого себя, однако сейчас известно, как реализовать рефлексию на всех уровнях намного лучше - значит мы должны реализовать так.

Через несколько лет мы узнали, что всё можно реализовать намного лучше. Объектная модель могла быть лучше, и т.д. И так, проблема в том - я считаю это относится и к Lisp и к Smalltalk, - что они стремятся пожирать своих детей. Я имею ввиду то, что Lisp и Smalltalk являются такими ошеломляющими средствами благодаря наличию у них мета-систем. Они способны решать задачи огромным количеством способов, чего не предоставляют языки с ранним связыванием. В результате, людям, которые любят Lisp или Smalltalk, трудно вообразить как может быть иначе.

Теперь вспомните пару фактов о Jave: в ней нет полноценной мета-системы. В Java есть проблема работы в двух, а не в одном режиме. Так, у неё есть не объекты, и объекты. В Java проблемы с динамикой. Зато у неё есть сборщик мусора. А что с того? Сборка мусора существовала задолго до того. Но это не слишком важное добавление само по себе.

В течениеи многих лет, SDK для Java реализуются на C++. Этим всё сказано.

Мы изучали Java очень детально в 1995 г., когда мы приступили к работе над реализацией, потому, что жизнено важно реализовать ядро языка. Менее всего в Java нам понравился реализации. Основано всё на старой идее, которая никогда не работала, что нужно иметь набор бумажных спецификаций, реализацию ВМ (виртуальной машины) по тем спецификациям, и, наконец, имть набор тестов, которые могут подтвердить соответсвие того, что мы только что реализовали. Так вот, такая схема никогда не приводила к полностью совместимым системам.

Технология, которую мы использовали для Smalltalk, заключалась в написании ВМ на самом Smalltalk. Таким образом, у нас всегда был симулятор ВМ на Smalltalk, который и являлся спецификацией ВМ. Вы можете отлаживать ВМ, и вы можете узнать, что будет делать ВМ в том или ином случае, просто "скормив" ей код, и все изменения в ВМ вы вносите изменяя симулятор. После того, как всё отлажено, вы нажимаете кнопку, и, без всякого вмешательства человека, будет сгенерирована математически корректая С-версия, которая будет работать на любой платформе, на которой вы её проверяли.

В результате, сегодня эта система, называемая Squeak, идеинтично работает на более чем двух десятках платформ. Java этого не умеет. А ведь что такое Интернет? Это необходимость идеинтичного выполнения на всём, что подключено к Интернету. Итак, Java, для меня, всегда нарушала одно из основных требований к разработке ПО в мире Интернета.

Как только мы поняли, что Java, скорее всего, не будет совместима между платформами, мы сказали, что мы создадим свою систему, которая будет абсолютно совместима между платформами, и мы сделали это.

Кто угодно может так сделать. Если бы профессионалы в Sun имели возможность исправить Java, то мир стал бы более приятным местом. Это не секретное знание. Это секретное знание для поп-культуры.

Цитата:
Это было для меня большим открытием, я был тогда в аспирантуре, когда я понял, что пол листа кода, в верхней половине страницы 13 в руководстве по Lisp 1.5 был Lisp на самом себе.
Цитата:
Smalltalk, в некотором смысле умер, как только настоящие программисты поняли, что он может быть полезен. Программисты изменили его по своему образу, и он начал терять свои возможности направленные на конечного пользователя.
Цитата:

Одна из мыслей, к которой приходят люди изучая расширяемые языки, это то, что невероятно тяжело сделать мета-систему лёгкой в использовании. Smalltalk-72 использовали дети. Вы всегда расширяете язык, даже не осознавая этого, просто создавая классы. В результате, вам не нужно пользоваться такими эзотерическими инструментами как компилятор компиляторов - Yacc или нечто похожее - только для того, что-бы что-то добавить в язык.

Но, на обратной стороне монеты тот факт, что даже очень хорошие программисты и дизайнеры языков склонны делать ужасные расширения в пылу программирования, потому что дизайн это то, что требует спокойствия и осторожности.

Ярлыки:

Comments:
Пожалуй, многовато цитат. Нужно было оставить только эту: "Smalltalk, в некотором смысле умер, как только настоящие программисты поняли, что он может быть полезен. Программисты изменили его по своему образу, и он начал терять свои возможности направленные на конечного пользователя."
 
Дали бы волю - я его так бы "умертвил"... :)
 
Настоящий программист! :)
 
Кей признался что Smalltalk кушает своих детей, благодоря своей возможности к расширению. Грусный вывод напрашивается - следующий еще более расширяемый язык проживет еще дольше. А все инертность сознания.
 
Yes, that was the big revelation to me when I was in graduate school—when I finally understood that the half page of code on the bottom of page 13 of the Lisp 1.5 manual was Lisp in itself. These were “Maxwell’s Equations of Software!” This is the whole world of programming in a few lines that I can put my hand over.

А кто знает где можно найти это описания Lisp in itself, кроме как книгу купить?
 
http://lib1.store.vip.sc5.yahoo.com/lib/paulgraham/jmc.lisp
 
Спасибо!
 
Отправить комментарий

<< Home

Популярные статьи
:: Smalltalk?!
:: Почему Smalltalk?
:: Great Leap Forward from Java to Smalltalk

Последние сообщения
:: [ST] Unit-тестирование UI
:: Будущее для Tweak
:: [VW] Полезняшки: OSTimeZone
:: [ANN] www.seaside.st
:: [VW] Знаете ли Вы, что...
:: Croquet Road Map
:: [VW] Полезняшки: StackOverflow, ShiffmanTimeout
:: Объект nil
:: smalltalk@wikipedia
:: Smalltalk Solutions

Архив
Предыдущие новости / Декабрь 2004 / Январь 2005 / Февраль 2005 / Март 2005 / Апрель 2005 / Май 2005 / Июнь 2005 / Июль 2005 / Август 2005 / Сентябрь 2005 / Октябрь 2005 / Ноябрь 2005 / Декабрь 2005 / Январь 2006 / Февраль 2006 / Март 2006 / Апрель 2006 / Май 2006 / Июнь 2006 / Июль 2006 / Сентябрь 2006 / Октябрь 2006 / Ноябрь 2006 / Декабрь 2006 / Январь 2007 / Февраль 2007 / Март 2007 / Апрель 2007 / Май 2007 / Июнь 2007 / Август 2007 / Сентябрь 2007 / Ноябрь 2007 / Январь 2008 / Март 2008 / Май 2008 / Июнь 2008 / Июль 2008 / Август 2008 / Сентябрь 2008

Atom Feed
Smalltalk по-русски


Powered by Blogger