Различия между Smalltalk и Python?

*nix: можно прервать SIGSEGV (обычно, этот сигнал повышен прежде, чем отказать), и сохраните информацию в файл. (помимо базового файла, который можно использовать для отладки использования gdb, например).

победа: Проверьте это из MSDN.

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

9
задан Stefano Borini 12 August 2009 в 23:17
поделиться

4 ответа

В Python "базовые" конструкции, такие как if / else , логические операторы с коротким замыканием, а циклы являются частью самого языка. В Smalltalk это все просто сообщения. В этом смысле, хотя и Python, и Smalltalk согласны с тем, что «все является объектом», Smalltalk идет дальше, утверждая, что «все является сообщением»

.

[EDIT] Некоторые примеры.

Условный оператор в Smalltalk:

((x > y) and: [x > z])
  ifTrue: [ ... ]
  ifFalse: [ ... ]

Обратите внимание, что и: - это просто сообщение на Boolean (само создается в результате передачи message > to x ), а второй аргумент и: не простое выражение, а блок, позволяющий выполнять ленивое (т.е. короткое замыкание) вычисление . Это создает другой объект Boolean , который также поддерживает сообщение ifTrue: ifFalse: , принимая еще два блока (т. Е. Лямбды) в качестве аргументов и выполняя один или другой в зависимости от значения логическое.

17
ответ дан 4 December 2019 в 06:35
поделиться

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

  • Изображение означает, что вы делаете все, манипулируя объектами, включая написание и компиляцию кода.
  • Отражение позволяет вам проверять состояние любого объекта. Поскольку классы являются объектами, а их источники - объектами, вы можете проверять код и управлять им
  • У вас есть доступ к текущему контексту выполнения, поэтому вы можете просматривать стек, а оттуда - скомпилированный код и исходный код этого кода. и так далее
  • Стек - это объект, поэтому вы можете сохранить его, а затем возобновить позже. Бинго, продолжения!

Все вышеперечисленное начинает круто складываться:

  • Браузер позволяет исследовать источник буквально всего, включая виртуальную машину в Squeak.
  • Вы можете вносить изменения, которые влияют на вашу живую программу, поэтому нет необходимости перезапускать и переходить к тому, над чем вы работаете
  • Еще лучше, если ваша программа выдает исключение, вы можете отлаживать живой код. Вы исправляете ошибку, обновляете состояние, если оно становится несогласованным, а затем продолжаете свою программу.
  • Браузер сообщит вам, если он считает, что вы допустили опечатку.
  • Абсурдно легко просматривать вверх и вниз по иерархии классов , или узнать, на какие сообщения отвечает объект, или какой код отправляет данное сообщение, или какие объекты могут получать данное сообщение
  • Вы можете проверять и управлять состоянием любого объекта в системе
  • Вы можете сделать любое два объекта буквально меняются местами с помощью стать :,
9
ответ дан 4 December 2019 в 06:35
поделиться

Языковой аспект часто не так важен, и многие языки довольно одинаковы ,

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

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

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

Например:

Все в Smalltalk-80 доступно для модификации из запущенной программы

Какие различия между Python и Smalltalk допускают более глубокие манипуляции, если таковые имеются? Как язык позволяет реализовать компилятор / среду выполнения?

2
ответ дан 4 December 2019 в 06:35
поделиться

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

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

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

Наслаждайтесь игрой с ним, если вы это сделаете. Я играл с Python и мне это нравилось.

Джейкоб

7
ответ дан 4 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

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