Когда?

Раздел посвящен программированию с использованием Power Basic.
BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Когда?

Сообщение BION » 11.09.2007 (Вт) 11:33

Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Когда?

Сообщение jangle » 11.09.2007 (Вт) 11:42

BION писал(а):Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...


А может не надо ООП? :)

BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Re: Когда?

Сообщение BION » 11.09.2007 (Вт) 12:55

jangle писал(а):
BION писал(а):Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...


А может не надо ООП? :)


Надо Федя, надо. :)

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 11.09.2007 (Вт) 13:26

Надо Федя, надо.


Студент, это же не наш метод.. :wink: .

А если серьезно, зачем в PB ООП? Ведь это очень красивый функциональный язык, зачем портить его и вносить инородные элементы?

PBDN
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 21.10.2006 (Сб) 22:10

Re: Когда?

Сообщение PBDN » 11.09.2007 (Вт) 21:24

BION писал(а):Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...


PB есть конструктор - собери себе сам что хошь.
Нет пока что ни одного процессора в лоб понимающего ООП,
т.е. весь ООП спускаясь до машинных кодов опять превратится в старую добрую процедуру.

Ну а если так хочется сильно ООП то на ПБ можно организовать это самому, что то типа этого

Код: Выделить всё
#COMPILE EXE
#DIM ALL

TYPE Methods
   ShowObjectASCIIZ AS DWORD
   MultiplyObjectDWORDbyTwo AS DWORD
END TYPE

TYPE Objects
   dw AS DWORD
   sz AS ASCIIZ *128
END TYPE

TYPE OOPClass
   Method AS Methods
   obj AS Objects
END TYPE

FUNCTION Foo1 (class1 AS OOPClass) AS LONG
    ? class1.obj.sz
END FUNCTION

FUNCTION Foo2 (class1 AS OOPClass) AS LONG
  FUNCTION = class1.obj.dw * 2
END FUNCTION

MACRO Run (nClass, param, result)
    CALL DWORD nClass USING Foo1(param) TO result
END MACRO

FUNCTION PBMAIN () AS LONG
    LOCAL MyClass AS OOPClass, lRes AS LONG, sRes AS STRING
    ' init
    MyClass.Method.ShowObjectASCIIZ = CODEPTR(Foo1)
    MyClass.Method.MultiplyObjectDWORDbyTwo = CODEPTR(Foo2)
   
    MyClass.obj.sz="I'm OOP string"
    MyClass.obj.dw=&h12345678
    'use
    Run (MyClass.Method.ShowObjectASCIIZ , MyClass, lRes)
    Run (MyClass.Method.MultiplyObjectDWORDbyTwo , MyClass, lRes)
   
    ? STR$(lRes)
END FUNCTION

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.09.2007 (Ср) 8:25

jangle писал(а):А если серьезно, зачем в PB ООП? Ведь это очень красивый функциональный язык, зачем портить его и вносить инородные элементы?

PowerBasic-то функциональный? Ну-ну.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Когда?

Сообщение tyomitch » 12.09.2007 (Ср) 8:30

PBDN писал(а):Нет пока что ни одного процессора в лоб понимающего ООП,

Были. http://en.wikipedia.org/wiki/Intel_i432
От них отказались, а от ООП нет.
Откуда можно сделать вывод, что для использования ООП процессорная поддержка не только не требуется, но и не особенно помогает.
Изображение

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 12.09.2007 (Ср) 14:06

Кстати, насчет реализации ООП. Помнится в конце 2006 года, Боб Зейл грозился, что следующий 2007 год будет "революционным" в развитии PB. Скорее всего, таки введут в 9 версии ООП...

BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Сообщение BION » 12.09.2007 (Ср) 21:57

jangle писал(а):Кстати, насчет реализации ООП. Помнится в конце 2006 года, Боб Зейл грозился, что следующий 2007 год будет "революционным" в развитии PB. Скорее всего, таки введут в 9 версии ООП...


Дай бог...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 14.09.2007 (Пт) 12:35

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

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 14.09.2007 (Пт) 13:41

Вполне согласен с jangle.

Есть вещи, которые действительно нужно добавить:
- Поддежка библиотек .LIB и объекных файлов .OBJ. Добавить линкер
- Опкоды для SSExx, 3DKnow и т.д.
- Технология cоздания ActiveX .OCX и .DLL объектов (хоть и устарела, но всё же актуальна)
- Поддержка Linux. Вот это уж точно востребовано.
- Прикрутить удобный IDE.

Последнее, вообще как заноза для многих. Поэтому, IMO, начать надо с него ;)

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Re: Когда?

