Forth
http://fforum.winglion.ru/

обсуждение (нестандарта) со срывом во флуд
http://fforum.winglion.ru/viewtopic.php?f=7&t=2950
Страница 1 из 9

Автор:  mOleg [ Вс май 26, 2013 18:51 ]
Заголовок сообщения:  обсуждение (нестандарта) со срывом во флуд

Majestio писал(а):
Если рассматривать создание Форт-среды по данному стандарту

это все же не стандарт, а скелет - набросок стурктуры, какую хотелось бы видеть в стандарте.

Majestio писал(а):
Какую часть стандарта придется писать в машиных командах

таки часть компилятора, а не стандарта 8)
Достаточно реализации первого уровня.
Т.е. минимальный набор именно эти 17 определений, однако, набор хотя и достаточный, но не слишком удобный, т.е. на низком уровне стандартно должно быть реализовано около 100 определений.
Причем, все они достаточно просты в реализации.

Majestio писал(а):
а какую уже можно будет продолжать на самом Форте?

Рекомендую посмотреть в код системы eforth - это будет исчерпывающий ответ.

Majestio писал(а):
И будет ли впоследствии замена предыдущего кода (написанного на машинном языке) кодом на Форте? Если "да", то до какого предела?

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

Автор:  Majestio [ Вс май 26, 2013 21:56 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

Я вот для себя разворачивание вижу вот в такой последовательности:

Изображение

  1. Сперва пишется вся ВМ на Perl
  2. Потом часть кода написанного на Perl - переписывается на Forth с расширением словарей
  3. Потом весь код, который можно переписать на Forth - переписывается
  4. Потом составляется Мета Язык (таблицы настроек) по построению загрузчиков под архитектуры на Машинном Коде, этот язык обрабатывается Fort'ом и строит исполняемый/загружаемый модуль под целевую архитектуру.

Пока вот такое сложилось у меня понимание. Единственная вещь, которую я не отметил - Мета-Язык должен еще принимать участие в "настройке" библиотек для нужной архитектуры перед сборкой. Как минимум, выбрасывать "бесполезный" для архитектуры код. Ни к чему, к примеру, программируемуму тостеру функции работы с числами с плавающей точкой.

Автор:  Majestio [ Вс май 26, 2013 21:58 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

Кстати, возможно и сам Perl может остаться в роли Мета-Языка

Автор:  gudleifr [ Вс май 26, 2013 22:06 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

Majestio писал(а):
Я вот для себя разворачивание вижу вот в такой последовательности
А где проходит разграничение между Perl, "изображающим из себя Forth", и Perl, создающим исполняемый Forth-код?

Автор:  Majestio [ Вс май 26, 2013 22:15 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

gudleifr писал(а):
Majestio писал(а):
Я вот для себя разворачивание вижу вот в такой последовательности
А где проходит разграничение между Perl, "изображающим из себя Forth", и Perl, создающим исполняемый Forth-код?

По идее - до 4 этапа будет только интерпретация. Дело в том, что на Perl'е очень удобно строить всякие структуры, парсеры и пр., но совершенно невозможно работать с адресами памяти.

Автор:  gudleifr [ Вс май 26, 2013 22:21 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

Majestio писал(а):
По идее - до 4 этапа будет только интерпретация.
Тогда почему с него и не начать?
Majestio писал(а):
Дело в том, что на Perl'е очень удобно строить всякие структуры, парсеры и пр.
Это так только кажется. Как-то писал на Perl для тренировки интерпретатор языка Trac, так весь Perl из окончательной версии естественным образом выпал, остался голый C. Быстренько порубить строки заранее известного формата - это пожалуйста, а взять что-то более сложное, и его мощные механизмы начинают, скорее, мешать, чем помогать.

Автор:  Majestio [ Вс май 26, 2013 22:24 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

Хищник писал(а):
Мне кажется, что само использование Perl в качестве инструментального средства определенным образом повлияет не только на ход разработки, но и на характеристики форт-системы. Например, интерфейс с ОС, предоставляемый Perl, вполне можно использовать, и адаптировать к нему разрабатываемый Форт.


Сложно пока загадывать - но все это интригует :D

Автор:  KPG [ Вс май 26, 2013 22:25 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

Majestio писал(а):
По идее - до 4 этапа будет только интерпретация. Дело в том, что на Perl'е очень удобно строить всякие структуры, парсеры и пр., но совершенно невозможно работать с адресами памяти.

Было какое то обсуждение возможностей Perl в сравнении к Форт

P.S. На Форте тоже есть расширения для построения разных парсеров. Какие то ссылки могут уже быть нерабочими, тогда инфу
можно поднять из архивов.

Автор:  Majestio [ Вс май 26, 2013 22:29 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

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

Уверяю - это заблуждение! По своим задачам я уже достаточно работаю на Perl'е и С++, возможность сравнения есть. Наверное люди просто кодили на Perl'e, но на нем не думали.

Автор:  gudleifr [ Вс май 26, 2013 22:33 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

Majestio писал(а):
работаю на Perl'е и С++
Так C++ тоже дурной. Возьмите C. Или сразу Forth.
"Думать на Perl"? А чем это принципиально отличается от думания на awk, shell и C, взятых по отдельности?

Впрочем, я пристрастен. Уж больно накопившиеся у меня Perl-куски начали в последние годы раздражать. Слишком много усилий требуется на сопровождение.

Автор:  Majestio [ Вс май 26, 2013 22:36 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

KPG писал(а):
P.S. На Форте тоже есть расширения для построения разных парсеров. Какие то ссылки могут уже быть нерабочими, тогда инфу можно поднять из архивов.

Я понимаю и верю :D Но я вот выбрал такой способ изучения Форта. От меньшего к большему. Просто фильтрация литературы - унылое занятие, которое совсем не мотивирует. Каждый вечер должна появляться новая практическая фишечка. А что делать, если реальной практической задачи пока нет, а те, что есть - решаются на интерпретаторе (Perl) в пять сек.

Автор:  KPG [ Вс май 26, 2013 22:40 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

Majestio писал(а):
KPG писал(а):
P.S. На Форте тоже есть расширения для построения разных парсеров. Какие то ссылки могут уже быть нерабочими, тогда инфу можно поднять из архивов.

Я понимаю и верю :D Но я вот выбрал такой способ изучения Форта. От меньшего к большему. Просто фильтрация литературы - унылое занятие, которое совсем не мотивирует. Каждый вечер должна появляться новая практическая фишечка. А что делать, если реальной практической задачи пока нет, а те, что есть - решаются на интерпретаторе (Perl) в пять сек.

Тогда можно предложить сделать на Perl проект подобный ForthEC

Автор:  Majestio [ Вс май 26, 2013 23:20 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

gudleifr писал(а):
"Думать на Perl"? А чем это принципиально отличается от думания на awk, shell и C, взятых по отдельности?
Ну я не методист, четко не расскажу. Регэкспы - это вкусно и полезно. Но динамическая типизация с Си-программерами творит чудеса.

Была задача перегонки Банка Данных (слабоструктурированные, но связанные данные) в строго формализованный формат. Дружок принялся конструировать структуры, описывать их и документировать для себя. Я предложил ему Perl :D

Все его структуры описал вот так:

Код:
my $Root;


Он начал меня высмеивать. Хорошо, говорю, на тебе твое дерево параграфов статей (код примерный), ты исписал своими структурами три листа. А оно того не стоит. Структуры все - в пень. Все делается во время работы:

Код:
my $Root;
my $R = ["One","Two"];
my %Z = ("1"=>1,"2"=>["A","B","C"],"3"=>2);
${$Root}{${$R}[0]} = [\%Z,["*"],["-"]];
${$Root}{${$R}[1]} = [$Z{"1"},["+"],["+"]];
1;

А код строит нечто подобное, это я так, навскидку:
Код:
0  HASH(0x2877a48)
   'One' => ARRAY(0x2cc1f28)
      0  HASH(0x24aa280)
         1 => 1
         2 => ARRAY(0x4ea500)
            0  'A'
            1  'B'
            2  'C'
         3 => 2
      1  ARRAY(0x2cc2540)
         0  '*'
      2  ARRAY(0x2bbf808)
         0  '-'
   'Two' => ARRAY(0x287c918)
      0  1
      1  ARRAY(0x2cd3bf0)
         0  '+'
      2  ARRAY(0x2872440)
         0  '+'


Результатом было недоумение. Потом нелепые попытки на Perl'е с односложными структурами и вкусными регэкспами. И только потом он забыл про свои конструкторо-деструкторы и утечку памяти, сконцентрировался на задаче.

Автор:  Majestio [ Вс май 26, 2013 23:22 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

KPG писал(а):
Тогда можно предложить сделать на Perl проект подобный

Да мне бы сперва хоть что-то сделать ))))

Автор:  gudleifr [ Пн май 27, 2013 11:32 ]
Заголовок сообщения:  Re: набросок стандарта от mOleg

mOleg писал(а):
Имхо, не очень хороший способ, лучше взять какую-нибудь более-менее серьезную форт систему и изучить сначала исходники, потом попытаться понять, что же понято, и чего хотелось бы переделать, т.е. понять не только чего хочется, но и чего не хочется, а так же почему.
Не пугайте человека. Да только на понимание того, в чем заключается "серьезность" системы, уйдут еще годы. За это время он уже пяток своих напишет и на своей шкуре проверит... Отмечу, что мы уже написали тут больше букофф, чем весит нормальный Forth...

Страница 1 из 9 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/