블로그 이름

기본 개발용어 알아보기 (디버그, 컴파일러, 인터프리터, 빌드, 배포, 환경변수, 라이브러리, 프레임워크) 본문

개발/기타

기본 개발용어 알아보기 (디버그, 컴파일러, 인터프리터, 빌드, 배포, 환경변수, 라이브러리, 프레임워크)

Hide 2024. 9. 25. 23:13

디버그

 

어떤 종류의 개발을 하게 되건 디버깅은 꼭 해야한다.

디버그를 정의하자면, 소프트웨어에 발생하는 문제의 원인을 찾는 것이다.

소프트웨어가 기능이 많을수록 코드가 복잡하기 때문에 많은 오류가 있는데, 코딩을 하는 시간의 상당 부분을 디버깅에 할애하게 된다.

디버그는 개발 중을 나타내는 의미로 사용되기도 한다.

 

코드에 버그, 에러가 나는 원인은 오타나, 문법 오류, 논리적 설계 오류, 컴퓨터와 맞지 않거나, 프로그래머가 예상하지 못한 데이터가 들어오기도 한다.

이 때, 어느 지점에서 문제가 발생하는지 찾아봐야 한다.

Visual studio나 Eclipse 등에 디버깅할 수 있는 툴이 있기도 한다.

 

 

컴파일러 vs 인터프리터

 

컴퓨터는 0과 1로 이해한다. 하지만 사람은 0과 1로는 이해할 수 없다. 컴퓨터가 사용하는 언어를 기계어, 사람이 사용하는 언어를 자연어라고 한다. 

사람은 기계어를 이해할 수 없고, 컴퓨터는 자연어를 이해할 수 없다.

이 때문에 자연어를 기계어로, 기계어를 자연어로 번역해주는 단계가 필요하다.

 

이 때, 이 번역을 언제 하느냐에 따라 컴파일러와 인터파일러로 구분한다.

미리 해놓으면 컴파일러, 그때그때하면 인터프리터이다.

 

컴파일 언어는 다음과 같다.

C, C++, JAVA

 

개발자가 작성하는 코드들을 출시하기 전에 번역하는 언어가 컴파일 언어이다.

 

JAVA 같은 경우, 자바로 코드를 작성하고 나서, .java 파일을 .class 파일로 만드는 과정이 있다. 

이 .class 파일은 JVM이라는 모든 종류의 기계에서 통용되는 기기이다.

이와 같이 실행 전 번역해주는 과정이 있는가 하면, 그와 달리 그때그때 통역해주는 언어도 있다.

 

인터프리트 언어는 다음과 같다.

자바스크립트, 파이썬, Ruby

 

인터프리터 언어는 다른 말로 스크립트 언어라고도 한다.

소프트웨어 출시할 때 컴파일하는 과정이 없어 그만큼 빠를 수 있지만, 실행속도는 컴파일러에 비해 느리다는 단점이 있다.

그리고 프로그래머가 짠 코드가 그대로 배포되어 사용되기 때문에 누출이 잘 된다는 단점이 있다.

 

 

빌드

 

소프트웨어라는 것이, 개발자가 수십 수백개의 파일들이나, 코드나, 라이브러리나, 이미지나 기타, 소프트웨어에 필요한 파일들 등으로 만든다.

이를 출시할 때에는 다른 형태로 변형, 압축하여 보내는데, 이를 빌드라 한다.

프로그래밍 코드를 줄여 파일 하나로 압축하기도 하고(exe파일), 형식과 내용만 변경하는 경우도 있다.

작업하는 파일들을 출시하기 적합한 일로 바꾸는 일을 빌드라 한다.

 

 

배포

 

코딩해서 빌드한 결과물을 사용자에게 전달하는 과정이다.

모바일 앱이라면 플레이스토어나 앱스토어에, 

데스크탑 프로그램이라면 다운받을수 있는 곳에 업로드 하는 것,

웹사이트는 도메인으로 접근해 볼수있게 하는것이다.

 

웹개발에서 배포란 사용자가 볼 수 있는 곳에 올리는 것이다.

 

 

환경변수

 

환경이란건 소프트웨어가 동작하는 공간을 말한다.

환경 변수라는건 컴퓨터마다 지정된 값이다.

우리 집에는 문이 남쪽에 있는데, 친구의 집에는 문이 동쪽에 있다.

이 때 문을 연다고 하면, 나는 남쪽의 문을 열고, 친구의 집에는 동쪽의 문을 연다.

