В моей карьере было много поворотов за эти годы. Прежде чем я «ушел на пенсию» несколько лет назад, я выполнял большую часть работы в мире программного обеспечения: программист (несколько раз), дизайнер, разработчик баз данных, системный архитектор, технический директор и генеральный директор. Вначале я действительно заинтересовался изучением языков программирования, которые были малоизвестны. Старый журнал под названием «Dr. Dobbs Journal», выпуск которого закончился в 2014 году за 38 лет, раньше публиковал статьи в большинстве выпусков на каком-то языке, о котором я никогда не слышал.

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

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

Но с тех пор, как я впервые столкнулся с ним, у меня появился фаворит. В начале 90-х я написал об этом три книги. Всякий раз, когда у меня есть свобода выбора языка для проекта, я в первую очередь обращаюсь к нему. Я часто использую его для создания прототипов приложений с невероятной скоростью, даже если я буду развертывать их на каком-то более традиционном языке.

И этот язык — Smalltalk.

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

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

Все начинается с революции

В духовных и религиозных движениях все меняется довольно предсказуемо. У (обычно) небольшой группы последователей определенного пути возникает еще одно представление об Истине, отличное от представлений большинства приверженцев. Это «начальное движение» начинается как внутренняя реформа, направленная не на создание нового пути, а на перенаправление традиционного.

Те семенные движения, которые выживают, делают это либо:

  • расширяются, чтобы они были больше, чем «ортодоксальные» последователи;
  • исчезновение перед лицом решительной оппозиции со стороны ортодоксов;
  • постепенно исчезают по мере того, как их новые идеи поглощаются ортодоксальным мышлением или влияют на него до такой степени, что и «выскочки», и «традиционалисты» счастливы.

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

Удивительно, как часто я вижу выражение удивления на лицах моих духовных учеников, когда я напоминаю им, что все первые деятели христианского движения (с очень немногими исключительными «язычниками») были евреями. Тем не менее, в течение первых 100–200 лет христианские школы мысли были школами еврейской мысли, которые включали в себя некоторую степень понимания Иисуса Христа как Мессии.

Пришло время, когда это внутреннее движение, состоявшее на самом деле из семи таких «школ», оборвалось (после изгнания из иудейских синагог за ересь. В данном случае раскол был почти полным. доказательства того, что они каким-либо значимым образом повлияли на продолжающееся развитие иудаизма.

Переходя к более современным временам, так же началось так называемое движение Новой Мысли в христианстве. Практикующие христиане начали видеть Иисуса Христа по-разному: целитель, учитель, святой человек (но по большей части не человек с некоторой долей божественности). Эти группы обычно начинались как собрания членов церкви, которые хотели исследовать другие измерения Иисуса, выходящие за рамки ортодоксальных взглядов господствующих церквей.

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

Если бы Новая Мысль исчезла в одночасье, она все равно оказала бы значительное влияние на господствующее христианство.

Таким образом, Новая Мысль становится «семенем движения» внутри христианства. Его рост или исчезновение вряд ли означает, что его нет в современной церкви.

И то же самое с Smalltalk

Smalltalk был разработан в середине 1970-х годов командой Xerox под руководством Алана Кея. Это была революционная технология для программирования, потому что она:

  • первая реализация полностью объектно-ориентированного языка с нуля
  • первая живая среда программирования, в которой программист манипулировал объектами в реальном времени
  • первая полностью автономная IDE (интегрированная среда разработки) с тесно связанными между собой браузерами, редакторами, отладчиками и дюжиной других инструментов в одном месте

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

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

Smalltalk так и не стал широко популярным языком в мире разработки корпоративных продуктов (хотя он намного больше, чем кто-либо, кроме тех, кто внимательно следит за его судьбой). В этом смысле периодическое заламывание рук теми, кто хочет понять, почему «Smalltalk не удался», — обычное явление в местах, где тусуются языковые наркоманы.

Но факт в том, что если смотреть сквозь призму «семеноводческого движения», то Smalltalk оказался невероятно успешным. Он узаконил использование чистого объектно-ориентированного программирования (ООП), которое, хотя и почти никогда не достигалось в результате последующей разработки языков, сильно повлияло на подавляющее большинство современных языков, включая, в первую очередь, C++, Objective-C, C#, Java, Python, Ruby. , JavaScript и PHP. Без мужественного новаторства Smalltalk — и некоторых крупных успехов, на которые его приверженцы могут с гордостью указывать, — неясно, заняло бы ООП то почетное место, которое оно занимает в сегодняшнем мире кодирования. (Я признаю, что это соглашение не является универсальным и что есть те, кто ненавидит ООП и считает его злым пожирателем памяти и слишком медленным для «настоящей работы». Нам просто нужно согласиться, чтобы не согласиться.)

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

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

Я надеюсь, что вы будете следовать за мной и комментировать эти статьи, чтобы мы могли извлечь пользу из нашего различного опыта.