Stack은
후입선출(Last-In-First-Out, LIFO) 방식으로 마지막으로 추가된 데이터가 가장 먼저 제거됩니다. 스택은 주로 함수 호출이나 재귀 알고리즘 등에서 사용됩니다.
Queue는
선입선출(First-In-First-Out, FIFO) 방식으로 가장 먼저 추가된 데이터가 가장 먼저 제거됩니다. Queue는 대기열을 구현하거나 데이터를 순서대로 처리해야 하는 상황에서 사용됩니다.
Array는
동일한 데이터 형식의 연속된 메모리 공간에 데이터를 저장합니다. 데이터 검색이 빠르고 삽입 및 삭제가 상대적으로 느리다는 장단점이 있습니다.
Linked List는
삽입 및 삭제가 빈번히 일어나는 Stack과 Queue에 적합한 자료구조입니다. 특정 데이터 요소에 접근하기 위해서는 처음부터 연결 리스트를 탐색해야 하므로, 데이터 검색이 상대적으로 느리다는 단점이 있습니다.
절차지향 프로그래밍은
C언어나 Pascal과 같은 언어에서 주로 사용되며, 코드의 가독성이 좋고, CPU의 처리 속도가 빠릅니다.
객체지향 프로그래밍은
Java, Python, C++, C#과 같은 언어에서 주로 사용되며, 프로그램의 유지보수성이 높아지고, 코드의 재사용성도 높아집니다.
함수형 프로그래밍은
Haskell, Lisp, Clojure, Scala와 같은 언어에서 주로 사용되며, 동시성 처리가 용이하며, 코드의 안정성이 높습니다.
차이점은
절차지향은 데이터와 함수를 분리하여 사용하고, 객체지향과 함수형 프로그래밍은 데이터와 함수를 하나의 객체나 함수로 묶어서 사용합니다.