Что является настолько особенным о Smalltalk? [закрытый]

Что-то как...

using System.IO;

string path = Path.GetTempPath() + Path.GetRandomFileName();
while (Directory.Exists(path))
 path = Path.GetTempPath() + Path.GetRandomFileName();

Directory.CreateDirectory(path);
68
задан oxbow_lakes 30 November 2009 в 18:37
поделиться

12 ответов

Smalltalk был одним из первых объектно-ориентированных (OO) языков (наряду с другими, такими как Simula и Eiffel ), и можно сказать, что он чрезвычайно "чистый" в объектно-ориентированном смысле:

  • Все является объектом, и с объектами можно взаимодействовать только посредством отправки сообщений
  • Без примитивов (no int s, boolean s и т. д.)
  • Нет управляющих структур (нет для , , пока , , если и т. д.). Звучит невозможно, но это правда!
  • Никакой статики

Он также стал пионером в некоторых других, теперь уже распространенных вещах:

  • виртуальная машина (и JIT-компиляция)
  • Отладка путем проверки
  • «Горячая замена»

    Обратите внимание, что в настоящее время здесь только 123 вопроса о языке, который изначально задумывался как образовательный (то есть нацеленный на детей) его создателем Аланом Кей. Больше он особо не используется. Это не значит, что он не используется. В JPMorgan, например, есть большая система управления рисками для экзотических деривативов.

88
ответ дан 24 November 2019 в 14:01
поделиться

Smalltalk has many brilliant innovations - things we're all taking for granted today, including:

  • being the first ever IDE
  • providing programmatic support for a GUI with a mouse If you learn Smalltalk GUI programming, you really will have understood MVC properly.
  • being built out of a small number of powerful ideas that work together extremely well
  • The Smalltalk way isn't to crash out on unexpected behaviour - it's to adapt. If you send a message to an object that doesn't understand it, the debugger comes up and invites you to write that method... so it provides excellent support for incremental development.
  • The IDE, the app that you're writing and your data are all part of the same system - so you can write your own tools and debug instrumentation far more easily.
  • The TDD toolset in Smalltalk is still better than any other language (see below).
  • Squeak Smalltalk has quite a bit of cutting-edge design research:
    • морфический пользовательский интерфейс - вы можете познакомиться с концепцией «живучести»
    • приморский веб-фреймворк - узнать, что такое сервер продолжения и чем он радикально отличается
    • Squeak имеет сильную связь с проектом программного обеспечения OLPC (один ноутбук на каждого ребенка) - и все же может иметь большое влияние на мир.
    • Узнайте, что такое «черта» ...
    • Поиграйте с радикальной трехмерной иммерсивной средой под названием Open Croquet.
  • Поскольку Smalltalk - это более компактный, более простой и согласованный язык, с его собственной встроенной средой он гораздо менее запутанное место для начала обучения ООП . Люди, которые идут по этому пути, в конечном итоге становятся лучше Java, Программисты на Ruby и C #, потому что они могут изучать основы ООП без всех беспорядочных несоответствий, присущих основным языкам.
  • Некоторые коммерческие Smalltalks имеют удивительные, многоузловые распределенные среды объектно-ориентированных баз данных . Я думаю о Gemstone.
  • Хотите узнать разницу между Model-View-Controller и Model-View-Presenter - посмотрите на Dolphin Smalltalk ...

Единственная самая важная причина для Изучение Smalltalk сегодня состоит в том, что экстремальное программирование и схватка были изобретены сообществом Smalltalk ... и высоко интерактивный стиль программирования, который вы испытываете на Smalltalk, проще, мощнее и прямолинейнее, чем все, что вы можете сделать с помощью Java, C # или Ruby .. . и вы не сможете понять, насколько хорошо могут работать гибкие методы, пока не научитесь ' Я пытался заниматься экстремальным программированием на Smalltalk . Несколько других языков (во всяком случае, не основных) имеют сопоставимый набор функций

... чтобы действительно понять, что такое TDD, вам нужно использовать SUnit. JUnit просто показывает вам, где ваши тесты не прошли. SUnit на самом деле позволяет вам щелкнуть отладчик в том месте, где произошел сбой теста, и увидеть фактические объекты и то, как они связаны, чтобы вы могли увидеть, вживую в отладчике, как произошел сбой кода, и исправить это прямо здесь.

48
ответ дан 24 November 2019 в 14:01
поделиться

Да, Smalltalk настолько важен, что вы должны его изучить. Почему? Вы можете понять объектно-ориентированное программирование в чистой и простой форме. Люди забывают, что в «Синей книге» Smalltalk-80 только около 90 страниц посвящено языку - язык такой простой. Остальные 300 страниц рассказывают о предопределенной иерархии классов, которая является шедевром дизайна для объектно-ориентированного языка, основанного на классах, который использует единственное наследование. Вы получите гораздо более глубокое понимание объектов (например, классы - это объекты, у них есть метаклассы, и так далее до бесконечности ... за исключением того, что узел тщательно завязан, чтобы система оставалась конечной), чем вы когда-либо могли бы получить от изучения гибридного языка, такого как Java или C ++. Smalltalk важен не только из-за своей истории, но и из-за своей простоты:

  • Достаточно простой, чтобы вы могли понять весь язык и библиотеки

  • Показывает одну идею (объекты - это все, что вам нужно) доведен до крайности

