Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт окт 22, 2019 23:28

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Скобки разных видов
СообщениеДобавлено: Сб июн 02, 2007 22:44 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6808
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
Рассматривая скобки:
( ) - комментарии
[ ] - переключение между компиляцией и исполнением
{ } - ??, попадались локальные переменные и выделение блоков кода
А если не страдать "синдромом белой вороны", как бы можно было распределить скобки по действиям?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 03, 2007 00:13 
Не в сети

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

Скобки нужны, т.к. выходя за рамки маленьких драйверов и встроенных программ, мы обнаруживаем, что программирование не стоит на месте и изобретено множество способов облегчить жизнь программерам - объектно-ориентированное программирование, разного рода уловки синтаксиса ...
как-то пытался создать свой собственный скриптовый язык, обнаружил, что мне мало 3 разновидностей скобок - для выделения логических выражений хотелось ещё.

Потому можно обсудить их применение традиционное. В С круглые скобки играют роль ... скобок в арифметических и логических выражениях и роль скобок - ограничителей списка параметров для функций и макросов. Это нормально и легко различать, если перед скобками находится слово, предполагающее параметры - то внутри скобок - список параметров, если нет - это выражение.
int function(a,b,c,d ... )

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

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

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

Комментарии - о скобках сказано, трудно рассчитывать на сочувствие, но скобки нужны для других целей. В конце концов, Форт позволяет создат слово из скобки и
одной буквы
к( начало комментария ...
Комментарий должен отделяться такими знаками, которые никогда не
понадобятся, в С - /* комментарий */


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 03, 2007 00:49 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6808
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
Был замысел сделать так:

: WORD ( A B C )
эквивалентно

: WORD
LOCAL A LOCAL B LOCAL C
TO C
TO B
TO A

С массивами не все так однозначно, потому что вот многомерные массивы должны бы знать свою текущую размерность. Без труда можно организовать слово [], которое по X[] 5 [] даст адрес 5-го элемента массива X[]. Хотя для этого Броуди предлагает писать X[] 5 -TH, что вполне читаемо. Вобщем, квадратные скобки вполне неплохи и в текущей роли.

Для фигурных напрашивается функциональность NONAME: , то есть формирование блока кода, в том числе в тех местах, где по сути требуется одно слово. К примеру, ' { 2 2 + } положит на стек адрес блока кода, делающего 2 2 +


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 03, 2007 00:57 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
Хищник писал(а):
Для фигурных напрашивается функциональность NONAME: , то есть формирование блока кода, в том числе в тех местах, где по сути требуется одно слово. К примеру, ' { 2 2 + } положит на стек адрес блока кода, делающего 2 2 +

Идея из постскрипта, уже давно мною реализованная 8)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 03, 2007 09:59 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 05, 2006 06:19
Сообщения: 192
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
дело вкуса и привычки,
мне вот целиком устраивает
() - коментарий
[] - смена режимов
{} - локалсы
а патаму что нет у меня других привычек :)
и их я предлагаю не трогать
надо новых выделений? к вашим услугам структуры вида
Код:
это_открывающяя_скобка_совсем_не_коментарий( какойто_текст\код )

ну и к слову говоря вспомним про совместимость

_________________
SPF


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 03, 2007 18:13 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6808
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
Совместимость - это такой интересный лозунг, который вроде есть, но на самом деле его не наблюдается. Иначе не было бы проблем с библиотеками ВООБЩЕ. Совмещаться, к тому же, можно и с наиболее актуальными задачами, и это гораздо полезнее, чем тащить за собой тонны мертворожденного кода. Опять-таки, кодирование есть последний и самый-пресамый ни на что не влияющий этап разработки software. При наличии плана, структуры, требований к программе и документации мало-мальски грамотный программист решает такие задачи явочным порядком.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 07, 2007 16:53 
---


Последний раз редактировалось profiT Сб мар 01, 2008 01:02, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 06, 2007 00:37 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Вообще, мне :shuffle; казалось, хороший тон - коментарии отделять не одиночными символами, а парными, т.к. одиночный символ может понадобиться для оформления логики задания
потому мне понравилось комментирование ( не знаю, чъя идея) (* *)
похоже на С, красиво, симметрично

