EDPS(컴퓨터) 와 함수

이미지
출처 :  https://www.javatpoint.com/edp-full-form EDPS :  Electronic Data Processing System 전산을 전공하신 분은 들어보셨을 용어 입니다.  컴퓨터를 다른 말로 EDPS 라고 합니다.  말 그대로 전자적인 데이터 처리 시스템 입니다. 위의 그림에서와 같이 어떤 "데이터를 입력"받아서 어떤 "처리"를 한 후, 그 결과 "데이터(정보)를 생성"하는 시스템을 뜻합니다. 사실 우리가 사용하는 컴퓨터는 이 범주에서 벗어나지 않습니다. 웹서버는 URL 요청에 의해 응답을 보내주며, 게임 프로그램은 사용자의 키보드나 마우스 입력을 받아 그에 해당하는 화면출력이나 소리출력을 만드는 것으로 볼 수 있습니다. 이런 데이터 프로세싱을 여러번, 여러종류로 반복하는 것이 컴퓨터라 할 수 있을 것 입니다. 위의 그림을 다시보면, 프로세싱은 우리가 아는 함수와 같습니다. 즉, 어떤 입력을 받아 출력을 생성하는 기능을 수행합니다. 그러므로 , 컴퓨터는 사실 함수의 모임이라고도 볼 수 있습니다. 전자적으로 함수를 구현하여, 어떤 입력을 받아서 그에 대한 처리를 한 결과를 생성하는 함수들이 컴퓨터를 구성한다고 할 수 있습니다. 다시 말하면, 많은 수의 함수들로 컴퓨터, 즉 프로그램을 개발할 수 있다는 얘기 입니다. 프로그래밍을 오래하신 분들은 이 함수와 프로시듀얼 프로그래밍이 같은 것이 아닌가 하고 생각하시겠지만, 프로시듀얼 프로그래밍(Procedural Programming)  언어의 경우, 데이터 구조와 이에 대한 순차적인 처리에 관점이 맞추어져 있다면,  함수형 언어는 처리할 데이터와 이 데이터를 처리할 함수의 모임으로 관점이 다릅니다. 자세한 차이는 진행하면서 아시겠지만, 프로시듀얼 프로그래밍은 "어떻게"의 성격이 강하고 함수형 언어는 "무엇을"에 초점이 맞추어져 있다고 할 수 있습니다. ...

함수형 프로그래밍 언어 : Elixir

이미지
가장 첫글은 다음의 그림으로 시작하고자 합니다. 출처 :  https://nesoy.github.io/articles/2018-05/Functional-Programming 저는 프로그래밍을 꽤나 오랜동안 했습니다. 대략 30년이 넘었습니다. 처음 시작한 언어는 Apple II로 시작한 Basic 이였습니다. 그후, Fortran, Pascal, C, C++, Java 등의 언어를 익혔고 이중 현업에서 가장 많이 사용한 언어는 C++ 입니다. C 로 개발을 한 기간도 길고, 지금도 C 에서 C++로 넘어가던 때의 기억이 생생합니다. C에서 Global variable이 없어지고, 객체라는 것으로 사물을 모델링하고, 객체간의 연동을 통해서 프로그램을 개발할수 있음을 느꼈을 때의 희열을 잊을 수 없습니다. 사실. 이 블로그를 시작하게된 이유는 C에서 C++로 전환할 때보다 더 큰 희열을 Elixir를 알게되면서 느끼게 되어서 입니다. 한마디로 어디선가 들은 얘기대로, "함수형 언어를 사용하면 프로그램이 즐겁다." 에 동의 합니다. 생각하는 즐거움이 있고, 간결성, 생각대로의 흐름대로 전개되는 코드를 보는 즐거움, OOP의 객체 모델링을 불편하게 느끼게 하는 혁신성등이 있습니다. Elixir를 어느정도 알아 갈때, 정말 함수형 언어(Elixir) 가 정말 그리도 혁신적이고 생산성이 높을지에 대해서 많은 의구심을 가졌지만,  현업에 적용을 한 지금은 말 그대로 프로그래밍이 즐거울 뿐입니다. 하지만, 모든 언어가 장점만 가지는 것은 아닌것 처럼 Elixir도 장점만 가지는 것은 아닙니다. Elixir가 가장 잘 맞아 떨어지는 분야는  통신용 서버 프로그램 개발분야라고 생각합니다. 지금으로써는 UI 프로그램의 개발, 복잡하고 많은 산술연산처리 등에서는 다른 언어에 비해 약점이 있다 할 수 있습니다. 하지만, 99.999999999% 의 가용성, 언어 자체에서 지원하는 분산환경의 지...