А вот вам и новый язык. Зацените. Можно ругать.


Добавляю к ппц...

И да,
и что самый объектный из объектных смол ток все-таки буквы представляет как коды, а не объекты.
таки уже не самый самый. Советую посмотреть на Eiffel. Автор языка намного интересней и проще прививает любовь к своему детищу, чем это получается у ТС ;)

И еще раз да,
Да. Объект класса может обладать свойствами, методами и событиями не определенными в классе. А собственными.

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

Правда я сильно тщательно не читал, но из того, что видел ничего нового не заметил.
Вопрос: единый тип данных byte позаимствован из objective C или смоллтолк (там он id) ?
 
Тут встречается неразрешимая проблема в других языках.. Один объект обладает свойством, которого нет в классе. Так и хрен с ним.. Мы создаем объект этого класса и добавляем (а можем и удалить.. Так, например, пингвин принадлежащий классу птиц, не имеет свойства "летать".) ему недостающее свойство, которое присуще только этому объекту!!! И присваиваем этому свойству значение. И вся система продолжает работать как ни в чем не бывало.

а в чем заключается неразрешимость? К примеру на C/C#/Java добавляем внутри класса коллекцию для хранения свойств и после инстанцирования добавляем, удаляем нужные/ненужные свойства. При этом получаем описанную вами ситуацию - класс не содержит описания специфичных свойств, но их можно добавить объекту после инстанцирования. Так в чем-же тут заключается суть неразрешимости? :confused:

Создал класс Бабочек.. и заполняй документ объектами.. А потом сохрани..

Да. Объект класса может обладать свойствами, методами и событиями не определенными в классе. А собственными.

а что мешает создать абстрактный класс бабочки, а специфические свойства и методы определить в наследниках? :confused:

Честно говоря ваше понимание сущности "класс" больше подходит под понятие "интерфейс"

В нагрузку можно добавить, что эта база данных спокойно может быть распределенной. Протокол обмена тоже универсальный. Для передачи объекта необходимо отправить на удаленный комп описание класса и согласно описания класса осуществляется прием/передача.

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

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

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

каждый язык имеет свои особенности, чтобы хорошо использовать язык не достаточно изучить его синтаксис, кроме этого нужно изучить как принято реализовывать те или инные сущности, какие есть подводные камни, как их принято обходить в этом языке. У разных языков есть много общего, но есть и особенности, для которых нет аналогов в родственных языках. Изучение всех этих тонкостей и занимает основное время, сам синтаксис как правило можно изучить достаточно быстро (порой за пару часов), а вот на изучение всего остального уходит основная масса времени :)
 
Останнє редагування:
насколько я понял по примерам, язык заточен под обработку документов и текста. А как насчет обработки звука например, видео, сетевые продукты? Ведь как правило, средства для этого предоставляет операционная система, а язык должен поддеоживать системные вызовы.
Кроме того, непонятно как будет работать приложение, которое должно висеть в памяти и отвечать на пользовательские события (нажимания кнопок и т.д.), интерфейс в общем, если в языке предусмотрено в основном последовательное выполнение.

Правда я сильно тщательно не читал, но из того, что видел ничего нового не заметил.
Вопрос: единый тип данных byte позаимствован из objective C или смоллтолк (там он id) ?

Операционная система предоставляет механизм событий. Прерывания преобразуются в события и далее как обычно. Системные вызовы, это также события. И одной из реализованых проблем является именно не последовательное выполнение. Особенно, это касается программирования автоматов. События хоть и пишутся последовательно, выполняются совсем не последовательно. Это нечто похожее на сети Петри, но я придумал свои сети. Они полностью моделируют выполнение событий в LADA. Вместе с естественным ограничением (а именно, последовательным написанием текста и др.) удалось избежать нехороших зацикливаний и др. неприятностей. Причем позволяя распараллеливание. Замечу, что зацикливание может быть и хорошим. Так для автоматов, это естественная ситуация. Я бы не хотел здесь теорию.. Думаю вы представляете проблему. Могу сказать что получилось удачно. Таким методом легко реализуются "машины управляемые потоком данных" если вы помните такой громкий японский провалившийся проект в 80-х, где обещали машины пятого поколения. Собственно и провалился он потому как его было сложно программировать. Идея то хорошая. На Lada его можно легко реализовать. Как и еще некоторые классы задач в которых много условных переходов, обработка которых зависит от внешних событий. Последовательно такую программу не напишешь, а используя события легко.
Тип Byte просто базовый. К базовым относятся еще 5 классов (System, Class, Dim, Document и Type), на которых строится вообще все. Но, остальные базовые классы, это скорее правила и только Byte опеределяет размер памяти необходимый для объекта. Потому без него никак. Базовых классов достаточно для загрузки системы.
Замечание: Приложений в LADA нет. Только библиотеки классов. И форматов различных нет. Логика хранения данных в файлах предполагает библиотечные классы ссылка на которые находится в документе и собственные классы документа. Таким образом, формат документа содержиться в самом документе.