Сообщение Dark Machine » 14.09.2007 (Пт) 13:46

PBDN писал(а):
BION писал(а):Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...


PB есть конструктор - собери себе сам что хошь.
Нет пока что ни одного процессора в лоб понимающего ООП,
т.е. весь ООП спускаясь до машинных кодов опять превратится в старую добрую процедуру.

Ну а если так хочется сильно ООП то на ПБ можно организовать это самому, что то типа этого

Код: Выделить всё
#COMPILE EXE
#DIM ALL

TYPE Methods
   ShowObjectASCIIZ AS DWORD
   MultiplyObjectDWORDbyTwo AS DWORD
END TYPE

TYPE Objects
   dw AS DWORD
   sz AS ASCIIZ *128
END TYPE

TYPE OOPClass
   Method AS Methods
   obj AS Objects
END TYPE

FUNCTION Foo1 (class1 AS OOPClass) AS LONG
    ? class1.obj.sz
END FUNCTION

FUNCTION Foo2 (class1 AS OOPClass) AS LONG
  FUNCTION = class1.obj.dw * 2
END FUNCTION

MACRO Run (nClass, param, result)
    CALL DWORD nClass USING Foo1(param) TO result
END MACRO

FUNCTION PBMAIN () AS LONG
    LOCAL MyClass AS OOPClass, lRes AS LONG, sRes AS STRING
    ' init
    MyClass.Method.ShowObjectASCIIZ = CODEPTR(Foo1)
    MyClass.Method.MultiplyObjectDWORDbyTwo = CODEPTR(Foo2)
   
    MyClass.obj.sz="I'm OOP string"
    MyClass.obj.dw=&h12345678
    'use
    Run (MyClass.Method.ShowObjectASCIIZ , MyClass, lRes)
    Run (MyClass.Method.MultiplyObjectDWORDbyTwo , MyClass, lRes)
   
    ? STR$(lRes)
END FUNCTION


Таким методом можно программу нехило закриптовать, запутать дебуггер...

PBDN
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 21.10.2006 (Сб) 22:10

Сообщение PBDN » 14.09.2007 (Пт) 16:54

Dark Machine писал(а):Есть вещи, которые действительно нужно добавить:
- Поддежка библиотек .LIB и объекных файлов .OBJ. Добавить линкер


LIB & OBJ от чего ? От МС визуал студии или от МАСМ или ...?
форматы то у всех разные , поэтому это и является камнем преткновения, Хатч как то уже писал об этом. ИМХО если бы прикрутили хотя бы формат от студии, это был бы уже огромный прорыв, навалом библиотек именно в этом стандарте...
Dark Machine писал(а): - Опкоды для SSExx, 3DKnow и т.д.
- Технология cоздания ActiveX .OCX и .DLL объектов (хоть и устарела, но всё же актуальна)
- Поддержка Linux. Вот это уж точно востребовано.

Да уж, это очень очень даже не помешало бы...
Dark Machine писал(а): - Прикрутить удобный IDE.

Кстати никто не знает, CyRax полностью забросил его проект превращения ИДЕ в ВБ образный ? ИМХО очень неплохая задумка была.
Dark Machine писал(а):Таким методом можно программу нехило закриптовать, запутать дебуггер...

:) Зато самая что ни на есть ООП
В принципе ИМХО ООП полезен только только в больших проектах, где многими командами разрабатываются разные участки кода и сливаются в проект как классы, честно говоря вообще не вижу никаких преград для осуществления этого даже с текущим компилиром как показано выше, и сливать классы в отдельные инклуды.
.NET в принципе тоже можно подцепить, но также как и COM трошки геморрно.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 14.09.2007 (Пт) 19:31

obj и .lib - в COFF формате. Ибо юзается масмом, VC, VB6. Нужна опция компиляции объектников с включением в них используемого рантайма.
Далее - возможность отказа от части рантайма, которая юзает API - возможность спокойно писать драйвера.
Компиляция кода под ARM - работа под WinCE
Изображение

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 17.09.2007 (Пн) 10:39

Кстати никто не знает, CyRax полностью забросил его проект превращения ИДЕ в ВБ образный ? ИМХО очень неплохая задумка была.


Да забросил, и даже исходники выложил. Ничего интересного там нет.

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 17.09.2007 (Пн) 13:49

Забросил и даже исходники выложил...

hPBE или отдельный проект по IDE?

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 17.09.2007 (Пн) 16:30

hPBE или отдельный проект по IDE?


название уже не помню, но это был текстовый редктор написанный на VB

PBDN
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 21.10.2006 (Сб) 22:10

