Многомерность языков программирования

Форум для предварительного обсуждения тем.
Прежде чем организовать обсуждение в отдельном форуме, полезно убедиться, что четко понимаешь о чем говоришь.
Locked
Preobragenskiy
Posts: 1030
Joined: Sun Sep 05, 2004 11:45 am
Location: Киев

Многомерность языков программирования

Post by Preobragenskiy » Thu Jun 05, 2008 8:16 am

Понятие многомерности интуитивно показывает качественную разницу между разными обьектами, мирами, точками отсчета ... Оно довольно широкое и применяется в разных областях. Но сегодня
хотелось бы обсудить многомерность языков программирования по отношению к построению алгоритмов.

Начнем с того, что любая программа подразделяется на две основопологающие части. Операторы и данные. В большинстве языков программирования, операторы во время выполнения программы ( не проектирования ) есть константа, меняются же входные данные. Итак по одной оси у нас константа, по второй меняющиеся данные, с этого момента можно ввести понятие:
одномерного языка программирования. К ним относятся С, С++, Pascal, Basic или проще говоря почти все процедурные языки :)

Что же такое двумерный язык программирования ? Очевидно что двумерный язык программирования должен менятся в двух направлениях, а именно операторы и данные. К программам которые могут менять свой код выполнения "на ходу" относится давняя надежда всех ИИ институтов Лисп, а также некоторые зачатки по изменению операторов ( классы, функции, методы, свойства ) в ран тайме есть у дот нетовских языков, многих скриптовых языков из веб и др. Хотя правильней всеже тут было выделить только Лисп, остальные имеют возможности поскольку-постольку.

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

С четвертой размерностью посложнее. Напомню первые три оси это у нас: меняющиеся данные, меняющиеся операторы которые оперируют с данными, меняющееся время которое отслеживает состояние программы в каждый момент времени. Что же может быть четвертой размерностью ? Подозреваю это статистика, а именно ось метаинформации о программе. Некоторые зачатки этого есть уже в дот нет есть такое понятие как аттрибуты класса, а у самой программы такие данные как владелец, версия, фирма производитель. Все они отлаживаются на четвертой оси.

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

Существует ли шестая размерность ? И каковы перспективы создания интерпретатора/компилятора создающего 5ти мерные программы ? :)
"Зачем пытаться искуственно выращивать людей, если каждая баба может нарожать их без всякой медицины?"
прф. Преображенский из к/ф "Собачье сердце"

Inex
Posts: 2331
Joined: Mon Jan 05, 2004 10:33 am
Location: Санкт-Петербург

Re: Многомерность языков программирования

Post by Inex » Thu Jun 05, 2008 9:27 am

Preobragenskiy wrote:Хотя правильней всеже тут было выделить только Лисп, остальные имеют возможности поскольку-постольку.
в ruby, к примеру, тоже есть eval, а также возможность создавать и модифицировать классы в ран тайм... так что не "постольку-поскольку"
Preobragenskiy wrote:а именно ось метаинформации о программе
кстати, в ruby есть возможность добавлять и метаинформацию...
Preobragenskiy wrote: о совершенно сложно представить чтобы программа могла мигрировать на этой оси, например с Лисп к С++, дальше к Джаве
а как же метапрограммирование? например, в jetbrains этим занимаются
"Когда Вы говорите, Иван Васильевич, у меня такое чувство, что Вы бредите"

Preobragenskiy
Posts: 1030
Joined: Sun Sep 05, 2004 11:45 am
Location: Киев

Re: Многомерность языков программирования

Post by Preobragenskiy » Thu Jun 05, 2008 9:59 am

Inex wrote: в ruby, к примеру, тоже есть eval, а также возможность создавать и модифицировать классы в ран тайм... так что не "постольку-поскольку"
Если смотреть по мощности то:
1. Полиморфизм самая простая форма кода "который еще не известно как будет выполняться". Мы можем оставить пробелы в своем статическом алгоритме и сказать, что производные классы нам должни динамически предоставить вот в этих и этих частях под алгоритмы - виртуальные функции.

2. Евал чуть более продвинутая штука. Умеет данные интерпетировать как код в местах своего вызова и пытаться его выполнить

3. Но только функциональный язык позволяет переписать программе полностью саму себя. Она может свой код воспринимать не посредственно как данные для алгоритма который снова таки получен на этапе ниже из данных.
Inex wrote: кстати, в ruby есть возможность добавлять и метаинформацию...
Метаинформация это также комментарии в коде, комментирующие код. Но не комментарии, не простейшую метаинформацию нельзя воспринимать как полноценную еще одну размерность языка. Поскольку метаинформация не связана не посредственно с кодом. Она не может меняться самостоятельно во время выполнения. Например частота операторов, количество вызовов на какомто этапе выполнения и так далее, это статистика и метаинформация о алгоритме которая меняется.
Inex wrote: а как же метапрограммирование? например, в jetbrains этим занимаются
здесь позже и поподробней, к сожалению нужно отвлекаться на работу :)
"Зачем пытаться искуственно выращивать людей, если каждая баба может нарожать их без всякой медицины?"
прф. Преображенский из к/ф "Собачье сердце"

Inex
Posts: 2331
Joined: Mon Jan 05, 2004 10:33 am
Location: Санкт-Петербург

Re: Многомерность языков программирования

Post by Inex » Thu Jun 05, 2008 10:23 am

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


Preobragenskiy wrote:Например частота операторов, количество вызовов на какомто этапе выполнения и так далее, это статистика и метаинформация о алгоритме которая меняется.
все это в руби можно реализовать, хотя не сказать чтобы легко, но гораздо легче, чем во многих других языках
"Когда Вы говорите, Иван Васильевич, у меня такое чувство, что Вы бредите"

Preobragenskiy
Posts: 1030
Joined: Sun Sep 05, 2004 11:45 am
Location: Киев

Re: Многомерность языков программирования

Post by Preobragenskiy » Thu Jun 05, 2008 10:57 am

Inex wrote:ээээ.... ты на лиспе и руби программировал или абстрактно рассуждаешь? уверяю тебя, руби гораздо удобнее в переписывании собственного кода программы (если не считать, конечно, представления функций в виде списков в Лиспе... но это представление вылазит боком в других местах)
если уж о функциональных, то можно вспомнить еще и рефал
Я думаю здесь можно было поспорить, но это не принципиально.
Так или иначе двумерные языки есть я назвал Лисп и зачатки в скриптовых языках, ты назвал еще Руби ... и хорошо :wink:
Inex wrote: все это в руби можно реализовать, хотя не сказать чтобы легко, но гораздо легче, чем во многих других языках
Я хочу чтобы ты понимал, что осью можно назвать только "двунаправленную связь". А это означает, что если проектировщиком прошиты какието аттрибуты классов или кода, то они константы. А константа это отсудствие еще одной оси, отсудствие размерности. При двунаправленной связи, программа зависит от своих аттрибутов и меняет свои аттрибуты, на прямую или косвенно :)

В дополнении скажу что здесь легко потерятся на обманчивом пути, что любой процедурный одномерный язык программирования может описать программу любой сложности. Конечно же может, так как Ассемблер может то что С++, С++ то что С#, а С# то что Лисп или вот упомянули Руби :wink:
"Зачем пытаться искуственно выращивать людей, если каждая баба может нарожать их без всякой медицины?"
прф. Преображенский из к/ф "Собачье сердце"

Preobragenskiy
Posts: 1030
Joined: Sun Sep 05, 2004 11:45 am
Location: Киев

Post by Preobragenskiy » Thu Jun 05, 2008 10:58 am

Вернемся в русло самодостаточного 5ти мерно языка программирования :wink:

