FreeBasic в образовании
Автор: tux, ссылка по теме. Если вы автор статьи, а так же против ее размещения на этом сайте, вы можете написать об этом в ПС на форуме
Есть куча мнений, на каком языке надо обучать программированию, на каком
компиляторе. Некоторые утверждают, то необходимо сразу на профессиональных
языках программирования, иначе в дальнейшем будет сложно перейти на него, но при
этом сложно объяснить даже базовые принципы программирования. Но кто бы о чем не
думал, многие, непонятно почему, продолжают обучать еще на 16-ти разрядных
версиях Паскаля да Си. К сожалению, наработки написанные на них невозможно в
дальнейшем использовать в современных языках, и поэтому приходится либо
переписывать немалую часть кода. Я не буду доказывать, что FreeBASIC идеально
подходит для этой задачи, но продемонстрирую его преимущество в этом вопросе.
Трудно спорить с тем, что сейчас стандартом системных языков
программирования является Си, и от этого никуда не деться. Если выходит какая
либо новая библиотека, то 100% у нее будет Си совместимый интерфейс. FreeBASIC
является полностью Си совместимым языком, это означает, что все, что можно
использовать в Си, можно использовать и в FreeBASIC-е. Это также означает, что
куски кода написанные на Си и на FreeBASIC-е можно без особых проблем
использовать в одном проекте. Так как формат бинарных файлов FreeBASIC-а
является ELF — который является стандартным для *NIX систем, то помимо
использования библиотек, можно использовать линковку чистых объектных файлов.
Продемонстрирую это на примере.
Напишем функцию на FreeBASIC-е
Declare Function fAdd Alias "fAdd"_ ( _ Byval A As Integer,_ Byval B As Integer _ ) As Integer Function fAdd _ ( _ Byval A As Integer,_ Byval B As Integer _ ) As Integer Function=A+B End Function
Сохраним ее в файле func.bas и скомпилируем
fbc -c func.bas
Получим в итоге файл func.o . Теперь напишем код основной программы с вызовом этой функции на Си и сохраним в файле main.c
#include <stdio.h> int fAdd(int A, int B); int main(){ printf("%d\n", fAdd(4, 5)); return 0; }
Скомпилируем:
gcc -c main.c -o main.o
Получим файл main.o с точкой входа в нашу программу, ну а теперь слинкуем это в один готовый исполняемый файл
gcc main.o func.o -o proga
в результате получаем готовую программу.
Однако тут следовало бы сказать об одной важной вещи. FreeBASIC изначально был ориентирован на полную независимость от сторонних динамических библиотек, и поэтому использует при линковки свои собственные библиотеки, в которых и реализованы все сложные конструкции, которые было бы накладно генерировать при каждой компиляции программы. Язык Си же является основным языком многих операционных систем, и поэтому можно практически с полной уверенностью утверждать, что все Си-шные библиотеки будут в системе. Поэтому в Си используются динамические библиотеки, и следовательно меньше проблем при линковки. В нашем примере на FreeBASIC не было использовано никаких специфичных конструкций, поэтому нам ничего для компиляции больше не понадобилось. В принципе использование дополнительных библиотек не накладывает никаких ограничений и никак не повлияет на производительность, единственное итоговый файл получится на несколько килобайт больше, чем подобный на Си, но с учетом характеристик современной техники это можно не принимать во внимание.