Yo-mi 2023. 8. 14. 19:06
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학기 학부 강의 내용을 정리한 글입니다. 혹시라도 틀린 부분이 있다면 댓글로 편하게 알려주시면 감사하겠습니다.