Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: "двухслойное" программирование? Добавлено: 26.09.02 14:18  

Автор вопроса:  Иван FXS

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

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

(У меня, в самом деле, есть такая задача, и пишу я на VBA, собственно, поэтому и задаю вопрос на данном Форуме.)

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

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

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

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

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

НП, Иван FXS

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #1 Добавлено: 26.09.02 15:25

Привет! Тема весьма интересная, но на часть своих вопросов ты и сам ответил в конце... Именно библиотеки! А еще ActiveX компоненты. Любые обьекты с практически любыми свойствами , которые ты можешь после создания, неоднократно использовать в своих проэктах.Собственные библиотеки , а также написанные в других средах. Все это потом вызывается из проэкта. Но во многих случаях превдпочтительнее пользоваться модулями чтобы не увеличивать вес проги ненужным кодом, а подключать только непосредственно необходимый. По поводу конкретных мест, неуверен. Искать надо. Компонентов везде навалом. Но каждый ищет себе сам :)

Ответить

Номер ответа: 2
Автор ответа:
 Иван FXS



Вопросов: 5
Ответов: 7
 Профиль | | #2 Добавлено: 26.09.02 18:01

Здравствуйте, MAGNUS

Библиотеки, или ActiveX, или модули - это же ведь все разные ФОРМЫ: технологии создания, хранения и "подключения" к проекту некоторых дополнительных "служб" или "ресурсов" ... А я-то веду речь о СОДЕРЖАТЕЛЬНОЙ стороне этих ресурсов ...

НП, Иван FXS

Ответить

Номер ответа: 3
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #3 Добавлено: 26.09.02 18:37

Хм... Возможно я что то неверно понял. Но я допустим не представляю себе стандатризацию в этой области. Дело то как раз именно в том чтобы подключать что то конкретное в конкретные момент. И все это отличается от проэкта к проэкту, хотя существует и ряд таких "ресурсов" которые я например использовал практически во всех проэктах .

Те же API . Позволю себе привести в виде цитаты на мой взгляд несколько расплывчатую формулировку из вопроса:

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

Это ли не API ф-ии вызываемые из динамических библиотек? Которые кстати могут похвастать СОДЕРЖАНИЕМ рожденным в разных средах. И повушение эффективности проэкта чаще всего требует индивидуального подхода в зависимости от использованных средств и методов а также их комбинаций, что может в значительной степени усложнить задачу.

Если я в чем ошибаюсь, поправтеменя Коллега и давайте обсудим!

Ответить

Номер ответа: 4
Автор ответа:
 Иван FXS



Вопросов: 5
Ответов: 7
 Профиль | | #4 Добавлено: 26.09.02 19:17

"Стандатризацию в этой области" - Вы имеете в виду стандартизацию для разных ПРОГРАММИСТОВ или для разных ПРОЕКТОВ одного программиста? Я, пожалуй, - второе, поскольку понимаю, что в первом варианте свобода творчества (моего) очень ограничена ...

"Все это отличается от проэкта к проэкту", "повышение эффективности проэкта чаще всего требует индивидуального подхода"
 - наверное, мы говорим о разных вещах: я обсуждаю средства "организации" проекта, не зависящие от конкртного МАТЕРИАЛА (=задачи) конкретного проекта ...

"Несколько расплывчатую формулировку из вопроса" - сейчас я понимаю, что мне следовало более акцентировать, что меня интересуют не столько сами "люки", сколько та сложная "кухня", котора предполагается ЗА НИМИ.

"Это ли не API ф-ии вызываемые из динамических библиотек?"
- конечно, и API, и динамические библиотеки, подпадают под формулировку моего вопроса, но я продолжаю настаивать, что спрашивал я о другом:
хотелось бы, чтобы этот "верхний слой" (мета-программа) был ИНТЕГРИРОВАНЫМ, то есть чтобы - выходя в него из разных точек кода проекта - мы все время попадали в некоторое единое мета-пространство, в котором накапливалась бы (и - была доступна для анализа в реальном времени работы программы) некая интегральная информация о работе проекта ...

НП, Иван FXS

Ответить

Номер ответа: 5
Автор ответа:
 MAGNUS



Вопросов: 12
Ответов: 430
 Профиль | | #5 Добавлено: 26.09.02 19:59

