Ответ на оба ваших вопросов: Я . Self - это оригинальный объектно-ориентированный язык, основанный на прототипах, а также, вероятно, лучший (конечно, для совершенно ненаучного и субъективного определения «лучшего»). (На самом деле, ИМХО, это (вместе с новояз ) один из лучших объектно-ориентированных языков, точка.)
В любом случае, в Self приятно то, что он также содержит много отличной документации , включая, но не ограничиваясь этим, знаменитый самоучитель Создание приложений на основе прототипов с использованием SELF 4.0
На старом веб-сайте Sun Research также есть большое количество ресурсов:
Эти два (вместе с упомянутый выше учебник) в значительной степени объясняют, о чем вы спрашиваете. (Фактически, второй в значительной степени содержит ваш вопрос «Как я могу управлять кодом без классов» слово в слово в заголовке):
Затем есть Self; Фильм , вводный видеоролик о языке программирования Self, GUI Self, системе Self и Self VM с участием ведущих дизайнеров и разработчиков Self. К сожалению, он вышел в 1995 году на VHS, и когда видео было наконец оцифровано, исходные ленты уже были деградированы. Вы можете найти несколько версий видео на этом сайте с видео Smalltalk . Лично я считаю, что Large QuickTime легче всего просматривать.
Вот еще пара интересных ссылок на себя:
Дэйв Ангар, главный разработчик Self, выступил с докладом в Стэнфорде в сентябре под названием «Я» и «Я»: почему и зачем . Потоковое видео этого выступления доступно .
Небольшая проблема с Self заключается в том, что Sun в 1995 году отказалась от него в пользу малоизвестного небольшого языка сценариев для создания мультипликационных персонажей в электронных телегидах на Телевизионные приставки. (Вы, возможно, слышали об этом, это называется Java.) Таким образом, последний стабильный выпуск 4.3 работает только на OSX на PowerPC (, возможно, x86, тоже) и Solaris на процессоре Sparc. Пару месяцев назад, однако, проект Self был снова подхвачен некоторыми из его бывших участников, а также некоторыми новыми поклонниками языка, и теперь он был перенесен на Linux и OSX на x86 с пригодной для использования версией 4.4 Alpha 2. выпуск доступен, а окончательный выпуск ожидается в январе.
Вот пара других интересных языков, основанных на прототипах:
Ваш вопрос о том, как структурировать программы, идет, я должен признать, что считаю, что классы на самом деле затемняют объектно-ориентированный дизайн. Я имею в виду, что существует причина , почему это называется объектно-ориентированным программированием, а не классо-ориентированным программированием.
NewtonScript (дифференциальное наследование), Act1 (субъекты и фьючерсы для параллелизма), Lisp (код представляет собой дерево, проверяемое / изменяемое во время выполнения) и Lua (небольшое, встраиваемое)Что касается вашего вопроса о том, как структурировать программы, я должен признать, что считаю, что классы на самом деле затемняют объектно-ориентированный дизайн. Я имею в виду, что существует причина , почему это называется объектно-ориентированным программированием, а не классо-ориентированным программированием.
NewtonScript (дифференциальное наследование), Act1 (субъекты и фьючерсы для параллелизма), Lisp (код представляет собой дерево, проверяемое / изменяемое во время выполнения) и Lua (небольшое, встраиваемое)Что касается вашего вопроса о том, как структурировать программы, я должен признать, что считаю, что классы на самом деле затемняют объектно-ориентированный дизайн. Я имею в виду, что существует причина , почему это называется объектно-ориентированным программированием, а не классо-ориентированным программированием.
Lisp и RubyЧто касается вашего вопроса о том, как структурировать программы, я должен признать, что я считаю, что классы на самом деле затемняют объектно-ориентированный дизайн. Я имею в виду, что существует причина , почему это называется объектно-ориентированным программированием, а не классо-ориентированным программированием.
Lisp и RubyЧто касается вашего вопроса о том, как структурировать программы, я должен признать, что я считаю, что классы на самом деле затемняют объектно-ориентированный дизайн. Я имею в виду, что существует причина , почему это называется объектно-ориентированным программированием, а не классо-ориентированным программированием.
Это большая тема. Предлагаю вам прочитать эту статью в Википедии . Внизу вы увидите список разных языков.
В целом, javascript является наиболее распространенным (и, возможно, единственным?) Языком на основе прототипов, который используется сегодня, но вы можете использовать шаблон прототипа на многих разных языках, таких как Java и Python - для примеры см. на странице википедии .
Я бы посоветовал вам искать учебные пособия и руководства по шаблону прототипа, а не искать конкретный язык для работы, тем более, что вы, возможно, используете наиболее подходящий уже. Обратите внимание, что javascript может быть запущен на платформе Java через Rhino .
Лучшее всестороннее введение в шаблоны прототипов, защищающее их использование, - это одна из статей в блоге Стива Йегге , «Универсальный шаблон дизайна».
Стив Йегге также указывает нам на статью Мартина Фаулера по этой теме,
Лучшие рекомендации, которые я прочитал, чтобы воспользоваться преимуществами прототипной природы JavaScript, содержатся в книге JavaScript: полезные части , и вы также можете применить эти рекомендации к другим языкам. Я изменил способ написания кода на Python после прочтения этой книги.
Если вы хотите изучить язык, похожий на JavaScript, сначала попробуйте ActionScript. Оба основаны на одном стандарте. Это будет легко и полезно.