Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

"двухслойное" программирование?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Иван FXS



Зарегистрирован: 26.09.2002
Сообщения: 12

СообщениеДобавлено: Чт Сен 26 2002 11:08    Заголовок сообщения: "двухслойное" программирование? Ответить с цитатой

Здравствуйте, коллеги.

Я хотел бы обсудить следующую тему. Пусть у нас есть некая сложная задача, под которую мы пишем сложный большой проект ...
(У меня, в самом деле, есть такая задача, я пишу на VBA.)

Каждая "система" программирования (язык, оболочка и т.п.) дает некоторый фиксированный инструментарий для написания программ: более или менее мощный, с одной стороны, и - более или менее "дружелюбный" (легко осваиваемый и комфортный и применении) - с другой.

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

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

Второй вопрос - организационный: где в рунете обсуждаются подобные вопросы (желательно - на материале VB)? Как мне найти "единомышленников" по данной теме?

Третий вопрос более конкретный: предположим, я хочу, чтобы основной текст кода проекта был написан в стандартных средствах VB, но чтобы на всем протяжении этого "стандартно-предметного" кода были расставлены специальные "люки", через которые программа уходила бы "наверх" в слой мета-программы, обеспечивающей эти самые дополнительные, повышающие эффективность проекта как целого процедуры ... Есть ли у кого-нибудь какие-то наработки, или идеи, или интересы в этой области? Существуют ли в этой сфере какие-то "стандарты", или, например, библиотеки мета-инструментов?

НП, Иван FXS
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Skip A.



Зарегистрирован: 29.09.2002
Сообщения: 24
Откуда: Newark

СообщениеДобавлено: Вс Сен 29 2002 00:38    Заголовок сообщения: Re: "двухслойное" программирование? Ответить с цитатой

На мой скромный взгляд подводный камень скрывается в архитектуре процессора И/или совеременных процессорах. Мы все как-то привыкли к x86.... Соответственно вряд ли можно вырваться из окружения "потоков" и "процессов". Вас просто не отпустит операционная система. (типа windows). Это только в DOS уходить... или еще куда. но вряд ли вам это понравится с вашим VBA. Можете серьезно меня материть, буду рад, если я не прав.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Иван FXS



Зарегистрирован: 26.09.2002
Сообщения: 12

СообщениеДобавлено: Пн Сен 30 2002 22:27    Заголовок сообщения: Re: "двухслойное" программирование? Ответить с цитатой

2 Skip: Сорри, я не понял, зачем нужно "вырваться из окружения "потоков" и "процессов""?

2 All.
Здравствуйте, коллеги
Например, конструкция "люка на второй этаж" могла бы выглядеть так, как в приведенном ниже листинге. В качестве комментария:
1. "Вставки" в процедуры нижнего этажа состоят из стандартного набора строк, от процедуры к процедуре меняется только конкретный литерал - значение константы cnst_ThisSFP_Name
2. Вставка составлена так, что если мы у Static SFP поменяем тип с SFP_Type на SFP0_Type, то вставка превратится в "баластную", но весьма необременительную: эквивалентную просто трем "холостым" GoTo.

'############################ Project First_Floor ################
Public Const cnst_ThisProject_Name = "First_Floor"
...
'================== Module myModule_bas =======================
Const cnst_ThisVBC_Name = "myModule_bas"
...
Function mySin(x As Double)
Const cnst_ThisSFP_Name = "Function mySin(x As Double)"
SFP0: Static SFP As SFP_Type: On SFP.o.SFPEntry GoTo SFP1, SFP2, SFP3, SFPEnd: GoTo SFP3
SFP1: SFPInit cnst_ThisSFP_Name, cnst_ThisVBC_Name, cnst_ThisProject_Name, SFP.o: GoTo SFP0
SFP2: Stop
SFP3:
'------------------ body of function ------------------
mySin = Sin(x)
'------------------------------------------------------
EndSF.. On SFP.o.SFPExit GoTo SFP1, SFP2, SFP3, SFPEnd, SFP0
SFPEnd: End Function
...
'====================== EndOf Module ==========================
...
'###################### EndOf Project #############################
'############################ Project Second_Floor ################
Public Const cnst_ThisProject_Name = "Second_Floor"
...
'================== Module SFP_bas ============================
Const cnst_ThisVBC_Name = "SFP_bas"
Type o0_Type: Entry As Byte: SFPExit As Byte: End Type
Public Type SFP0_Type: o As o0_Type: End Type
'-----------------------------------------------------------
Pu.. Type SFP_Type: o As New SFP_cls: End Type
Public Current_SFP As New SFP_cls
Public SFPs_Collection As New Collection, SFPsCollection_Counter As Long
...
'=================== EndOf Module =============================
...
'=================== Class SFP_cls ============================
Const cnst_ThisVBC_Name = "SFP_cls"
Public Class_Name As String
Public id_in_Collection As Long
...
Public Function SFPEntry() As Byte
Set Current_SFP = Me
...
SFPEntry = ...
If SFPEntry = 4 Then Set Current_SFP = Nothing
SFPEnd: End Function

Public Function SFPExit() As Byte
Set Current_SFP = Me
...
SFPExit = ...
If SFPExit = 4 Then Set Current_SFP = Nothing
SFPEnd: End Function
...
Private Sub Class_Initialize()
Let Class_Name = cnst_ThisVBC_Name
SFPsCollection_Counter = SFPsCollection_Counter + 1
id_in_Collection = SFPsCollection_Counter
SFPs_Collection.Add Me, CStr(id_in_Collection)
...
Debug.Print "Class_Initialize:" & cnst_ThisVBC_Name & " " & id_in_Collection
EndSFP: End Sub

Private Sub Class_Terminate()
SFPs_Collection.Remove ...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...