а в чем заключается неразрешимость? К примеру на C/C#/Java добавляем внутри класса коллекцию для хранения свойств и после инстанцирования добавляем, удаляем нужные/ненужные свойства. При этом получаем описанную вами ситуацию - класс не содержит описания специфичных свойств, но их можно добавить объекту после инстанцирования. Так в чем-же тут заключается суть неразрешимости? :confused:
Это можно назвать решением, но назвать его простым не могу. Это надо класс надо редактировать. И все заново транслировать. А в моем случае класс может находится в библиотеке и не обязательно его вообще трогать. Все необходимые операции можно выполнить при создании объекта. Причем свойства это частный случай. Более естественным будет случай когда объект имеет собственные события. Не все имеет смысл предусматривать в классе, а иногда это просто не возможно.

а что мешает создать абстрактный класс бабочки, а специфические свойства и методы определить в наследниках? :confused:
Это тоже самое что создавать класс для каждого объекта. А смысл?

Честно говоря ваше понимание сущности "класс" больше подходит под понятие "интерфейс"
С интерфейсами и прочими радостями см. раздел 4. Реализация. Наследование. Интерфейсы. Прецеденты. Роли. Стили. Модели. Сценарии.
Там много нового и спорного.


а каким образом вы собираетесь восстанавливать внутреннюю структуру объекта на приемной стороне, если в вашей терминологии класс объекта не является описанием внутренней структуры объекта, а является лишь интерфейсом к некоторому черному ящику? Ну передали вы описание класса, но это по вашей терминологии только интерфейс, по нему невозможно восстановить полноценную структуру объекта... И как восстанавливать?
Хороший вопрос. Долго придумывал. Но, придумал. Получилось естественно. Это касается работы виртуальной машины. Она выполняет свойства объекта (инструкции тоже объекты), а затем вложеные объекты. Вложеные объекты можно добавить к любому объекту в группе (обычно фигурные скобки) сразу за определением объекта. См. общий синтаксис определения объекта. Так при приеме свойств объекта определеных в классе (а именно они составляют то, что подлежит передаче) идет проверка на наличие вложеных объектов в принимаемый объект. Если там что-то есть, это тоже необходимо принять.

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

Уже ответил.

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

Вот-вот.. Так вот уменьшением этих сущностей я и занимался. К этому могу только добавить что важно и название этих сущностей. И простой синтаксис. Не много надо ума пообозначать знаками и названиями все что приходит в голову. Это мысли в девизе всей системы, введение в которую я не давал, что б не грузить народ. Но сейчас уже можно.
Большое спасибо за эти вопросы. Буду благодарен за следующие.
 
Останнє редагування:
2ТС, отвечаю в чем проблемы перехода с одного языка на другой.
По приколу переходить с С++ на Java, а с оной на Objective C можно в случае крайнего безделия, любой язык - это прежде всего инструмент созданный решать определенные задачи. Даже у родственных языков задачи могут существенно различаться. Попробую объяснить чем.
Когда писал С++ и привык к тому же STL нужно было определенное время чтоб осмотреться как аналогичные вещи сделаны в Java, пощупать их, сравнить в производительности. Поработав к Java привык в автоматической сборке мусора, перейдя на Objective C пришлось опять вспоминать как и когда ручками особождать ресурсы (для мобильных устройств сборщик мусора роскошь). Это в общих чертах.
А если по своей части, то на С++ я писал большей частью используя WinAPI, когда перешел на Java то писал web сервисы, для мобильных устройств тоже свои заморочки и в каждом случае используется своя технология. В общем-то знания сервлетов мало чем могут помочь при разработке программы которая реагирует на события гироскопа =) Думаю моя мысль понятна.

