Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт мар 19, 2024 10:21

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 01:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Однажды принц полюбил девушку. Конечно же, принца хотели женить на принцессе, поэтому обратились к волшебнику, чтобы он заставил принца разлюбить свою избранницу. Принц ненавидел рыбу, поэтому волшебник пригласил его пойти кое-куда. Там, посреди леса, пропахшего рыбой, стоял домик из рыбьих костей. Принц постучал в дверь, и вышла его любимая девушка - в платье из рыбьей чешуи. И что же? С тех пор принц полюбил и рыбу.

Хм, о чем это я? А, ну да. Итак, в рамках проекта OpenForth разбираемся с описанием стека на Си. ;)

Стек - это вобщем-то массив. Мы не будем делать ассемблерные вставки, задача - описать "просто стек", поэтому все вопросы с "быстрее", "элегантнее" откладываем в сторонку. Сначала надо, чтобы оно заработало, и все нюансы стали понятны.

Итак, переменные в Си описываются по шаблону.
Код:
<тип> <имя>

К примеру.
Код:
int a, b, c;

Это три целочисленные переменные a, b, c. Можно сделать и массов.
Код:
int x[100];

Это массив из 100 целочисленных переменных. Обращаться к ячейкам массива можно примерно так:
x[12]
Теперь, понятно, надо сделать по аналогии "стековое" имя. Не особо задумываясь, пишем
Код:
int Depth;
int Stack[100];

Переменная Depth нужна в качестве указателя. Пока на стеке ничего нет, она равна нулю. Следовательно, класть на стек надо в ячейку Stack[Depth], а верхнее число будет в Stack[Depth - 1].
Если говорить о более правильном стиле, то сразу можно заметить, что 100 - это вобщем-то для примера, причем очень простого. Решив изменить размер стека, придется побегать по всему тексту в поисках значения 100 (мало ли в каких проверках будет участвовать размер). Поэтому необходимо сделать хотя бы задание размера стека с помощью константы, а в Си это можно сделать еще и с помощью директивы #define. Это директива препроцессора, т.е. она производит лексическую замену - компилятор и не увидит наше символическое имя, которое мы выберем для обозначения размера стека. Вместо него всегда будет подставляться заданное нами значение.

#define STACKSIZE 100

Теперь стек можно определить как
Код:
int Stack[STACKSIZE];

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

1) typedef int cell;
2) cell * Stack;



За это сообщение автора Hishnik поблагодарил: zehotello
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 12:35 
Хищник писал(а):
Однажды принц полюбил девушку. Конечно же, принца хотели женить на принцессе, поэтому обратились к волшебнику, чтобы он заставил принца разлюбить свою избранницу. Принц ненавидел рыбу, поэтому волшебник пригласил его пойти кое-куда. Там, посреди леса, пропахшего рыбой, стоял домик из рыбьих костей. Принц постучал в дверь, и вышла его любимая девушка - в платье из рыбьей чешуи. И что же? С тех пор принц полюбил и рыбу.

Как говорил Лермонтов, нынешнее поколение не способно понять смысл басни, если в конце она не увенчана моралью. Так на что же вы намекаете, коллега Хищник? Уж не на то ли, что коль приглянулся Форт дивный, будьте добры, молодцы, и в Си не плеваться? Ну, знаете, таким манером не долго и до маш. кода добраться, а нас, программирующих профессионалов, то есть, непрофессиональных программистов (по образованию и профессии), такая перспектива крайне смущает, я бы даже сказал, немало пугает. Особенно это касается только-только делающих первые шаги. Каково, вы думаете, новичку, лишь недавно взявшемуся за программирование, в частности, на Форте, слышать, что, нет, дружище, одним этим своим Фортом ты не отделаешься, давай-ка сразу осознай, чтоб безо всяких иллюзий, что тебе также придётся освоить ещё 100500 языков, и без этого никак! :twisted:
Бесспорно, ваш проект по повышению квалификации фортеров со всех сторон заслуживает похвалы, но, в то же время, и не я один это так думаю, было бы гораздо лучше, если бы реализации Форта учили(сь) на Форте. Конечно, всё зависит от преследуемых вами целей. По вашим словам, судя по всему, следует, что ОпенФорт рассчитан на более или менее опытных фортеров и служит предметом для углублённого изучения механизмов функционирования Форт-системы, что ж, в таком случае изъянов у проекта, возможно, практически и нет.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 13:00 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Zinger писал(а):
Особенно это касается только-только делающих первые шаги.

