Страница: 1 |
Здравствуйте, коллеги. Я хотел бы обсудить следующую тему. Пусть у нас есть некая сложная задача, под которую мы пишем сложный большой проект ... (У меня, в самом деле, есть такая задача, и пишу я на VBA, собственно, поэтому и задаю вопрос на данном Форуме.) Каждая "система" программирования (язык, оболочка и т.п.) дает некоторый фиксированный инструментарий для написания программ: более или менее мощный, с одной стороны, и - более или менее "дружелюбный" (легко осваиваемый и комфортный и применении) - с другой. С другой стороны, - если мы имеем достаточный кругозор и какой-то достаточно обширный набор идей о том, что такое "эффективное программирование", - то у нас неизбежно возникает желание применить эти идеи в своем проекте ... Соответственно, постепенно выстраивается целый пласт своих собственных инструментов, расширяющих стандартные возможности используемой системы программирования. При этом на любом современном языке программирования (например, на VB) можно создавать эти "специальные инструменты программирования" практически неограниченной сложности и мощности ... Соответственно, у меня есть три вопроса: первый - достаточно абстрактный - как должен быть устроен этот слой собственных инструментов программирования, и как должен он взаимодействовать с основным "предметным" проектом? Второй вопрос - организационный: где в рунете обсуждаются подобные вопросы (желательно - на материале VB)? Как мне найти "единомышленников" по данной теме? Третий вопрос более конкретный: предположим, я хочу, чтобы основной текст кода проекта был написан в стандартных средствах VB, но чтобы на всем протяжении этого "стандартно-предметного" кода были расставлены специальные "люки", через которые программа уходила бы "наверх" в слой мета-программы, обеспечивающей эти самые дополнительные, повышающие эффективность проекта как целого процедуры ... Есть ли у кого-нибудь какие-то наработки, или идеи, или интересы в этой области? Существуют ли в этой сфере какие-то "стандарты", или, например, библиотеки мета-инструментов? НП, Иван FXS
Привет! Тема весьма интересная, но на часть своих вопросов ты и сам ответил в конце... Именно библиотеки! А еще ActiveX компоненты. Любые обьекты с практически любыми свойствами , которые ты можешь после создания, неоднократно использовать в своих проэктах.Собственные библиотеки , а также написанные в других средах. Все это потом вызывается из проэкта. Но во многих случаях превдпочтительнее пользоваться модулями чтобы не увеличивать вес проги ненужным кодом, а подключать только непосредственно необходимый. По поводу конкретных мест, неуверен. Искать надо. Компонентов везде навалом. Но каждый ищет себе сам Здравствуйте, MAGNUS Библиотеки, или ActiveX, или модули - это же ведь все разные ФОРМЫ: технологии создания, хранения и "подключения" к проекту некоторых дополнительных "служб" или "ресурсов" ... А я-то веду речь о СОДЕРЖАТЕЛЬНОЙ стороне этих ресурсов ... НП, Иван FXS Хм... Возможно я что то неверно понял. Но я допустим не представляю себе стандатризацию в этой области. Дело то как раз именно в том чтобы подключать что то конкретное в конкретные момент. И все это отличается от проэкта к проэкту, хотя существует и ряд таких "ресурсов" которые я например использовал практически во всех проэктах . Те же API . Позволю себе привести в виде цитаты на мой взгляд несколько расплывчатую формулировку из вопроса: "я хочу, чтобы основной текст кода проекта был написан в стандартных средствах VB, но чтобы на всем протяжении этого "стандартно-предметного" кода были расставлены специальные "люки", через которые программа уходила бы "наверх" в слой мета-программы, обеспечивающей эти самые дополнительные, повышающие эффективность проекта как целого процедуры ..." Это ли не API ф-ии вызываемые из динамических библиотек? Которые кстати могут похвастать СОДЕРЖАНИЕМ рожденным в разных средах. И повушение эффективности проэкта чаще всего требует индивидуального подхода в зависимости от использованных средств и методов а также их комбинаций, что может в значительной степени усложнить задачу. Если я в чем ошибаюсь, поправтеменя Коллега и давайте обсудим! "Стандатризацию в этой области" - Вы имеете в виду стандартизацию для разных ПРОГРАММИСТОВ или для разных ПРОЕКТОВ одного программиста? Я, пожалуй, - второе, поскольку понимаю, что в первом варианте свобода творчества (моего) очень ограничена ... "Все это отличается от проэкта к проэкту", "повышение эффективности проэкта чаще всего требует индивидуального подхода" "Несколько расплывчатую формулировку из вопроса" - сейчас я понимаю, что мне следовало более акцентировать, что меня интересуют не столько сами "люки", сколько та сложная "кухня", котора предполагается ЗА НИМИ. "Это ли не API ф-ии вызываемые из динамических библиотек?" НП, Иван FXS Кажется теперь начинаю понимать о чем речь... Обьеденение всего что ранее упоминалось (модули,АПИ,обьекты и т.д. "ресурсов") в нечто единое, эффективность чего должна расти по мере накопления различных "ресурсов" и предоставляющее гораздо более обширные возможности как твотчества так и более приземленной отладлки. Это нечто (можно несколько изменить формулировку : Мета-среда) так же как и повсеместно используемые DLL , должно быть доступно независимо от типа проэкта и его сложности, но и не быть его частью . Но исходя из структуры наиболее распространенных средств разработки а также систем под управлением которых все это работает, такое, ИМХО невозможно (вернее на данный момент не реализовано) т.к. прежде всего сама среда разработки , либо среда выполнения (а если разобраться, то обе сразу т.к. встает вопрос сопровождения) должны предоставлять подобные возможности , чего мы сейчас не наблюдаем. Разве что новый виток - .NET технолпогия? Но я с ней пока знаком довольно поверхностно т.к. только начал ее изучение. Или же мы говорим о более простых вещах , например пакет SPYWORKS от DISAWARE пакет "ресурсов" расширяющих возможности VB , но такие вещи не подходят под формулировку.. Не очень понятно что тебе нужно. Объясни конкретнее. Ну типа: - без гравицапы пеплац только так летать может, а с гравицапой на любую планету - шить и там. Коллеги MAGNUS и CyRax, можно я - для ясности - продублирую сюда постер из "параллельного" обсуждения (http://bbs.vbstreets.ru//topic.asp?TOPIC_ID=3869 ) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Netguard, я хочу: а. научиться надстраивать над своим проектом этот самый "второй этаж" б. для этого - пообсуждать эту тему со специалистами, которые понимают, что над проектом должен в самом деле быть этот "второй этаж" quote: -------------------------------------------------------------------------------- Операционная система устроена из множество блоков каторые писало кучу народу и каждая библиотека за чтото отвечае. Т.е. в нее заложены какието функции и вызвав которые можно что то узнать или сделать. Так вот.... совсем все в одно засунуть трудновато и вызывать все из одного модуля.... -------------------------------------------------------------------------------- Точно! Так вот когда мы с самого низу, из своего "заземленного" модуля через люк, через маленькую такую дырочку, вылезаем наверх, - вот тогда и оттуда, со 2-го этажа, мы можем иметь возможность вызывать все эти библиотеки и функции. А можем - и не вызывать, а просто сразу вернуться вниз, к своим земным заботам. quote: -------------------------------------------------------------------------------- Так же в языках програмирования оно служат для вызова тех или иных функций чтобы достичь определенных целей.... -------------------------------------------------------------------------------- Функций, реализующих то, что я обсуждаю, - я пока не встречал ... впрочем, я очень и очень поверхностно знаком с СОВРЕМЕННЫМИ ТЕНДЕНЦИЯМИ развития программирования ... поэтому и пристаю с распросами к профессионалам. НП, Иван FXS Всё равно не понял. Кстати. Ты смотрел тему ExecutLine. Этот VBA-шный метод может оказаться тебе полезен. Т.е. в качестве дополнительного пространства может выступать динамический или статический файл со списком ком[sensored], которые можно выполнять при помощи этого метода. CyRax, у меня в VBA-97 метод ExecutLine нет 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 ############################# Возможно. Надеюсь ты правильно его использовал. Раз это метод, то к нему нужен объект. У меня, кстати, в справке Word 2002 тоже его нет. Я нашёл его описание в MSDN. Страница: 1 |
Вопрос: "двухслойное" программирование?
Добавлено: 26.09.02 14:18
Автор вопроса: Иван FXS
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
MAGNUS
Вопросов: 12
Ответов: 430
Профиль | | #1
Добавлено: 26.09.02 15:25
Номер ответа: 2
Автор ответа:
Иван FXS
Вопросов: 5
Ответов: 7
Профиль | | #2
Добавлено: 26.09.02 18:01
Номер ответа: 3
Автор ответа:
MAGNUS
Вопросов: 12
Ответов: 430
Профиль | | #3
Добавлено: 26.09.02 18:37
Номер ответа: 4
Автор ответа:
Иван FXS
Вопросов: 5
Ответов: 7
Профиль | | #4
Добавлено: 26.09.02 19:17
- наверное, мы говорим о разных вещах: я обсуждаю средства "организации" проекта, не зависящие от конкртного МАТЕРИАЛА (=задачи) конкретного проекта ...
- конечно, и API, и динамические библиотеки, подпадают под формулировку моего вопроса, но я продолжаю настаивать, что спрашивал я о другом:
хотелось бы, чтобы этот "верхний слой" (мета-программа) был ИНТЕГРИРОВАНЫМ, то есть чтобы - выходя в него из разных точек кода проекта - мы все время попадали в некоторое единое мета-пространство, в котором накапливалась бы (и - была доступна для анализа в реальном времени работы программы) некая интегральная информация о работе проекта ...
Номер ответа: 5
Автор ответа:
MAGNUS
Вопросов: 12
Ответов: 430
Профиль | | #5
Добавлено: 26.09.02 19:59
Номер ответа: 6
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #6
Добавлено: 26.09.02 20:12
Номер ответа: 7
Автор ответа:
Иван FXS
Вопросов: 5
Ответов: 7
Профиль | | #7
Добавлено: 26.09.02 22:13
Номер ответа: 8
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #8
Добавлено: 27.09.02 19:31
Номер ответа: 9
Автор ответа:
Иван FXS
Вопросов: 5
Ответов: 7
Профиль | | #9
Добавлено: 30.09.02 23:17
Номер ответа: 10
Автор ответа:
Иван FXS
Вопросов: 5
Ответов: 7
Профиль | | #10
Добавлено: 30.09.02 23:19
Номер ответа: 11
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #11
Добавлено: 01.10.02 19:19