Думаю, что понятна. Хотя каждый понимает по своему. В меру своего опыта, и прочих не материальных штучек. Вот, посмотрев на все эти дела.. А начинал я с ассеблеров, (алгол только в универе), паскаль, и т.д..потом vs.. Думал над тем что не все так как хотелось бы.. Ну, вот работал, работал.. Считаю что результат достойный что б заменить вообще старую технологию и редактирования и программирования. Потери эффективности будут на однопроцессорном по сравнению с с+. Но, в общем задачи будут решаться эффективней.. Система легко ложится на классическую архитектуру. Не вступал в спор с любителями ассемблеров, но здесь скажу. На ассемблере можно писать небольшие участки программ. Всякий кто знаком с теорией оптимизации, должен понимать, что практически не возможно вручную применить все методы оптимизации если переменных больше нескольких деятков и т.п. Просто не хватит никаких мозгов. И чем выше уровень языка, тем больше информации для оптимизации.
Сори. Малость оффтоп... Но, мне кажется мне удалось найти баланс. Распределение памяти (и, как следствие, сбор мусора) конечно, жрет ресурсы. Выход только в возможности менять логику их работы. Как и в распределении процессоров и в использовании кэш памяти. Эти средства предусмотрены. На все случаи жизни быть универсальным не получится. Ну, так необходимо предоставить средства для управления ресурсами. Кстати, это еще один повод для применения оптимизатора.

JAVA хорош в первую очередь тем, что все задумки брались не с воздуха и теории, а могли быть достаточно эффективно реализованы. За что авторам огромный респект. Но это не предел развития.
 
К сожалению ваша идея это утопия! В чём плюс этого языка я так и не понял... Например, C# - полностью объектный язык, ипользующий фреймворк, в котором можно реализовывать всё что душе угодно. F# - необходим для малобюджетных и малоразмерных бухгалтерских приложений. J# позволяет всем Java-программистам перейти на .net и т.д. В xml делать ООП? Зачем? Кроме того, для определения типа объекта смело можно использовать XmlSchema, и XML разрабатывался как расширеный язык разметки, а не программирования. Никакой пользы от языка нет обсалютно, а создать что то, полезное и мощное, своими силами вы врдяли сможете, переплюнуть таких монстров как Microsoft врядли получиться...(((

Вот разработать язык, расширяющий возможности рефлексии и мультиобъектности и мультиобъектнобезопастности и валидно определения, вот это идея.... как сказать первые шаги в разработке языка, позволяющего реализовывать элементы ИИ. Но мультиобъектность, как я недавно узнал к своему разочарованию уже реализована в 2010 студии, но зато мне не придёться парить голову и воспользоваться этими чудесными вохможностями))
 
Это можно назвать решением, но назвать его простым не могу. Это надо класс надо редактировать. И все заново транслировать. А в моем случае класс может находится в библиотеке и не обязательно его вообще трогать. Все необходимые операции можно выполнить при создании объекта. Причем свойства это частный случай. Более естественным будет случай когда объект имеет собственные события.

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



Это тоже самое что создавать класс для каждого объекта. А смысл?

собственно создавать классы для каждого объекта можно в рантайме, и спокойно работать с ними - с помощью рефлексии. Писать классы в редакторе для этого не нужно, программа сама напишет нужный класс и инстанцирует его, с этим проблем в C# например нет. Возникает неудобство с написанием кода, работающим с такими динамическими классами - код получается громоздким и тяжело читаемым, но это тоже решается добавлением поддержки dynamic typing в синтаксис языка. В последних версиях C# это поддерживается.

Другое дело что непонятно - где вы собираетесь брать код методов в рантайме для новых объектов, если на этапе компиляции этот код не был задан и не было известно как его задать? :confused:
 
К сожалению ваша идея это утопия! В чём плюс этого языка я так и не понял...
Но, она работает. А насчет плюсов я так понял с нейронными сетями вы знакомы. Значит интересуетесь. Обратите внимание на логические и функциональные языки и их возможности. И почуствуйте разницу. Хотя бы это. Поверьте будет интересно.

