맨위로가기

프리베이직

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

프리베이직(FreeBASIC)은 GNU Binutils를 사용하여 콘솔 및 GUI 애플리케이션을 생성하는 BASIC 계열의 프로그래밍 언어이다. C, C++ 라이브러리를 지원하며, C 스타일 전처리기, 매크로, 조건부 컴파일 등을 제공한다. 초기에는 Microsoft QuickBASIC 구문을 에뮬레이션하여 호환성을 유지하면서 객체, 연산자 오버로딩, 네임스페이스 등 현대적인 기능을 지원한다. FBgfx를 통해 QuickBASIC 호환 그래픽 지원을 제공하며, OpenGL 또는 DirectX를 백엔드로 사용한다. fb, fb-lite, qb의 세 가지 언어 방언을 지원하며, GNU 컴파일러 컬렉션의 프런트 엔드가 되는 것을 목표로 개발이 진행 중이다.

더 읽어볼만한 페이지

  • 베이직 컴파일러 - 비주얼 베이직
    비주얼 베이직은 1991년 마이크로소프트에서 출시된 GUI 기반 응용 프로그램 개발에 강점을 가진 프로그래밍 언어이며, 윈도우용 응용 프로그램 및 데이터베이스 조작 프로그램 개발에 주로 사용되었고, 2005년 표준 지원이 중단되었다.
  • 베이직 컴파일러 - 퀵베이직
    퀵베이직은 마이크로소프트에서 개발한 BASIC 프로그래밍 언어로, 통합 개발 환경을 통해 코드 편집과 디버깅을 지원하며, 현재는 취미 프로그래머 커뮤니티에서 활용되고 빈티지 컴퓨터에서도 사용된다.
  • 베이직 프로그래밍 언어 계열 - VB스크립트
    VB스크립트는 마이크로소프트에서 개발한 스크립트 언어로, 인터넷 익스플로러의 클라이언트 스크립트 언어 및 액티브 서버 페이지의 표준 언어로 사용되었으나, 윈도우 클라이언트 지원 중단 발표로 향후 윈도우 릴리스에서 제거될 예정이다.
  • 베이직 프로그래밍 언어 계열 - 비주얼 베이직
    비주얼 베이직은 1991년 마이크로소프트에서 출시된 GUI 기반 응용 프로그램 개발에 강점을 가진 프로그래밍 언어이며, 윈도우용 응용 프로그램 및 데이터베이스 조작 프로그램 개발에 주로 사용되었고, 2005년 표준 지원이 중단되었다.
  • 도스 소프트웨어 - 터보 파스칼
    필립 칸이 개발하고 안데르스 헤일스베르그가 기반을 다진 터보 파스칼은 저렴한 가격, 빠른 컴파일, 사용하기 쉬운 IDE를 특징으로 1980년대 PC 프로그래밍에 혁신을 가져왔으며, 여러 기능 추가를 거쳐 델파이 등장 후 레거시 기술이 되었고 일부 버전은 프리웨어로 배포된다.
  • 도스 소프트웨어 - 한/글
    한/글은 1980년대 후반부터 개발된 대한민국의 대표적인 워드프로세서로, 다양한 운영체제 지원, 정부 전자 문서 시스템에서의 역할, 꾸준한 기능 발전과 사용자 편의성 및 국제 표준을 고려한 업데이트를 통해 발전해왔다.
프리베이직 - [IT 관련 정보]에 관한 문서
기본 정보
이름FreeBASIC
로고
스크린샷
웹사이트FreeBASIC 공식 웹사이트
개발
설계자Andre Victor
개발자FreeBASIC 개발팀
첫 공개 년도2004년
최신 버전1.10.1
최신 릴리스 날짜2023년 12월 25일
특징
프로그래밍 패러다임절차적 프로그래밍
객체 지향 프로그래밍
타이핑정적
영향 받은 언어QuickBASIC
C
운영 체제MS-DOS
FreeBSD
리눅스
마이크로소프트 윈도우
라이선스
라이선스GNU GPLv2+
GNU LGPLv2+ 표준 라이브러리

2. Compiler features

