|
"двухслойное" программирование?
|
|||
---|---|---|---|
#18+
Здравствуйте, коллеги. Я хотел бы обсудить следующую тему. Пусть у нас есть некая сложная задача, под которую мы пишем сложный большой проект ... (У меня, в самом деле, есть такая задача, и пишу я на VBA, собственно, поэтому и задаю вопрос на данном Форуме.) Каждая "система" программирования (язык, оболочка и т.п.) дает некоторый фиксированный инструментарий для написания программ: более или менее мощный, с одной стороны, и - более или менее "дружелюбный" (легко осваиваемый и комфортный и применении) - с другой. С другой стороны, - если мы имеем достаточный кругозор и какой-то достаточно обширный набор идей о том, что такое "эффективное программирование", - то у нас неизбежно возникает желание применить эти идеи в своем проекте ... Соответственно, постепенно выстраивается целый пласт своих собственных инструментов, расширяющих стандартные возможности используемой системы программирования. При этом на любом современном языке программирования (например, на VB) можно создавать эти "специальные инструменты программирования" практически неограниченной сложности и мощности ... Соответственно, у меня есть три вопроса: первый - достаточно абстрактный - как должен быть устроен этот слой собственных инструментов программирования, и как должен он взаимодействовать с основным "предметным" проектом? Второй вопрос - организационный: где в рунете обсуждаются подобные вопросы (желательно - на материале VB)? Как мне найти "единомышленников" по данной теме? Третий вопрос более конкретный: предположим, я хочу, чтобы основной текст кода проекта был написан в стандартных средствах VB, но чтобы на всем протяжении этого "стандартно-предметного" кода были расставлены специальные "люки", через которые программа уходила бы "наверх" в слой мета-программы, обеспечивающей эти самые дополнительные, повышающие эффективность проекта как целого процедуры ... Есть ли у кого-нибудь какие-то наработки, или идеи, или интересы в этой области? Существуют ли в этой сфере какие-то "стандарты", или, например, библиотеки мета-инструментов? НП, Иван FXS ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2002, 12:36 |
|
"двухслойное" программирование?
|
|||
---|---|---|---|
#18+
Ответ на ваш вопрос - ActiveX-компоненты (или OCX-компоненты) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2002, 13:02 |
|
"двухслойное" программирование?
|
|||
---|---|---|---|
#18+
Здравствуйте, dao "ActiveX-компоненты (или OCX-компоненты)" - это же ведь ФОРМА: технология создания, хранения и "подключения" к проекту некоторых дополнительных "служб" или "ресурсов" ... А я-то веду речь о СОДЕРЖАТЕЛЬНОЙ стороне этих ресурсов ... НП, Иван FXS ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2002, 17:47 |
|
"двухслойное" программирование?
|
|||
---|---|---|---|
#18+
Здравствуйте. А функциональность и скорость? Обычно вставляя дополнительные уровни, между процессором и программистом, мы усложняем планы компиляции, и как результат получаем менее оптимизированный код. Не так ли? dao, прав хорошо написаный OCX с большой функциональностью легко заменит всякие надстройки. Спускаться вниз всегда легче, чем лезть наверх. Вопрос в том Что мы хотим добиться вставляя meta-тэги в текст базовых модулей? С Уважением, Артем ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 01:25 |
|
"двухслойное" программирование?
|
|||
---|---|---|---|
#18+
Здравствуйте, Артем "Что мы хотим добиться вставляя meta-тэги в текст базовых модулей?" - надстраивание над "предметным" проектом ИНТЕГРИРОВАННОГО мета-проекта ("этажа"), абстрагированного от конкретного "материала" нижнего этажа и нацеленного на ЭФФЕКТИВНОСТЬ работы проекта. В частности, непротиворечивость (например, - debug), но - много чего еще ... давайте уж произнесу и "страшное" слово ИИ ;-) НП, Иван FXS ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 19:48 |
|
"двухслойное" программирование?
|
|||
---|---|---|---|
#18+
Здравствуйте Иван. > в частности, непротиворечивость (например, - debug), Мы все в процессе работы обрастаем различными dllями, модулями и проч. непонятного или абсолютно понятного направления и происхождения. И добавление в программные модули откомпилированных участков собственного изготовления, но оттестеных сотни раз, по моему гораздо более удовлетворительно сказывается на производительности, нежели надстраивать над VB непонятно что, и непонятно зачем. Вы хотите строить большие пректы не прикасаясь к клавиатуре... по дизайнерски орудуя мышкой, это здорово, но что в конце получится, и кто будет давать гарантии в работоспособности программных модулей разработаных каким-нибудь супер-пупер программным процессором. Утопия в чистом виде Не зря же сказано: "Коль сапоги начнет тачать пирожник" Много людей не за зря получают свои не маленькие деньги, только за то что взяв клаву в руки, зубы и т.д кому как удобно. Фантазируют потому что в основном труд программиста - это труд творческий, как у художника. Участие в проекте постановщика задачи, просто позволяет направить творческую энергию в правильное русло. Не дать в конце концов захлебнуться в потоке пива. Если я правильно Вас понял и вообще веду речь о том о чем и Вы. Но это так моё мнение. Собственно VB как и любой другой язык верхнего уровня и есть надстройка к компилятору. Проект должен быть в первую очередь грамотно спроектирован, а уж тогда и прогу до него сваять дело техники. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 22:03 |
|
"двухслойное" программирование?
|
|||
---|---|---|---|
#18+
2 Артем. > Вы хотите строить большие пректы не прикасаясь к клавиатуре... по дизайнерски орудуя мышкой - вот уж чего нет, того нет: про "мышку" я ни слова не сказал! > кто будет давать гарантии в работоспособности программных модулей разработаных каким-нибудь супер-пупер программным процессором. - "программный процессор" - это про мое "ИИ"? Нет, я не предполагаю, что ИИ со "второго этажа" будет САМ писать код 1-го этажа ... А вот позволять нам регулировать степень нашего конроля за "кодом 1-го этажа" он будет (в частности - управлять тем, какая информация - насколько подробная - сбрасывается в лог-файл). > VB как и любой другой язык верхнего уровня и есть надстройка к компилятору - отлично, Вы говорите, что этажа уже два (первый, правда, "не наш" ...)? Значит я предлагаю надстроить третий! > Проект должен быть в первую очередь грамотно спроектирован, а уж тогда и прогу до него сваять дело техники - сорри, как это Вы разделяете "проект" и "прогу"? Вы сами что ли делаете только второе? А кто тогда для Вас "проект проектирует"? ----------------------------------------- 2 All. Здравствуйте, коллеги Например, конструкция "люка на второй этаж" могла бы выглядеть так, как в приведенном ниже листинге. В качестве комментария: 1. "Вставки" в процедуры нижнего этажа состоят из стандартного набора строк, от процедуры к процедуре меняется только конкретный литерал - значение константы cnst_ThisSFP_Name 2. Вставка составлена так, что если мы у Static SFP поменяем тип с SFP_Type на SFP0_Type, то вставка превратится в "баластную", но весьма необременительную: эквивалентную просто трем "холостым" GoTo. НП, Иван FXS '############################ 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: SFPEntry 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 ############################# ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2002, 16:37 |
|
"двухслойное" программирование?
|
|||
---|---|---|---|
#18+
Проект и прога - это действительно две большие разницы. К счастью. Прога - это проекция большого творческого труда коллектива разработчиков, менеджера проектов, заказчиков (читать проекта). написать более менее рабочую прогу может каждый, а вот сделать проект от первого разговора с заказчиком до последней бутылки шампанского, довести его до стоящей реализации дело сложное. Кнопки на клавиатуре мы все жать умеем. Но это уже флейм абсолютно не по теме... С уважением. Артем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2002, 02:23 |
|
|
start [/forum/topic.php?fid=60&msg=32053925&tid=2171608]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 270ms |
total: | 401ms |
0 / 0 |