Например, C# - полностью объектный язык, ипользующий фреймворк, в котором можно реализовывать всё что душе угодно. F# - необходим для малобюджетных и малоразмерных бухгалтерских приложений. J# позволяет всем Java-программистам перейти на .net и т.д. В xml делать ООП? Зачем? Кроме того, для определения типа объекта смело можно использовать XmlSchema, и XML разрабатывался как расширеный язык разметки, а не программирования. Никакой пользы от языка нет обсалютно, а создать что то, полезное и мощное, своими силами вы врдяли сможете, переплюнуть таких монстров как Microsoft врядли получиться...((
Можно ничего не делать, а можно и делать. Я предпочитаю делать. И опять про XML. Вы посты читаете? Про рекомендованые файлы уже молчу. XML и TLL принципиально разные вещи. Эту разницу я уже объяснял.

Вот разработать язык, расширяющий возможности рефлексии и мультиобъектности и мультиобъектнобезопастности и валидно определения, вот это идея.... как сказать первые шаги в разработке языка, позволяющего реализовывать элементы ИИ. Но мультиобъектность, как я недавно узнал к своему разочарованию уже реализована в 2010 студии, но зато мне не придёться парить голову и воспользоваться этими чудесными вохможностями))
Каждому свое. Предпочитаешь не парить, не парь. Я предложил свой вариант. Будем обсуждать студию 2010 или таки систему LADA?

ничего сложного в том чтобы добавить в описание класса одну строчку, добавляющую коллекцию (хранения свойств или обработчиков событий), не вижу :)
Заново транслировать не нужно - класс транслируется один раз, после этого его описание находится в библиотеке и необязательно его вообще трогать. Все необходимые операции можно выполнить при создании объекта - создаем новый объект класса из библиотеки, добавляем и добавляем в него нужные свойства и обработчики событий... :)
У меня впечатление такое, что после редактирования класса его таки прийдется оттранслировать. Но, дело не в том, что можно изменить класс, а в том, что этого можно не делать, если оно того не стоит. Вот приведу пример привязки события (кстати, события у меня здорово отличаются от общепринятых) переменной Integer. Изменять ради этого класс Integer сори.. не разумно.

Допустим мы анализируем текст длиной Len и с индексом анализируемого символа Ind. При каждом анализе нам необходимо проверять символ, не последний ли он в тексте. Иногда сложно организовывать проверку на конец текста каждый раз, да и документ редактируется, что изменяет его размер. Можно потерять проверку при редактировании или забыть её выполнить. Создадим событие конец текста (EndText). Подключив процедуру обработки этого события, мы гарантированы от проблем с анализом счетчика на конец текста при любом редактировании.

Пример 1. Определение события EndText.

Dim Len: Integer ' Длина текста
Dim Ind: Integer ' Индекс проверяемого символа
{ New EndText: Event ' Создание события EndText
{Condition=: (Len=Ind) Connection.Add(Ind.Change)
}
}

Определенное таким образом событие EndText работает так. При возникновении события Ind.Change (Событие изменения значения Ind) запускается проверка выражения (Len=Ind). Если это выражение истинно, то событие EndText считается произошедшим, и если для него определена процедура обработки события, то она запускается на выполнение.


собственно создавать классы для каждого объекта можно в рантайме, и спокойно работать с ними - с помощью рефлексии. Писать классы в редакторе для этого не нужно, программа сама напишет нужный класс и инстанцирует его, с этим проблем в C# например нет. Возникает неудобство с написанием кода, работающим с такими динамическими классами - код получается громоздким и тяжело читаемым, но это тоже решается добавлением поддержки dynamic typing в синтаксис языка. В последних версиях C# это поддерживается.

Другое дело что непонятно - где вы собираетесь брать код методов в рантайме для новых объектов, если на этапе компиляции этот код не был задан и не было известно как его задать? :confused:
Повторюсь. А можно и не создавать классы. По поводу где брать код, это уже в глубину полезем. Понятно, что этот вопрос продуман. Частично, я это рассказывал описывая алгоритм приема-передачи.
 
Останнє редагування:
У меня впечатление такое, что после редактирования класса его таки прийдется оттранслировать.

Один раз класс действительно прийдется скомпилировать - после того как он написан, или вы предлагаете использовать класс, код которого ни разу не компилировался? :)

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

подписываться на изменение переменной типа integer - оригинальное решение :іржач:

Однако я не пойму зачем для этого изменять класс Integer? :confused:

В классическом языке с общепринятной объектной моделью, подписка происходит без необходимости модификации класса ;)
Например:

Код:
class MyParser
{
   private Integer m_len;
   private Integer m_ind;

   public MyParser()
   {
      m_ind = new Integer(0);
      m_len = new Integer(0);
      m_ind.Change += m_ind_ChangeHandler;  // подписка на событие Change
   }

   private m_ind_ChangeHandler(Integer oldValue)
   {
       if(m_ind >= m_len)
       {
           // обрабатываем выход индекса за пределы допустимых значений
       }
   }
}

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

А вообще, похоже в Харькове, новая достопримечательность...
 
Один раз класс действительно прийдется скомпилировать - после того как он написан, или вы предлагаете использовать класс, код которого ни разу не компилировался? :)
Для особо одаренных повторюсь. В системе LADA нет самой необходимости редактировать класс. Добавляются новые свойства, методы и события непосредственно к объекту. Разницу уловите. Ну, уже не первый раз пишу!!!

подписываться на изменение переменной типа integer - оригинальное решение :іржач:

Однако я не пойму зачем для этого изменять класс Integer? :confused:
Где я писал о необходимости изменять класс? Я ж пятый раз вам пишу о том, что такой необходимости нет. И над чем смеемся?
В классическом языке с общепринятной объектной моделью, подписка происходит без необходимости модификации класса ;)
Например:

Код:
class MyParser
{
   private Integer m_len;
   private Integer m_ind;

   public MyParser()
   {
      m_ind = new Integer(0);
      m_len = new Integer(0);
      m_ind.Change += m_ind_ChangeHandler;  // подписка на событие Change
   }

   private m_ind_ChangeHandler(Integer oldValue)
   {
       if(m_ind >= m_len)
       {
           // обрабатываем выход индекса за пределы допустимых значений
       }
   }
}

как видим используя существующие языки, без каких-либо хитростей можно подписаться на событие класса Integer, при этом модифицировать класс Integer нет никакой надобности
Ехидное замечание про модификацию класса Integer пропустим. Думаю с пятого раза должно дойти что это и не предлагается. Вы считаете ваш пример без хитростей? А парсер? Ну, хотя бы количество строк посчитайте для сравнения. Но, это еще мелочи. Есть два серьезных замечания.
1. Выполнение. Мой вариант будет работать эффективней. Я не говорю о том, какой код добавит парсер, хочу обратить внимание на то, что в вашем случае выполнение все проверок может происходить только последовательно. При реализации моей логики проверка на возникновение события (причем вместе с проверкой условного оператора на конец текста) может выполняться параллельно. Что справедливо для вообще всех событий, и, конечно, будет реализовано. Повторюсь только проверка на выполнения события может выполняться параллельно, а не сама процедура обработки события. Но, этих проверок может быть очень много.
2. Логическая сложность. В моем варианте событие имеет свое имя непосредственно связанное с содержанием решаемой проблемы. И разбираться и отлаживать мою программу будет проще. Потому как это решение логичней. Вы же не будете возражать что встретив в тексте программы имя "End Text" информативней чем Change. И это не мелочи.

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

А вообще, похоже в Харькове, новая достопримечательность...

Способности размышлять присущи не Вам одному. Не льстите себе. И прошу высказываться по существу предложеного. Бла-бла-бла на тему вообще не интересны. Я просил замечания по теме. Имеете? Плиз.. А если нет времени почитать, или ума что б понять, то стоит ли флудить?
 
1. Выполнение. Мой вариант будет работать эффективней. Я не говорю о том, какой код добавит парсер, хочу обратить внимание на то, что в вашем случае выполнение все проверок может происходить только последовательно. При реализации моей логики проверка на возникновение события (причем вместе с проверкой условного оператора на конец текста) может выполняться параллельно. Что справедливо для вообще всех событий, и, конечно, будет реализовано. Повторюсь только проверка на выполнения события может выполняться параллельно, а не сама процедура обработки события. Но, этих проверок может быть очень много.
2. Логическая сложность. В моем варианте событие имеет свое имя непосредственно связанное с содержанием решаемой проблемы. И разбираться и отлаживать мою программу будет проще. Потому как это решение логичней. Вы же не будете возражать что встретив в тексте программы имя "End Text" информативней чем Change. И это не мелочи.

вообщето это ересь, если я правильно понял суть подхода - все нужно делать наоборот, изобретать велосипеды, код усложнять, решение выбирать самое запутанное, как можно чаще наступать на грабли и т.п. :) Как говорится "мы простых путей не ищем" :D
Удачи в нелёгкой борьбе с ветряными мельницами :D
 
