Интерактивный язык программирования? - PullRequest
5 голосов
/ 15 февраля 2010

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

Ответы [ 13 ]

7 голосов
/ 15 февраля 2010

Полагаю, вы ищете что-то похожее на то, как раньше работал BASIC (загрузитесь до приглашения BASIC и начните кодирование).

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

Редактировать: Я собирался напечатать несколько примеров и предоставить ссылки, но интерактивное руководство по IPython , кажется, делает это намного лучше, чем я мог. Хорошей отправной точкой для того, что вы ищете, являются разделы Советы по обработке исходного кода и Управление облегченной версией . Обратите внимание, что в этом руководстве не объясняется, как точно выполнять все, что вы ищете, но оно дает отправную точку для понимания интерактивных функций оболочки IPython.

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

7 голосов
/ 15 февраля 2010

Smalltalk может быть запрограммирован полностью интерактивно, но я бы не назвал приглашение smalltalk «командной строкой». Большинство окружающих окружений тоже такие. Также postscript (как в принтерах), если память служит.

Вы говорите, что хотите написать программу, не видя больше кода, чем умещается в буфере прокрутки в вашем командном окне?

4 голосов
/ 15 февраля 2010

Всегда есть шутка, оригинальная альтернатива Smalltalk с этой характеристикой.

3 голосов
/ 15 февраля 2010

Любая оболочка unix соответствует вашему вопросу.Это происходит от bash , sh , csh , ksh до tclsh для TCL или wish для написания TK GUI.

3 голосов
/ 15 февраля 2010

Единственный способ избежать записи каких-либо файлов - полностью перейти в работающую интерактивную среду.Когда вы программируете таким образом (то есть в интерактивном режиме, например, в IRB или F # interactive), как вы распространяете свои программы?Когда вы выходите из интерактивной консоли IRB или F #, вы теряете весь код, который вы написали в интерактивном режиме.

Smalltalk (см. Современную реализацию, такую ​​как Squeak ) решает эту проблему, и я не знаю никакой другой средыгде вы могли бы полностью избежать файлов.Решение состоит в том, что вы распространяете образ работающей среды (которая включает вашу интерактивно созданную программу).В Smalltalk они называются images .

2 голосов
/ 05 мая 2014

Не уверен в этом, но эта система впечатляюще интерактивна: http://rigsomelight.com/2014/05/01/interactive-programming-flappy-bird-clojurescript.html

2 голосов
/ 15 февраля 2010

TCL может быть запрограммирован полностью интерактивно, и вы можете определенно определять новые процессы tcl (или переопределять существующие) без сохранения в файл.

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

2 голосов
/ 15 февраля 2010

Это действительно вопрос о реализациях, а не о языках, но

  • Smalltalk (попробуйте версию Squeak ), которая хранит всю вашу работу в «интерактивном рабочем пространстве», но она графическая и не ориентирована на командную строку.

  • APL, который был впервые развернут в системах IBM 360 и 370, был полностью интерактивным, используя командную строку на модифицированной пишущей машинке IBM Selectric! Ваши функции APL находились в «рабочем пространстве», которое совсем не напоминало обычный файл.

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

Интересно, что первопроходцы Smalltalk и APL (соответственно, Кей и Айверсон) выиграли награду Тьюринга. (Айверсон получил свою награду Тьюринга после того, как было отказано в праве пребывания в Гарварде.)

2 голосов
/ 15 февраля 2010

Как уже упоминалось, в Python есть несколько хороших интерактивных оболочек, я бы порекомендовал bpython для начинающих вместо ipython. Преимущество bpython в этом заключается в поддержке автозаполнения и диалоговых окон помощи, которые помогут вам узнать, какие аргументы принимает функция или что онаделает (если есть строки документации).

1 голос
/ 25 октября 2015

Clojure

Это функциональный Лисп на JVM. Вы можете подключиться к серверу REPL с именем nREPL, и оттуда вы можете начать писать код в текстовом файле и загружать его в интерактивном режиме по мере работы.

Clojure дает вам что-то похожее на интерактивное модульное тестирование.

Я думаю, что Clojure более интерактивен, чем другие Лиспы, потому что он сильно подчеркивает функциональную парадигму. Когда функции чистые, функции горячей замены проще.

Лучший способ попробовать это здесь: http://web.clojurerepl.com/

ELM

ELM, пожалуй, самый интерактивный из всех, что я знаю. Это очень чистый функциональный язык с синтаксисом, близким к Haskell. Что делает его особенным, так это то, что он разработан вокруг реактивной модели, которая позволяет выполнять горячую замену (изменение кода (функций или значений)) кода. Реактивный бит говорит о том, что всякий раз, когда вы меняете одну вещь, все переоценивается.

Теперь ELM скомпилирован в HTML-CSS-JavaScript. Таким образом, вы не сможете использовать его для всего.

ELM дает вам что-то похожее на интерактивное интеграционное тестирование.

Лучший способ попробовать это здесь: http://elm -lang.org / try

...