Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 17:09

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 172 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10, 11, 12  След.
Автор Сообщение
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 20:49 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 20:56 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
gudleifr писал(а):
1) Совмещение в одном потоке исполнения-компиляции. Все языки (и даже интерпретаторы) стараются разнеси эти два состояния как можно дальше. Исключение составляет, разве что Python, в котором "компиляция" может возникать без ведома пользователя и порождать кучу побочных эффектов.

Ну Лисп ещё.
Код:
> (define l '(define (foo) (write 'hello)))
> (eval l)
> (foo)
hello


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 21:02 
dynamic-wind писал(а):
Ну Лисп ещё.
Да. Но, во-первых, если бы у нас в кармане была такая "фига", как лямбда-исчисление, все было бы здорово. А, во-вторых, в Лиспе все пишется в одну строчку, там не забалуешь. У Вас еще более-менее осовремененная версия, в которой, как раз, определение отделено от исполнения.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 21:15 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Можно и в одну :)
Цитата:
> (let ((q '(define (bar) 'whoa!))) (eval q) (bar))

; WARNING in expand: reference to undefined identifier: bar
whoa!

Во время исполнения этой строчки реально вызывается компилятор и создает определение bar.
Варнинг вылетает ещё раньше перед исполнением самой этой строчки.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 21:24 
dynamic-wind писал(а):
Во время исполнения этой строчки реально вызывается компилятор и создает определение bar.
А вот теперь представьте себе, что Python позволяет спрятать такую хрень в одном из методов класса, описанного вполне в стиле C++.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 21:36 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
gudleifr писал(а):
А вот теперь представьте себе, что Python позволяет спрятать такую хрень в одном из методов класса, описанного вполне в стиле C++.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 21:44 
dynamic-wind писал(а):
Могу сделать вывод, что форт не уникален в таких трюках.
Не совсем. Лисп (как и другие функциональные языки) опирается на строгую математическую модель.
Python много чего позволяет, но требует таких затрат ресурсов, что по сравнению с ними все его возможности - тьфу. По сути, он смотрит на всю фигню, которую ему успели всучить на данный конкретный момент и непредвзято определить, что бы это значило?
А Forth - он проще любой отдельно взятой теории. Нужна метатеория.
P.S. И я здесь против слова "трюк". Это не трюк, это жизнь.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 22:02 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
gudleifr писал(а):
А Forth - он проще любой отдельно взятой теории. Нужна метатеория.

Это как?

1. Входной Поток. Из него стандартный Интерпретатор читает Лексемы, заменяет с помощью Словаря на Токены, передает их Исполнителю.
2. Словарь. Меняет Лексему на Статью. Меняет Статью на Токен. Создаёт Статью. Позволяет работать со Статьей как с Памятью.
3. Память. Набор Значений, которые можно читать и писать. Параметром служат Значения типа Адреса.
5. Стеки как дисциплина читания и писания Памяти, замкнутая на стековый указатель--Значение типа Адрес.
4. Исполнитель. Получает Токен и не возвращается :)
6. Интерпретатор как первый Токен, передаваемый Исполнителю.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 22:09 
dynamic-wind писал(а):
1-6...
Мягко говоря, притянуто за уши.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 22:10 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
dynamic-wind писал(а):
1-6...
Мягко говоря, притянуто за уши.

Но вообще-то вполне похоже на описание практического решения.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 22:13 
Хищник писал(а):
Но вообще-то вполне похоже на описание практического решения.
Если писать "Forth" на C/C++/C#, и оставить за бортом все его возможности.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 22:16 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
Если писать "Forth" на C/C++/C#, и оставить за бортом все его возможности.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 22:19 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
gudleifr писал(а):
Если писать "Forth" на C/C++/C#, и оставить за бортом все его возможности.

Почему сразу С? Это описание верхнего уровня--Разработка "сверху вниз". Притом попиленное на абстрактные сущности.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 22:24 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
dynamic-wind писал(а):
1. Входной Поток. Из него стандартный Интерпретатор читает Лексемы, заменяет с помощью Словаря на Токены, передает их Исполнителю.
2. Словарь. Меняет Лексему на Статью. Меняет Статью на Токен. Создаёт Статью. Позволяет работать со Статьей как с Памятью.
3. Память. Набор Значений, которые можно читать и писать. Параметром служат Значения типа Адреса.
5. Стеки как дисциплина читания и писания Памяти, замкнутая на стековый указатель--Значение типа Адрес.
4. Исполнитель. Получает Токен и не возвращается :)
6. Интерпретатор как первый Токен, передаваемый Исполнителю.


Это описание внутренностей реализации, а не вообще Форта.

А Форт - прост как повареная книга - это язык для описания действий (для программ из действий).

Главное действие состоит из последовательности действий, каждое действие из последовательности состоит из других последовательностей и т.д.

Код:
: C наша маша ела кашу ;

: D Вася тоже пил кефир ;

: B X Y и еще одна буква из высшей математики ;

: A B C D ;


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

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



За это сообщение автора WingLion поблагодарил: zehotello
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Разработка "сверху вниз"
СообщениеДобавлено: Сб фев 18, 2012 23:38 
Разработка сверху-вниз, в моём понимании, это
создание описания видения задачи через псевдокод словами. (Форт привлекать по необходимости,например DEFER), а дальше запускаем "скелет" приложения и заполняем необходимыми "сущностями" (реализовывать или брать готовые "сущности" решаем при уточнении реализации и по прогону программы)


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 172 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10, 11, 12  След.

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


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

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


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

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