Инетресен такой вопрос, если методы добавляются непосредственно к объекту, то судя по всему в процессе выполнения программы, мы можем динамически добавить объекту метод, свойство, событие или удалить его.
Если это так, то какое в этом преимущество? Мне в программе надо будет постоянно проверять есть у объекта какой то метод или нету прежде чем его вызвать, потому как априоре я как разработчик не имею 100-процентной гарантии, что объект какого - то класса с написанными для него методами, свойствами и событиями их имеет на данном этапе выполнения, более того не может ли стать так, например что два объекта класса "Яблоко" через какое то время станут "Комбайном" и "Укупником".
И мне все это придется как то отслеживать или все время перед каждым вызовом функции делать проверку, а есть ли там такая функция? А если я добавлю туда метод, а там уже с таким именем есть, что будет - он его переопределит или не добавит? Если переопределит, то не нарушит ли это работу других, связанных с ним методов?
 
Способности размышлять присущи не Вам одному. Не льстите себе. И прошу высказываться по существу предложеного. Бла-бла-бла на тему вообще не интересны. Я просил замечания по теме. Имеете? Плиз.. А если нет времени почитать, или ума что б понять, то стоит ли флудить?

Ну незнаю. Если размышлять умеете, то ответьте на вопрос: Почему разумные люди сначала, ставят задачу, а потом ее решают, а не наоборот.

И как следствие, вопрос непосредственно по LADA: А какие задачи, ваша платформа будет решать, лучше чем все остальные? Перефразирую для размышления :). Почему Я должен буду использовать вашу LADA?

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

Для начала, скажу что классов никто не отменял. Второе, я не говорил что динамически можно добавлять, методы, свойства, и события. Их можно добавлять при создании объекта. Это совсем не динамически. Если позволить это делать динамически, я не представляю как будет выглядеть распределение памяти и сборщик мусора. Это явно лишнее. Но, динамически можно включать/выключать и переназначать процедуру обработки события.

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

Мне в программе надо будет постоянно проверять есть у объекта какой то метод или нету прежде чем его вызвать, потому как априоре я как разработчик не имею 100-процентной гарантии, что объект какого - то класса с написанными для него методами, свойствами и событиями их имеет на данном этапе выполнения, более того не может ли стать так, например что два объекта класса "Яблоко" через какое то время станут "Комбайном" и "Укупником".
И мне все это придется как то отслеживать или все время перед каждым вызовом функции делать проверку, а есть ли там такая функция? А если я добавлю туда метод, а там уже с таким именем есть, что будет - он его переопределит или не добавит? Если переопределит, то не нарушит ли это работу других, связанных с ним методов?
Здесь слишком много вопросов. Надо бы разделить. Я так не пойму на что отвечать.
Если интересны правила наследования, то смотри документ

А как же "Унифицированный доступ" (один из пяти базисных принципов ОО метода)
А что под этим понимается? Написание в тексте? Или как оно выполняется? Или это про полиморфизм? Это разные вещи. Да и не молюсь я на ОО. И вам не советую. В чистом виде мою систему нельзя назвать ОО. При обсуждении было решено, что это скорее формы (есть еще такое понятие) я и с этим не согласен.. Все-таки ближе к ОО. Но это теоритезирование. Оно вам надо? Вот что предложил, то и предложил. Но смотрю, тут гении пару строк прочитают, чего-то от себя придумают, и мазохируют на свою придумку. Господа, читайте.. Иначе обсуждения не получается.
 
Для начала, скажу что классов никто не отменял. Второе, я не говорил что динамически можно добавлять, методы, свойства, и события. Их можно добавлять при создании объекта. Это совсем не динамически. Если позволить это делать динамически, я не представляю как будет выглядеть распределение памяти и сборщик мусора. Это явно лишнее. Но, динамически можно включать/выключать и переназначать процедуру обработки события.

В функиональном программировании есть такое понятие как рекурсивный тип данных. Например для описания бинарного дерева достаточно определения такого алгебраического типа данных в Haskell:
data Tree a = Node a (Tree a) (Tree a)
| Empty
deriving (Show)

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

Собственно и эта задача решена в функциональной парадигме программирования.

