본문 바로가기
스터디/혼공학습단 11기 - 얄팍한코딩지식

혼공얄코 - Java, Java Script, C, C++ 어떻게 구분하냐고요?

by 찌노오 2024. 2. 2.

 

 

 

 

 

기본미션

주차 진도 기본 미션
5주차(1/29 ~ 2/4) Chapter 03 Ch.03(03-3) 확인 문제 풀고 인증하기(p. 260 ~ 261)

 

 

 

 

 

 

 

1. ③ 객체지향은 절차지향과 상반되는 개념입니다.

객체지향 프로그래밍은 프로그램을 객체 단위로 나누고, 이러한 객체의 상호작용을 중심으로 프로그램을 설계하는 패러다임이다. 반면, 절차지향 프로그래밍은 순차적인 처리를 중심으로 하며 프로그램을 절차단위로 구조화한다.

 

프로그래밍은 태초에는 모두 절차지향이었다. 코드가 짜여진 순서대로 실행되는 방식으로 말이다.

그러나 갈수록 소프트웨어가 복잡해지고 프로젝트 단위가 커지면서 더 이상 절차지향 방식으로는 유지보수를 비롯한 프로그래밍이 어렵게 되었다. 그래서 등장하게 된 개념이 클래스, 함수로 설명할 수 있는 객체지향 프로그래밍 개념이 나오게 되었다.

 

이 문제는 조금 의문들었던 선지가 있었다.

바로 ②번 인터프리터 언어는 자료형에 있어 컴파일 언어보다 자유롭습니다. 라는 선지이다.

자유롭다는 표현이 다소 모호한 것 같은데 만약 컴파일러가 필요하다는 의미라면 맞는 선지 같은데, 컴파일 언어의 메모리 제어를 놓고 보면 자유롭다는 표현은 컴파일 언어에 더 가까운게 아닌가 하는 개인적인 생각도 덧붙어본다.

 

 

2. ①스레드, ②상속

 

 

3. 

① - ㉢

② - ㉠

③ - ㉡

④ - ㉣

 

다른 건 다 알겠는데 잠시 C언의 포인터(Pointer)에 대해서 알아보자.

포인터는 변수의 메모리 주소를 저장하는 변수이다. 포인터를 사용해 특정 메모리 위치에 접근하거나 동적 메모리 할당과 함수 호출을 유용하게 할 수 있다.

 

이건 개념이 너무 어려운데 Chat GPT를 이용해보자.

아래와 같은 방식으로 포인터를 선언하고 참조해서 메모리를 할당하거나, 포인터를 산술 연산하여 메모리 주소를 이동시킬 수도 있다고 한다. C언어는 몰라서 개념만 보고 넘어가려고 한다.

 

포인터 선언:

  • 포인터는 특정 데이터 타입을 가리키기 때문에, 선언 시에 어떤 데이터 타입을 가리킬지 명시해야 합니다. 예를 들어, 정수형 변수를 가리키는 포인터는 다음과 같이 선언됩니다:
int *ptr;

 

주소 연산자(&):

  • 변수의 주소를 얻기 위해 주소 연산자 &를 사용합니다. 예를 들어, 변수 x의 주소를 얻으려면 다음과 같이 합니다:

 

int x = 10;
int *ptr = &x; // ptr은 이제 x의 주소를 가리킴

 

역참조 연산자(*):

  • 포인터로 가리키는 메모리의 값을 읽거나 수정하기 위해 역참조 연산자 *를 사용합니다. 예를 들어, 포인터 ptr이 가리키는 값에 접근하려면 다음과 같이 합니다:
int y = *ptr; // y는 이제 x의 값인 10을 가짐

 

포인터의 활용:

  • 포인터는 동적 메모리 할당에 사용됩니다. malloc, calloc, realloc 함수 등을 사용하여 특정 크기의 메모리를 동적으로 할당하고, 해당 메모리의 주소를 포인터에 저장합니다.
int *arr = (int*)malloc(5 * sizeof(int));

 

 

4.

① - C언어 ② - C++ ③ - 자바 ④ - 자바스크립트

 

먼저 

C언어는 언매니지드 언어로 분류되며, 메모리를 직접 관리하고, 개발자가 메모리 할당 및 해제를 수동으로 처리해야 한다.

또한, 절차지향 프로그래밍 언어로 객체지향 프로그래밍 언어가 아니다.

 

C++은 언매니지드 언어로 분류가 되면서도 객체지향 언어의 개념의 가지고 있다.

 

자바는 언매니지드 언어이고, 대표적인 객체 지향 언어이다.

 

자바스크립트는 객체지향이면서 최근 Node.js처럼 인터프리터로도 사용할 수 있는 언어이다.

 

 

 

 

** 사실과 다른 내용이 있을 수 있습니다. 언제든지 피드백 부탁드립니다!

반응형

댓글