GNU Binutils를 백엔드로 사용하여 콘솔 및 그래픽 사용자 인터페이스 애플리케이션을 생성한다. C 정적 및 동적 라이브러리 연결 및 생성을 지원하며, C++ 라이브러리에 대한 제한적인 지원도 제공한다. 따라서 FreeBASIC에서 컴파일된 코드는 대부분의 네이티브 개발 환경에서 재사용할 수 있다.

최적화 컴파일러는 아니지만, 선택적으로 C로 트랜스파일하여 최적화와 함께 컴파일할 수 있다. 인라인 어셈블리, 멀티스레딩을 지원하며, 자동 가비지 수집은 사용하지 않는다.

C 스타일 전처리, 다중 행 매크로, 조건부 컴파일 및 파일 포함이 지원된다. 전처리기는 또한 언어 방언과 같은 기호 정보 및 컴파일러 설정에 접근할 수 있다.

2. 1. Syntax

FreeBASIC은 QuickBASIC 구문을 최대한 가깝게 에뮬레이션하며, 지속적인 발전을 통해 객체, 연산자 오버로딩, 함수 오버로딩, 네임스페이스 등과 같은 현대적인 기능도 지원한다.[5][6]

줄 바꿈 문자는 문장의 끝을 나타내며, 밑줄(_)을 사용하여 문장을 여러 줄에 분산시킬 수 있다. 콜론(:)으로 각 문을 구분하여 여러 문장을 한 줄에 쓸 수도 있다.

