고급언어를 이용해서 만들면 컴퓨터를 직접 이용 했을때와 차이점?
컴퓨터란
컴퓨터를 구성하는 구성요소들의 집합
컴퓨터 프로그램이란
컴퓨터를 가지고 만드는 절차
CPU
그 프로그램을 반복되도록 할 수 있는 장치
읽어온다는 것은
어떤 보조장치에서 뭔가를 읽어서 메모리에 쓰는 것
출력을 한다는 것은
어떤 보조장치에 (모니터)에 출력할 내용의 명령어 0101을 보낸다
연산자, 제어구조, 변수, 배열 등의 기능을 제공하는데, CPU와 메모리에 보내는 명령어010101들을 인간이 이해할 수이쓴 형태의 다른 기호로 쓸수있게끔 해준다.
절차는 같지만 사용하는 문자라는 형태의 명령어의 형태가 달라지는 것이다. 그리고 당연 컴파일러에 따라 그 기호는 달라진다.
사용자입출력,파일입출력 장치에 대해서는 고급언어가 지원하지않는다. 그 기호들을 우리가 이해하는 문자로 바꾸지않는다면 어떤방식으로 작성해야하나?
API라는 개념으로 제공해준다.
콘솔 API 파일 API 등.
입/출력장치는 CPU처럼 고급언어로 바꿀수없는 문제가 있다. CPU는 그 형태가 잘 바뀌지않는데 입/출장치는 장치가 달라질때마다 코드를 다시해줘야하기때문이다
그래서 API가 있는데 이것은 어떤 장치를 사용하기위한 간접도구이다.
장치가 달라질수있다는걸 염려해서 장치를 직접쓰는걸 차단한다. 그래서 간접적으로 사용한다.
API라고하는것은 어플리케이션을 만들때 사용하는 간접적인 도구이기때문에 API라고 한다.
어플리케이션이 프로그램을 만들떄 입출력도구에 대해서 직접사용하는게 아니라 약속화되어있는 가접화된 도구를 이용해서 만들때 사용할 수 있는 도구를 API라고 한다
프로그램을 만들기위해선 도구가필요하다
CPU나 API.
절차 언어가 그런것을 담당한다. C/C++ 제어구조가 있는 그런것들
절차를 만들면 프로그램이다. 근데 프로그램만 떡하니 있으면 뭐하나?
플래폼이 있어야한다. 그것을 이용할 수 있다.
카톡,페이스북, 하드디스크,모니터 등 다양한 방식으로 입출력할수있다
플랫폼을 직접 쓸것이냐? 아니다.
간접적으로 API를 이용해서 만든다 주로 함수형태로 되어있다.
함수를 정의하면 코드에는 어떤 능력이 생길까?
어떤 수식을 간단한 키워드로 정의하면 그것이 함수이다.
수학에서는 f(x) = x + x 이런 식으로 쓰면 함수다.
컴퓨터 프로그램에서는 f 라고 쓰면 그 의미를 알수없기때문에 역할을 나타내는 의미로 이름을 명명한다.
addCalculator(x) 라던지 말이다.
일정부분을 함수로 사용하겠다? 코드가 나뉘어지게 된다.
수식이 나뉘어질 수 있게 된다
코드를 나누고싶다? 그러면 머리에서 함수를 떠올릴수있는거다.
그것을 코드 파편화라고 부른다.
함수를 이용했다?
예를들어 함수를 안썼다면 중복되는 코드를 고쳤겠지만
함수를 썼다면 함수에서만 고쳐주면 된다.
여러번고치게해줄것을 한번만 고치게해준다
이 특징을 코드 집중화라고 부를 수 있다.
또다른 능력이 바로 인터페이스와 관련된..코드 은닉화이다
만약에 addCal을 이용한다면,, 내가 정의하지 않았다 치자
그럼 그수식을 반드시알아야하나? 안다고하는것은 쉽지도않고 어렵다. 함수라는것은 출력이 정상적으로 나오기만하면 된다. 몰라도된다.
일부러 그 내용을 숨기고 싶을때도 함수를 정의할수있다. 함수구현부분이 바뀌어도, 사용하는쪽에서는 안알아도된다. 그런특징떄문에 플랫폼을 사용하는부분을 함수로 정의하고 바뀌어도 사용부분이 안바뀌게끔 하다보니 함수를 사용하게된다
플랫폼이라는 부분을 함수형태로 사용한다. 디바이스를 다른제품을 바꾸더라도 달라질게 없다. 운영체제라는 녀석은 함수를 정의하고 함수를 제공한다. 장치를 만드는 회사는 드라이버를 제공한다. 드라이버만 바꾸면된다.
카톡이나 페북은 rest를 쓰면된다그래서 플랫폼이 바뀌어도 함수를 내부로 숨기는능력으로 인해서 간접적으로 사용할수있게 됐따
아니다.
함수는 API 일수도, 아닐수도 있다
함수를 어떤 대상을 사용할떄 간접적인도구로 사용한다면 API이다
함수를 코드를 나눌목적으로 사용하기도하고 집중화하는 목적으로 사용하기도하기때문에 함수를 인터페이스로만 사용한다는말은 잘못된말이다.
원론적으로는
어떤 프로그램이 만들고싶기때문에 그 프로그램에 필요한 재료들을 골라야한다.
언어라는것은 젤 나중에선택하는것이다.
언어를 맞추는 기준은 만들고싶은 프로그램에서 어떤것들이 필요한가에따라 정해지는것이다.
현실은 그렇지않다
현실은 언어를 선택할때 어떤것이 취업에 유리한가 인기있는 플랫폼은 무엇인가?
보통 자바가 안드로이드 앱개발이라던지 웹백엔드나 기업에서 많이 쓴다
스타트업에서 인기있는 건
자바스크립트로 프론엔드도 되고, 백엔드를 앵귤러나 리액트로 노드제이에스 기반으로 백엔드를 돌릴수도 있어서 인기있다.
참고
오늘도 열심히 하셨군요 ㅎㅎ