Всем есть чему поучиться на Smalltalk!

21
ответ дан 24 November 2019 в 14:01
поделиться

I agree with the others. I'm not sure if it's important per se, but it is COOL (imho).

I love that there are no loops or conditionals in the language. If-then-else is a message sent to a boolean object. Objects of type True do one thing, objects of type False do another. (Yes, True and False are subtypes of Boolean, with a single value each, true and false respectively).

It starts out being kind of counter-intuitive, but it does give you a very interesting, and deep, view of how OO programming should work...

6
ответ дан 24 November 2019 в 14:01
поделиться

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

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

18
ответ дан 24 November 2019 в 14:01
поделиться

Smalltalk не только был одним из первых, но и по сей день остается образцом объектно-ориентированного проектирования языков. Более популярные языки, появившиеся позже, - C ++, Java, даже Objective-C - имеют более примитивную объектно-ориентированную среду и более строгие, чем старый добрый Smalltalk. Smalltalk имел повсеместные первоклассные объекты, отличную поддержку самоанализа во время выполнения, очень естественное использование утиной печати и замыканий, которые работали лучше, чем я видел на любом нефункциональном языке. Я имею в виду, что мы говорим о языке, который не имел собственных структур управления (if, while и т. Д.), Но мог создавать их из своей объектной системы таким образом, чтобы это работало без проблем. Насколько это круто?

В наши дни я бы не рекомендовал Smalltalk для интенсивной разработки настольных приложений (IMO просто нет жизнеспособной реализации),

6
ответ дан 24 November 2019 в 14:01
поделиться

Еще одна особенность SmallTalk заключается в том, что среди его выпускников Кент Бек и Уорд Каннингем. Их работа с SmallTalk породила автоматическое тестирование xUnit , шаблоны проектирования программного обеспечения , CRC-карты и другие практики, которые вошли в XP / Agile и т. Д. Таким образом, можно утверждать что SmallTalk внес большой вклад в современный ландшафт программирования.

3
ответ дан 24 November 2019 в 14:01
поделиться

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

11
ответ дан 24 November 2019 в 14:01
поделиться

Да. Загрузите изображение морского побережья в один клик , начните использовать его с помощью учебника от Джеймса Фостера , и вы, по крайней мере, узнаете:

  • как следует создавать веб-приложения;
  • как отлаживать должен работать
8
ответ дан 24 November 2019 в 14:01
поделиться

Если вы знаете только один объектно-ориентированный язык, вам следует рассмотреть возможность изучения второго, третьего и четвертого, чтобы получить более широкую перспективу программирования с использованием объектов. Изучение Smalltalk напрягает ваш мозг, потому что многие знакомые концепции, к которым мы привыкли в других языках (например, if-then-else, for (;;), while () и т. Д.), Отсутствуют в Smalltalk. Очевидно, есть эквиваленты, но Smalltalk работает по-другому, и изучение различных способов решения задач всегда является хорошей идеей.

Удачи.

5
ответ дан 24 November 2019 в 14:01
поделиться

Всего два комментария:

  1. Smalltalk не является объектно-ориентированным, это реальные объекты, только объекты и сообщения в среде.

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

2
ответ дан 24 November 2019 в 14:01
поделиться

Я только начал возрождать свой интерес к Smalltalk, и, на мой взгляд, есть несколько интересных особенностей Smalltalk:

  • Высокопроизводительная среда разработки
  • Встроенная поддержка методологий программирования Agile / Extreme
  • «Чистая» объектная модель
  • Простая в использовании графическая среда

Ничего из этого не делает это особенно полезно для людей, которые не занимаются разработкой программного обеспечения. Я впервые столкнулся с этим, когда увидел пользовательский интерфейс для встроенного устройства, прототипированного на ПК с использованием Smalltalk. Это позволяло очень быстро модифицировать и тестировать пользовательский интерфейс, а по завершении предоставляло разработчикам встроенных систем «исполняемую спецификацию», которая была намного более точной, чем любой документ. Я удивлен, что не видел, чтобы эта техника использовалась гораздо чаще, чем я наблюдал в своих путешествиях за последние 20 лет.

Использование Smalltalk в качестве инструмента для создания прототипов - вот что меня интересует: я думаю, что, учитывая новую проблему, различные подходы к ее решению могут быть испробованы и проверены очень быстро и легко в среде Smalltalk, и как только желаемое решение будет найдено, оно должен быть относительно механическим, чтобы преобразовать его в Java / C ++ / C # и т. д. и т. д. На самом деле, для повторяющихся вещей вполне возможно использовать Smalltalk для генерации кода для частей решения на каком-то другом целевом языке.

4
ответ дан 24 November 2019 в 14:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: