개발자 99% 커뮤니티에서 수다 떨어요!
<2022-03-27>
💡 연습문제 2. 객체 지향 언어와 함수형 언어의 직교성은 어떻게 다를까? 이런 차이가 언어 자체에 내재된 것일까 아니면 사람들이 언어를 사용하는 방법이 다른 것일까?
언어의 직교성이란?
컴퓨터 과학에서 직교성이란 일종의 독립성이나, 결합도 줄이기를 의미한다. 하나를 바꿔도 나머지에 어떤 영향을 주지 않으면 서로 직교한다고 한다. (p55)
함수형 언어가 뭐지?
프로그램이 상태의 변화 없이 데이터 처리를 수학적 함수 계산으로 취급하고자 하는 프로그래밍 이다.
함수를 일급 객체로 다루는, 값이나 상태의 변화보다는 함수 자체의 응용을 중요하게 여기는 언어이다.
객체지향 언어에서의 직교성
객체지향 언어에서의 직교성을 위해, 결합도를 줄이기 위해 다형성을 이용한다. 다형성이란, 하나의 객체에 여러가지 타입을 대입 할 수 있다는것을 의미한다. 다형성을 이용하기 위해선 인터페이스(구현, 메서드 재정의, 형 변환)을 이용해야한다.
함수형 언어에서의 직교성
함수형 언어에서는 최소한의 기능 단위들로만 함수를 구현 한 후 , 사용할 때 잘 조합해서 사용하면 직교성을 높일 수 있을 것 같다.(사실 이건 내 추측)
자바 언어를 사용한다 해도, 객체지향을 제대로 이해하지 못하고 코딩한다면 절차 지향으로 코딩을 할 수가 있다. 내가 그랬었다.. 언어가 어떤 패러다임을 지향 한다는 것은, 언어 자체에 내재된 것이 아니라 개발자가 어떤식으로 언어를 사용하느냐에 따라 다른것 같다.
함수형 프로그래밍이란?
https://www.youtube.com/watch?v=7aEQLvvnQIY
https://borabong.tistory.com/5
객체지향 언어 직교성에 대하여
객체 지향 언어에서 지원하는 기능들을 잘 이용한다면, 응집성을 높이고 결합도는 낮출 수가 있지만, 클래스가 관심사에 잘 집중하지 않으면 인터페이스가 엉망이 될 수 있다.
함수형 언어는 여러분이 작고 독립된 함수를 많이 만든 다음, 이를 여러가지로 조합하여 문제를 해결하도록 유도한다. 그러나 여기서도 문제가 생길 수 있다. 이러한 함수는 데이터를 변환하는데 한 함수의 결과가 다른함수의 입력이 되는 식이다.