대표적인 개발 언어와 기술 스택
들어가며
과거부터 지금까지 많은 개발 언어가 있고 이를 이용하여 만들어진 기술 스택들이 존재한다.
하지만 이들이 어떤 곳에 주로 쓰이고 어떤 목적으로 이용되고 있는지, 그리고 우리가 왜 배워야되는지라고 묻는다면 답변하기 힘들 수 있다.
필자 역시 그랬고, 이 기회에 대표적인 개발 언어와 기술 스택에 대해 정리해보았다.
1. Python
데이터 분석, 머신러닝, 인공 지능 등 다양한 분야에서 사용되는 다목적 프로그래밍 언어.
현재는 많은 학교에서 프로그래밍 언어로 채택하고 있다.
스택
1. 데이터 분석
- Pandas, Numpy : 데이터 조작 및 분석을 위한 라이브러리
- Matplolib, Seaborn, Plotly : 데이터 시각화를 위한 라이브러리
2. 머신 러닝
- TensorFlow, PyTorch : 머신러닝 과 딥러닝 모델 구축을 위한 라이브러리
3. 웹 개발
- Django, Flask : 보편적인 웹 프레임워크
목적
1. 다양한 라이브러리와 프레임워크가 존재, 대표적인 TensorFlow와 PyTorch AI 라이브러리 또한 Python으로 제작됨.
2. 간결함과 높은 가독성으로 입문자가 쉽게 접할 수 있음. 실제로 웹 프레임워크 Django, Flask는 입문하기 쉬움.
3. 다른 언어와의 통합이 용이, 성능 최적화가 필요한 부분에서 확장성이 높음.
참고
https://m.ddaily.co.kr/page/view/2023081311274732209
https://library.gabia.com/contents/9256/
2. JavaScript
동적 웹 페이지 및 웹 애플리케이션을 구현하는 프로그래밍 언어. 일반적으로 웹 페이지를 만들때 대부분 사용한다.
(html, css, javascript가 함께 이용되는데 이때 동적 기능들은 JavaScript가 담당)
스택 (웹 개발)
1. 프론트엔드
- React : Facebook에서 개발, Virtual DOM 기술을 활용, 컴포넌트 기반 아키텍처 제공
- Angular : Google에서 개발, 양방향 데이터 바인딩 및 컴포넌트 기반 구조가 특징
- Vue.js : 개발자의 간편성을 고려, 가볍고 직관적인 API를 제공
2. 백엔드 :
- Node.js : JavaScript을 서버 사이드에서 실행할 수 있는 런타임 환경, 빠르게 개발할 수 있는 것이 특징
- Express.js : Node.js 기반 프레임워크, 작거나 중간 규모의 프로젝트에서 주로 이용
- Nest.js : Node.js 기반 프레임워크, 대규모 프로젝트에서 주로 이용
목적
1. 클라이언트와 서버 모두에서 사용가능, 단일 언어로 전체 웹 어플리케이션 제작 가능.
2. 모든 웹 브라우저에서 채용하고 있으므로 웹 개발에 필수적임.
3. 난이도가 낮으며 인기가 많음. 다양한 라이브러리와 프레임 워크 존재.
https://modulabs.co.kr/blog/javascript-what/
3. Java & Kotlin
Java는 객체지향으로 사용되는 대표적인 프로그래밍 언어. 주로 Spring 등의 웹 프레임워크와 Android 등 앱 제작에 사용되었다. 다만 무겁다는 단점으로 인해 이를 보완하는 Kotlin이 등장하였다.
스택
1. 웹 개발 :
- Spring : Java에서 사용하는 대표적인 웹 프레임워크. MVC 아키텍처를 통해 유지보수 및 테스트 용이
- Spring Boot : Spring을 보완하고 확장하여 빠르고 효율적인 개발을 제공. 프로젝트 초기 설정이 매우 간편
2. 앱 개발 :
- Android : 객제지향이라는 특징으로 여러 플랫폼에서 동작할 수 있는 장점으로 인해 처음 앱 제작으로 Java가 채택
목적
1. 제일 보편적인 언어, 그리고 많은 레퍼런스. 대표적인 객체 지향 언어.
2. Java Spring에서 지원해주는 Ioc, DI 등을 통해 객체지향이 지닌 다형성이라는 특징을 편리하게 이용 가능.
3. 코틀린은 입문 난이도가 높지만 Java에서 사용하는 코드를 단축시킬 수 있는 큰 장점이 존재함.
참고
https://www.elancer.co.kr/blog/view?seq=47
https://velog.io/@yyy96/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B8%B0%EC%88%A0%EC%8A%A4%ED%83%9D
https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS7811735294
4. C / C++ / C#
C는 하드웨어에 가까운 저수준 언어로, 메모리 관리와 하드웨어 제어에 용이하다. C++은 C에서 객체지향 프로그래밍 개념을 도입하며 클래스와 상속을 지원한다. C#은 Microsoft에서 개발된 언어로 컴포넌트 지향 프로그래밍으로 설명된다.
스택 (언어별 분류)
1. C언어
- Unix, Linux, Windows 같은 운영 체제 개발
- 리소스가 제한된 임베디드 시스템 개발
- 가상 머신 및 보안 소프트웨어 개발
2. C++
- Unreal Engine과 Unity 같은 게임 엔진 개발
- 컴퓨터 그래픽스 및 비전 어플리케이션 개발 (OpenCV같은 라이브러리도 C++로 구현됨)
- C와 비슷한 형태로 인해 임베디드, 로봇 공학, 시스템 등 다양한 분야에서 활용됨
3. C#
- 어플리케이션 핵심 프레임워크인 .NET 개발의 핵심 언어
- Microsoft의 지원으로 윈도우 플랫폼 기반 어플리케이션 제작에 용이
- C++와 마찬가지로 어플리케이션, IOT, 게임 등 다양한 분야에 활용됨 (단, C++와 분야와 조금 다름)
목적
1. C언어는 높은 성능과 효율성 때문에 주로 임베디드 또는 시스템 프로그래밍에 이용됨.
2. C++은 높은 성능과 그래픽 처리 능력에 유용하여 게임 엔진이나 그래픽 제작에 이용됨.
3. C#은 .NET 프레임워크를 기반으로 하여 견고하고 보안성이 높은 프로그램을 제작에 이용됨.
참고
https://www.elancer.co.kr/blog/view?seq=52
https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8495521822
https://dotnet.microsoft.com/ko-kr/learn/dotnet/what-is-dotnet-framework
5. SQL
'Structured Query Language'의 약자로, 데이터베이스에서 데이터를 추출하고 조작하는 데에 사용하는 데이터 처리 언어.
최근 웹에서는 ORM을 이용하여 데이터베이스에 쉽게 접근하지만 데이터를 효율적으로 관리하기 위해서는 SQL언어는 필수적이다.
스택 (대표적인 기술들)
1. MySQL, PostgreSQL
- 보편적으로 많이 사용하는 RDBMS, 다양한 운영체제와 연동가능
- 특히 PostgreSQL은 객체 지향 기능을 지원하며 사용자가 직접 데이터 형식을 정의 가능
2. MongoDB
- 대표적인 NoSQL 데이터베이스, JSON 형태의 동적인 문서로 저장됨
- 대체로 복잡한 쿼리와 대용량 데이터 다루는데 적합, 구조적이지 않은 데이터 활용에 사용됨
3. Redis
- NoSQL 데이터베이스, 키-값 구조로 데이터를 저장함. (문자열, 해시 등 다양한 데이터 타입 지원)
- 주로 캐싱에 사용되기에 빠른 읽기가 가능하다.
4. Elastic Search
- NoSQL 분야에 사용되는 분산 검색 및 분석 엔진
- SQL과 유사한 형태의 언어인 SQL-like Query DSL을 이용
- 여러 노드에 데이터를 분산 저장하고 병렬 처리함으로써 다양한 검색 엔진과 로그 분석에 이용됨
목적
1. 데이터베이스 크기가 커져도 성능을 유지할 수 있는 확장성을 지님.
2. 데이터베이스에 대한 보안 기능 제공 (접근 권한 관리 및 암호화)
3. 쿼리 최적화를 하는 것이 제일 중요한 관건.
참고
https://prmblogs.tistory.com/30
https://www.icia.co.kr/community/board/view/2/1/89
https://aws.amazon.com/ko/what-is/sql/
마치며
지금까지 전반적인 언어와 개발 스택에 대해 알아보았다.
다음에는 최근에 뜨는 언어와 개발 스택에 대해 서술하며 이들의 특징 및 장단점을 알아볼 예정이다.