Почему Smalltalk не популярен?

Я смотрел Smalltalk (VisualWorks) последние пару месяцев - и чем больше я узнаю, тем больше Im впечатлил. Тем не менее, я думаю, что я должен что-то упускать, поскольку Smalltalk в наши дни не кажется популярным - и, возможно, этого никогда не было.

Что делают люди, которые отказались от Smalltalk в пользу Java, С++, Ruby и т.д., знают, что я не знаю, или, другими словами, "Почему isnt Smalltalk более популярен?"

Ответ 1

Существует ряд причин, по которым Smalltalk не "загорелся", большинство из них историческое:

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

  • В 1995 году, когда Java была выпущена к большой фанфаре, один из первичных вендоров Smalltalk (ParcPlace) был занят слиянием с другим (Digitalk), и это слияние стало больше борьбы с ножом

  • К 2000 году, когда Cincom приобрела VisualWorks (ObjectStudio уже был продуктом Cincom), Smalltalk исчезла из сцены "hip language"

  • С тех пор Smalltalk был маленьким игроком на языковом пространстве, но он вернулся к растущему рынку. Есть как коммерческие предложения (Cincom является самым крупным игроком), так и с открытым исходным кодом (Squeak и Pharo, которые в основном находятся под лицензией MIT, и GNU Smalltalk, который является GPL).

Не все реализации Smalltalk требуют изображения; в то время как те из нас, кто продается в среде изображений, любят его, вы можете легко использовать GNU Smalltalk с вашим любимым текстовым редактором.

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

Ответ 2

Множество причин, некоторые из которых:

  • Нелепые лицензионные сборы крупных коммерческих игроков
  • Неспособность использовать собственные средства управления графическим интерфейсом в некоторых исходных реализациях
  • Не основано на файлах, поэтому сложно интегрироваться с другими инструментами построения.
  • Плохая документация - для Smalltalk по-прежнему нет "классической" книги Smalltalk, что K & R для C и он-лайн помощь в IDE состоит из комментариев в исходном коде
  • С давних времен среда разработки - комбинация браузера/рабочего пространства была отличной в свое время, но она выглядит устаревшей по сравнению с современными IDE - редактирование текста особенно неудобно.
  • Уродство - если Smalltalker может выбрать уродливый, маленький или нечитаемый шрифт или неприятную цветовую схему, они безошибочно сделают это.
  • Отсутствие "приложения-убийцы" - для C это был Unix, для программирования на С++ Windows и для Java et al. в Интернете.

Сказав это, я сам использую Smalltalk (Squeak) и наслаждаюсь тем, что его используют идеи и инструменты GUI, но только для личных развлечения.

Обновление от 29 июля 2010 года: Сказав все вышеизложенное, которое я поддерживаю, последняя версия Squeak (4.1) - это значительное улучшение с точки зрения внешнего вида и производительность. Это также лицензия MIT, если это имеет значение для вас. Это стоит посмотреть, если вы вообще заинтересованы в Smalltalk.

Ответ 3

Вы должны были быть там в 1995 году. В то время было несколько коммерческих Smalltalk, но самым большим был VisualWorks от ParcPlace Systems. Маркетологи в ParcPlace были идиотами - они решили оптимизировать максимальные куклы на сиденье, а не макс. Места. Любой магазин, желающий принять Smalltalk, должен был заплатить пару тысяч долларов за разработчика за лицензию. Любой разработчик, желающий узнать Smalltalk, либо должен был нанять на Smalltalk, либо потопить серьезные деньги, чтобы купить свою лицензию. Так что было просто трудно получить шанс изучить его.

Также примерно в то время IBM искала преемника COBOL для своих бизнес-клиентов. Они выбрали Smalltalk (smart) и разработали VisualAge и сделали так, чтобы одна и та же программа могла работать без изменений на всем: от мэйнфреймов до AS400 до ПК. Smalltalk имеет дружественный минимальный синтаксис и его легко узнать, поэтому он казался естественной заменой COBOL. Будущее выглядело действительно ярким для Smalltalk. Компании, которые его использовали, часто не выпускали всех.