Им это вообще не надо читать. Материал для категории людей пишущих свой форт.
Zinger писал(а):
Каково, вы думаете, новичку, лишь недавно взявшемуся за программирование, в частности, на Форте, слышать, что, нет, дружище, одним этим своим Фортом ты не отделаешься, давай-ка сразу осознай, чтоб безо всяких иллюзий, что тебе также придётся освоить ещё 100500 языков, и без этого никак!

Это нормально. У каждого языка, в принципе, своя ниша.
Zinger писал(а):

было бы гораздо лучше, если бы реализации Форта учили(сь) на Форте.

А то, что при самокомпиляции часто используеется "чёрная магия" - это вас не смущает. Там и опытный фортер может "без бутылки не разобраться".
Zinger писал(а):
Конечно, всё зависит от преследуемых вами целей. По вашим словам, судя по всему, следует, что ОпенФорт рассчитан на более или менее опытных фортеров и служит предметом для углублённого изучения механизмов функционирования Форт-системы, что ж, в таком случае изъянов у проекта, возможно, практически и нет.

OpenForth, как я понимаю, рассчитан на написание прозрачной и документированной во всех аспетах системы для встраивания, и является экспериментальным.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 13:30 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Zinger писал(а):
Уж не на то ли, что коль приглянулся Форт дивный, будьте добры, молодцы, и в Си не плеваться? Ну, знаете, таким манером не долго и до маш. кода добраться

Хорошо. Сделайте этот же стек на ХХХ-форте, и соберите простой бинарник для Win, Linux, Android, Arm. Хотя бы. В данном случае, используется преимущество СИ - программу можно скомпилировать под большинство современных платформ не вникая в особенности строения исполняемых файлов под них.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 15:09 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
VoidVolker писал(а):
Хорошо. Сделайте этот же стек на ХХХ-форте, и соберите простой бинарник для Win, Linux, Android, Arm. Хотя бы. В данном случае, используется преимущество СИ - программу можно скомпилировать под большинство современных платформ не вникая в особенности строения исполняемых файлов под них.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 15:12 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
вопрос писал(а):
когда-то существовала надежда, что именно форт будет обладать абсолютной переносимостью ввиду лёгкости организации начального транслятора, однако не сложилось - это удивительное преимущество осталось совершенно незатребованным



По экономическим причинам. За переносимый софт деньги можно содрать только один раз.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 15:35 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
WingLion писал(а):
По экономическим причинам. За переносимый софт деньги можно содрать только один раз.
8)
ВИдимо, кроме этой были ещё причины, иначе форт был бы затребован свободными исходниками (там где денег не надо).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 15:43 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
В мире, где все завязано на деньги, места, где "денег не надо" душат всеми возможными способами.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 15:45 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Zinger писал(а):
Каково, вы думаете, новичку, лишь недавно взявшемуся за программирование, в частности, на Форте, слышать, что, нет, дружище, одним этим своим Фортом ты не отделаешься, давай-ка сразу осознай, чтоб безо всяких иллюзий, что тебе также придётся освоить ещё 100500 языков, и без этого никак!

Для освоения самого принципа построения Форта все остальное стоит выбрать по принципу максимальной простоты и удобства. Си есть на множестве платформ, а программировать на нем вполне можно, подглядывая в справку и примеры. Я уже не говорю о том, что первый пост содержит на самом-то деле всего две строчки кода :) Эти две строчки вряд ли представляют существенную проблему для освоения.
Zinger писал(а):
но, в то же время, и не я один это так думаю, было бы гораздо лучше, если бы реализации Форта учили(сь) на Форте.

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

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

