Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
Выложил исходники: http://ifolder.ru/18045748Лицензия LGPL, дабы не создавать проблемы основному проекту.
Выложил исходники: http://ifolder.ru/18045748 Лицензия LGPL, дабы не создавать проблемы основному проекту.
|
|
|
|
Добавлено: Вс июн 06, 2010 16:49 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
rmammoth писал(а): По сути задания -- не вижу особого смысла проверять наличие на стеке констант. Возможные наборы значений, типа -1/0/1 -- еще куда ни шло... Да и вводить нигде более не используемые идентификаторы тоже как-то нехорошо. Скорее, имело бы смысл задавать количество и типы параметров.Да, рассчитываю посмотреть на Вашу реализацию. задача пока открыта... а константы на стеке - да, лучше диапазоны, но и константы имеют смысл
[quote="rmammoth"]По сути задания -- не вижу особого смысла проверять наличие на стеке констант. Возможные наборы значений, типа -1/0/1 -- еще куда ни шло... Да и вводить нигде более не используемые идентификаторы тоже как-то нехорошо. Скорее, имело бы смысл задавать количество и типы параметров.Да, рассчитываю посмотреть на Вашу реализацию.[/quote]задача пока открыта... а константы на стеке - да, лучше диапазоны, но и константы имеют смысл
|
|
|
|
Добавлено: Сб июн 05, 2010 08:09 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
Я выспался И хочу прокомментировать свое первое впечатление. Сначала несколько издалека. Рассмотрим некую гипотетическую статью (ну или достаточно объемное сообщение на форуме). Логично увидеть там какое-то введение (описание проблемы и постановку задачи), далее предложение автора, аргументацию, примеры и выводы. Если говорить о большей части "проблемных" статей, то проблемы там проистекают не то чтобы от неправильных действий, а скорее от неаккуратности в изложении материала. Есть ряд косвенных признаков такой неаккуратности (но естественно, наличие хоть одного, хоть всех отнюдь не означает, что статья автоматически неправильна). Например, повсеместность применения. Куда ни посмотри, предлагаются универсальные решения, стандарты, вещи must have и прочие "серебряные пули". Каждый автор, очевидно, базируется на собственном опыте, и поскольку он ограничен, эти самые границы неплохо сначала бы очертить. Как следствие, мы имеем жуткую мешанину из "модных" подходов, когда в пространстве летают разные сборщики мусора, хэшированные деревья, мьютексы и прочие часто встречающиеся термины... но вот конкретного и внятного комментария, почему это надо именно здесь, и что можно получить в результате, почему-то нет. Или же идет "апелляция к дураку" - дескать, если читатель разбирается в программировании, он и так проникнется важностью изложенного. Вред тут не в том, что автор ошибается (ошибаются все), а в том, что он не готов к интерактивному (при содействии оппонентов) исправлению ошибок. Так вот. В предложенном материале я не увидел подобных мотивов. Нету ни "нового свежего направления", ни "осчастливливания фортеров, которого им так давно не хватало", ни "новой струи истинного форт-подхода", ни прочих благоглупостей. Логика изложения достаточно проста и понятна - "мне надо было так, для этого я предложил вон то, сам же его и реализовал, вот такие результаты". У кого-то другие задачи? Ну так в описательной части сразу и отмечено, чем руководствовался автор, и какие проблемы он решал. У кого такие проблемы есть, может поинтересоваться. У кого нет - ну так статья и не для них. Теперь по основным пунктам, которые я заметил. 1. Динамическая типизация. Вещь, собственно, несколько ортогональная Форту. В том смысле, что почему бы и нет. CTTI, RTTI, и вообще отсутствие типизации слабо соотносятся с возможностью использовать в языке оператор if. Вид типизации, конечно же, влечет за собой какие-то последствия, но в целом он проходит по разряду "ну раз надо, то чего бы и не сделать". Здесь предложен специальный тип под названием marker. Это накладывает определенный отпечаток на стиль программирования, в основном потому, что есть возможность обрабатывать неизвестное заранее количество аргументов. Если это делается только ради маркера, то я бы первым делом спросил "зачем"? Потому что лишние операции по проверке типов требуют времени, в итоге производительность может падать в разы. Но если это компенсируется другими свойствами получаемого продукта, то такое решение имеет право на жизнь. 2. Теневые стеки. Я тут увидел разновидность способа привязаться к состоянию стека в момент вызова слова. Да, действительно, держать состояние стека в голове сложновато. Соответственно, это и решается по-разному - игнорированием проблемы (ххе, ведь тоже вариант), PICK/ROLL, локальными переменными, стековыми фреймами (это я так делаю).... ну вот еще решение. Опять-таки, отталкиваться нужно от "зачем оно сделано", и через эту призму рассматривать характеристики и результаты. 3. switch По сути, это таблица переходов. Разумная и эффективная конструкция управления. Я вот посмотрел, и решил себе такое добавить, возможно, в чуть модифицированном варианте. Не то чтобы я такого себе и не представлял никогда... а просто вот, удачно обнаружил напоминалку Что бы я модифицировал, так это ввел интервальный вариант - чтобы можно было сначала указать, что в таблице переходов содержатся варианты на диапазон, к примеру, от -10 до 20, и потом уже дать саму таблицу. А в целом я тут увидел пример системы, сделанной под конкретный круг задач автора - то есть системы живой и развивающейся. Которая, в силу своей "живости", имеет большие шансы на выживание, нежели нечто оторванное от реальности. Вобщем, автору наилучшие пожелания и welcome в клуб слегка свихнувшихся на Форте
Я выспался :) И хочу прокомментировать свое первое впечатление. Сначала несколько издалека.
Рассмотрим некую гипотетическую статью (ну или достаточно объемное сообщение на форуме). Логично увидеть там какое-то введение (описание проблемы и постановку задачи), далее предложение автора, аргументацию, примеры и выводы. Если говорить о большей части "проблемных" статей, то проблемы там проистекают не то чтобы от неправильных действий, а скорее от неаккуратности в изложении материала. Есть ряд косвенных признаков такой неаккуратности (но естественно, наличие хоть одного, хоть всех отнюдь не означает, что статья автоматически неправильна). Например, повсеместность применения. Куда ни посмотри, предлагаются универсальные решения, стандарты, вещи must have и прочие "серебряные пули". Каждый автор, очевидно, базируется на собственном опыте, и поскольку он ограничен, эти самые границы неплохо сначала бы очертить. Как следствие, мы имеем жуткую мешанину из "модных" подходов, когда в пространстве летают разные сборщики мусора, хэшированные деревья, мьютексы и прочие часто встречающиеся термины... но вот конкретного и внятного комментария, почему это надо именно здесь, и что можно получить в результате, почему-то нет. Или же идет "апелляция к дураку" - дескать, если читатель разбирается в программировании, он и так проникнется важностью изложенного. Вред тут не в том, что автор ошибается (ошибаются все), а в том, что он не готов к интерактивному (при содействии оппонентов) исправлению ошибок.
Так вот. В предложенном материале я не увидел подобных мотивов. Нету ни "нового свежего направления", ни "осчастливливания фортеров, которого им так давно не хватало", ни "новой струи истинного форт-подхода", ни прочих благоглупостей. Логика изложения достаточно проста и понятна - "мне надо было так, для этого я предложил вон то, сам же его и реализовал, вот такие результаты". У кого-то другие задачи? Ну так в описательной части сразу и отмечено, чем руководствовался автор, и какие проблемы он решал. У кого такие проблемы есть, может поинтересоваться. У кого нет - ну так статья и не для них.
Теперь по основным пунктам, которые я заметил.
1. Динамическая типизация. Вещь, собственно, несколько ортогональная Форту. В том смысле, что почему бы и нет. CTTI, RTTI, и вообще отсутствие типизации слабо соотносятся с возможностью использовать в языке оператор if. Вид типизации, конечно же, влечет за собой какие-то последствия, но в целом он проходит по разряду "ну раз надо, то чего бы и не сделать". Здесь предложен специальный тип под названием marker. Это накладывает определенный отпечаток на стиль программирования, в основном потому, что есть возможность обрабатывать неизвестное заранее количество аргументов. Если это делается только ради маркера, то я бы первым делом спросил "зачем"? Потому что лишние операции по проверке типов требуют времени, в итоге производительность может падать в разы. Но если это компенсируется другими свойствами получаемого продукта, то такое решение имеет право на жизнь. 2. Теневые стеки. Я тут увидел разновидность способа привязаться к состоянию стека в момент вызова слова. Да, действительно, держать состояние стека в голове сложновато. Соответственно, это и решается по-разному - игнорированием проблемы (ххе, ведь тоже вариант), PICK/ROLL, локальными переменными, стековыми фреймами (это я так делаю).... ну вот еще решение. Опять-таки, отталкиваться нужно от "зачем оно сделано", и через эту призму рассматривать характеристики и результаты. 3. switch По сути, это таблица переходов. Разумная и эффективная конструкция управления. Я вот посмотрел, и решил себе такое добавить, возможно, в чуть модифицированном варианте. Не то чтобы я такого себе и не представлял никогда... а просто вот, удачно обнаружил напоминалку :) Что бы я модифицировал, так это ввел интервальный вариант - чтобы можно было сначала указать, что в таблице переходов содержатся варианты на диапазон, к примеру, от -10 до 20, и потом уже дать саму таблицу.
А в целом я тут увидел пример системы, сделанной под конкретный круг задач автора - то есть системы живой и развивающейся. Которая, в силу своей "живости", имеет большие шансы на выживание, нежели нечто оторванное от реальности. Вобщем, автору наилучшие пожелания и welcome в клуб слегка свихнувшихся на Форте :))
|
|
|
|
Добавлено: Сб июн 05, 2010 02:13 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
вопрос писал(а): Цитата: Может для автора статьи Статья то, что он разработал и уместно, и работает, и облегчает ему создание программ. Пожелаем ему успехов. пусть автор покажет, как его нововведение может помочь решать нерешённые задачи из viewforum.php?f=19 (конкурс задач) да хоть эту viewtopic.php?f=19&t=2604Пожалуйста Код: $: ps :: (stack-checker)
: (presently: ?comp [$ps $! begin token dup ")" = if drop true else token-type switch case <symbol> drop $marker break case <string> unquote >$ break case <integer> 'int >$ break case <float> 'float >$ break other "Wrong token" error endswitch false endif until
compile (stack-checker) $? , begin $? not while $> , repeat $] ; immediate
: (stack-checker) r> dup @ swap 1+ 2 ($ depth @0 < if "Stack size is less than expected" error endif @0 0 do @1 i + @ typeof switch other "Hmm... Wrong value in (stack-checker) inner table. Shit!" error case <marker> drop break case <integer> case <string> case <float> i 1+ pick != if "Unexpected value on stack" error endif endswitch loop @1 @0 + >r $) ; Слово token извлекает очередной токен из входного потока. Слово token-type определяет тип токена (напомню, типизация динамическая). Слово unquote удаляет обрамляющие кавычки у токена-строки. Слово :: вводит предварительную декларацию слова. Слово != учитывает тип сравниваемых значений, в отличие от <>. Индексирование памяти не побайтное, а поячеечное, поэтому в операциях с указателями размер ячейки не фигурирует. Если сомнений в правильности компиляции (presently: не возникает, (stack-checker) можно реализовать короче: Код: : (stack-checker) r> dup @ swap 1+ 2 ($ depth @0 < if "Stack size is less than expected" error endif @0 0 do @1 i + @ marker? not if i 1+ pick != if "Unexpected value on stack" error endif endif loop @1 @0 + >r $) ;
Суть происходящего проста: на этапе компиляции слова, в определение которого входит (presently: в него компилируется ссылка на слово (stack-checker) и таблица значений, в которой явно заданные значения представлены самими собой, а произвольным идентификаторам соответствует маркер. При выполнении (stack-checker) проверяется глубина стека и проводится сравнение с явно заданными значениями; при несовпадении генерируется ошибка. Так как токены, заключенные в кавычки, воспринимаются системой как строки и будут сопоставлены со строковыми значениями на стеке при выполнении (stack-checker), нужно как-то по другому оформлять комментарии, так что требование пропуска строк я не выполнил. По сути задания -- не вижу особого смысла проверять наличие на стеке констант. Возможные наборы значений, типа -1/0/1 -- еще куда ни шло... Да и вводить нигде более не используемые идентификаторы тоже как-то нехорошо. Скорее, имело бы смысл задавать количество и типы параметров. Да, рассчитываю посмотреть на Вашу реализацию.
[quote="вопрос"][quote]Может для автора статьи Статья то, что он разработал и уместно, и работает, и облегчает ему создание программ. Пожелаем ему успехов.[/quote] пусть автор покажет, как его нововведение может помочь решать нерешённые задачи из http://fforum.winglion.ru/viewforum.php?f=19 (конкурс задач) да хоть эту http://fforum.winglion.ru/viewtopic.php?f=19&t=2604[/quote]
Пожалуйста
[code]$: ps :: (stack-checker)
: (presently: ?comp [$ps $! begin token dup ")" = if drop true else token-type switch case <symbol> drop $marker break case <string> unquote >$ break case <integer> 'int >$ break case <float> 'float >$ break other "Wrong token" error endswitch false endif until
compile (stack-checker) $? , begin $? not while $> , repeat $] ; immediate
: (stack-checker) r> dup @ swap 1+ 2 ($ depth @0 < if "Stack size is less than expected" error endif @0 0 do @1 i + @ typeof switch other "Hmm... Wrong value in (stack-checker) inner table. Shit!" error case <marker> drop break case <integer> case <string> case <float> i 1+ pick != if "Unexpected value on stack" error endif endswitch loop @1 @0 + >r $) ;[/code]
Слово token извлекает очередной токен из входного потока. Слово token-type определяет тип токена (напомню, типизация динамическая). Слово unquote удаляет обрамляющие кавычки у токена-строки. Слово :: вводит предварительную декларацию слова. Слово != учитывает тип сравниваемых значений, в отличие от <>. Индексирование памяти не побайтное, а поячеечное, поэтому в операциях с указателями размер ячейки не фигурирует. Если сомнений в правильности компиляции (presently: не возникает, (stack-checker) можно реализовать короче:
[code]: (stack-checker) r> dup @ swap 1+ 2 ($ depth @0 < if "Stack size is less than expected" error endif @0 0 do @1 i + @ marker? not if i 1+ pick != if "Unexpected value on stack" error endif endif loop @1 @0 + >r $) ; [/code] Суть происходящего проста: на этапе компиляции слова, в определение которого входит (presently: в него компилируется ссылка на слово (stack-checker) и таблица значений, в которой явно заданные значения представлены самими собой, а произвольным идентификаторам соответствует маркер. При выполнении (stack-checker) проверяется глубина стека и проводится сравнение с явно заданными значениями; при несовпадении генерируется ошибка.
Так как токены, заключенные в кавычки, воспринимаются системой как строки и будут сопоставлены со строковыми значениями на стеке при выполнении (stack-checker), нужно как-то по другому оформлять комментарии, так что требование пропуска строк я не выполнил.
По сути задания -- не вижу особого смысла проверять наличие на стеке констант. Возможные [i]наборы[/i] значений, типа -1/0/1 -- еще куда ни шло... Да и вводить нигде более не используемые идентификаторы тоже как-то нехорошо. Скорее, имело бы смысл задавать количество и типы параметров. Да, рассчитываю посмотреть на Вашу реализацию. :)
|
|
|
|
Добавлено: Сб июн 05, 2010 01:04 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
Цитата: Может для автора статьи Статья то, что он разработал и уместно, и работает, и облегчает ему создание программ. Пожелаем ему успехов. пусть автор покажет, как его нововведение может помочь решать нерешённые задачи из viewforum.php?f=19 (конкурс задач) да хоть эту viewtopic.php?f=19&t=2604
[quote]Может для автора статьи Статья то, что он разработал и уместно, и работает, и облегчает ему создание программ. Пожелаем ему успехов.[/quote] пусть автор покажет, как его нововведение может помочь решать нерешённые задачи из http://fforum.winglion.ru/viewforum.php?f=19 (конкурс задач) да хоть эту http://fforum.winglion.ru/viewtopic.php?f=19&t=2604
|
|
|
|
Добавлено: Пт июн 04, 2010 19:53 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
М-да... почитал. Статья начинается за здраво, но видимо не окончена, так как не сделано никакого заключения по поводу тех целей, которые преследует автор. Цитата: Исключение из состава ядра машины избыточных и устаревших средств Так из чтения статьи и непонятно, что же считать устаревшимЦитата: marker к сожалению, в других системах употребляется с иной смысловой нагрузкой, а не в той что описывется, хотя...Цитата: Теневые стеки идея хорошая, но всегда ли её стоит применять? только если нам лень контролировать глубину основного стека или в программах с квазипараллельно исполняемым кодом.Цитата: Введение расширений, упрощающих написание программ так я и не понял, что позволяет упростить написание программ.Может для автора статьи Статья то, что он разработал и уместно, и работает, и облегчает ему создание программ. Пожелаем ему успехов.
М-да... почитал. Статья начинается за здраво, но видимо не окончена, так как не сделано никакого заключения по поводу тех целей, которые преследует автор. [quote]Исключение из состава ядра машины избыточных и устаревших средств[/quote] [i]Так из чтения статьи и непонятно, что же считать устаревшим[/i] [quote]marker[/quote] [i]к сожалению, в других системах употребляется с иной смысловой нагрузкой, а не в той что описывется, хотя...[/i] [quote]Теневые стеки[/quote] [i]идея хорошая, но всегда ли её стоит применять? только если нам лень контролировать глубину основного стека или в программах с квазипараллельно исполняемым кодом.[/i] [quote]Введение расширений, упрощающих написание программ[/quote] [i]так я и не понял, что позволяет упростить написание программ.[/i]
Может для автора статьи [url=http://fforum.winglion.ru/att/forth-ext.pdf]Статья[/url] то, что он разработал и уместно, и работает, и облегчает ему создание программ. Пожелаем ему успехов.
|
|
|
|
Добавлено: Пт июн 04, 2010 10:02 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
rmammoth писал(а): то я все же продолжаю сомневаться в том, что это все так уж неэффективно можно устроить турнир фортов - быстро и азартно
[quote="rmammoth"]то я все же продолжаю сомневаться в том, что это все так уж неэффективно[/quote]можно устроить турнир фортов - быстро и азартно
|
|
|
|
Добавлено: Чт июн 03, 2010 23:58 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
dynamic-wind писал(а): rmammoth писал(а): Во вторых, не думаю, что забавы с pick и roll при количестве параметров слова 4-5 и более, будут намного эффективнее. И уж точно не будут удобнее. Согласен насчет удобства, но не насчет эффективности. Безусловно современное решение: есть масса памяти, чтобы изводить ее на стеки, и масса циклов, чтобы изводить их на копирование аргументов. И все же. Выигрыш в экономии памяти для теневого стека обернется проигрышем в памяти, выделяемой на дополнительные команды манипуляций со стеком. Причем, если место в стеке используется неоднократно различными подпрограммами, то компилированная в память ссылка на слово занимает ее все время выполнения программы, и расход памяти на дополнительные команды примерно пропорционален количеству операций. Учитывая же, что реализация слов ($ и $) может быть перенесена на уровень встроенных команд форт машины (если честно, это уже сделано, в статье описана экспериментальная реализация этих слов ), то я все же продолжаю сомневаться в том, что это все так уж неэффективно.
[quote="dynamic-wind"][quote="rmammoth"]Во вторых, не думаю, что забавы с pick и roll при количестве параметров слова 4-5 и более, будут намного эффективнее. И уж точно не будут удобнее.[/quote] Согласен насчет удобства, но не насчет эффективности. Безусловно современное решение: есть масса памяти, чтобы изводить ее на стеки, и масса циклов, чтобы изводить их на копирование аргументов.[/quote]
И все же. Выигрыш в экономии памяти для теневого стека обернется проигрышем в памяти, выделяемой на дополнительные команды манипуляций со стеком. Причем, если место в стеке используется неоднократно различными подпрограммами, то компилированная в память ссылка на слово занимает ее все время выполнения программы, и расход памяти на дополнительные команды примерно пропорционален количеству операций. Учитывая же, что реализация слов [b]($[/b] и [b]$)[/b] может быть перенесена на уровень встроенных команд форт машины (если честно, это уже сделано, в статье описана экспериментальная реализация этих слов :) ), то я все же продолжаю сомневаться в том, что это все так уж неэффективно.
|
|
|
|
Добавлено: Чт июн 03, 2010 21:57 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
rmammoth писал(а): Во вторых, не думаю, что забавы с pick и roll при количестве параметров слова 4-5 и более, будут намного эффективнее. И уж точно не будут удобнее. Согласен насчет удобства, но не насчет эффективности. Безусловно современное решение: есть масса памяти, чтобы изводить ее на стеки, и масса циклов, чтобы изводить их на копирование аргументов.
[quote="rmammoth"]Во вторых, не думаю, что забавы с pick и roll при количестве параметров слова 4-5 и более, будут намного эффективнее. И уж точно не будут удобнее.[/quote] Согласен насчет удобства, но не насчет эффективности. Безусловно современное решение: есть масса памяти, чтобы изводить ее на стеки, и масса циклов, чтобы изводить их на копирование аргументов.
|
|
|
|
Добавлено: Чт июн 03, 2010 21:27 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
WingLion писал(а): чтобы долго не рассусоливать: att/forth-ext.pdfОгромное спасибо! Я так и не нашел, как выложить файл прямо сюда (если это вообще возможно), а терять форматирование текста и рисунки жутко не хотелось.
[quote="WingLion"]чтобы долго не рассусоливать: http://fforum.winglion.ru/att/forth-ext.pdf[/quote]
Огромное спасибо! Я так и не нашел, как выложить файл прямо сюда (если это вообще возможно), а терять форматирование текста и рисунки жутко не хотелось.
|
|
|
|
Добавлено: Чт июн 03, 2010 19:14 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
VoidVolker писал(а): rmammoth писал(а): Конструктивная критика и обсуждение всячески приветствуются. Так я же уже сказал - новые сущности и интерфейсы. Во время написания программы, кроме текущего состояния стека данных, надо еще помнить какие есть теневые стеки и какой сейчас стек активен - а это все дополнительная нагрузка на разум человека. А значит увеличивает вероятность ошибки. Необходим реальный пример, когда данное расширение дает преимущество по сравнению с более классическим для форта подходом. Хм-м... Так ведь и про переменные надо помнить, и про много чего еще... Вообще, я заметил, программы получаются гораздо лучше, если помнить о том, что пишешь Если серьезно, насчет преимуществ: я пытался реализовать оператор switch, аналогичный описанному, без теневых стеков, получалось довольно жутко и запутанно, по крайней мере, у меня. Если у Вас получится лучше и без довесков над стандартом -- буду только рад перенять опыт.
[quote="VoidVolker"][quote="rmammoth"]Конструктивная критика и обсуждение всячески приветствуются.[/quote] Так я же уже сказал - новые сущности и интерфейсы. Во время написания программы, кроме текущего состояния стека данных, надо еще помнить какие есть теневые стеки и какой сейчас стек активен - а это все дополнительная нагрузка на разум человека. А значит увеличивает вероятность ошибки. Необходим реальный пример, когда данное расширение дает преимущество по сравнению с более классическим для форта подходом.[/quote]
Хм-м... Так ведь и про переменные надо помнить, и про много чего еще... Вообще, я заметил, программы получаются гораздо лучше, если помнить о том, что пишешь ;) Если серьезно, насчет преимуществ: я пытался реализовать оператор switch, аналогичный описанному, без теневых стеков, получалось довольно жутко и запутанно, по крайней мере, у меня. Если у Вас получится лучше и без довесков над стандартом -- буду только рад перенять опыт.
|
|
|
|
Добавлено: Чт июн 03, 2010 19:12 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
чтобы долго не рассусоливать: att/forth-ext.pdf
чтобы долго не рассусоливать: http://fforum.winglion.ru/att/forth-ext.pdf
|
|
|
|
Добавлено: Чт июн 03, 2010 17:30 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
mOleg писал(а): вопрос писал(а): Т.е. можно положить файл сюда? в текстовом виде вообще просто как сообщение в раздел статей. а pdf-ку может разместить администратор (WingLion). Видимо, у нас не особо с пространством на сервере, иначе, можно было бы выкладывать сюда изображения, у меня вот несколько пропало с ipicture.ru при обвале сайта и копий не сохранилось
[quote="mOleg"][quote="вопрос"]Т.е. можно положить файл сюда?[/quote] в текстовом виде вообще просто как сообщение в [url=http://fforum.winglion.ru/viewforum.php?f=34]раздел статей[/url]. а pdf-ку может разместить администратор (WingLion).[/quote]Видимо, у нас не особо с пространством на сервере, иначе, можно было бы выкладывать сюда изображения, у меня вот несколько пропало с ipicture.ru при обвале сайта и копий не сохранилось
|
|
|
|
Добавлено: Чт июн 03, 2010 17:17 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
вопрос писал(а): Т.е. можно положить файл сюда? в текстовом виде вообще просто как сообщение в раздел статей. а pdf-ку может разместить администратор (WingLion).
[quote="вопрос"]Т.е. можно положить файл сюда?[/quote] в текстовом виде вообще просто как сообщение в [url=http://fforum.winglion.ru/viewforum.php?f=34]раздел статей[/url]. а pdf-ку может разместить администратор (WingLion).
|
|
|
|
Добавлено: Чт июн 03, 2010 16:39 |
|
|
|
|
|
Заголовок сообщения: |
Re: Расширения Форта |
|
|
mOleg писал(а): а можно выложить этот текст в раздел "статьи", кстати pdf-ник можно и на форуме разместить, потому как качать со всяких ifolder-ов не очень удобно (впрочем, еще удобнее было бы, если бы содержимое было в html виде, но это уже хотелки ) . Т.е. можно положить файл сюда?
[quote="mOleg"]а можно выложить этот текст в раздел "статьи", кстати pdf-ник можно и на форуме разместить, потому как качать со всяких ifolder-ов не очень удобно (впрочем, еще удобнее было бы, если бы содержимое было в html виде, но это уже хотелки 8) ) .[/quote]Т.е. можно положить файл сюда?
|
|
|
|
Добавлено: Чт июн 03, 2010 16:08 |
|
|
|
|