Затем Sun появилось с Java. Они отдали его бесплатно, вместо того, чтобы заряжать его. IBM взглянула на него и поняла две вещи. Сначала они не хотели вступать в маркетинговую войну с Sun, которая явно планировала потратить целое состояние на бренд Java. Вместо этого они решили попытаться победить Солнце в своей собственной игре - иметь лучшую Java на рынке. Почему бы и нет, у них уже была отличная виртуальная машина, которая работала по всему стеку - они просто адаптировали ее для обработки набора байт-кода Java. Фактически, все инструменты IBM Java на самом деле были написаны на Smalltalk в течение нескольких лет. Таким образом, если кто-то хочет обвинить кого-либо в повышении Java над Smalltalk, довольно легко поставить вину непосредственно у ног IBM и их нежелание конкурировать.

Я люблю Smalltalk. Мне нравится кодирование в отладчике, возможность архивировать процессы и восстанавливать их точно позже, если они сталкиваются с исключениями, удивительной надежностью. Экономика выражения и блестящая библиотека классов. Благодаря Squeak появилось новое возрождение в разработке Smalltalk. Newspeak, Pharo (который имеет несколько действительно красивых скинов интерфейса), новую винтовку VM, Seaside и Gemstone, все это проекты, направленные на устранение исторических недостатков Smalltalk, включая низкую интеграцию с ОС (у Newspeak есть своя собственная интеграция виджета и Pharo/Squeak имеет новую возможность интеграции внешнего кода под названием Aliens) и развертывание/масштабируемость.

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

Еще одним ограничением в то время для Smalltalk была упаковка приложений и отсутствие поддержки динамической загрузки. Большим приложениям Smalltalk пришлось перестроить файл образа и переустановить его для изменения. Java обеспечивала динамическую компоновку во время выполнения, что давало много преимуществ для упакованных приложений. К тому времени, когда Smalltalk добавила динамическую загрузку, Java завоевала ум в IBM, поэтому они перестали инвестировать в Smalltalk.

Ответ 4

Несомненно, спорный ответ и, безусловно, личный, но... Мне не нравятся фанатики.

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

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