На сколько его реально создать, насколько он нужен, насколько он будет полезен :)
"Зачем пытаться искуственно выращивать людей, если каждая баба может нарожать их без всякой медицины?"
прф. Преображенский из к/ф "Собачье сердце"

Inex
Posts: 2331
Joined: Mon Jan 05, 2004 10:33 am
Location: Санкт-Петербург

Re: Многомерность языков программирования

Post by Inex » Fri Jun 06, 2008 8:39 am

Preobragenskiy wrote: В дополнении скажу что здесь легко потерятся на обманчивом пути, что любой процедурный одномерный язык программирования может описать программу любой сложности.
это понятно, поэтому я и написал, что на руби некоторые из указанных тобой моментов реализуются гораздо удобнее, чем на многих других языках, но, конечно, не реализуются полностью...
"Когда Вы говорите, Иван Васильевич, у меня такое чувство, что Вы бредите"

Inex
Posts: 2331
Joined: Mon Jan 05, 2004 10:33 am
Location: Санкт-Петербург

Post by Inex » Fri Jun 06, 2008 8:48 am

Preobragenskiy wrote: На сколько его реально создать, насколько он нужен, насколько он будет полезен :)
если честно, то фиг знает
сам периодически задумываюсь, а надо ли все это... вроде, прикольно, вещи интересные, но как-то реальных задач, где это было бы действительно нужно, почему-то у меня не наблюдается...
"Когда Вы говорите, Иван Васильевич, у меня такое чувство, что Вы бредите"

Preobragenskiy
Posts: 1030
Joined: Sun Sep 05, 2004 11:45 am
Location: Киев

Post by Preobragenskiy » Fri Jun 06, 2008 11:28 am

Inex wrote:
Preobragenskiy wrote: На сколько его реально создать, насколько он нужен, насколько он будет полезен :)
если честно, то фиг знает
сам периодически задумываюсь, а надо ли все это... вроде, прикольно, вещи интересные, но как-то реальных задач, где это было бы действительно нужно, почему-то у меня не наблюдается...
Здесь ошибка, что на вещь нового уровня пытаются повесить по традиции всех собак которые прекрасно реализуются на процедурных одномерных языках. Для начала нужно отступить от этого и понять, что старые задачи из компьютерной области новый подход будет решать с эффективностью обычного человека и это хорошо :)
"Зачем пытаться искуственно выращивать людей, если каждая баба может нарожать их без всякой медицины?"
прф. Преображенский из к/ф "Собачье сердце"

Inex
Posts: 2331
Joined: Mon Jan 05, 2004 10:33 am
Location: Санкт-Петербург

Post by Inex » Fri Jun 06, 2008 12:04 pm

Preobragenskiy wrote: старые задачи из компьютерной области новый подход будет решать с эффективностью обычного человека и это хорошо :)
гы...
"Когда Вы говорите, Иван Васильевич, у меня такое чувство, что Вы бредите"

Preobragenskiy
Posts: 1030
Joined: Sun Sep 05, 2004 11:45 am
Location: Киев

Post by Preobragenskiy » Fri Jun 06, 2008 2:23 pm

Inex wrote:
Preobragenskiy wrote: старые задачи из компьютерной области новый подход будет решать с эффективностью обычного человека и это хорошо :)
гы...
Эт интересная исследовательская задача :wink:
"Зачем пытаться искуственно выращивать людей, если каждая баба может нарожать их без всякой медицины?"
прф. Преображенский из к/ф "Собачье сердце"

РЫМ
Posts: 27
Joined: Sat May 03, 2008 2:13 am
Location: из народа

Post by РЫМ » Tue Jun 17, 2008 5:57 am

вот вот появится в широком доступе новый элемент который может сильно изменить архитектуру процессоров, - мемристор. каким будет ассемблер под такую архитектуру? может быть это повлечет смену концепций программирования и многомерные языки станут железной необходимостью. пождем пока живем :?

Locked

Who is online

Users browsing this forum: No registered users and 2 guests