FreeBASIC в образовании

Есть куча мнений, на
каком языке надо обучать программированию,
на каком компиляторе. Некоторые
утверждают, то необходимо сразу на
профессиональных языках программирования,
иначе в дальнейшем будет сложно перейти
на него, но при этом сложно объяснить
даже базовые принципы программирования.
Но кто бы о чем не думал, многие, непонятно
почему, продолжают обучать еще на 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 не было использовано никаких
специфичных конструкций, поэтому нам
ничего для компиляции больше не
понадобилось. В принципе использование
дополнительных библиотек не накладывает
никаких ограничений и никак не повлияет
на производительность, единственное
итоговый файл получится на несколько
килобайт больше, чем подобный на Си, но
с учетом характеристик современной
техники это можно не принимать во
внимание.

Добавить комментарий