Четверг, 31 Июля 2025, 00:28

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
PBPROGДата: Среда, 26 Декабря 2012, 14:50 | Сообщение # 81 | Тема: Подскажите кроссплатформенный язык программирования
постоянный участник
Сейчас нет на сайте
Цитата (Slavker)
на уровне исполняемого файла, для текстовой игры.
Не смущает что это будет или скрипт или байт-код, для которого нужна среда выполнения? Т. е. на комп понадобится устанавливать кроме самой программы еще и среду исполнения прнограммы, скажем виртуальную машину Java, которая весит десятки, а то и сотни, а может и тысячи мегабайт!
Я не встречал нативных исполняемых файлов, которые ничего не требуют устанавливать для своей работы и запускаются на нескольких платформах.

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


Сообщение отредактировал PBPROG - Среда, 26 Декабря 2012, 14:51
PBPROGДата: Суббота, 22 Декабря 2012, 12:57 | Сообщение # 82 | Тема: Подскажите кроссплатформенный язык программирования
постоянный участник
Сейчас нет на сайте
PureBasic.
Поддерживаемые платформы:
Цитата
Windоws x86
Windоws x64
Linuх x86
Linuх x64
MaсОS X x86
MaсОS X x64
MаcОS Х PоwеrPС
AmigaOS.
Краткое описание PureBasic.


Сообщение отредактировал PBPROG - Суббота, 22 Декабря 2012, 12:59
PBPROGДата: Четверг, 29 Ноября 2012, 20:59 | Сообщение # 83 | Тема: Basic vs Pascal
постоянный участник
Сейчас нет на сайте
Quote (ErrantBug)
поскольку найти более-менее удобную среду программирования и вообще хоть какой-то игровой движок для Basic практически невозможно.
Вы не правы.
Например у PureBasic нормальная IDE с прекрасным отладчиком. Из коробки к PureBasic прикручен 2D двиг и 3D двиг - Ogre. Есть врапперы для других, популярных движков. Так что повторюсь, вы не правы.
Более того на PureBasic легко писать обычные приложения и дрова.


Сообщение отредактировал PBPROG - Четверг, 29 Ноября 2012, 21:00
PBPROGДата: Понедельник, 19 Ноября 2012, 20:26 | Сообщение # 84 | Тема: Сохранение данных в игре
постоянный участник
Сейчас нет на сайте
Quote (nikotinign)
я не ошибаюсь файл можно открыть на компе( или комуникаторе), то в БД ни как уже не залезешь
Какбэ БД хранится в файле. А что вы написали про файл?
Вообще хранить настройки в БД это изврат! Не для того они предназначены!


Сообщение отредактировал PBPROG - Понедельник, 19 Ноября 2012, 20:28
PBPROGДата: Понедельник, 19 Ноября 2012, 11:48 | Сообщение # 85 | Тема: Помогите с выбором ЯП
постоянный участник
Сейчас нет на сайте
Quote (Kalenovsky)
я новичёк в геймдэве и я решил учить яп но я не знаю какой яп учить лучше для дальнейшего создания игр. подскажите пожалуйста.
Можешь попробовать PureBasic. http://gcup.ru/load/purebasic/3-1-0-1610
Среду программирования, можно скачать на официальном сайте. http://purebasic.com/download.php
Язык не сложный и легко учится.
У него есть встроенные 2D и 3D движки. При необходимости, можно подключить сторонние движки.
Вообще это универсальный ЯП и подходит не только для создания игр, но и для создания приложений и даже драйверов. Последнее на многих ЯП реализовать невозможно.
Поэтому выбрав PureBasic вы не только сможете разрабатывать игры, но и многое другое (приложения, библиотеки, драйверы и т. д.).
Онлайн справка для ознакомления. http://purebasic.com/documentation/index.html
На русском (для предыдущей версии и нет всех функций, текущей версии). http://purebasic.ru/manual.php?id=1104&lng=rus
PBPROGДата: Четверг, 15 Ноября 2012, 11:40 | Сообщение # 86 | Тема: Помощь в языке программирования - Visual Basic
постоянный участник
Сейчас нет на сайте
Quote (-Mikle-)
Pure Basic - ActiveX компоненты придётся регистрировать ВСЁ РАВНО.
ActiveX нужно будет регистрировать только в том случае, если они явно используются в проекте. И в этом случае, их может зарегистрировать сама программа при ее запуске. Поэтому проблем нет.
PBPROGДата: Четверг, 15 Ноября 2012, 01:14 | Сообщение # 87 | Тема: Помощь в языке программирования - Visual Basic
постоянный участник
Сейчас нет на сайте
Quote (Froster)
Может есть другие компиляторы (более лучше)?
Попробуй PureBasic. Создает нативный код и не требует никаких DLL для работы программ.