код - основное , потому :( ТРАТИТЬ на коментарии столь немногочисленные скобки

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 08, 2007 20:30 
Не в сети
Аватара пользователя

Зарегистрирован: Вс май 07, 2006 11:38
Сообщения: 279
Откуда: Slavyansk, Ukraine
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Я обычно комментарии пишу после двух слешей:
Код:
\ \ комментарий

чтобы не путать с зарэмленными строками и чтобы случайно не раскомментировать,
а всякие чисто отладочные детали убираю табуляцией вправо:
Код:
\                        CR ." Test: " DUP .

_________________
Банзай!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Скобки разных видов
СообщениеДобавлено: Пн июл 08, 2019 22:26 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 83
Откуда: Москва
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Можно так:
( ) - для циклов, условие проверять на входе и на выходе
тогда:
Код:
1 ( ... 1 ) \ BEGIN ... AGAIN
cond ( ... cond ) \ BEGIN cond WHILE ... REPEAT
cond0 ( ... cond1 ) \ cond0 IF BEGIN ... cond1 0= UNTIL THEN
cond ( ... 0 ) \ cond IF ... THEN
0 ( ... ) \ если очень хочется комментарий в стиле FORTH

[ ] - для циклов со счетчиком и автодекрементом (такие проще реализовывать) от какого-то значения до 0
например,
Код:
n [ ... ] \ 0 n-1 DO ... -1 +LOOP
0 [ ... ] \ еще один комментарий
но можно и традиционный DO-LOOP сделать

{ ~ } - условный оператор
Код:
cond { ... } \ cond IF ... THEN
cond { ... ~ ... } \ cond IF ... ELSE ... THEN

Ну а комментарии можно сделать так:
Код:
\\ если два \ нарисовано слитно, то комментарий до конца строки
\ многострочный
  комментарий \

Я в своих поделках чаще всего делаю именно так. :D


Последний раз редактировалось Total Vacuum Ср июл 17, 2019 11:13, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Скобки разных видов
СообщениеДобавлено: Ср июл 17, 2019 11:12 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 83
Откуда: Москва
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Напрашивается такое решение: по команде ( вызываем встроенный интерпретатор Лисп :))

А если серьезно, то, например, у тех, кто пишет на Си и его потомках, сложились устойчивые ассоциации:
( ) вызов функции/проверка условия;
[ ] объявление и индексация массивов;
{ } составной оператор;

Вообще мне кажется, что к вопросу реализации комментариев авторы языка подошли слишком легкомысленно, зарезервировав целых 3 односимвольных слова, два из которых - парные! Это слишком расточительно...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re:
СообщениеДобавлено: Ср июл 17, 2019 11:15 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 83
Откуда: Москва
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
вопрос писал(а):
Комментарий должен отделяться такими знаками, которые никогда не
понадобятся, в С - /* комментарий */


К сожалению, слово */ уже объявлено стандартным :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: Чт июл 18, 2019 18:26 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 286
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
Total Vacuum писал(а):
К сожалению, слово */ уже объявлено стандартным :)

А - в чём проблема? Слово /* может просто "ловить" пару символов */, как признак окончания коммента.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Скобки разных видов
СообщениеДобавлено: Чт июл 18, 2019 19:14 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6808
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
С точки зрения безопасного разбора кода, комментарий рекомендуется только один - до конца текущей строки. Многострочные и комментарии в виде круглых скобок в Форте являются потенциальными источниками проблем - кроме неправильного разбора возможен еще и вариант, когда программист неправильно воспримет, что именно закомментировано с точки зрения компилятора.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: Пт июл 19, 2019 10:42 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 83
Откуда: Москва
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Wlad писал(а):
А - в чём проблема? Слово /* может просто "ловить" пару символов */, как признак окончания коммента.

Проблема может появиться, если понадобится закомментировать фрагмент кода, где используется */
Например, комментируя код A B */ C D, получим /* A B */ C D */, т.е. кусок кода C D */ будет выполнен.
Кроме того, если начнем убирать комментарии, можем случайно удалить команду */, ошибочно посчитав ее концом комментария. Так, например, приведенный выше
фрагмент кода после раскомментирования может превратиться в A B C D */ или даже в A B C D.
Чтобы было похоже на Си, можно сделать:
\\ однострочный комментарий
\* многострочный комментарий *\
Получилось нечто среднее между Фортом и Си.
Впрочем, если в Вашем диалекте Форт */ не используется, то комментарии в стиле Си ничем не хуже любых других.
Также можно реализовать многострочный комментарии в стиле Паскаль: (* *). Это вариант ближе к традиционному комментарию в стиле Форт, но освобождает драгоценные скобки для каких-то более нужных вещей.
Кстати, одиночный символ \ тоже жалко тратить на комментарии, в каких-то языках \ используется, например, для целочисленного деления.


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

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


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

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


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

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