문을 연다는 명령을 보내면, 다른 곳에 있는 문을 열 수 있다. 이 때 문이 환경변수, 문의 위치를 지정해 주는 것이 환경 변수를 지정해 주는 것이다.

 

JAVA를 깔아 본 적이 있다면, 환경 변수를 설정하지 않으면 JAVA가 작동하지 않는다는 것을 알 것이다.

JAVA를 깔고 나서, 내 컴퓨터 어디에 자바가 깔렸는지를 확인하여 내 JAVA 설치 경로를 환경변수에 등록해준다.

이 단계가 컴퓨터가 내 자바를 문제없이 찾아서 실행할 수 있도록 하는 것이다.

 

그리고 보통 프로그램은 개발용, 배포용 으로 나눠져있다.

이 때 개발용, 배포용이라는 의미의 환경변수들이 사용된다.

소프트웨어 개발을 할 때, 개발자가 디버깅을 쉽게 하기 위해 화면에 관련된 특정 정보들이 뜨도록 하거나, 로그를 찍는 등의 코드를 작성하는데, 이게 사용자들에게 배포하는 배포용 프로그램에서도 뜨면 안된다.

배포할때마다 코드를 다 지우는 대신, 환경변수를 통해 조건을 주면 개발용 컴퓨터에서만 관련 정보들이 나타나도록 할 수 있다.

 

그리고, 비밀번호 등의 남에게 공개되면 안되는 요소들, 특히 오픈소스로 남들에게 공개되는 코드들에는 이런 보안적인 요소들이 직접 적혀서는 안 된다. 이럴 때, 비밀번호를 직접 표시하는것이 아닌 대체 용어 (1234 대신 PASSWORD) 등으로 표시해야 한다.

이처럼 다양한 용도로 각 환경마다의 값을 지정할 때 사용되는게 환경변수이다.

 

 

라이브러리 VS 프레임워크

 

집을 지울때 집적 벌목해서 문 만들고 쇠 녹여서 못 만들고 유리 가공해서 창 만들고 그러진 않는다. 잘 만들어진 부품을 구매하여 사용한다.

프로그래밍도 마찬가지다. 처음부터 모든걸 다 내가 짜지는 않는다.

개인이나 기업, 재단 등에서 누군가 코드로 잘 짜놓은 각종 기능들을 가져다가 내 소프트웨어를 만들때 사용한다.

문짝이나 창틀, 난간 등을 사다가 짓고 있는 집에 붙여넣을 수 있는 것처럼 특정 기능들이 함수나 클래스 등의 형태로 공개돼서 이를 가져다가 내 소프트웨어에 붙여넣어 사용할 수 있는 걸 라이브러리라고 한다.

남이 만든 것 뿐만이 아닌, 내 전용 라이브러리도 만들 수 있다.

어떤 소프트웨어든 핊요시 가져다 붙일 수 있도록 모듈화된 코드, 그 붂음을 라이브러리라고 한다.

 

프레임워크는 기본 골격을 갖춘 집 조립 키트이다.

컴퓨터 조립으로 치다면, 마더보드가 프레임워크, 거기에 끼워넣는 부품들을 라이브러리라고 할 수 있다.

소프트웨어의 기초 설계가 프로그래밍 되어 있고 그걸 다운받아다가 그 위에 덧붙여서 내가 원하는 프로그램을 만드는 것 이다.

 

스프링, 장고, .NET, 라라벨, 익스프레스,  VUE 등이 프레임 워크이다.

 

스프링으로 웹 서비스를 만들고자 하면 공식 사이트에서 용도에 맞는 스프링 기본 프로젝트를 다운받고 그 틀 위에다 내가 직접 짜는 코드, 그리고 각종 라이브러리를 붙여넣어서 서비스를 만드는 것이다.

 

내가 어떤 것 위에다 뭔가를 만든다, 어떤 것 안에서, 그것의 규칙에 따라 뭘 만든다면 프레임워크, 어떤것을 가져다가 만든다면 라이브러리라고 생각하면 된다.

 

리엑트의 경우, 공부하는 과정에서는 프레임워크 처럼 느껴지지만 어떤 사이트에는 필요할 때마다 갖다붙일 수 있는 라이브러리이다.

 

프레임워크를 사용해서 라이브러리를 사용하여 프로그램을 만들어가는 것이 개발하는 과정이다.

 

오늘은 기본적인 프로그래밍 용어들을 정리해보았다.