Но предупреждаю сразу, не совместим по коду с VB. ИМХО синтаксис у PureBasic более логичен чем у VB.
PBPROGДата: Вторник, 30 Октября 2012, 17:55 | Сообщение # 88 | Тема: Какой ЯП подойдёт лучше для создания игр
постоянный участник
Сейчас нет на сайте
хХ_Сибирь_Хх, вы реально не правы насчет бейсика.
Я выше приводил в пример PureBasic, так он не уступает по возможностям другим языкам, которые вы считаете "нормальными".

Вот вы привели в пример пайтон (именно так пишется, а не питон как вы написали) и чем он лучше бейсика?
Между прочим пайтон интерпретируемый, а бейсик (имею в виду PureBasic) компилируемый и с его помощью можно создавать более эффективные десктопные приложения чем используя пайтон. Боле того, с помощью PureBasic можно создать драйвер режима ядра OS, а сможете ли вы это сделать на пайтоне? biggrin biggrin
PBPROGДата: Вторник, 30 Октября 2012, 11:44 | Сообщение # 89 | Тема: Помощь в языке программирования - Visual Basic
постоянный участник
Сейчас нет на сайте
Quote (First)
Запустите Visual Basic и выберите "ActiveX DLL".
Я думаю что в данном случае нужна "Standard DLL", а не ActiveX DLL.
Вроде как VB не умеет создавать "Standard DLL".
PBPROGДата: Вторник, 30 Октября 2012, 00:35 | Сообщение # 90 | Тема: Помощь в языке программирования - Visual Basic
постоянный участник
Сейчас нет на сайте
Кристинчик, под бейсиком я так полагаю вы подразумеваете именно Visual Basic?
Просто бейсиков существует очень много.

И что вы подразумеваете под библиотекой? DLL, набор функций для решения какой-либо задачи или все же движок для игр?


Сообщение отредактировал PBPROG - Вторник, 30 Октября 2012, 00:35
PBPROGДата: Понедельник, 29 Октября 2012, 20:29 | Сообщение # 91 | Тема: Работа с DirectX 8. Поможете?
постоянный участник
Сейчас нет на сайте
Только не нужно утверждать что игра без поддержки аппаратного ускорения видео, "порвет" игру с такой поддержкой! biggrin
Если так хочется легкости разработки игр, то можете использовать, скажем PureBasic.
У него есть 2D и 3D движки с поддержкой ускорения видео. smile
Вот функции 2D движка.
Спрайты
Немного 3D в реализации 2D движка.
Джойстик
Клава
Воспроизведение трекерной музыки
Мышка
Палитра
Звук


Сообщение отредактировал PBPROG - Понедельник, 29 Октября 2012, 20:32
PBPROGДата: Понедельник, 29 Октября 2012, 19:33 | Сообщение # 92 | Тема: Работа с DirectX 8. Поможете?
постоянный участник
Сейчас нет на сайте
Quote (First)
Зато кто-то другой прочитает и задумается.
Ага и вы этому другому окажите "медвежью услугу".
Включите логику - BitBlt работает без аппаратного ускорения видеокарты и при большом числе объектов начнет сильно тормозить несмотря на крутое видео!
PBPROGДата: Воскресенье, 28 Октября 2012, 00:17 | Сообщение # 93 | Тема: Какой ЯП подойдёт лучше для создания игр
постоянный участник
Сейчас нет на сайте
Для начала вполне подойдет PureBasic.
В версии 5.0 разработчики добавили много плюшек во встроенный 3D движок.
Он кроссплатформенный - Windows/Linux/MacOS X и др.
PBPROGДата: Четверг, 27 Сентября 2012, 19:28 | Сообщение # 94 | Тема: Тестируем быстродействие различных бейсиков (и не только)
постоянный участник
Сейчас нет на сайте
Quote (-Mikle-)
выложи на нормальный файлообменник
http://rghost.ru/40600302
http://rusfolder.com/32845839

