
<aside> 💡 목차
</aside>
https://github.com/POCU/COMP1500CodeSamples
<aside> 💡 특정 프로그래밍 언어에서 지원하는 기능에 따라 분류하는 방식
</aside>
<aside> 💡 가장 단순한 형태의 언어
절차적으로 책읽듯이 한줄한줄 실행한다는것이 초점
기능과 자료 저장의 분리
→ CPU는 연산하고 메모리는 저장하는 역할만 하니까, 절차적 언어가 CPU에게는 더 올바른 내용
</aside>
<aside> 💡 바뀐 상태를 크게 고민하지 않는 언어다
두 값의 총합을 구하는 프로그램이 있다
더하기 전 총합 변수는 0이지만
더한 후 총합 변수는 n이다.
총합 변수가 0에서 n으로 바뀐 것 자체가 상태가 변했다는 것
</aside>
<aside> 💡 예시
장부와 비서의 개념으로 이해
장부 내용에 덮어쓰기!
계산은 계산기에서 하고 결과는 어딘가에 적어두기
같은 엑셀 파일의 줄에 바뀐 내용을 추가하는게 아니라, 덮어쓰는 상황이 생김 즉, 상태가 변할 수 있음
</aside>
<aside> 💡 복잡한 프로그램의 구조를 잡기 쉽다
</aside>
<aside> 💡 사람에게 직관적인 언어
어떤 사물을 봤을 때 사물의 개념을 하나로 쳐서 그걸 기본적인 구성단위로 본다는 게 OOP
가능한 재활용하는 방식
</aside>
<aside> 💡 기능과 자료를 하나의 개체로 둠

Student 라는 개체에 상태와 기능을 둘 다 구현한 상태
</aside>
<aside> 💡 예시

램프는 킨 상태 1 과 끈 상태 0 에 따라 기름 양이 줄어든다.
이런 관계들을 표현하는것이 OOP언어 라는 것이다
</aside>
<aside> 💡 주어와 목적어이 있을때 목적어가 객체가 되는것
</aside>
<aside> 💡 함수형 언어?
<aside> 💡 불변적이다
절차적 언어처럼 함수가 있지만, 상태 변화가 없음
위 절차적 언어에서는 게속하여 장부의 내용이 업데이트 되었잖아?
함수형 언어는 한번 쓴 값을 바꾸지 못한다 (블록체인처럼)
</aside>
<aside> 💡 장점이 뭐야?
멀티 스레딩 상황에서 장점을 발휘함
즉 레이스 컨디션 때문에…
(함수형) A 프로그램이 10원에서 50원을 추가했고
(절차형) B 프로그램은 10원에서 10원을 제거했다
근데 B프로그램에서 10원에서 10원을 뺀 상태를 업데이트 해버리면, 상태가 덮어씌워져 버려서 최종적으로 0원이나 50원이 될수도 있는 상태가 벌어진다
쉽게 말해서,10명이 동시에 한 PSD 파일을 수정하는데, 어떤 폐급이 모든 레이어를 레스터화 해서 저장해버린 사태가...
</aside>
<aside> 💡 예시
장부 내용 덮어쓰기 없음!
장부에 값을 적으면 새로운 값이 추가가 될 뿐. 어제 줄의 내용은 동일함
새로운 내용을 추가해도 열 내용은 변하지 않는다 즉, 상태가 변하지 않음
모든것이 상수, 재귀함수로만 이루어짐
</aside>