![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Возможно не все знают что существует замечательный язык программирования, именуемый PureBasic.
Что в нем замечательного? А вот что: Он во первых не сложный и при этом достаточно мощный, что позволяет использовать PureBasic не только для обучения программированию, но и для разработки приложений, игр, библотек (dll и т. д.) и драйверов на профессиональном уровне. PureBasic имеет кроссплатформенную IDE (Windows, Linux, Max OS X как x86, так и x86, а также PowerPC), в которую входит редактор кода, редактор форм, компилятор и довольно мощный отладчик. Для PureBasic написано много библиотек функций почти на все случаи. И не обращайте внимание на слово "Basic". Это язык простоты бейсика и возможностей Си. Еще одной особенностью PureBasic является то, что программы компилируются в native-код и не требуют среды исполнения (типа runtime или .NET Framework) что облегчает распространение программ. И при это размер исполняемых файлов реально мелкий - от 2 КБ. Скрин IDE с загруженной программой. ![]() |
|
#2
|
||||
|
||||
|
Он же коммерческий! Чем он лучше Delphi?
|
|
#3
|
||||
|
||||
|
Драйвера на бейсике
![]() |
|
#4
|
||||
|
||||
|
Ну, я вообще планирую драйвера на функциональном языке писать, так что нормально.
|
|
#5
|
||||
|
||||
|
Цитата:
|
|
#6
|
||||
|
||||
|
Вброс про PureBasic уже замечен на форуме FreePascal.ru, но режим КТО там пока не объявили.
![]() |
|
#7
|
|||
|
|||
|
Цитата:
Лучше PureBasic чем Delphi или хуже зависит от задачи. Например дельфи 7 только для Windows x86 и с его помощью даже приложение для Windows x64 не скомпилировать. А на PureBasic можно. Также PureBasic поддерживает компиляцию для Linux, MaxOS X и AmigaOS, а дельфи нет. Разработка DLL в дельфи, по сравнению с PureBasic не имеет преимуществ. ИМХО в PureBasic проще. А вот что касается разработки драйверов, то тут у дельфи облом. Есть конечно методы, но там еще те костыли. А в PureBasic довольно просто писать дрова и компилируются они из IDE без всяких батников и подмены линкера (у PureBasic COFF-формат объектных файлов и стандартный линкер). Примеры драйверов на PureBasic. Для примера, код драйвера на дельфи. Код:
unit tiny;
interface
TYPE
UShort = Word; // unsigned 16-bit
Short = Smallint; // signed 16-bit
ULong = Cardinal;
Size_T = Cardinal;
PVoid = Pointer;
NTStatus = ULong;
CShort = Short;
TYPE
PUNICODE_STRING = ^UNICODE_STRING;
UNICODE_STRING = packed record
Length : UShort;
MaximumLength : UShort;
Buffer : PWideChar;
end;
CONST
NTOSKrnl = 'ntoskrnl.exe';
CONST
IRP_MJ_MAXIMUM_FUNCTION = $1B;
TYPE
PDRIVER_OBJECT = ^DRIVER_OBJECT;
DRIVER_OBJECT = packed record
csType : CShort;
csSize : CShort;
DeviceObject : Pointer; // SHOULD BE PDEVICE_OBJECT
Flags : ULong;
DriverStart : Pointer;
DriverSize : ULong;
DriverSection : Pointer;
DriverExtension : Pointer; // SHOULD BE PDRIVER_EXTENSION
DriverName : UNICODE_STRING;
HardwareDatabase : PUNICODE_STRING;
FastIoDispatch : Pointer; // SHOULD BE PFAST_IO_DISPATCH
DriverInit : Pointer; // PDRIVER_INITIALIZE
DriverStartIo : Pointer; // PDRIVER_STARTIO
DriverUnload : Pointer; // PDRIVER_UNLOAD
MajorFunction : array [0..IRP_MJ_MAXIMUM_FUNCTION] of Pointer;
end;
CONST STATUS_SUCCESS = NTStatus( $00000000 );
function DriverEntry(
const DriverObject : PDRIVER_OBJECT;
const RegistryPath : PUNICODE_STRING
) : NTStatus; stdcall;
implementation
function DbgPrint(
const Format : PAnsiChar
) : NTStatus; cdecl; external NTOSKrnl name '_DbgPrint';
procedure ADriverUnload(
const DriverObject : PDRIVER_OBJECT
); stdcall;
begin
DbgPrint('Tiny: DriverUnload()');
end;
function DriverEntry;
begin
DriverObject^.DriverUnload := @ADriverUnload;
DbgPrint('Tiny: DriverEntry()');
Result := STATUS_SUCCESS;
end;
end.Код:
Declare DriverEntry(*DriverObject, *RegistryPath) *A=@DriverEntry() !jmp [p_A] IncludePath #PB_Compiler_Home+"DDK\" XIncludeFile "ntddk.pbi" XIncludeFile "ntstatus.pbi" XIncludeFile "ntfunct.pbi" Procedure DriverUnload(*DriverObject.DRIVER_OBJECT) DbgPrint(@"PureBasic: DriverUnload()") EndProcedure Procedure DriverEntry(*DriverObject.DRIVER_OBJECT, *RegistryPath.UNICODE_STRING) DbgPrint(@"PureBasic: DriverEntry()") *DriverObject\DriverUnload = @DriverUnload() ProcedureReturn #STATUS_SUCCESS EndProcedure Попробуйте скомпилировать драйвер в дельфи. А в PureBasic без заморочек компилируется из IDE. Просто вставьте код драйвера в редактор IDE и скомпилируйте. Нужно всего лишь в меню "Компилятор" щёлкнуть по пункту "Создать драйвер" и если в коде нет ошибок, то драйвер будет создан в указанной папке. Последний раз редактировалось fred_pb, 09.04.2014 в 21:58. |
|
#8
|
||||
|
||||
|
На FASM можно и под линух и под х64 и под АРМ [sarcasm]конпелировать[/sarcasm] хоть драйвера, хоть что; и ассемблер "проще" бейскиа, а с макросами так вообще бомба.
|
|
#9
|
|||
|
|||
|
Вот еще одно преимущество PureBasic - он использует FASM в процессе компиляции и позволяет заюзать почти все возможности этого асма, такие как асм. инструкции, директивы, макросы и т. д.
|
|
#10
|
||||
|
||||
|
Цитата:
Цитата:
А теперь главный вопрос: что мне делать с моими исходниками на Delphi? Предположим, что я купился и купил. Дальше-то что? Переписывать всё на PureBasic? Мну разорится. |
|
#11
|
|||
|
|||
|
Цитата:
Цитата:
В PureBasic создать драйвер во много раз проще. Цитата:
Эта тема создана для расширения кругозора, а не для переманивания прогеров на другой ЯП. |
|
#12
|
||||
|
||||
|
Цитата:
![]() Что касается бейсика - сам язык убог до невозможности, писать на нем программы жутко неудобно из-за некоторых его концепций. И не думаю, что PureBasic сравнится по стандартному функционалу с каким-нибудь XE5 со всеми их жестами, огнеобезьянами, 3Д-формами и т.д. Также делфи сейчас компилирует под IOS, в скором времени обещают Linux и Android. Писать же драйвера на бейсике - мсье, вы знаете толк в извращениях... Учитывая, что весь MSSDK на Си и все примеры на Си. Пока что единственный плюс PureBasic'а, который я вижу - компиляция под Mac и Linux. Остальное играет не в его пользу. Последний раз редактировалось Bargest, 10.04.2014 в 01:50. |
|
#13
|
||||
|
||||
|
РугеВасик использует FASM`ик?
![]() Ивзиняйте, не удержался ![]() ![]() Последний раз редактировалось M.A.D.M.A.N., 10.04.2014 в 08:17. |
|
#14
|
|||
|
|||
|
Цитата:
Если уж обобщать как вы это делаете, то можно сказать что паскаль (а дельфи это паскаль) это учебный язык и ни на что другое кроме обучения он не годен. Но вы же понимаете что это не так. Тоже и с PureBasic. Сначала изучите предмет обсуждения, а потом критикуйте. |
|
#15
|
||||
|
||||
|
Цитата:
ИМХО, делать на основе откровенно примитивного языка платный прокачанный - глупо. Да, конечно у PureBasic есть подвижки в хорошую сторону. Но зачем брать изначально порочное и пытаться прилизать, когда можно взять изначально нормальное и улучшить до хорошего? |