프로그래밍 상에는 굉장히 다양한 개발 관련 용어가 존재한다.
그 중 우리가 공부할 게임 서버 개발 트랙에서 자주 보게 될 개발 용어들에 대해 한 번 알아볼 것이다.
1. HTML
- HTML은 하이퍼텍스트 마크업 언어(HyperText Markup Language)의 줄임말로 웹페이지를 작성하고 구조화하는 데 사용되는 표준 마크업 언어다.
HTML은 웹페이지의 내용과 구조를 정의하는 데 사용되며, 웹 브라우저는 HTML 코드르 해석해 화면에 콘텐츠를 표시한다.
네이버 홈 사이트를 예시로 들면 검색창, 로그인창, 뉴스 등등 우리가
볼 수 있는 것들을 UX에 좋지 않게 (간단하지만, 우리 눈에는 잘 보이지 않게) 색도 흑백에 정렬만 되어 있는 것들이다.
코드로는 각각 검색창, 로그인창 들이 하나의 태그로 구분되어 있다.
2. CSS
- CSS는 캐스케이딩 스타일 시트(Cascsading Style Sheets)의 줄임말로 HTML에 있는 각 태그들을 HTML 종류의 마크업 언어로 작성된 문서의 표현을 정의하는 스타일 시트 언어다.
네이버 홈 사이트를 예시로 들면 로그인창의 로그인 버튼을 초록색으로 하고 로그인 버튼을 클릭하면 반응만 하도록 설정할 수 있다.
이렇게 HTML로 문서의 구조를 정의하고 CSS로 문서의 스타일을 정의해서, HTML과 CSS 두 개를 통해 웹사이트의 시각적 표현을 컨트롤한다.
3. Backend
- 먼저 백엔드(BackEnd)와 프론트엔드(FrontEnd)는 소프트웨어 개발에서 중요한 개념으로, 웹 개발 분야에서 특히 중요하게 다뤄진다.
백엔드는 웹사이트나 앱에서 눈에 보이지 않는 "뒷단"에 해당한다. 사용자가 직접적으로 보지 못하는 영역인 데이터베이스와 서버를 말하며, 백엔드 개발은 이들을 관리하는 것을 말한다.
네이버 창에서 로그인을 하면 백엔드는 이 정보들을 받아 정보가 맞는지 확인하고 로그인 유무를 결정한다. 또한 쇼핑을 할 경우 주문을 처리하고 결제를 완료한다.
4. Frontend
- 프론트엔드는 사용자의 눈에 보이고 직접적으로 상호작용하는 웹 페이지나 애플리케이션의 "앞단" 부분을 맡는다. 주로 웹 브라우저에서 동작하고, UI(User Interface)나 UX(User Experience)를 담당한다.
백엔드와 프론트엔드의 예시로 보여지는 것은 연극에서 역할로 확인할 수 있는데, 프론트엔드는 연극의 배우들이고 백엔드는 무대를 구성하고 연극을 만드는 등의 작가 or 제작진 등이라 할 수 있다.
5. DataBase
- 데이터베이스(DB)는 체계화된 데이터의 모임을 말한다. 데이터들을 하나의 모임에 저장해서 관리하고 여러 응용 시스템들이 데이터베이스에 접속하고 사용할 수 있도록 디자인되어 있다. 그렇게 여러 사용자들이 데이터베이스에 동시 접근하고 데이터를 관리 및 조회할 수 있다.
데이터베이스는 현대 소프트웨어 개발에서 핵심적인 역할을 하고, 데이터 관리와 조작을 통해 다양한 비즈니스 요구사항을 충족시키는 데 중요한 도구다.
데이터베이스의 종류로는 가장 대표적인 관계형 데이터베이스(RDB)와 NoSQL 데이터베이스, 메모리 데이터베이스 등이 있다.
6. SQL
- SQL은 구조화 쿼리 언어(Structured Query Language)의 줄임말로 관계형 데이터베이스에서 데이터를 관리하고 쿼리하기 위해 설계된 특수 목적 언어다. 단순히 관계형 데이터베이스에만 사용되는 언어인데, 관계형 데이터베이스가 데이터를 관리하고, 데이터를 조회하기에 가장 완벽한 데이터베이스라고 불리기 때문에 이러한 데이터 언어가 존재하는 것이다.
SQL은 데이터베이스의 구조화된 데이터를 저장, 수정, 삭제, 검색하는 데 사용된다.
SQL을 사용하는 대표적인 데이터 관리 시스템으로 MySQL, Oracle, SQL Server 등이 있다.
7. 버그(Bug)
- 버그는 소프트웨어나 전자 기기에서 발생하는 오류나 결함을 말하며, 프로그래밍이나 하드웨어 설계 과정에서 발생할 수 있는 다양한 문제점 중 하나로, 의도하지 않은 동작이나 예기치 않은 결과를 초래할 수 있다.
대표적으로 개발자가 코드를 작성할 때 문제가 발생해서 프로그램에 버그가 발생하는 경우가 있다.
8. 에러(Error)
- 에러는 프로그램 실행 중 발생하는 예기치 않은 상황을 의미한다. 에러는 프로그램이 의도하지 않은 방식으로 동작하거나 실행이 중단되는 원인이 될 수 있다.
에러 또한 프로그래밍 과정 중 자주 발생하고, 디버깅과 테스팅 과정을 통해 발견하고 해결할 수 있다.
버그와 에러는 둘 다 소프트웨어 프로그램 상 문제라는 공통점이 있지만, 다른 개념이다.
버그는 소프트웨어의 코드나 설계에서 발생하는 결함이나 오류를 말하며 개발 과정에서 발생한다. 그리고 에러는 프로그램 실행 중 발생하는 예기치 않은 상황을 의미하며, 프로그램 실행 과정에서 발생한다.
사실 나도 조금 이해가 안되지만, 간단히 생각하면 버그는 프로그램이 컴파일 조차 안되는 경우에 발생하는 문제, 에러는 컴파일이나 프로그램 실행이 가능하지만 컴파일 중 또는 실행 중 발생하는 문제, 이렇게 구분해 볼 수 있을 것 같다.
9. 클라이언트
- 컴퓨터 관련해서 클라이언트는 다양한 맥락에서 사용 가능한 언어인데, 주로 네트워크 관련 해서 설명하는 경우가 많다.
네트워크 관련 클라이언트: 네트워크 환경에서 클라이언트는 다른 컴퓨터나 서비스로부터 정보를 요청하는 컴퓨터나 프로그램을 의미한다. 일반적으로 클라이언트는 데이터를 요청하고 서버로부터 응답을 받는다.
예를 들어 웹 브라우저에서 사용자가 웹페이지를 요청하는 클라이언트 역할을 해 서버가 요청한 서비스를 제공하는 경우가 있다.
10. API
- API는 응용 프로그래밍 인터페이스(Application Programming Interface)의 줄임말로 소프트웨어 응용 프로그램에서 서비스를 요청하고 응답을 받을 수 있도록 정의된 인터페이스다.
API는 다른 소프트웨어 애플리케이션 간 데이터를 교환하거나 서비스를 사용할 수 있게 만들어 준다.
기능으로는 지도 서비스처럼 특정 기능이나 서비스를 다른 애플리케이션에 제공하는데, 이는 어떤 앱에서 구글 지도 API를 통해 구글 지도를 사용할 수 있다.
또한 다른 애플리케이션에서 데이터를 요청하고 응답을 받아, 정보를 교환하거나 서비스를 실행 할 수 있다. 예를 들면 롤 전적 사이트 op.gg를 예시로 들 수 있는데, 게임 전적 데이터를 불러와 보기 좋게 웹 사이트에 전적을 불러올 수 있다.
11. 예외처리
- 예외처리(Exception handling)는 프로그래밍에서 예기치 않은 상황, 즉 에러가 발생했을 때 적절하게 처리하는 기술이나 방법론을 의미한다. 프로그램이 실행 중 예외라는 문제 상황이 발생하면, 이를 처리하고 프로그램의 비정상적인 종료를 방지하거나 예외 상황에 대처할 수 있도록 한다.
가장 대표적인 건, 어떤 값을 입력했는데 프로그래밍 후 그 값이 무한하게 이어지는 경우가 발생해 완료가 되지 않을 때, 예외 처리를 추가해 무한히 발생할 경우, 값의 입력이 잘못되었음을 알리는 방법도 있다.
12. 라이브러리(Library)
- 라이브러리는 프로그래밍에서 재사용이 가능한 코드의 집합을 말한다. 주로 함수, 클래스, 메소드 등의 모음으로 구성되고, 특정 기능 수행하기 위해 개발자가 필요할 때 호출해 사용할 수 있다.
라이브러리는 일반적으로 독립적으로 사용할 수 있고, 개발자가 원하는 시점에 필요한 기능을 가져와 쉽게 재사용할 수 있게 도와주는 것이다. 다양한 라이브러리를 활용해 프로젝트를 효율적으로 개발하고 관리할 수 있다.
13. 프레임워크(Framework)
- 프레임워크는 개발자가 특정 애플리케이션을 구축할 때 필요한 기본 구조와 기능을 제공해 개발 생산성을 높이고, 코드 품질을 향상시키는 데 중요한 역할을 한다. 프레임워크는 개발자가 구현해야 할 복잡한 부분을 줄이고, 개발자가 비즈니스 로직에 집중할 수 있도록 돕는다.
라이브러리와 프레임워크는 둘 다 다른 곳에서 코드를 링크해서 가져오는 것으로 비슷하다고 볼 수 있지만, 사용 방식과 목적에서 명확하게 구분된다.
라이브러리는 개발자가 필요할 때 호출해 사용할 수 있는 코드의 모음으로, 제어 흐름은 개발자가 결정한다.
프레임워크는 프레임워크의 개발자가 정의한 규칙과 컨벤션을 따라야 하며, 프레임워크가 제어하는 틀 안에서 개발을 진행해야 한다.
14. 컴파일(Compile)
- 컴파일은 소프트웨어 개발에서 중요한 과정 중에 하나로, 고수준 언어로 작성된 소스 코드를 기계어로 변환하는 과정을 말한다. 이 과정을 통해 컴퓨터가 이해할 수 있는 형태로 소프트웨어를 변환해 실행 가능한 프로그램을 만들기 때문에, 소프트웨어 개발의 중요한 단계로 코드의 안정성과 성능을 보장하는 데 중요한 역할을 한다.
컴파일의 과정을 적어보면
1) 고수준의 언어(C, C++, Java등)로 프로그램을 소스코드로 작성
2) 컴파일러라는 특별 프로그램으로 소스코드를 CPU가 실행 할 수 있는 기계어로 변환
3) 컴파일 완료 후, 특정 플랫폼에서 직접 실행 할 수 있는 실행 파일 생성
15. 인터프리트(Interpretation)
- 인터프리트는 소프트웨어 개발에서 사용되는 또 다른 중요한 실행 방식으로, 컴파일과 달리 소스 코드를 기계어로 변환하지 않고, 소스 코드를 한 줄 씩 읽어서 해석하고 즉시 실행하는 방식이다. 이 과정에서 소스 코드를 해석하고 실행하는 역할을 한다.
소스코드 수정 없이 즉시 실행할 수 있어 편리하지만, 실행 속도가 느리고 특정 플랫폼에 종속되지 않는다는 점이 있다. 대표적인 인터프리터 언어로 파이썬, 자바스크립트, PHP 등이 있다.
16. JSON
- JSON(JavaScript Object Notation)은 데이터를 효율적으로 저장하고 교환하기 위한 경량 데이터 형식이다. 웹에서 데이터를 교환할 때 주로 사용되며, 현대의 많은 프로그래밍에서 중요한 데이터 형식으로 자리 잡고 있고, 간결하고 효율적인 데이터 교환을 가능하게 한다.
json의 특징
1) 가독성: 사람과 기계 모두 이해하기 쉬운 텍스트 기반 형식이다. 객체와 배열을 사용해 데이터를 구조화한다.
2) 경량성: JSON은 데이터를 효율적으로 표현할 수 있는 경량 형식이다. 네트워크 상에서 데이터를 빠르게 전송할 수 있도록 도와준다.
3) 독립성: JSON은 프로그래밍 언어와 플랫폼에 독립적이다. 이는 서로 다른 시스템 간 데이터를 교환할 때 유용하다.