Кажется теперь начинаю понимать о чем речь... Обьеденение всего  что ранее упоминалось (модули,АПИ,обьекты и т.д. "ресурсов") в нечто единое, эффективность чего должна расти по мере накопления различных "ресурсов" и предоставляющее гораздо более обширные возможности как твотчества так и более приземленной отладлки. Это нечто (можно несколько изменить формулировку : Мета-среда) так же как и повсеместно используемые DLL , должно быть доступно независимо от типа проэкта и  его сложности, но и не быть его частью .

Но исходя из структуры наиболее распространенных средств разработки а также систем под управлением которых все это работает, такое, ИМХО невозможно (вернее на данный момент не реализовано) т.к. прежде всего сама среда разработки , либо среда выполнения (а если разобраться, то обе сразу т.к. встает вопрос сопровождения) должны предоставлять подобные возможности , чего мы сейчас не наблюдаем. Разве что новый виток - .NET технолпогия? Но я с ней пока знаком довольно поверхностно т.к. только начал ее изучение.

Или же мы говорим о более простых вещах , например пакет SPYWORKS от DISAWARE пакет "ресурсов" расширяющих возможности VB , но такие вещи не подходят под формулировку..

Ответить

Номер ответа: 6
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 26.09.02 20:12

Не очень понятно что тебе  нужно. Объясни конкретнее.

Ну типа: - без гравицапы пеплац только так летать может, а с гравицапой на любую планету - шить и там. :-)

Ответить

Номер ответа: 7
Автор ответа:
 Иван FXS



Вопросов: 5
Ответов: 7
 Профиль | | #7 Добавлено: 26.09.02 22:13

Коллеги MAGNUS и CyRax,

можно я - для ясности - продублирую сюда постер из "параллельного" обсуждения

(http://bbs.vbstreets.ru//topic.asp?TOPIC_ID=3869 )

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Netguard, я хочу:

а. научиться надстраивать над своим проектом этот самый "второй этаж"

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

quote:

--------------------------------------------------------------------------------

Операционная система устроена из множество блоков каторые писало кучу народу и каждая библиотека за чтото отвечае. Т.е. в нее заложены какието функции и вызвав которые можно что то узнать или сделать. Так вот.... совсем все в одно засунуть трудновато и вызывать все из одного модуля....

--------------------------------------------------------------------------------

Точно! Так вот когда мы с самого низу, из своего "заземленного" модуля через люк, через маленькую такую дырочку, вылезаем наверх, - вот тогда и оттуда, со 2-го этажа, мы можем иметь возможность вызывать все эти библиотеки и функции.

А можем - и не вызывать, а просто сразу вернуться вниз, к своим земным заботам.

quote:

--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------

Функций, реализующих то, что я обсуждаю, - я пока не встречал ... впрочем, я очень и очень поверхностно знаком с СОВРЕМЕННЫМИ ТЕНДЕНЦИЯМИ развития программирования ... поэтому и пристаю с распросами к профессионалам.

НП, Иван FXS

Ответить

Номер ответа: 8
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 27.09.02 19:31

Всё равно не понял.

Кстати. Ты смотрел тему ExecutLine. Этот VBA-шный метод может оказаться тебе полезен.

Т.е. в качестве дополнительного пространства может выступать динамический или статический файл со списком ком[sensored], которые можно выполнять при помощи этого метода.

Ответить

Номер ответа: 9
Автор ответа:
 Иван FXS



Вопросов: 5
Ответов: 7
 Профиль | | #9 Добавлено: 30.09.02 23:17

CyRax, у меня в VBA-97 метод ExecutLine нет

Ответить

Номер ответа: 10
Автор ответа:
 Иван FXS



Вопросов: 5
Ответов: 7
 Профиль | | #10 Добавлено: 30.09.02 23:19

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)

'------------------------------------------------------

EndSFP: 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

'-----------------------------------------------------------

Public 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 CStr(id_in_Collection)

EndSFP: End Sub

'====================== EndOf Class ==========================

'###################### EndOf Project #############################

Ответить

Номер ответа: 11
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #11
Добавлено: 01.10.02 19:19

Возможно.

Надеюсь ты правильно его использовал.

Раз это метод, то к нему нужен объект.

У меня, кстати, в справке Word 2002 тоже его нет.

Я нашёл его описание в MSDN.

http://msdn.microsoft.com/

 

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам