Selecting and Recommendation
도메인, 특정 문제(Libraries, open source softwares, IDEs, development environments)에 맞는 프로그래밍 언어를 선택해야한다.
명확하게 문제를 정의하고 그에 맞는 프로그래밍 언어를 선택해야한다.
1. Hardware Specific Problem?
일반적으로 C, C++, Assembly 언어를 선택한다.
아두이노 키트는 C를 요구한다.
리눅스, 유닉스 커널은 C/ C++을 지원하는 플랫폼을 요구한다.
MacOS 커널은 Objective-C/Swift를 요구한다.
C와 C++에서 하드웨어와 관련된 특징은?
- 물리적 메모리 제어(Physical memory management): C와 C++에는 포인터가 있다. 하드웨어를 다룰 수 있다는 것은 그 언어가 직접 컴퓨터 메모리 값을 읽고 쓸 수 있다는 것이다. 이를 C와 C++이 가장 잘한다. (다른 언어들은 physical하지 않은 메모리를 다룬다.)
- 비트 단위 연산(Bit operation)
2. Hardware Independent Problem?
웹 서버
- JavaScript: 처음에는 웹 브라우저의 클라이언트 측만 구현됨. 지금은 웹 서버 및 데이터 베이스의 서버 측을 포함한 많은 유형의 호스트 소프트웨어에 JavaScript 엔진이 내장되어 있다.
- Node.js
- 전용 도구: Apache, Nginx, Wordpress
데이터 분석, 데이터 사이언스
유용한 정보를 발굴하고 결론을 제시하며 의사 결정을 지원하는 것을 목표로 데이터를 검사, 정리, 변환 및 모델링하는 과정이다.
주요한 요구사항으로는 자연어 처리, 언어의 이미 처리/ 선형 대수, 확률과 통계가 있는데 이에 가장 적합한 언어가 Python이다.
- Python: 수학, 물리, 생명 관련 계산하기에 좋음. 문자열 처리(분석)에 강함.
- R: 수학 계산에 좋음. 수학 공식을 풀기에는 좋으나 자연어 처리하기엔 그닥임.
클라우드 컴퓨팅
어딘가에 있는 CPU, GPU, 네트워크를 필요할 때 필요한 만큼 일정 비용을 지불하고 사용한다.
- OpenStack(오픈소스, Linux Foundation): NASA에서 만들었고 Python을 사용했다. 데이터센터 전체에서 대규모 컴퓨팅, 스토리지 및 네트워킹 리소스 풀을 제어한다.
결론은 언어를 계속 필요에 따라 바꿀 수 있어야 한다는 것이다.
본 글은 2학년 1학기 학부 강의 내용을 정리한 글입니다. 혹시라도 틀린 부분이 있다면 댓글로 편하게 알려주시면 감사하겠습니다.
'강의 정리 > 오픈소스sw개발방법및도구' 카테고리의 다른 글
OS - FreeBSD, SteamOS (0) | 2023.08.14 |
---|---|
Selecting Right OS (0) | 2023.08.14 |
Programming Language - Julia (0) | 2023.08.14 |
Problem Definition (0) | 2023.08.13 |
Introduction to Opensource and Linux (0) | 2023.08.13 |