Quote (-Mikle-)
Вот это зря, мы же сравниваем на алгоритмы, а компиляторы, теп
ерб придётся для остальных языков переписывать.
Не нужно ничего переписывать.
Изменения были произведены в процедуре DrawFractal().
Было.
Code
Procedure DrawFractal(*vPos.Vector, *vDir.Vector)    
     vP.Vector   
     vD.Vector    
        
     If *vDir\x * *vDir\x + *vDir\y * *vDir\y < 0.017  :  ProcedureReturn  :  EndIf   
     vP\x = *vPos\x + *vDir\x    
     vP\y = *vPos\y + *vDir\y    
     DrawLine (*vPos, vP )   
        
     vD\x = *vDir\x * 0.9 - *vDir\y * 0.04    
     vD\y = *vDir\y * 0.9 + *vDir\x * 0.04    
     DrawFractal (vP, vD )   
     vD\x = *vDir\x * 0.15 + *vDir\y * 0.24    
     vD\y = *vDir\y * 0.15 - *vDir\x * 0.24    
     DrawFractal (vP, vD )   
     vD\x = *vDir\x * 0.14 - *vDir\y * 0.25    
     vD\y = *vDir\y * 0.14 + *vDir\x * 0.25    
     DrawFractal (vP, vD )   
   EndProcedure
Стало.
Code
Procedure DrawFractal(*vPos.Vector, *vDir.Vector)
    vP.Vector : vD.Vector

    If *vDir\x * *vDir\x + *vDir\y * *vDir\y >= 0.017
      vP\x = *vPos\x + *vDir\x
      vP\y = *vPos\y + *vDir\y
      DrawLine(*vPos, vP)
        
      vD\x = *vDir\x * 0.9 - *vDir\y * 0.04
      vD\y = *vDir\y * 0.9 + *vDir\x * 0.04
      DrawFractal(vP, vD)
      vD\x = *vDir\x * 0.15 + *vDir\y * 0.24
      vD\y = *vDir\y * 0.15 - *vDir\x * 0.24
      DrawFractal(vP, vD)
      vD\x = *vDir\x * 0.14 - *vDir\y * 0.25
      vD\y = *vDir\y * 0.14 + *vDir\x * 0.25
      DrawFractal(vP, vD)
    EndIf
EndProcedure
Разница в том, что теперь процедура ничего не возвращает (т. е. работает как процедура, а не как функция) и не тратится время на копирование в регистры, возвращаемых данных.
Хоть это требует не очень много времени, но учитывая что процедура DrawFractal() вызывается 1653637 раз (если отладчик не врет), это позволило сэкономить немного времени.

Добавлено (27.09.2012, 19:28)
---------------------------------------------
Я немного проанализировал код и по моему он не оптимален с точки зрения тестирования.
В процедуру по ссылке передаются параметры, но не возвращаются. Это дало возможность схитрить, например, использовав const в параметрах процедур кода на дельфи. Кстати, если убрать const, то дельфи оказывается в хвосте по скорости выполнения кода.
А ведь часто некоторые данные нужно возвращать через аргументы процедур/функций.
Поэтому предлагаю доработать тест, добавив в структуру Vector поле Color в котором будет хранится цвет точки, выводимой на экран. Заодно и массив точек передавать по ссылке процедурам.

Код.
Code
DisableDebugger

Structure Vector
    x.f
    y.f
    Color.l
EndStructure

#ScreenWidth = 1024
#ScreenHeight = 768

