[꼼꼼한 개발자] 꼼코더
07. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [자바와 절차적/구조적 프로그래밍] - 프로그램이 메모리를 사용하는 방식 본문
07. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [자바와 절차적/구조적 프로그래밍] - 프로그램이 메모리를 사용하는 방식
꼼코더 2022. 12. 27. 01:45🔋 프로그램이 메모리를 사용하는 방식
자바의 특징을 빠르게 살펴봤다. 이제부터는 자바를 잘 활용하기 위한 지식을 쌓아보자.
아래 그림은 하나의 프로그램이 실행될 때 프로그램이 메모리를 사용하는 방식을 간략하게 보여준다.
기계어를 포함한 모든 프로그래밍 언어의 공통된 사용 방식이다.
객체 지향 프로그램에서는 데이터 저장 영역을 다시 세 개의 영역으로 분할해서 사용한다(아래 그림 참고).
그림의 우측 영역(데이터 저장영역)은 T처럼 보이기에 앞으로 T메모리 구조라고 간략하게 지칭하겠다.
🏴☠️ 자바에서 존재하는 절차적/구조적 프로그램의 유산
객체지향 프로그래밍은 절차적/구조적 프로그램의 어깨를 딛고 있다.
‘절차적 프로그래밍’을 한마디로 표현하자면 ‘goto를 쓰지 말라는 것’이다.
❓왜 goto를 사용하면 안 될까?
그 이유는 goto를 사용 시 프로그램의 실행 순서가 인간이 이해하기에 너무 복잡해질 가능성이 있기 때문이다.
실행 순서가 이리저리 이동된다는 뜻이다.
그렇게 되면 소스를 이리저리 따라가며 프로그램을 이해해야 한다.
‘구조적 프로그래밍’은 ‘함수를 쓰지라는 것’이다.
❓ 왜 함수를 써야할 까?
중복코드를 한 곳에 모아서 관리할 수 있다.
논리를 함수 단위로 분리해서 이해하기 쉬운 코드를 작성할 수 있다.
추가로 공유 사용 시 문제가 발생하기 쉬운 ‘전역 변수’보다는 ‘지역 변수를 사용’하라는 이야기도 있다.
자 그럼 결론적으로 객체 지향 언어에서 절차적/구조적 프로그램의 유산은 어디에 남아 있을까?
바로 메서드 내부에서 확인할 수 있다.
이유는 메서드는 객체 지향 프로그래밍에서 제어문이 존재할 수 있는 유일한 공간이기 때문.
자바의 예약어 중 구조적/절차적 프로그래밍의 유산이라 할 수 있는 것들을 표시해 보았다.
자바 키워드 중 절반 이상이 구조적/절차적 프로그래밍 언어에서 유래됐음을 알 수 있다.
다음시간에는 구조적/절차적 프로그래밍을 이해해보는 글을 올려보겠다.
위 내용은 스프링 입문을 위한 자바 객체 지향의 원리와 이해 교재를 참고하여 작성되었습니다.