Я не знаю достаточно о Smalltalk, чтобы прокомментировать это технически вообще, и я действительно хотел бы узнать это "когда-нибудь"... но он понизил список языков для меня, чтобы узнать, чем другие, У меня был более позитивный опыт общения с сообществом. (У F # у меня была такая же проблема, из-за того, что кто-то принимал это отношение в группе новостей С#, но, к счастью, преобладали более привлекательные личности). Тот факт, что люди так любят это, говорит о том, что в этом есть хорошие вещи, но реалистично, я человек, а не компьютер. Техническое достоинство - это только часть изображения.

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

Ответ 5

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

Любой язык, где выражение 2 + 3 * 4 имеет значение 20, не будет коммерческим успехом. Да, синтаксис очень правильный, и да, любой, кто знает Smalltalk, может понять, почему выражения оцениваются так, как они есть. К сожалению, это противоречит тому, что вы просверлили в течение всего вашего начального образования по математике.

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

Некоторый значительный процент разработчиков никогда не справится с этим.

Ответ 6

В моем сознании выделяются две вещи:

  • Он был разработан до победы Unix. В то время выделение себя из ОС-хоста казалось отличной идеей, поскольку для обеспечения достойного уровня интеграции со всеми используемыми операционными системами было бы непомерно сложно, и, помимо всего прочего, вещи были бы просто смехотворно сложными - -видите на изгиб назад, что Общий Lisp должен делать, чтобы поддерживать такие вещи, как VAX. Теперь это выглядит неудобно.
  • Отсутствие свободных реализаций. В то время не было продемонстрировано, что язык нуждается в твердой общинной реализации, чтобы забрать ум; люди все еще думали, что продажа программного обеспечения - хороший способ заработать деньги.

Они кажутся действительно очевидными ошибками в ретроспективе, но я думаю, вы просто должны были быть там.

Ответ 7

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

Да, в середине 1990-х годов вендоры оценили себя на фоне начинающего рынка, не смогли попасть в Netscape и в основном получили оглашение со сцены.

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

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

Ответ 8

Некоторые ссылки для размышлений:

Классический Хуже лучше. Хотя это относится к Lisp, применяются одни и те же точки. Простое решение, которое не совсем правильно, лучше, чем сложное решение, которое сложнее транспортировать по разным границам.

Python.org. Это не начало языковой войны, а более конкретно, чтобы показать, насколько легко загрузить, установить и начать работать на языке. Для Linux это уже есть. Для Windows/Mac он быстро устанавливается. Каждый из них имеет огромное количество библиотек, которые привносят такие вещи, как обработка XML, возможности HTTP и документация. Обратите внимание на страницу установки Squeak, не так удобную для пользователя.

Библиотеки также очень важны. Сравните библиотеки обработки XML для чего-то вроде Smalltalk, а затем сравните это с всемогущим CPAN. Между тем у каждой другой версии Smalltalk есть своя библиотека.

Язык программирования можно рассматривать как многое. Некоторые рассматривают его как способ представления алгоритмов и структур данных. В этом случае языки, такие как Smalltalk и Lisp, и Haskell excel. Это также можно рассматривать как инструмент, который выполняет свою работу. Даже если они могут проклинать инструмент, который они используют, они все равно будут использовать то, что необходимо для выполнения этой работы.

Ответ 9

Позвольте сравнить smalltalk с Java, чтобы узнать, что пошло не так.

  • Timing. Виртуальные машины дороги с точки зрения скорости и памяти. Когда Smalltalk появился, мы еще не были. Smalltalk был тяжелым грузом, и его было очень сложно использовать. Компьютеры были не такими широкими, как сегодня. Java, с другой стороны, попала на рынок "как раз вовремя" для удивительного роста процессора и памяти на уже вездесущем ПК.

  • Была свобода. Smalltalk был о "взять все это или оставить все". Java - это язык, который может использоваться в разных средах.

  • Синтаксис также играет определенную роль. Хотя Smalltalk является чистым OO и красивым, программисту легче изучить Java.

Ответ 10

Я использовал Smalltalk в небольшом объеме в 1995 году. (Я писал в моей компании белый документ на Java одновременно. IIRC Я сказал, что Java нужно еще 2-3 года, чтобы созреть.)

К 1998 году Smalltalkers отправились на Java.

Лицензии поставщиков были очень дорогими. Squeak - это волшебство по цене (zilch).

Требуемое оборудование было возмутительным: у нас был ранний SUN UltraSparc с 1 ГБ оперативной памяти в 1996 году. Это был сервер приложений Smalltalk. Для одного 3-уровневое приложение! С менее чем 50 пользователями! (Имейте в виду, что каждое поле на каждом экране заполняется из базы данных в своем потоке. Сделано для очень гладкого интерфейса.)

Библиотеки не совпадают между поставщиками, поэтому вы заперли.

Основные особенности среды различаются между поставщиками: отражение - кудрявое.

В принципе, производители Smalltalk балканизировали рынок с 1980-х годов, и он все еще фрагментирован.

С технической точки зрения Samlltalk топает по большинству других языков для повышения производительности. NeXT скопировал подход Smalltalk на основе изображений для Objective-C, и все сделано очень хорошо (просто посмотрите на все текущие продукты Apple).

Ответ 11

Рассматривая этот вопрос как долгого Smalltalker, зарабатывая все мои доходы, делая веб-приложения в Smalltalk в течение 12 лет, что я могу сказать об этом?

Во-первых, это вообще вопрос? Почему Smalltalk должен быть популярным? Разве это не такое маленькое, но приятное и живое сообщество, так как теперь у нас лучше, чем у большого сообщества?

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

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

Ответ 12

Сообщение в блоге (теперь в автономном режиме) Великая перезагрузка в программировании. Краткая версия: первые микрокомпьютеры не смогли запустить Smalltalk, и число программистов росло быстрее, чем новые, которые можно было получить старыми. Культура программирования в основном началась в начале 1980-х годов на микрокомпьютерах, а затем программистам на микрокомпьютере пришлось потратить следующие 30 лет на растущие боли, которые уже прошли программисты мейнфрейма/миникомпьютера.

Сообщение в блоге спасено от машины Wayback и опубликовано здесь:

Великая перезагрузка индустрии программирования СРЕДА, 2 ЯНВАРЯ 2008 ГОДА

В то время как я купил копию Структурированного программирования (теперь доступного как бесплатный PDF из ACM), в первую очередь, чтобы я мог прочитать эссе Dijkstra "Заметки о структурированном программировании" (расширенная версия EWD249). В дополнение к "Заметкам о структурированном программировании" он содержит эссе Хоар о "Структурировании данных", а также Хоар и Дал в "Иерархических программных структурах".

Это был последний, "Иерархические программные структуры", который оказал на меня наибольшее влияние. В нем описывается язык программирования Simula 67. Simula 67 - это расширенная версия Algol 60, которая содержит некоторые дополнительные возможности моделирования. У этого есть вещи, которые называются "классами", которые описывают поведение группы отдельных "экземпляров". Он имеет эту "конкатенацию", которая позволяет одному классу включать все атрибуты и поведение другого класса. Там также эта "виртуальная" функция, и она статически типизирована и мусор собрана.

Сходство с Java было настолько поразительным, что я был подавлен в течение нескольких дней.

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

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

Я больше знаком с более поздней прогрессией, поэтому я начну с нее. Microsoft 4k Basic для Altair (который вы можете попробовать на эмуляторе Altair от Peter Schorn simh) начал период популярности для Basic, а затем один для Pascal и C, С++ и Java. Игнорируя сбор мусора в Basic, грубый порядок добавления функций:

  • Формулы

  • Структуры управления высокого уровня (для циклов, в то время как циклы, если с многострочными телами и т.д.) и рекурсивные функции

  • Классы, экземпляры, наследование, полиморфизм и т.д.
  • Сбор мусора

Я заметил, что могу построить очень похожую прогрессию, идущую от Fortran до Algol 60 до Simula 67, за исключением того, что объектно-ориентированные функции приходят более или менее одновременно с сборкой мусора.

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

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

Возможная причина № 1: Алан Кей утверждал, что когда люди присоединяются к сообществу быстрее, чем их можно обобщить, новая поп-культура развивается там, где вещи, которые раньше были общими знаниями среди сообщества, стали относительно малоизвестными. Возможно ли, что революция в микрокомпьютерах привела к тому, что число программистов выросло настолько быстро, что более новые, более крупные, более неосведомленные сообщества программистов в начале 1980-х годов должны были повторить эволюцию, с которой прошли их предшественники с эскизов мейнфреймов и миникомпьютеров?

Возможная причина № 2: Ранние микрокомпьютеры просто не имели лошадиных сил для запуска более сложных систем программирования, которые были разработаны на мэйнфреймах и миникомпьютерах. Попытка запустить систему Smalltalk или Lisp в 4k, или 32k, или 64k на 1Mhz-процессоре просто не была особенно практичной. К середине 1980-х годов микрокомпьютеры были достаточно мощными, чтобы сделать некоторые из самых причудливых вещей, но к тому моменту, возможно, новые программисты потратили достаточно времени в их обнищавшей среде, что они могли только быть наркотиками на языках программирования более высокого уровня немного время?

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

Если бы я продолжил два прогрессии языков, которые я сделал выше, я бы продолжил старое в Smalltalk *, а новое - в Ruby, причем новые функции были чем-то вроде "отражения" и "позднего связывания". "

Сноска:

  • Smalltalk фактически был вдохновлен Simula I, а не Simula 67, но команда Alan Kay уделяла большое внимание Simula 67 в 1970-х годах. Я где-то читал (извините, я не могу найти ссылку сейчас), что Симуле Бегин нужно было читать в Исследовательской группе по исследованиям в Xerox PARC.

ОТПРАВЛЕНЫ ГЛОМЕКОМ В 9:15 утра

1 КОММЕНТАРИИ:

Рик ДеНатале сказал... Сбор мусора почти так же велик, как использование математических формул в языках программирования. Lisp имеет тот же марочный, что и Fortran и Cobol (конец 1950-х годов).

Первоначальная концепция объектно-ориентированного программирования Алана Кэя преднамеренно оставила наследование, поскольку ему не нравилось, как Дал и Нигард сделали это в Симуле.

Я только что написал о концепции объектной ориентации Кей в прошлом.

Ответ 13

Основная причина, по-видимому, литра на листе дезинформации, брожения на неправильное восприятие галонами. Возможно, вторичная причина - ошибочный шаг ParcPlace в середине 1990-х годов, а третий, скорее всего, потеряет одного мега-игрока, поскольку IBM отклонилась от участия в войне с истощением от Microsoft, забравшись в черную дыру рушившегося Sun.

Популярный - как Пэрис Хилтон?

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

Кажется, каждый из них.

Используя многие, многие и многие инструменты на протяжении многих лет, я могу сказать, что Smalltalk просто IS стоит цена за вход, независимо от того, какая цена выглядит.

  • Входите. Due diligence и все такое.
  • Вы сделаете все для нас лучше.
  • Вы могли бы даже повредить его, сделать его дико "популярным", и мы все равно выйдем вперед. Это зависит от вас.

Ответ 14

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

Но основная причина заключается в том, что Smalltalk слишком многообразен для преодоления инерционных сил в ИТ-индустрии, которые способствуют наименьшим общим знаменательным видам подходов. По этой причине не существует общедоступных языков большой популярности, которые радикально отличаются от ALGOL -подобных языков, в основном вариантов на основе C.

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

Ответ 15

Он сильно отличается синтаксически и концептуально от таких языков, как C.

Переключение с C-подобного языка на Smalltalk может показаться слишком трудным для многих людей, учитывая, что многие студенты и любители растут, изучая C-подобные языки (C, С++, Java, PHP и т.д.).

Ответ 16

В прошлый раз, когда я проверил, я был отложен в документации. Почему бы мне не нанести цветные маркеры на мышь, чтобы понять, о чем они говорят? Так сложно называть кнопки влево, вправо, в середине? См. Начало Squeak by Example

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

Я тестировал Squeak. И я не знаю, как кто-то может развернуть приложение Squeak для "нормальных" людей.

Ответ 17

Огромные изображения френков.

Это ужасный способ распространения программного обеспечения. Получите с программой, сделайте дистрибутивную версию Smalltalk, которая делает исполняемые или, по крайней мере, собственные пакеты, и имеет доступ к обычным инструментариям GUI или, по крайней мере, выглядит одинаково.

Единственными людьми, которые действительно могут использовать этот язык, являются те, которые работают на серверах, a la, тем, кто не должен распространять его.

Ответ 20

В Uni был этот модуль, который назывался как Языки программирования и клиент-серверные вычисления и Concurrency. Определенная часть этого модуля была посвящена, как следует из названия, языкам программирования в целом. Smalltalk упоминается примерно как ALGOL 60. И вам интересно, почему никто не хочет идти по SmallTalk?

Я считаю, что влияние высших учебных заведений больше, чем можно было бы подумать. Мы говорим о массах инженеров-программистов/компьютерных ученых и т.д.... каждый год оставляя Uni с помощью Java-ориентированной ментальной модели.

Ответ 21

Я думаю, что причины могут иметь мало общего с техническими аргументами. Например, вопрос сформулирован в терминах "почему Smalltalk был отброшен в пользу Java". Я хотел бы спросить, почему Java продолжает быть основным, когда уровень сбоев в проекте является одним из самых высоких в отрасли (за Gartner, http://www.zdnet.com.au/news/business/soa/Java-and-Net-both-a-disaster-research/0,139023166,120269968,00.htm), Учитывая такие доказательства, это не кажется мне рациональным явлением, и поэтому я сомневаюсь, что мы (что означает программисты) найдут для этого правильные, рациональные объяснения.

Прежде чем мы объясним, почему Smalltalk не пользуется популярностью, я думаю, было бы гораздо интереснее ответить "почему большинство ИТ-магазинов выбирают технологию, которая связана с отказом в 70% случаев".

Ответ 22

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

Это тоже не особо дорого. Я был готов посмотреть на него для крупных проектов, после успеха с Digitalk Smalltalk. Но затем компания, выпускающая VisualWorks, пошла на убыль, и VisualWorks была захвачена компанией (которую я не смущаю по именованию), которая изменила то, что было бы простой покупкой продукта разработки в абсурдное соглашение о лицензировании, и "дорогие" отношения с клиентами.

При этом они убили шансы на то, что этот замечательный продукт станет основным. В то же время Sun поставляла Java бесплатно. Кросс-платформенный, множественный поставщик (Sun и IBM vms), безопасный, с синтаксисом, знакомым разработчикам C. Они также приложили огромные усилия для оптимизации JVM, а это означает, что в наши дни Java может легко конкурировать с C с точки зрения скорости.

В эти дни я развивается в Java, Groovy и Scala на JVM. Но я пропустил разработку Smalltalk.

Ответ 23

Разве это не так? Согласно списку TIOBE, он сейчаС# 44. # 44 в мире кажется довольно проклятым популярным, для меня! (Porsche также около 40 в мире по популярности, но никто, кажется, не спрашивает: "Почему Porsche не популярен?" ). Мы сделали огромные шаги в использовании открытых текстовых протоколов; кто заботится, если кто-то другой использует тот же язык программирования?

Специально для компьютерного языка, которому 40 лет - сколько других языков с 1950-х и 1960-х годов вы сегодня используете? Я вижу, из 50 лучших, только 6 других: Logo, Pascal, RPG, COBOL, Lisp и Fortran. Есть куча языков с высокой мгновенной популярностью, но которые, скорее всего, выпадут из списка менее чем за 40 лет.

Я бы назвал топ-50 язык, который был там для двух (человеческих!) поколений, который был бы намного более прочным, чем топ-10, который был там всего три или четыре года. Последнее, вероятно, причуда; первый - проверенная классика.

Shakespeare, Twain и Poe не топ-50 авторов в этом году, но вполне могут быть топ-50 авторов за последние 40 лет, и я думаю скорее всего, они топ-10 авторов за прошедшее столетие. Все они используют открытый текстовый протокол (английский!), Поэтому не имеет значения, что человек, который рядом со мной на автобусе, читает недолговечную причуду, такую ​​как Danielle Steel.

Ответ 24

"чем больше я узнаю, тем больше Im произвел впечатление"

Вы можете узнать больше о реальных приложениях Smalltalk из отчетов о работе конференции - прочитать резюме конференции Niall Ross,

Ответ 25

Во-первых, Smalltalk был довольно большой. Было время, когда были только Smalltalk и С++ как языки OO качества продукции. За это время Smalltalk сделал очень хорошо. IBM Smalltalk также была альтернативой VW Smalltalk, что многие банки и страховые компании решили пойти так же, как и от IBM (ну, они приобрели OTI, чтобы завладеть им).

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

Тогда есть и другие причины. В основном, концепция изображения, которую я бы сказал. Синтаксис часто упоминается, но Objective-C имеет тот же стиль разделов параметров метода, разделенных двоеточиями, и никто, кажется, не заботится об этом в Objective-C мир.

Ответ 26

Государственный университет Пенсильвании (штат Пенсильвания) был/является большим на Smalltalk. В нем были написаны все студенческие системы и т.д. Вот мои рассуждения:

  • Труд - трудно найти программистов, желающих писать/поддерживать новые вещи.
  • Ужасные инструменты. GUI выглядит так, как будто это еще 1996 год.
  • Каждый программист, которого я встретил, ненавидел Smalltalk. Никаких исключений из этого, и это были люди, которые делали это в течение многих лет.
  • Приложения, написанные в Smalltalk, застопорились в том, чтобы быть переписанными в чем-то другом. Некоторые из них находились в режиме обслуживания около 10 лет. К тому времени каждый отдел в Penn State вырос штат разработчиков, которые делают что-то другое, кроме Smalltalk.
  • Самая большая причина в том, что другие продукты, которые должны поддерживать и продвигать разработку, стоят больших денег.

Если вам действительно нужна работа, выполняющая Smalltalk, babysit psu.jobs. Они закроют вас в подвале. Может быть, вы получите что-нибудь поесть и получить немного солнца, но вам не разрешено уходить. У вас будет работа навсегда... (дьявольское эхо...)

Ответ 27

Очень приятный принятый ответ. Я бы добавил, что ранние системы Smalltalk на самом деле не разговаривали с ОС хоста и его родными приложениями. Это было похоже на APL: если вы можете жить в этом странном мире под названием "рабочее пространство" или "образ", все отлично, но если вы хотите использовать свой обычный оконный менеджер или запретить GNU Emacs, ну, может быть, вы тоже на Марсе.

Я верю, что Squeak продолжает использовать этот подход, поэтому я предпочитаю Ruby: -)

Ответ 28

Прежде всего, я думаю, что Smalltalk дико популярен среди многих отраслей.

Многие компании клянутся им. Как потребительский язык программирования, он явно не популярен, потому что он:

  • (по дизайну) не имеет приоритета в интеграции с операционными системами Windows или Linux.
  • не является языком программирования для современных игровых систем (не сказать, что этого не может быть, Nintendo может быть первым, кто экспериментирует с этим)
  • не язык программирования для современных смартфонов (не сказать, что этого не может быть) и
  • концептуально слишком отличается от стандартной модели на основе C.

Smalltalk выделяется как "богатая объектами" DSL-среда, которая хорошо поддается специализированным программным решениям среди основных компаний, ориентированных на производство. Языки программирования на основе C, по существу, основались по той же причине, что и клавиатура с QWERTY-клавиатурой, она просто стала использоваться в больших масштабах (компьютеры домашних компьютеров), поскольку они были основаны на операционных системах, написанных в основном на C. Для сравнения это может быть что Smalltalk не пользуется популярностью, и больше того, что другие языки на основе C настолько популярны, что он делает Smalltalk просто непопулярным.

Ответ 29

Smalltalk не поддерживает поддержку поставщиков, которые Java и С# имеют (думают об этом с точки зрения компаний, продающих свои товары), и коэффициент прохлады, который Ruby, Python и т.д.

Может быть, Алан Кэй появится и расскажет нам свои рассуждения.

Ответ 30

Говоря как кто-то, кто использовал VisualWorks в школе, есть несколько вещей, которые я нашел раздражающими. Самым большим было принудительное (да, принудительное) использование среды изображения. 2/3 через мой проект, среда изображения потерпела крах, когда у меня открылось определенное окно. Это вызвало появление окна каждый раз, я открыл среду, несмотря на множество попыток исправить эту проблему. Я также обнаружил (то, что я видел) как слабое пространство имен и раздражение. "Все есть объект" звучит круто, пока вы не поймете, что это значит, что 3 + 4 * 7 = 49. И хотя я понимаю, откуда идет утиная печать, я все же предпочитаю статическую проверку типов. Синтаксис не был интуитивным; Я знаю, что Java многословна, но на самом деле ее легко читать и писать, особенно (очевидно) для тех, кто пришел на фоне C/С++. Это верно, хотя Java (почти одинаково) отличается от C/С++ там, где он учитывает (например, управление памятью и объектно-ориентированную модель).

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