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

          Цитата shm @
          python

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

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

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

            В LISP функции формально вообще ничем от данных не отличаются. То есть там можно попросту сформировать структуру списков, соответствующую определению функции и выполнить её. Интерпретатор автоматически откомпилирует её (если поддерживает такую возможность).
            Всё написанное выше это всего лишь моё мнение, возможно ошибочное.
              SmallTalk.
              “Object-oriented design is the roman numerals of computing.” — Rob Pike
              All software sucks
                C#
                "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                Морган Фриман
                Мой учебник C++ - это просто!
                Я на blogspot.com.
                  Цитата Flex Ferrum @
                  C#

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

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


                  Рейтинг@Mail.ru
                  [ Script Execution time: 0,0804 ]   [ 17 queries used ]   [ Generated: 22.09.17, 06:12 GMT ]