Dim Map.l(#ScreenHeight-1, #ScreenWidth-1)
;   

Procedure.d TimeGet()
    Protected.q f, t
      
    QueryPerformanceFrequency_(@f)
    QueryPerformanceCounter_(@t)    
      
    ProcedureReturn t/f
EndProcedure

Procedure DrawLine(*vP1.Vector, *vP2.Vector, Array Map.l(2))
    Static.f  k, dx, dy, x, y, Temp
    Static.l xx, yy
      
    dx = *vP2\x - *vP1\x
    dy = *vP2\y - *vP1\y
      
    If Abs(dx) < Abs(dy)
      k = dx / dy
      If *vP2\y > *vP1\y
        y = *vP1\y
        x = *vP1\x
        While y < *vP2\y
          xx=x : yy=y
          Map(yy, xx) = *vP1\Color
          x + k
          y + 1
        Wend
        *vP2\Color - x
      Else
        y = *vP2\y
        x = *vP1\x
        While y < *vP1\y
          xx=x : yy=y
          Map(yy, xx) = *vP2\Color
          x + k
          y + 1
        Wend
        *vP1\Color + x
      EndIf
    Else
      k = dy / dx
      If *vP2\x > *vP1\x
        x = *vP1\x
        y = *vP1\y
        While x < *vP2\x
          xx=x : yy=y
          Map(yy, xx) = *vP2\Color
          y + k
          x + 1
        Wend
        *vP1\Color + y
      Else
        x = *vP2\x
        y = *vP1\y
        While x < *vP1\x
          xx=x : yy=y
          Map(yy, xx) = *vP1\Color
          y + k
          x + 1
        Wend
        *vP2\Color - y
      EndIf
    EndIf
      
EndProcedure

Procedure DrawFractal(*vPos.Vector, *vDir.Vector, Array Map.l(2))
     
      
    If *vDir\x * *vDir\x + *vDir\y * *vDir\y >= 0.017
        
      vP.Vector\Color = *vPos\Color
      vD.Vector\Color = *vDir\Color
        
      vP\x = *vPos\x + *vDir\x
      vP\y = *vPos\y + *vDir\y
      DrawLine(*vPos, vP, Map())
      vD\x = *vDir\x * 0.9 - *vDir\y * 0.04
      vD\y = *vDir\y * 0.9 + *vDir\x * 0.04
      DrawFractal(vP, vD, Map())
      vP.Vector\Color + vD.Vector\Color
      vD.Vector\Color + vP.Vector\Color
      vP.Vector\Color + vD.Vector\Color
      vD\x = *vDir\x * 0.15 + *vDir\y * 0.24
      vD\y = *vDir\y * 0.15 - *vDir\x * 0.24
      DrawFractal(vP, vD, Map())
      vD\x = *vDir\x * 0.14 - *vDir\y * 0.25
      vD\y = *vDir\y * 0.14 + *vDir\x * 0.25
      DrawFractal(vP, vD, Map())
    EndIf
EndProcedure

Procedure WinCB(hWnd, Msg, wParam, lParam)
      
    Select Msg
      Case #WM_CHAR
        DestroyWindow_(hWnd)
        PostQuitMessage_(0) : Result  = 0   
      Case #WM_CLOSE   
        DestroyWindow_(hWnd)   
      Case #WM_DESTROY   
        PostQuitMessage_(0) : Result  = 0   
      Default   
        Result  = DefWindowProc_(hWnd, Msg, wParam, lParam)   
    EndSelect   
      
    ProcedureReturn Result   
EndProcedure    

Procedure Open_Window()
    WindowClass.s    = "PB_Win"   
    wc.WNDCLASSEX   
    wc\cbsize        = SizeOf(WNDCLASSEX)   
    wc\lpfnWndProc   = @WinCB()   
    wc\hCursor       = LoadCursor_(0, #IDC_ARROW)   
    wc\hbrBackground = #COLOR_WINDOW
    wc\lpszClassName = @WindowClass   
    RegisterClassEx_(@wc)   
      
    hWnd  = CreateWindowEx_(#WS_EX_APPWINDOW, WindowClass, "PureBasic тест", #WS_POPUP | #WS_VISIBLE, 0, 0, #ScreenWidth, #ScreenHeight, 0, 0, 0, 0)
      
    ProcedureReturn hWnd
EndProcedure

Procedure Main(Array Map.l(2))
    vP.Vector : vD.Vector
    bi32BitInfo.BITMAPINFO
      
    vP\x = 40
    vP\y = 500
    vD\x = 87
    vD\y = -54
    vP\Color = $7FFFFF
    vD\Color = $FFFFFF
      
    t1.d=TimeGet()
    DrawFractal(vP, vD, Map())
    t2.d = TimeGet()
      
    With bi32BitInfo\bmiHeader
      \biBitCount = 32
      \biPlanes = 1
      \biSize = SizeOf(bi32BitInfo\bmiHeader)
      \biWidth = #ScreenWidth
      \biHeight = -#ScreenHeight
      \biSizeImage = 4 * #ScreenWidth * #ScreenHeight
    EndWith

    hWnd=Open_Window()
    hDC = GetDC_(hWnd)
    SetDIBitsToDevice_(hDC, 0, 0, #ScreenWidth, #ScreenHeight, 0, 0, 0, #ScreenHeight, Map(), bi32BitInfo, 0)
      
    String.s = StrF(t2 - t1, 5)+" секунд.    Нажмите любую кнопку."
    SetTextColor_(hDC, $FFFFFF)
    SetBkMode_(hDC, #TRANSPARENT)
    TextOut_(hDC, 10, 10, String, Len(String))
      
EndProcedure

Main(Map())

While GetMessage_(msg.MSG, #Null, 0, 0)   
    TranslateMessage_(msg)   
    DispatchMessage_(msg)   
Wend

Скомпилированная прога. http://rusfolder.com/32853166
http://rghost.ru/40607404


Сообщение отредактировал PBPROG - Четверг, 27 Сентября 2012, 19:29
PBPROGДата: Среда, 26 Сентября 2012, 19:29 | Сообщение # 95 | Тема: Тестируем быстродействие различных бейсиков (и не только)
постоянный участник
Сейчас нет на сайте
Похоже что с файлообменника уже удалили файлы, перезалью. http://depositfiles.com/files/vipw13pu3
Код немного оптимизировал чтобы добиться большего быстродействия.
Code
DisableDebugger

Structure Vector
    x.f
    y.f
EndStructure

#ScreenWidth = 1024
#ScreenHeight = 768

Global Dim Map.l(#ScreenHeight-1, #ScreenWidth-1)

Procedure.d TimeGet()
    Protected.q f, t
      
    QueryPerformanceFrequency_(@f)
    QueryPerformanceCounter_(@t)    
      
    ProcedureReturn t/f
EndProcedure

Procedure DrawLine(*vP1.Vector, *vP2.Vector)
    Static.f  k, dx, dy, x, y, Temp
    Static.l xx, yy
      
    dx = *vP2\x - *vP1\x
    dy = *vP2\y - *vP1\y
      
    If Abs(dx) < Abs(dy)
      k = dx / dy
      If *vP2\y > *vP1\y
        y = *vP1\y
        x = *vP1\x
        While y < *vP2\y
          xx=x : yy=y
          Map(yy, xx) = $50BB50
          x + k
          y + 1
        Wend
      Else
        y = *vP2\y
        x = *vP1\x
        While y < *vP1\y
          xx=x : yy=y
          Map(yy, xx) = $40FF30
          x + k
          y + 1
        Wend
      EndIf
    Else
      k = dy / dx
      If *vP2\x > *vP1\x
        x = *vP1\x
        y = *vP1\y
        While x < *vP2\x
          xx=x : yy=y
          Map(yy, xx) = $A0AF20
          y + k
          x + 1
        Wend
      Else
        x = *vP2\x
        y = *vP1\y
        While x < *vP1\x
          xx=x : yy=y
          Map(yy, xx) = $609F30
          y + k
          x + 1
        Wend
      EndIf
    EndIf
      
EndProcedure

Procedure DrawFractal(*vPos.Vector, *vDir.Vector)
    vP.Vector : vD.Vector

    If *vDir\x * *vDir\x + *vDir\y * *vDir\y >= 0.017
      vP\x = *vPos\x + *vDir\x
      vP\y = *vPos\y + *vDir\y
      DrawLine(*vPos, vP)
        
      vD\x = *vDir\x * 0.9 - *vDir\y * 0.04
      vD\y = *vDir\y * 0.9 + *vDir\x * 0.04
      DrawFractal(vP, vD)
      vD\x = *vDir\x * 0.15 + *vDir\y * 0.24
      vD\y = *vDir\y * 0.15 - *vDir\x * 0.24
      DrawFractal(vP, vD)
      vD\x = *vDir\x * 0.14 - *vDir\y * 0.25
      vD\y = *vDir\y * 0.14 + *vDir\x * 0.25
      DrawFractal(vP, vD)
    EndIf
EndProcedure

Procedure WinCB(hWnd, Msg, wParam, lParam)
      
    Select Msg
      Case #WM_CHAR
        DestroyWindow_(hWnd)
        PostQuitMessage_(0) : Result  = 0   
      Case #WM_CLOSE   
        DestroyWindow_(hWnd)   
      Case #WM_DESTROY   
        PostQuitMessage_(0) : Result  = 0   
      Default   
        Result  = DefWindowProc_(hWnd, Msg, wParam, lParam)   
    EndSelect   
      
    ProcedureReturn Result   
EndProcedure    

Procedure Open_Window()
    WindowClass.s    = "PB_Win"   
    wc.WNDCLASSEX   
    wc\cbsize        = SizeOf(WNDCLASSEX)   
    wc\lpfnWndProc   = @WinCB()   
    wc\hCursor       = LoadCursor_(0, #IDC_ARROW)   
    wc\hbrBackground = #COLOR_WINDOW
    wc\lpszClassName = @WindowClass   
    RegisterClassEx_(@wc)   
      
    hWnd  = CreateWindowEx_(#WS_EX_APPWINDOW, WindowClass, "PureBasic тест", #WS_POPUP | #WS_VISIBLE, 0, 0, #ScreenWidth, #ScreenHeight, 0, 0, 0, 0)
      
    ProcedureReturn hWnd
EndProcedure

Procedure Main()
    vP.Vector : vD.Vector
    bi32BitInfo.BITMAPINFO
      
    vP\x = 40
    vP\y = 500
    vD\x = 87
    vD\y = -54
      
    t1.d=TimeGet()
    DrawFractal(vP, vD)
    t2.d = TimeGet()
      
    With bi32BitInfo\bmiHeader
      \biBitCount = 32
      \biPlanes = 1
      \biSize = SizeOf(bi32BitInfo\bmiHeader)
      \biWidth = #ScreenWidth
      \biHeight = -#ScreenHeight
      \biSizeImage = 4 * #ScreenWidth * #ScreenHeight
    EndWith

    hWnd=Open_Window()
    hDC = GetDC_(hWnd)
    SetDIBitsToDevice_(hDC, 0, 0, #ScreenWidth, #ScreenHeight, 0, 0, 0, #ScreenHeight, Map(), bi32BitInfo, 0)
      
    String.s = StrF(t2 - t1, 5)+" секунд.    Нажмите любую кнопку."
    SetTextColor_(hDC, $FFFFFF)
    SetBkMode_(hDC, #TRANSPARENT)
    TextOut_(hDC, 10, 10, String, Len(String))
      
EndProcedure

Main()

While GetMessage_(msg.MSG, #Null, 0, 0)   
    TranslateMessage_(msg)   
    DispatchMessage_(msg)   
Wend


Сообщение отредактировал PBPROG - Среда, 26 Сентября 2012, 19:30
PBPROGДата: Среда, 26 Сентября 2012, 13:37 | Сообщение # 96 | Тема: PureBasic VS FreeBasic
постоянный участник
Сейчас нет на сайте
Quote (-Mikle-)
Ты даёшь ссылку на незаконченный тест, где нет примера на PB
В первом посте темы все есть. http://purebasic.info/phpBB2/viewtopic.php?t=1381
Там много лишнего в коде.
Упрощенный вариант.
На моем компе он был выполнен за 3.5 секунды (PureBasic 4.61).
Сишный же код. http://purebasic.info/phpBB2/viewtopic.php?p=22096#22096

был выполнен за 3.8 секунды. Вот такие результаты.

Quote (-Mikle-)
Но почему-то умалчиваешь о недавнем сравнении, гораздо более актуальном для геймдева:
Потому что я отвечал Aikidos, для которого будет более понятным сравнение с Cи, а не с другим бейсиком.
PBPROGДата: Среда, 26 Сентября 2012, 12:06 | Сообщение # 97 | Тема: PureBasic VS FreeBasic
постоянный участник
Сейчас нет на сайте
Quote (-Mikle-)
purebasic это будет вряд ли, я конкретно его считаю неудачным, это фактически низкоуровневый язык с синтаксисом бейсика
Я бы назвал его языком среднего уровня потому что являясь ЯВУ предоставляет некоторые возможности ЯП низкого уровня.

Quote (Aikidos)
Незнаю как сейчас, но раньше он был очень даже быстр. Быстрее явы это точно (хотя это было раньше и сейчас я не буду браться утверждать что либо).
Срвнивали скорость работы PureBasic с C++ из VS 2008. http://purebasic.info/phpBB2/viewtopic.php?p=22097#22097
Скорость работы программ (вычисления с плавающей точкой) находится примерно на одном уровне.

Quote (Aikidos)
Считаю, что С++ будет жить ещё очень-очень долго и в будущем останется только для написания драйверов и т.п.
Дрова можно создавать на многих ЯП, том же PureBasic, (на FreeBasic вроде тоже можно), но основной ЯП для дров C++ потому что под него WDK.


Сообщение отредактировал PBPROG - Среда, 26 Сентября 2012, 12:07
PBPROGДата: Понедельник, 24 Сентября 2012, 20:54 | Сообщение # 98 | Тема: PureBasic VS FreeBasic
постоянный участник
Сейчас нет на сайте
Quote (trew)
К чему желчь метать?
Просто кому хочется повторять одно и тоже по нескольку раз?
Если вас этим обидел, извиняюсь.


Сообщение отредактировал PBPROG - Понедельник, 24 Сентября 2012, 20:55
PBPROGДата: Понедельник, 24 Сентября 2012, 19:00 | Сообщение # 99 | Тема: PureBasic VS FreeBasic
постоянный участник
Сейчас нет на сайте
Quote (trew)
Я же написал, что в случае с PureBasic теряется универсальность процедуры\функции . Ты видно тоже сразу недопонимаешь. Взгляни внимательно на пример ниже.
Да все я понял с первого раза. Только или вы не так объясняете или не поняли мой пример выше. Смотрите этот пример. И где подтверждение ваших слов?
Code
Structure one   
   Ione.i   
EndStructure   

Structure two   
   Itwo.one   
EndStructure   

obj.two \Itwo\Ione = 10  
Ivariable.i = 55

Procedure.l PR(*Obj.Integer)   
   Debug *Obj\i  
   *obj\i + 100   
EndProcedure     

PR(@obj\Itwo\Ione)  
PR(@Ivariable)  

Debug obj\Itwo\Ione
Debug Ivariable

Quote (trew)
добавлен лишний вызов той же процедуры но с другим типом:
Вы что-то путаете. Как раз тип один и тот же - Integer.

Quote (trew)
Как ты это сможешь без танцев прикрутить к своей процедуре. Теперь надеюсь понятно о чем речь.
Не, непонятно потому что прикрутил без танцев с бубном.

Quote (trew)
P.S. Поэтому я и написал что в FB возможна передача по ссылке и значению , а в PB только по значению (неважно что это за значение указатель или просто любое число)
Если вы не знаете основ PureBasic то лучше промолчите.
Выше привел примеры передачи переменной и связанного списка по ссылке.
PBPROGДата: Понедельник, 24 Сентября 2012, 17:24 | Сообщение # 100 | Тема: PureBasic VS FreeBasic
постоянный участник
Сейчас нет на сайте
Quote (trew)
Если я не прав , поправь
Поправлю я. smile smile
При сравнении стараются использовать идентичные коды, а здесь я вижу существенное различие.
Вот как будет выглядеть второй код на FB, переведенный на PureBasic.
Code
Structure one  
   Ione.i  
EndStructure  

Structure two  
   Itwo.one  
EndStructure  

obj.two \Itwo\Ione = 10

Procedure.l PR(*Obj.Integer)  
   Debug *Obj\i
   *obj\i + 100  
EndProcedure    

PR(@obj\Itwo\Ione)

Debug obj\Itwo\Ione

Добавлено (24.09.2012, 17:24)
---------------------------------------------
А еще можно такой трюк выполнить.

Code
Structure one  
   Ione.i  
EndStructure  

Structure two  
   List Itwo.one()  
EndStructure  

obj.two

For i= 0 To 10
   AddElement(obj\Itwo())
   obj\Itwo()\Ione = i
Next

Procedure.l PR(List Obj.one())  
   ForEach  Obj()
     Debug Obj()\Ione
     obj()\Ione + 100  
   Next
EndProcedure    

PR(obj\Itwo())

ForEach  obj\Itwo()
   Debug obj\Itwo()\Ione
Next
В процедуру передается по ссылке связанный список из структуры two.
Поиск:

Все права сохранены. GcUp.ru © 2008-2025 Рейтинг