А вот от исключительных характеристик мы тут будем последовательно отходить. Я вот уже слышу нотку "если уж браться, то чтобы получилось ого-го!". Нет, не ого-го, а просто чтобы получилось.



За это сообщение автора Hishnik поблагодарил: zehotello
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 15:50 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
WingLion писал(а):
В мире, где все завязано на деньги, места, где "денег не надо" душат всеми возможными способами.

Да зачем же специально душить? Достаточно не решать на Форте актуальные задачи, и он будет даже не задушен, а просто отодвинут в сторону. Разве я должен каждому спамеру объяснять, почему я не буду покупать его суперпродукт со склада, с доставкой, суперакция, только сегодня? Сегодня ситуация далеко не такая, чтобы каждый язык программирования был интересен уже тем, что он просто есть (потому что редкость). Чтобы язык развивался, он должен решать действительно актуальные проблемы, а не быть коллекцией эпатажных приемов.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 16:02 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Специально и не надо. Самоудушение - это тоже удушение.
Хотя, формально, имело место и самоудушение и удушение извне.

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

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

Прибор должен работать в корпусе, а не в принципе - посему, когда заработает, тогда уже и буду говорить о том, что там Форт делает и почему это делают не Си с Паскалем на пару.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 16:09 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
WingLion писал(а):
Когда я в университете ляпнул, что программирую на Форте, мне была прочитана внеплановая получасовая лекция на тему, "почему Си лучше всех и Форт надо бросать". Я ее вытерпел и возражать не стал потому, что сие могло иметь пагубные последствия в дальнейшем.

Ну вот разве что из-за последствий. Потому что если человек не уточняет, для каких целей используется Форт, и чем был вызван его выбор, на его последующие лекции можно смело не обращать внимания. Это как минимум.
WingLion писал(а):
Прибор должен работать в корпусе, а не в принципе - посему, когда заработает, тогда уже и буду говорить о том, что там Форт делает и почему это делают не Си с Паскалем на пару.

+1. Что характерно, когда это уже работает, рассказ о Форте воспринимается совсем иначе.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Вс май 06, 2012 22:38 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 660
Благодарил (а): 7 раз.
Поблагодарили: 25 раз.
WingLion писал(а):
Когда я в университете ляпнул, что программирую на Форте, мне была прочитана внеплановая получасовая лекция на тему, "почему Си лучше всех и Форт надо бросать". Я ее вытерпел и возражать не стал потому, что сие могло иметь пагубные последствия в дальнейшем.

у нас, к примеру, на равных правах существуют в рамках дисциплины "технологии программирования" Си, Паскаль, Форт. включая их диалекты


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Пн май 07, 2012 02:22 
Про стек в моей базе данных:
http://www.gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=%5C4.%CF%CE%CB%C5%C7%CD%DB%C5%20%CA%CE%CD%D6%C5%CF%D6%C8%C8%5C%D1%D2%C5%CA%20%C4%C0%CD%CD%DB%D5
Gudleifr 07.05.12


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Стек Форт-машины на Си
СообщениеДобавлено: Пн май 07, 2012 05:15 
Не в сети
Аватара пользователя

Зарегистрирован: Вт май 23, 2006 04:10
Сообщения: 129
Благодарил (а): 44 раз.
Поблагодарили: 5 раз.
Гость писал(а):
Про стек в моей базе данных:
http://www.gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=....
Gudleifr 07.05.12

хотел поблагодарить за линк через "кнопку", но
оказалось, такой вариант не предусмотрен :(
[а есть только вариант "пожаловаться" :wink: ]
посему спасибо(!) здесь

_________________
Чак Мур -- вот глыба-Человек, ему -- респект и уваженье !


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB