Сравнение возможностей языков PureBasic и FreeBasic

Я подготовил таблицу и старался честно передать то, что сумел понять при использовании этих двух языков. Сравнивались версии FreeBasic 0.23-0.24 и PureBasic 4.5 (новые версии PureBasic я не пробовал) . Помеченное как многоточее означает что либо я не знаю других библиотек, либо забыл, либо те что я знаю не стоит перечислять из-за того что они малоэффективны по своей сути. Почему решил написать? Просматривая новости о Freebasic в поисковиках,  порой бывает натыкаюсь на посты людей , которые озадачиваются какой из этих двух бейсиков выбрать. В самом деле оба бейсика универсальны в плане решения задач, оба создают маленькие и быстрые программы. Но все таки при схожести  решаемых задач, у них много своих плюсов и минусов.
И правда, кому-то надо просто создать несколько простых утилит, кому-то игру аркаду, кому-то просто поупражняться в программировании. А кто - то может серьезно хочет заняться программированием, но не знает какие подводные камни его ожидают при выборе языка. Я не могу описать остальные языки, поскольку по нормальному, могу создавать программы только на этих, ну может если сильно напрячься , еще на MASM :) 

Кстати новые возможности таких сред как Delphi XE3 и подобных , я не считаю программированием (уж пусть меня простят все любители этих сред). Это не программирование, это кнопкокидательство , конструктор . Да это эффективно, красиво , модно и стильно , но это не программирование.  То есть люди, пишущие с помощью этих сред, становятся подобно продавцам в супермаркетах. Им не нужно уметь считать , обладать навыками продавца и думать. Главное следить за покупателем, чтобы тот не украл ничего, да поднести товар к чудо машине, идентифицирующий товар по штрихкоду.  Так и в случае с современными средами программирования: минимум развития человеческого мозга,  главное заработок. Ну да ладно , я отвлекся, просто как - то обидно становится за людей в этих гонках за технологиями. Тупеем мы по экспоненте, превращаемся в зомби, гоняющихся за добычей (баблом)

Вернемся к нашим баранам :)


Мое мнение о языках в общем:

PureBasic силен кол-вом кроссплатформенных функций, но имеет примитивный,  плохо перевариваемый синтаксис, да еще и стоит денег. Если сравнить, то система Windows 7 Home Edition стоит примерно столько же сколько PureBasic , но возможности явно не сопоставимы :) .

FreeBasic силен синтаксисом, бесплатен, быстрее обучаем, однако не имеет такого же кол-ва кроссплатформенных функций.

Идеальные применения языков:

FreeBasic:   казуальные 2D игры, простые 3D игры\демки,  средней сложности программы, для обучения в общеобразовательных учреждениях.

PureBasic:   казуальные 2D игры, простые 3D игры\демки,  средней сложности программы.

А теперь сама табличка:


Сравниваемая возможность
FreeBasic
PureBasic
Комментарий
возможности

для FreeBasic

Комментарий
возможности
для PureBasic 
Дополнительные готовые  решения для FreeBasic
Дополнительные готовые решения для  PureBasic
Стоимость
Open Source
Платен 79 евро
Абсолютно бесплатен, полные возможности по использованию, даже компилятора в своих проектах
Даже заплатив, получаешь ограниченные возможности по использованию, такие например как запрет использования оберток функций в DLL для проектов , написанных на других языках. Об использовании компилятора в своих программах  не идет даже речи. Однако оплата только разовая на все будующие версии.


Кроссплатформенность
Да
Да
Windows, Linux, DOS
Windows, Linux, MacOS, AmigaOS (заброшено )


Поддержка 64 битных платформ
Нет
Есть




Поддержка юникода
Есть
Есть
 Нет поддержки юникода в графическом режиме экрана. Исправляется только использованием WinAPI на windows. На Linux , использованием библиотек SDL и прочих в обход команд Screen. полная поддержка


Отладчик
Только сторонние Есть


  • FbDebugger
  • Insight

Profiler
Есть
Есть
Менее удобный
Удобный и понятный


GUI
Только сторонние библиотеки. есть

GUI на уровне windows 95 .. windows xp , с возможностью подключения сторонних библиотек
  • GTK
  • wxWidgets
  • window9
  • sGui
  • FbGUI
  • KwikGUI
  • GUICHUNG
  • WinAPI
  • ...
  • GTK
  • wxWidgets
  • WinAPI
  • ...
работа с файлами и папками
есть
есть
Простая и понятная
Простая и понятная, но чуть более расширенные возможности Расширение за счет библиотек FILE , window9, WinApi
обычно дополнений не требуется, но можно заюзать WinAPI
работа со строками
есть
есть Простая и понятная
Простая и понятная
Расширение функций за счет Window9
Не требуется расширений
работа с консолью
есть
есть
Простая и понятная
С некоторыми заморочками Обычно не требуется расширений, но можно заюзать WinAPI
WinApi
Работа с графикой 2D (Game)
есть
есть
Простая и понятная
С некоторыми заморочками
  • ALLEGRO
  • SDL
  • SFML
  • FreeBASIC Extended Library
  • CAIRO
  • OpenGl
  • DirectX
  • GDI, GDI+
  • OGREMAGIC
  • ...
  • ALLEGRO
  • SDL
  • SFML
  • CAIRO
  • OpenGl
  • DirectX
  • GDI, GDI+
  • OGREMAGIC
  • ...
Работа с графикой 3D (Game)
Только подключение сторонних библиотек есть

Основана на движке OGRE + подключение сторонних библиотек
  • Irrlicht 3D Engine
  • Clady3D
  • N3xtD
  • Ninfa3D
  • OpenGl
  • DirectX
  • ...
  • Irrlicht 3D Engine
  • mp3d
  • N3xtD
  • Ninfa3D
  • OpenGl
  • DirectX
  • ...
Работа со звуком
Только подключение сторонних библиотек есть

Возможность проигрывания популярных звуковых форматов + подключение сторонних библиотек
  • DUMB
  • SDL
  • SFML
  • BASS
  • FBSOUND
  • DirectShow
  • UfMOd
  • FMOD
  • ...
  • SDL
  • SFML
  • BASS
  • DirectShow
  • UfMOd
  • FMOD
  • ...
Работа с видео
Только подключение сторонних библиотек есть

Возможность проигрывания популярных видео форматов + подключение сторонних библиотек
  • DirectShow
  • Window9
  • ...
  • DirectShow
  • ...
Создание статических библиотек
есть
есть через одно место или с помощью сторонних средств
Легко и просто


  • Talbite
Создание динамических библиотек
есть
есть
Легко и просто
Легко и просто.


Работа с ассемблерными вставками
есть
есть
GnuASM
FASM


Классы
есть
нет




Области видимости
есть
нет




Передача параметров в функции по ссылке , по значению
есть
есть



Перенос строк
есть
нет




Пространства имен
есть
нет




Связанные списки
Только подключение сторонних библиотек и наработок есть


  • window9
  • Много примеров кода
  • ...


Работа с указателями
есть
есть




Преобразование типов
есть
есть
Автоматически, вручную
Только автоматически


Модульная технология
есть
нет




Активные свойства
есть
нет




Перегрузка функций
есть
нет




Перегрузка операторов
есть
нет




Макросы
есть
есть
Такое же как у С++
Нет возможности удалять макросы


Среда разработки
Только сторонняя
есть

Встроенная + сторонние
  • FBEDIT
  • FBIDE
  • RADASM
  • GEANY
  • JellyFB Editor
  • FireFly Visual Designer
  • AkelPad
  • MateuszsEdit
  • ...
  • JaPBe
  • ...
Работа с принтером
есть
есть
Примитивна , но можно подключить сторонние либы
Хороша + можно подключить сторонние либы

  • window9
  • Fb_print
  • FBWinPrint
  • WinApi
  • ...
  • winAPI
  • ...
Работа с портами
есть
есть




Работа с потоками, мьютексами
есть
есть




Работа с датой , временем
есть
есть




Конструкторы , деструкторы
есть
нет




подпрограммы (GOSUB)
нет
есть


Есть решение с помощью макросов, хотя это уже устаревшая возможность...

Разделение на функции и процедуры
есть
нет

Слито в одно


Совместимость с другими языками
есть
нет
QuickBasic



Работа с изображениями
есть
есть
Только bmp формат + использование сторонних библиотек
bmp , jpg , png , tiff , tga + подключение сторонних библиотек
  • window9
  • FbPng
  • JPEG4FB
  • GDI , GDI+
  • LIBPNG
  • ...
Обычно не требуется, но можно использовать:
  • GDI , GDI+
  • ...
Функции шифрования
Только сторонние либы
есть

Возможность криптовки во все популярные алгоритмы + проверки хешей
  • Cryptlib
  • window9
  • winAPI
  • Есть много готовых примеров кода
  • ...
  • winAPI
  • ...
Функции буфера обмена
Только сторонние либы есть

Хорошие средства + подключение сторонних библиотек
  • window9
  • winAPI
  • Есть готовые примеры кода
  • ...
  • winAPI
  • ...
Базы данных
Только сторонние либы есть

Хорошие средства + подключение сторонних библиотек
  • sqlite
  • ...

Работа с шрифтами
Только подключение сторонних библиотек есть

Хорошие средства для GUI + 2D графики. + подключение сторонних библиотек
  • Xfont
  • window9
  • WinApi
  • GTK
  • CAIRO
  • ...

Не требуется, но можно использовать:
  • WinApi
  • GTK
  • CAIRO
  • ...
Работа с сетью (FTP, HTTP)
Только подключение сторонних библиотек есть

Хорошие средства + подключение сторонних библиотек
  • WinAPI
  • fbNet
  • chiSock
  • TSNE
  • Есть много готовых примеров
  • ...
  • WinApi
  • ...
Работа с архивацией
Только подключение сторонних библиотек есть

Неплохие средства + подключение сторонних библиотек
  • window9
  • LIBZIP
  • ZLIB
  • LZMA
  • WinApi
  • много готовых примеров кода
  • ...

  • PUREZIP
  • ZLIB
  • WinApi
  • ...
Работа с XML
Использование сторонних библиотек есть

Хорошие средства
  • libxml2
  • ....

Работа с загруженными процессами
Использование сторонних библиотек есть

Хорошие средства + подключение сторонних библиотек
  • Window9
  • WinApi
  • ...
  • WinApi
  • ...