주석은 블록 주석과 줄 끝 주석을 모두 지원한다. 아포스트로피(')는 줄 끝 주석에 사용되고, /'와 '/는 블록 주석에 사용된다.

FreeBASIC은 대소문자를 구분하지 않으며, BASIC, 특히 QuickBASIC과 유사한 구문을 따른다. 동시에 최신 코딩 기술을 도입하여 표준 절차적 프로그래밍 기능 외에도 객체 지향적인 데이터 형식이나 객체 개념을 통해 연산자 및 함수의 오버로드, 네임스페이스와 같은 기능을 추가했다.

FreeBASIC에서 행의 끝은 개행 코드 또는 콜론으로 나타낸다. 따라서 C 언어의 세미콜론과 같은 특별한 행 끝 기호는 필수가 아니다. 여러 줄의 코드를 작성하는 경우, 개행하기 전에 콜론으로 구분한다.

주석은 행 단위 주석과 블록 단위 주석이 있으며, 행 단위 주석은 작은따옴표(')로 시작하고, 블록 주석은 /'로 시작하여 '/로 끝난다. 블록 주석은 중간에 개행 코드가 있어도 된다.

2. 2. Graphics library

FreeBASIC은 `SCREEN` 명령을 호출하는 프로그램에 자동으로 포함되는 FBgfx를 통해 내장된 QuickBASIC 호환 그래픽 지원을 제공한다.[1] 백엔드는 기본적으로 리눅스에서는 OpenGL을, 마이크로소프트 윈도우에서는 DirectX를 사용한다.[1] 이러한 추상화 덕분에 FBgfx 그래픽 코드는 크로스 플랫폼 호환이 가능하다.[1] 하지만, FBgfx는 하드웨어 가속을 지원하지 않는다.[1]

OpenGL 또는 Windows API와 같은 외부 그래픽 유틸리티에 익숙한 사용자는 내장 그래픽 라이브러리를 방해하지 않고 사용할 수 있다.[2] FreeBASIC에는 QuickBASIC 호환의 내장 2차원 그래픽스 라이브러리가 있으며, 기본적인 그리기(사각형, 직선, 원 등) 및 BitBlt가 가능하며, 동시에 QuickBASIC에는 없었던 기능도 추가되었다.[3] 라이브러리 자체는 OS에 독립적이며, 코드는 이식성이 있다.[3]

그래픽스 라이브러리는 내장이지만, FBgfx ''Screen'' 명령을 사용하여 사용을 선언하지 않으면 사용할 수 없다.[4] OpenGL 및 플랫폼의 GUI에 따른 윈도우 생성은 별도 라이브러리로 존재한다.[4]

2. 3. Language dialects

FreeBASIC은 이전 스타일의 구문을 깨뜨려야 하는 변경 사항이 있었다. 이전 구문을 사용하여 작성된 프로그램을 계속 지원하기 위해 FreeBASIC은 다음과 같은 방언(dialect)을 지원한다.

  • 기본 방언 ('-lang fb'): 모든 새로운 컴파일러 기능을 지원하며 구식 구문은 허용하지 않는다.
  • FB-lite 방언 ('-lang fblite'): 이전 스타일의 프로그래밍 외에도 대부분의 새로운 객체 지향이 아닌 기능의 사용을 허용한다. 암시적 변수, 접미사, `GOSUB` / `RETURN`, 숫자 레이블 및 기타 기능이 이 방언에서 허용된다.
  • QB 방언 ('-lang qb'): QuickBASIC 동작을 복제하려고 시도하며 수정 없이 많은 QuickBASIC 프로그램을 컴파일할 수 있다.


`-lang` 옵션을 통해 방언을 설정할 수 있다.

  • `-lang fb`: FreeBASIC의 최신 기능을 모두 사용할 수 있다.
  • `-lang deprecated`: 이전 버전의 FreeBASIC과 호환되는 구문을 사용할 수 있다.
  • `-lang qb`: 가능한 한 QuickBASIC 호환 구문을 사용할 수 있다. QuickBASIC과의 호환성을 손상시키는 새로운 기능은 사용할 수 없다.

3. 예시 코드

vbnet

Print "Hello, World!"

sleep:end '주석, 프로그램 창이 즉시 닫히는 것을 방지합니다.

```

표준 프로그램인 "Hello, World!" 프로그램은 QuickBASIC과 마찬가지로 수행된다.

```vbnet

Type Vector

Private:

x As Integer

y As Integer

Public:

Declare Constructor (nX As Integer = 0, nY As Integer = 0)

Declare Property getX As Integer

Declare Property getY As Integer

End Type

Constructor Vector (nX As Integer, nY As Integer)

x = nX

y = nY

End Constructor

Property Vector.getX As Integer

Return x

End Property

Property Vector.getY As Integer

Return y

End Property

```

FreeBASIC은 객체 지향 기능에 대한 지원을 추가하여 메서드, 생성자, 동적 메모리 할당, 속성 및 임시 할당과 같은 기능을 제공한다.

```vbnet

Dim As Vector Ptr player = New Vector()


  • player = Type(100, 100)

Print player->getX

Print player->getY

Delete player

Sleep '프로그램 창이 즉시 닫히는 것을 방지합니다.

```

```vbnet

print "Hello, World!"

sleep

```

두 경우 모두, 이 언어는 학습 목적에 적합하다.

4. 향후 개발 예정

FreeBASIC은 GNU 컴파일러 컬렉션의 프런트 엔드가 되는 것을 목표로 개발이 계속되고 있다.[7] 이로 인해 C++(C++) 등 객체 지향 프로그래밍 언어가 가진 기능을 이용할 수 있게 되어 다양한 시스템에서 동작하고 최신 컴파일러 최적화 기법을 활용할 수 있게 된다.

참조

[1] 웹사이트 freeBASIC about page https://www.freebasi[...] 2012-02-05
[2] 웹사이트 FBWiki : FaqPgxbox http://www.freebasic[...]
[3] 웹사이트 freeBASIC Programming Language: Official Web site http://www.freebasic[...]
[4] 웹사이트 freeBASIC official website downloads page http://www.freebasic[...] 2017-05-13
[5] 웹사이트 freeBASIC dialects http://www.execulink[...] 2012-02-05
[6] 웹사이트 Differences from QB http://www.freebasic[...] 2012-02-05
[7] 웹사이트 FreeBASIC Todo List on Sourceforge http://fbc.svn.sourc[...] 2007-07-31
[8] 웹인용 freeBASIC about page https://www.freebasi[...] 2012-02-05
[9] 웹사이트 FBWiki : FaqPgxbox http://www.freebasic[...]
[10] 웹인용 freeBASIC official website downloads page http://www.freebasic[...] 2017-05-13



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com