На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! В разделе обсуждаются следующие темы:
1) Процесс разработки программного обеспечения.
2) Определение требований к программному обеспечению.
3) Составные части и процесс проектирования (см. Шаблоны проектирования).
4) Документирование программного продукта(проекта).
5) Руководство разработкой программного обеспечения.
6) Проектирование пользовательского интерфейса.
7) Контроль версий проекта (см. Управление версиями в Subversion, Стратегии использования svn).
Модераторы: ElcnU
  
> ЯВУ, наиболее подходящий для создания модифицирующихся "на лету" программ , JIT компиляция
    Посоветуйте язык программирования, который позволяет:
    а) Прямо во время выполнения менять исходный код программы человеком или самой же программой
    б) Непосредственно указать программе, что полученную/сформированную на некотором этапе работы программы простую строковую переменную нужно считать исходным кодом программы и выполнить его.
    К, примеру, в языке AutoHotKey есть функция eval, которая является директивой интерпретатору, что строка является выражением.
    А мне бы хотелось большего, чтобы строку можно было объявить не просто выражением, а фрагментом кода, содержащим операторы, выражения, объявления переменных и т.п.
      forth
        python
          Цитата Grumike @
          forth

          Цитата shm @
          python

          Спасибо.
          Погуглю про эти языки
            Про классику, что, забыли? LISP.

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

            В Python функции и классы являются такими же объектами, как и всё остальное, их можно объявлять, переобъявлять, удалять. Память распределяется и освобождается автоматом. Надо только не забывать указывать контекст исполнения. Для примера можно взглянуть реализацию функции namedtuple из модуля collections. Она генерирует текстовое описание класса, компилирует это описание и возвращает сгенерированный класс.

            В LISP функции формально вообще ничем от данных не отличаются. То есть там можно попросту сформировать структуру списков, соответствующую определению функции и выполнить её. Интерпретатор автоматически откомпилирует её (если поддерживает такую возможность).
              SmallTalk.
                C#
                  Цитата Flex Ferrum @
                  C#

                  Ugh really? :o :)
                  Ну и что-либо скриптовое, js и т.п.

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


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0296 ]   [ 15 queries used ]   [ Generated: 15.04.24, 23:04 GMT ]