• Почему наследование всегда было бессмысленным

    • Перевод
    Есть три типа наследования.

    1. Онтологическое наследование указывает на специализацию: вот эта штука — специфическая разновидность той штуки (футбольный мяч — это сфера и у неё такой-то радиус).
    2. Наследование абстрактного типа данных указывает на замещение: у этой штуки такие же свойства, как у той штуки, и такое-то поведение (это принцип подстановки Барбары Лисков).
    3. Наследование реализации связано с совместным использованием кода: эта штука принимает некоторые свойства той штуки и переопределяет или дополняет их таким-то образом. Наследование в моей статье «О наследовании» именно такого и только такого типа.

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

    Часто для наследования в ООП приводят контрпример отношений между квадратом и прямоугольником. Геометрически квадрат — это специализация прямоугольника: все квадраты — прямоугольники, но не все прямоугольники — квадраты. Все s в классе «Квадрат» являются прямоугольниками s, у которых длина равна ширине. Но в иерархии типов это отношение обратное: вы можете использовать прямоугольник везде, где используется квадрат (указав прямоугольник с одинаковой шириной и высотой), но нельзя использовать квадрат везде, где используется прямоугольник (например, вы не можете изменить длину и ширину).
    Читать дальше →
  • Simula — 50 лет ООП

    • Tutorial
    Статья представляет собой очень краткое введение в Simula.

    Simula ((SIMIUlation LAnguage) ), первый язык программирования с классами и объектами, незаслуженно почти забытый, но из которого выросло современное ООП в том виде, в котором оно присутствует в нашем коде. Это язык для имитационного моделирования реальности. Разработчики новых языков программирования «оглядывались» на Simula при добавлении механизмов объектно-ориентированного программирования в свой язык. Однако Simula упоминается настолько редко, что в русской википедии на момент публикации был только хеллоуворд, а в сети куча устаревших ссылок.



    Бьерн Страуструп, говоря о причинах создания C++, сказал так: «Этот язык возник потому, что автору потребовалось написать программы моделирования, управляемые прерываниями. Язык SIMULA-67 идеально подходит для этого, если не учитывать эффективность.»
    Читать дальше →
    • +31
    • 11,9k
    • 6
  • Как изучение Smalltalk может улучшить ваши навыки программиста

    • Перевод


    Smalltalk обычно воспринимается как старый, умирающий язык – антиквариат из ушедшей эпохи. Нет ничего более далёкого от правды.

    Smalltalk по-прежнему очень актуален. Это отличный язык для обучения программированию людей, не имеющих технического образования. Это превосходный язык прототипирования для стартапов. Это мощный промышленный язык, используемый как крупными, так и малыми компаниями по всему миру. Есть веские причины рассмотреть использование современного Smalltalk сегодня, поскольку многое было сделано за последнее время, чтобы улучшить его возможности.
    Читать дальше →
  • С днём рождения, Алан Кейǃ (или как получить +80 к IQ)

      «Я никогда не был сильным программистом, и это стимулировало меня к созданию новых мощных языков. Сегодня я работаю по двум направлениям: метапрограммирование и программирование „по-детски“, для детей в возрасте 9-14 лет.»
      — Алан Кертис Кей.

      image

      Похоже, что этот мужик участвовал во всех институтах передовых разработок, связанных с ИТ.

      — Работал в легендарном Xerox PARC, Atari, Apple, Disney, HP.
      — Предложил концепцию Dynabook (в 1968 году), которая определила концептуальную базу для ноутбука, планшетного компьютера и электронной книги.
      — Один из «отцов-основателей» объектно-ориентированного программирования (SmallTalk, 1969).
      — Участвовал в создании первого персонального компьютера Xerox Alto (1973).
      — Инициатор полезной движухи «Каждому ребенку по ноутбуку».
      — в 2001 году, он основал исследовательский Институт Viewpoints, некоммерческую организацию посвящённую детям, обучению и передовым разработкам программного обеспечения.
      — В 2006 бросил дерзкий вызов индустрии — заявил о возможности создания операционной системы с графическим интерфейсом из 20.000 строчек кода.

      «Смена точки зрения дает +80 к IQ»
      (A change in perspective is worth 80 IQ points)

      И опять же, Алан Кей — ключевая фигура в ИТ, и при этом всего полторы переведенных статьи в Интернете. И знают про него, скорее всего, по его цитатам. Под катом — цитаты и немного выжимок из статей Кея. Ну, и великолепное выступление на TED.

      Вместе с коллегами из EDISON поздравляем Алана Кея с днём рождения!
      Читать дальше →
      • +29
      • 19k
      • 9
    • Выходу Dolphin Smalltalk 7 под Open Sourсe посвящается

        На днях компания ObjectArts полностью открыла исходники и выпустила язык, и среду разработки Dolphin Smalltalk под открытой лицензией MIT! Я не смог пройти мимо, не попробовав проверить этот проект с помощью анализатора кода PVS-Studio. Могу поздравить разработчиков с тем, что у них получилось создать код высокого качества. Мне не удалось найти значимых ошибок. Однако как всегда есть некоторое количество багов и пахнущего кода. Надеюсь благодаря этой статье код станет чуть лучше.

        О проекте


        Dolphin Smalltalk — это среда разработки на собственном диалекте Smalltalk для Windows. Ключевыми особенностями является тесная интеграция с нативными виджетами и подсистемами операционной системы, включая COM и ActiveX, и приятный глазу графический дизайн.

        Долгое время Dolphin Smalltalk был доступен в двух вариантах: условно-бесплатная ограниченная версия (community edition) и платный пакет для профессиональной разработки. Последний давал доступ ко всем функциям, включая продвинутые редакторы и публикацию приложений в standalone режиме, однако стоил около четырехсот долларов.

        С помощью PVS-Studio 6.00 были проверены открытые исходники Dolphin Smalltalk Virtual Machine. Далее представлены результаты проверки статическим анализатором. Несмотря на то, что проект DolphinVM очень маленький, в его коде всё равно встречаются подозрительные места.
        Читать дальше →
        • +18
        • 4,7k
        • 4
      • Dolphin Smalltalk 7 выходит под open source лицензией MIT

          Cчетчик со страницы Getting Started на момент публикации статьи
          Cчетчик со страницы Getting Started на момент публикации статьи

          С минуты на минуту случится то, чего ждали очень многие, и я в том числе. А именно: компания ObjectArts полностью открывает исходники и выпускает язык и среду разработки Dolphin Smalltalk под открытой лицензией MIT!

          О проекте


          DolphinSmalltalk — это среда разработки на собственном диалекте Smalltalk для Windows. Ключевыми особенностями является тесная интеграция с нативными виджетами и подсистемами операционной системы, включая COM и ActiveX, и приятный глазу дизайн.

          Долгое время Dolphin Smalltalk был доступен в двух вариантах: условно-бесплатная ограниченная версия (community edition) и платный пакет для профессиональной разработки. Последний давал доступ ко всем функциям, включая продвинутые редакторы и публикацию приложений в standalone режиме, однако стоил около четырехсот долларов, что, по понятной причине, устраивало далеко не всех.

          Похоже, что компания таки одумалась (или терять стало нечего) и решила выпустить ПО на волю. Под катом краткое описание среды разработки и размышления на тему open source будущего Dolphin Smalltalk.
          Читать дальше →
        • Неизвестный Smalltalk

          • Tutorial


          Уважаемые читатели хабра. Прежде всего я хочу объяснить, что обзор языка Smalltalk делает в корпоративном блоге FLProg. Дело в том, что и сама программа FLProg и сайт программы написаны на этом замечательном языке. Его возможности и огромная скорость разработки на нём позволяют мне одному поддерживать и постоянно увеличивать функциональность как сайта, так и программы. Если интересно, как мне это удается – прошу под кат.
          Подробности
        • Метаклассы в Smalltalk

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

            (Впрочем, и связь с недавно вышедшей статьей Метаклассы в Objective-C отрицать не буду.)
            Читать дальше →
          • Внутреннее устройство llst, часть 3. Магия JIT, или как ускорить виртуальную машину в 50 раз

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

              Ранее мы познакомились с языком Smalltalk, а точнее с его микро реализацией Little Smalltalk. Разобрались с синтаксисом языка, форматом представления объектов в памяти и набором основных инструкций. Теперь мы вплотную подошли к вопросам взаимодействия Smalltalk и LLVM (ради этого и затевалась вся серия статей).

              Сейчас у нас есть вся необходимая база знаний для того чтобы понять, что именно делается в нашем JIT компиляторе. В этой статье мы узнаем, как байт-коды Smalltalk преобразуются в IR код LLVM, как происходит компиляция и выполнение кода, и почему это работает быстрее, чем программная интерпретация. Самые нетерпеливые могут посмотреть шеллкасты (раз и два) с циферками и бегущими строчками (не забывайте про возможность скроллинга).
              Читать дальше →
              • +31
              • 14,2k
              • 9
            • Внутреннее устройство llst, часть 2 или Little Smalltalk + LLVM = ♥

                Всем привет! Совместно с humbug, мы предлагаем вашему вниманию третью статью из цикла о Low Level Smalltalk (LLST). Надемся, что статья будет интересна не только любителям велосипедов необычных языков программирования, но и тем, кто интересуется такой замечательной вещью, как LLVM.

                Напомню, что целью нашего проекта является создание собственной виртуальной машины, совместимой с Little Smalltalk на уровне байт-кодов. Ключевым отличием является гетерогенная архитектура, которая позволяет исполнять байт-коды как программно, так и компилировать их в низкоуровневые инструкции процессора посредством трансляции в IR код LLVM. Разумеется, второй способ позволяет достичь более высокой производительности и задействовать имеющиеся в нашем распоряжении вычислительные ресурсы оптимальным образом.

                Однако, обо всем по порядку…
                Читать дальше →
              • Откуда есть пошел xUnit

                  Идея данной заметки — как гипотезы — появилась уже довольно давно, и все как-то не получалось… Но вот «на днях» (к моменту публикации — уже неделях) увидел подтверждение своего предположения что называется «из первых рук» (см. Kent Beck's answer to Unit Testing: Did the notion of using setup() and teardown() methods in test fixtures originate from JUnit?) и решил-таки воплотить эту задумку.

                  Читать дальше →
                  • +18
                  • 11,7k
                  • 7
                • Разработчик Smalltalk для JVM собирает средства для завершения разработки версии 1.0

                    Страница проекта на Indiegogo: Redline Smalltalk V1.0

                    Под Java Virtual Machine уже разработано и портировано большое количество языков программирования — Scala, Clojure, Groovy, JRuby, Jython, Fantom, Kotlin и т.д… Выбор средств у разработчиков в мире Java просто огромен. Но есть еще один язык, который наверное многие бы хотели видеть на JVM со стабильной реализацией — Smalltalk!

                    Разработчик James Ladd собирает средства ($20 000), чтобы уйти на полный рабочий день для доведения Redline Smalltalk до версии 1.0. Осталось собрать чуть меньше половины суммы.

                    Если ты не можешь больше мириться с отсутсвием Smalltalk на JVM, если ты всегда хотел попробовать Smalltalk, но не мог вникнуть в совершенно другой мир и подход к разработке, если ты просто хочешь сделать мир еще лучше, настало твое время! Помоги Джеймсу довести проект до production-grade состояния!
                  • Светский разговор об управляемой тестами выпечке

                    Что-то вроде предисловия


                    Статья «Как два программиста хлеб пекли» сначала мне показалась просто шуткой — настолько абсурдно выглядят попытки выстроить какой-то «дизайн», основываясь на тех «требованиях», которые выдвигает «менеджер». Но в каждой шутке есть доля правды… В общем, возник вопрос к самому себе: а как в данной ситуации сработает тот подход, которого я стараюсь придерживаться в своей практике? То, что выросло при попытке дать ответ, собственно, и представлено далее.
                    Читать дальше →
                  • Ruby, SmallTalk и переменные класса

                      Статья, является переводом заметки Пата Шонаси (Pat Shaughnessy), в оригинале звучащей как Ruby, Smalltalk and Class Variables.

                      Пару недель назад статья Эрни Миллера (Ernie Miller) натолкнула меня на вопрос: а как работают переменные класса в Руби? После небольшого исследования, оказалось что переменные класса могут быть потенциальным источником проблем. Фактически, Джон Нунмейкер (John Nunemaker) уже написал статью «Переменные класса и экземпляра в Руби», которая датируется 2006 годом и остаётся актуальной и сейчас. Фундаментальная проблема переменных класса в том, что они разделяются между самим классом и всеми его подклассами – как Джон объяснял еще шесть лет назад, и это может вести к неразберихе и странному поведению кода.

                      Читать дальше →
                    • Внутреннее устройство llst, часть 1. Введение в Smalltalk

                      • Tutorial
                      Доброго времени суток. Предлагаю вашему вниманию вторую статью из цикла о Low Level Smalltalk (LLST). Кто не в курсе о чем идет речь, тем рекомендую прочитать предыдущую, обзорную статью, где рассказывается о том, что такое llst и зачем он был создан.

                      В этой части мы сконцентрируемся на самом языке Smalltalk, его синтаксисе и «правилах игры».

                      В последующих частях мы плавно перейдем к особенностям реализации виртуальной машины и внутреннему представлению объектов в памяти. Затронем вопросы организации менеджера памяти и сборщика мусора. Поговорим мы и о байткодах виртуальной машины. Узнаем, как текст метода Smalltalk превращается в последовательность команд. Наконец, мы проследим путь от загрузки образа в память машины до процессов, происходящих при посылке сообщений между объектами, а так же узнаем как реализуются замыкания в блоках.

                      Читать дальше →
                    • LLST: Новая жизнь Little Smalltalk


                        Всем привет! С прошедшим концом света и с наступающими праздниками :)
                        В качестве подарка сообществу Open Source, а так же любителям антиквариата, мы (совместно с товарищем humbug) решили выложить нашу последнюю исследовательскую разработку.

                        Предлагаем вашему вниманию с нуля переписанную на C++ реализацию виртуальной машины, совместимую с Little Smalltalk. На данный момент написан код виртуальной машины и реализованы базовые примитивы. Humbug написал серию простых тестов, которые, тем не менее, помогли обнаружить проблемы и в оригинальной версии VM. Реализация бинарно совместима с образами оригинального LST пятой версии.

                        Месяц работы, 300+ коммитов. А что получилось в итоге, можно узнать под катом.
                        Читать дальше →
                      • «Ровная» объектная модель или чего стоит «синтаксический сахар»

                        В последние лет 15-20 появилось невероятное количество новых языков программирования. Многие из них представляются как «истинные» объектно-ориентированные языки или, как минимум, языки с поддержкой объектно-ориентированного программирования (ООП). Во всяком случае, особенно подчёркивается то, что на этих языках можно вести разработку, придерживаясь объектно-ориентированной методологии. Чтобы язык программирования являлся ООП-языком, он должен реализовывать некоторую Объектную модель. В связи с тем, что ООП из вида программирования превратилось в нечто, что ближе к концепции и методологии, разные языки стали придерживаться более-менее одной и той же объектной модели. Но, кроме того, эти языки обросли разными синтаксическими конструкциями, часть из которых относится к так называемому «синтаксическому сахару», которые позволяют производить некоторые часто осуществляемые действия над объектами более компактно.
                        В связи с тем, что в большинстве языков программирования объектная модель сильно усложнена, попробуем определить описание, так скажем, «ровной» Объектной модели, убрав из неё по возможности всё лишнее.
                        Читать дальше →
                      • Алан Кей в мире компьютеров

                          Алан Куртис Кей — американский математик. Создатель принципов, на которых основана работа персонального компьютера. Удивительно интересный человек, наставник основателей Apple.
                          Кея волнует многое из того, о чём большинство из нас никогда не задумывалось. Он видит то, чего не видим мы. Он осознаёт существование некоторых возможностей задолго до того, как они станут очевидны остальным.

                          Родился Алан Куртис Кей 17 мая 1940 в городе Спрингфилд. В семье гуманитариев и музыкантов.
                          Его мать была профессиональной певицей, поэтому значимое место в его детстве уделялось музыке. После окончания школы стал студентом колледжа, но за участия в акция протеста студентов-евреев был исключен. По этой причине был вынужден устроится на работу преподавателем музыки по классу гитара.
                          Ничего не предвещало что в будущем он станет праотцом идеи персонального компьютера.
                          Жизнь Алана кардинально изменилась после службы в армии.
                          Во время прохождения воинской службы, он прошел тест на способность к программированию. Дальнейшая его служба проходила в ВВС США работая на компьютере IBM 1401.
                          Демобилизовавшись Кей поступает в Колорадский университет по специальности математика и молекулярная биология”, затем в 1966 году в аспирантуру Университета Юты.
                          Там проходит его знакомство с работами Айвена Сазерленда.
                          Это подталкивает его к изучению языка Simulа. Вследствие чего он формулирует принцип биологической аналогии.
                          Он утверждает, что идеальный компьютер должен быть подобен живому организму, где каждая клетка индивидуальна, но вместе они могут образовывать единую систему, способную к перегруппировке и изменению структуры.
                          Осенью 1968 у Кея происходит ещё одна знаменательная встреча, которая во многом повлияла на его будущее. Он познакомился с Сеймуром Пайпертом и некоторое время проработал вместе с ним в лабораториях искусственного интеллекта в Массачусетском технологическом и Стэнфордском университетах.
                          Читать дальше →
                        • Видеоматериал с семинара RSUG: Smalltalk в России

                            22 октября новоорганизованная группа RSUG (Russian Smalltalk User Group) провела первую встречу-семинар. Целью данной встречи являлось знакомство и освещение текущего состояния рынка.

                            Мы бы хотели поблагодарить учебный центр Avalon за предоставленную площадку и техническую поддержку. На сегодняшний день доступен видеоматериал с прошедшего семинара.

                            Поскольку встреча проходила впервые и была очень теплая и дружественная атмосфера, выступления были несколько «не регламентные». Однако все доклады без исключения очень интересны.

                            Если вы мало знакомы со Smalltalk, то рассказ Бориса Беркгаута вам должен понравится. Он в простой и доступной форме демонстрирует основную «магию» языка.
                          • Заметка о синтаксисе Smalltalk

                              image
                              Всем привет!

                              В комментариях к топику народ интересовали фирменные фитчи языка Smalltalk. Этой заметкой хотелось бы немного раскрыть комментарийпользователя mou и главный акцент сделать на простоту языка.
                              Читать дальше →

                            Самое читаемое