Сообщение PBDN » 18.09.2007 (Вт) 6:41

hPBE или отдельный проект по IDE?


Да hPBE. ИМХО неплохая задумка

PBDN
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 21.10.2006 (Сб) 22:10

Сообщение PBDN » 18.09.2007 (Вт) 6:47

jangle писал(а):название уже не помню, но это был текстовый редктор написанный на VB


Не, рPBE инжектировался непосредственно в ПБшный ИДЕ. На сколько я помню, CyRax сперва пытался его продавать, но нарвавшись на "провокационную критику" постояльцев ПБ форума... просто выложил русскоязычным бесплатно.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Когда?

Сообщение jangle » 20.09.2007 (Чт) 9:47

Dark Machine писал(а):
PBDN писал(а):
BION писал(а):Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...


PB есть конструктор - собери себе сам что хошь.
Нет пока что ни одного процессора в лоб понимающего ООП,
т.е. весь ООП спускаясь до машинных кодов опять превратится в старую добрую процедуру.

Ну а если так хочется сильно ООП то на ПБ можно организовать это самому, что то типа этого

Код: Выделить всё
#COMPILE EXE
#DIM ALL

TYPE Methods
   ShowObjectASCIIZ AS DWORD
   MultiplyObjectDWORDbyTwo AS DWORD
END TYPE

TYPE Objects
   dw AS DWORD
   sz AS ASCIIZ *128
END TYPE

TYPE OOPClass
   Method AS Methods
   obj AS Objects
END TYPE

FUNCTION Foo1 (class1 AS OOPClass) AS LONG
    ? class1.obj.sz
END FUNCTION

FUNCTION Foo2 (class1 AS OOPClass) AS LONG
  FUNCTION = class1.obj.dw * 2
END FUNCTION

MACRO Run (nClass, param, result)
    CALL DWORD nClass USING Foo1(param) TO result
END MACRO

FUNCTION PBMAIN () AS LONG
    LOCAL MyClass AS OOPClass, lRes AS LONG, sRes AS STRING
    ' init
    MyClass.Method.ShowObjectASCIIZ = CODEPTR(Foo1)
    MyClass.Method.MultiplyObjectDWORDbyTwo = CODEPTR(Foo2)
   
    MyClass.obj.sz="I'm OOP string"
    MyClass.obj.dw=&h12345678
    'use
    Run (MyClass.Method.ShowObjectASCIIZ , MyClass, lRes)
    Run (MyClass.Method.MultiplyObjectDWORDbyTwo , MyClass, lRes)
   
    ? STR$(lRes)
END FUNCTION


Таким методом можно программу нехило закриптовать, запутать дебуггер...


Это проверено на практике? Просто я сейчас думаю над защитой от отладчиков и обфускация один из путей.

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 20.09.2007 (Чт) 15:03

Проверил на практике -- запутывание простых операций.
Пример выше показывает, как можно удлинить процесс инициализации строки или числа.

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

Код: Выделить всё
    LOCAL a AS STRING, d AS BYTE PTR

    a = SPACE$(7)
    d = STRPTR(a)

    ! push 65
    ! push 66
    ! push 67
    ! push 68
    ! push 69
    ! push 70
    ! push 71

    ! mov cx, 7
    ! mov ebx, d

    l:
    ! pop eax
    ! mov byte ptr [ebx], al
    ! inc bl
    ! loop l

    ? a     

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 20.09.2007 (Чт) 22:20

Все равно строка копируется в текстовую переменную, под отладчиком, она будет хорошо видна.

PBDN
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 21.10.2006 (Сб) 22:10

Re: Когда?

Сообщение PBDN » 21.09.2007 (Пт) 7:03

Просто я сейчас думаю над защитой от отладчиков и обфускация один из путей.


IsDebuggerPresent API ?

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 21.09.2007 (Пт) 8:25

jangle писал(а):Все равно строка копируется в текстовую переменную, под отладчиком, она будет хорошо видна.


Этого все равно не избежать. В конце концов строка должна быть скопирована и использована по назначению.

Я думаю, что задача в том, чтобы скрыть присутствие самой строки в коде и минимизировать патчинг, плюс усложнить алгоритм кодирования строки

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 21.09.2007 (Пт) 10:05

IsDebuggerPresent API ?


IsDebuggerPresent - не ловит большинство отладчиков, и отключить вызов этой функции дело 30 секунд.

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 21.09.2007 (Пт) 13:26

Создал новую тему по защите программ:
http://bbs.vbstreets.ru/viewtopic.php?t=34426


Вернуться в Power Basic

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

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

    TopList