소프트웨어 개발 방법 및 도구(2), Selecting Right Language and Development Environments

2022. 8. 17. 19:35강의 내용 정리/소프트웨어 개발 방법 및 도구

728x90
반응형

본 포스팅은 경희대학교 소프트웨어 융합학과 교수님이신 이성원 교수님의 강의 영상을 토대로 작성합니다. 실제 수업 시간에 진행하시는 강의 영상을 유튜브에 올리셔서 모두가 볼 수 있도록 하셨습니다. 아직 학부생이기에 수강신청을 통해 수업을 들을 수 있지만 들을 수 있는 학점이 제한되어 방학 중에 유튜브로 시청하고, 강의 내용을 본 포스팅을 통해 정리하고자 합니다.


Selecting Right Language and Development Environments

 

시기/유형별 자주쓰인 프로그래밍 언어

언어는 꾸준히 개발되고 있다.


 

- 자바는 모바일 어플리케이션이나 서버, 데스크탑을 짤 때 많이 사용한다. 웹에서는 조금 사그라드는 분위기이다.

- 자바스크립트는 웹브라우저를 위해 만들어졌지만 EC6가 나오면서 파워풀해졌으며 데스크탑, 서버, 모바일 모두 사용가능하다.

- C#은 유니티프로그램을 만들기 위해 사용되는 언어이다.

- Go언어는 도커를 짜는데 쓰였기에 서버에서 많이 사용된다. -> C언어를 만들었던 사람들이 함께 Go를 만들었다.

- Dart는 Flutter라는 GUI 프레임워크에서 결합되며 Web, Desktop, server, mobile 모두 가능하다. 또한 UI/UX에서 Adobe XD가 등장하며 extended하다. 자바스크립트는 써드파티를 해야지 사용할 수 있지만 Dart는 Flutter만 사용하면 된다.

- Swift는 애플 제품에서 더 유용하다.

 

Q. 어떤 언어를 선택하는 것이 좋을까?

개발하고자 하는 소프트웨어의 특징에 따라 언어를 선택하는 것이 중요하다.


1. 하드웨어에 의존적인 소프트웨어를 개발하는 것인가?

하드웨어에 의존적인 소프트웨어는 C, C++가 유리하다.


- Arduino 개발도구는 C 이다.

- 커널을 짤 수 있는 도구는 C/C++이다.

- MacOS kernel은 Objective-C/Swift가 필요하다.

 

 

C/C++이 하드웨어에서 유용한 언어인 이유

C/C++은 실제 메모리를 다룰 수 있고, bit 연산이 가능하다는 장점이 있기에 하드웨어를 지원할 수 있다. 특히나 C/C++은 포인터라는 개념이 있기에 메모리 주소값을 저장할 수 있다. 파이썬은 가상 메모리의 주소값을 받지만 C/C++은 피지컬 메모리 주소를 받는다. C/C++은 비트에 대한 AND, OR, NOT이 가능하다.

 

Q. C언어를 왜 만들었는가?

 - Bell Labs에서 전화교환기를 위해 C를 활용해 유닉스 운영체제를 만들었다. 

- 하드웨어를 다루는 분야에서는 많이 사용된다.

- C언어는 절차지향 언어이기에 재사용이 어렵다. 클래스 전단계까지 지원이 가능하다.

- C언어가 국제표준이 되었기에 국제적으로 사용되었다.

 

 

Q. C++언어를 왜 만들었는가?

- C에 클래스를 추가해서  C++이 만들어졌다.

- C언어가 했던 일에 객체지향 컨셉이 들어갔기에 하드웨어에서도 사용할 수 있고, 여전히 사용되는 언어이다.

- 재사용이 가능하기에 수 많은 사람들이 웹 서버를 만들 수 있었다.

- 컴파일이기에 기계어로 변환된 실행파일을 배포한다는 컨셉을 가진다.

- C++이 특정 영역에서 부족한 부분이 등장했다. 

- C++14부터 대용량 데이터 처리 등을 강조한다.

 


2. 하드웨어에 의존적이지 않은 소프트웨어를 개발하는 것인가?

목적에 맞는 Web client와 Server 프로그램 언어


1) Web server

(1) javascript

웹브라우저에서 동적으로 표현가능하게 한다.


(2) node.js

자바스크립트 언어를 번역해서 기계어로 바꿔주는 V8을 웹 브라우저에서 꺼내서 웹서버를 만들 수 있다.

 

참고 포스팅

2022.08.15 - [간단한 컴퓨터 이론/우아한테코톡] - 우아한 테코톡(6), Node.js

 

우아한 테코톡(6), Node.js

본 포스팅은 우아한Tech의 테코톡 유세지님의 Node.js 영상을 정리한 내용입니다. Node.js의 간단한 특징과 내부 구조 등을 위주로 정리했습니다. Node.js Node.js란? 자바스크립트를 실행시키는 런타임

konghana01.tistory.com


(3) Apache

설치하여 웹서버를 만들 수 있다.


(4) Nginx

 

(5) wordpress


2) Data analytics

(1) Python

- 문자열 처리에 강하기에 자연어 처리에 강하다.

- 과학자들이 만든 소프트웨어가 많이 있기에 통계나 과학과 관련된 라이브러리가 많이 있어 데이터 분석에도 도움을 주었다.

 

(2) R

- 통계를 위해 만들어졌다.

- 수학공식을 많이 가져왔다.


3) Cloud Computing

(1) OpenStack

OpenStack은 NASA가 Python을 가지고 만들었다.


4) Datacenter programming

데이터 센터에서 필요한 프로그래밍

 

(1) Python

(2) GO

- 매우 많은 컴퓨터들이 동시다발적으로 동작하는 것을 지원한다.

- 병렬처리가 가능한 언어이다.

- 오픈스택의 단점을 개선한 언어이다.

- 컨테이너 테크놀로지에서는 GO가 유리하다.

 


3. 운영체제에 의존적인 개발 환경

(1) Visual Studio Code

- 플러그인이 가능하기에 언어 및 확장성에 유리하다.

- 대부분의 운영체제에서 모두 돌아간다.

- 오픈소스이다.

(2) Xcode

 

(3) Visual Studio Code

 

(4) Atom

깃허브가 만들었기에 웹프로그래밍을 할 때 유리하다.

 

(5) Eclipse

자바를 할 때 유리하지만 복잡하고 무겁다.


4. 어떤 언어를 선택할지 모를 때

1) Tiobe index

- 질의응답이 많은 언어를 기준으로 순위를 매긴다.

- 파이썬은 최근에 오른 것을 볼 수 있다.

 

2) GitHub project statistics

- 3천만명이 넘는 개발자들이 프로젝트를 올리는 공간으로 언어들의 순위를 발표한다.

 

3) 언어별 경험 및 급여

 

요약

- 개발하고자하는 소프트웨어의 특징을 파악하여 언어를 선택하는 것은 중요하다.

 


출처

https://www.youtube.com/watch?v=noDhXv5h32M&list=PLz7S5PHCu4OniCxtW6jOOQEJEXX7PAUlA&index=3 

 

728x90
반응형