Например, в системе типов Хаскель очень легко и естественно выражаются многие идеи. Одна из них классы типов (typeclasses) — собственно наименее чуждая концепция в Хаскель из процедурного и объектно-ориентированного программирования. Однако классы типов — это совсем не то же самое, что классы в классическом ООП Си++. Они очень похожи на шаблоны классов в Си++.
Особенностями использования классов типов (typeclasses) является:
1 определяют абстрактный интерфейс (который не имеет реализации по умолчанияю)
2 позволяют создавать несколько независимых реализаций интерфейса (таким образом, любой класс может стать экземпляром класса типов, если предоставит реализацию его методов)
3 полиморфны и поддерживают наследование

Собственно типы классов (typeclasses) — это не классы С++, а абстрактные интерфейсы, и экземпляры классов это не объекты, а реализации абстрактных интерфейсов.

очень советую ознакомиться со статьей:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі


А что под этим понимается? Написание в тексте? Или как оно выполняется? Или это про полиморфизм? Это разные вещи. Да и не молюсь я на ОО. И вам не советую. В чистом виде мою систему нельзя назвать ОО. При обсуждении было решено, что это скорее формы (есть еще такое понятие) я и с этим не согласен.. Все-таки ближе к ОО. Но это теоритезирование. Оно вам надо? Вот что предложил, то и предложил. Но смотрю, тут гении пару строк прочитают, чего-то от себя придумают, и мазохируют на свою придумку. Господа, читайте.. Иначе обсуждения не получается.

Собственно прочитал, пока многое не понятно, но многие концепции я уже встречал в функциональных языках программирования.

Знакомы ли вы с функциональной прадигмой?
Провели ли вы обзор возможностей современных функциональных языков, в частноcти Haskell?
Я знаком как функциональной парадигмой (ФП) так и с ООП, после второго прочтения вашего трактата я не увидел вашего личного вклада ни в одну из этих парадигм, напротив, все это уже изобретено до вас.

Вы постоянно сравниваете свой язык с ООП, да у ООП есть недостатки, но собственно что нового вы считаете сделали по сравнения с ФП?

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

P.S. Ваш энтузиазм заражает, мне не хотелось бы что вы потратили его на изобретение не самого лучшего велосипеда в Мире - "Украина".
 
Останнє редагування:
Собственно прочитал, пока многое не понятно, но многие концепции я уже встречал в функциональных языках программирования.

Знакомы ли вы с функциональной прадигмой?
Знаком. Пока не вижу ничего плохого в том, что присутствуют знакомые концепции. Это ж затравка. Для начала достаточно, а дальше посмотрим.

Провели ли вы обзор возможностей современных функциональных языков, в частноcти Haskell?
Я знаком как функциональной парадигмой (ФП) так и с ООП, после второго прочтения вашего трактата я не увидел вашего личного вклада ни в одну из этих парадигм, напротив, все это уже изобретено до вас.
Так что бы обзор, так не проводил. Но, определенная работа, конечно, же проведена. Вот сейчас просмотрю то, что вы советуете. Спасибо за ссылку. Пару дней мне для анализа.

Вы постоянно сравниваете свой язык с ООП, да у ООП есть недостатки, но собственно что нового вы считаете сделали по сравнения с ФП?
Это не я сравниваю. Вопросы задают, надо ж отвечать. Вот все спрашивают про новое и никто пока не обратил внимания что там две разные по смыслу операции присваивания. Это важно что б почуствовать разницу. И, не все сразу. Понемногу будет понятна разница и в другом. Например, в таких понятиях как группирование и реализация. Вы первый обратили внимание на возможности фунциональной парадигмы. Пока все рвут на части классы и объекты:)

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

P.S. Ваш энтузиазм заражает, мне не хотелось бы что вы потратили его на изобретение не самого лучшего велосипеда в Мире - "Украина".
Согласен. Трудно придумывать примеры. Но, я стараюсь. Опять же. Не все сразу. Думаю данное обсуждение поможет мне и примеры придумывать.
 
Согласен. Трудно придумывать примеры. Но, я стараюсь. Опять же. Не все сразу. Думаю данное обсуждение поможет мне и примеры придумывать.

Ну чтож, желаю удачи.

Но вы должны четко понимать, что бы ваша концепция хотя бы заинтересовала когото, вы четко должны, покрайней мере для себя! выделить и желательно записать:

- актуальность решаемой вами задачи;
- связь с существующими парадигмами;
- новизну полученных результатов.
 
Назад
Зверху Знизу