Elixir 프로그래밍
-
Project, ApplicationElixir 프로그래밍 2019. 7. 31. 00:36
이번 글에서는 Project 생성과 컴파일 및 실행하는 방법과 Elixir Application에 대한 내용을 적겠습니다. iex를 실행한 후, Application.loaded_applications 를 실행해보면 다음과 같은 내용이 나옵니다. 이는 현재 수행중인 Elixir Application 들의 목록을 보여주는 것입니다. Elixir는 Erlang VM(Virtual Machine)에서 수행됩니다. 그리고, 하나의 Erlang VM에는 복수개의 Application이 실행됩니다. Erlang VM은 하나의 OS(Operation System)이며, 하나의 OS상에 동시에 여러 개의 Application이 실행되는 것처럼 하나의 Erlang VM에는 여러 개의 Application이 실행됩니다. ..
-
Recursion, Tail RecursionElixir 프로그래밍 2019. 7. 30. 23:21
무언가를 반복 처리해야 하는 경우 , Elixir에서는 recursiove 함수를 사용합니다. for 문이 있기는 하지만, 다른 언어와의 for 문과는 좀 다르게 사용하는 Comprehensions 로 사용됩니다. (https://elixirschool.com/ko/lessons/basics/comprehensions/) 다음의 코드는 1부터 주어지는 수까지의 합을 구하는 함수입니다. Recursion과 패턴 매칭으로 구현하였습니다. 동작은 잘 하지만, 위의 코드는 좋지 않은 코드 작성의 예입니다. 이유는 sum(n-1) + n 부분의 비효율성 때문입니다. sum(n-1)은 다시 sum을 호출하는데, 이 sum 은 수행이 완료되는 시점에 다시 호출한 원래 sum 함수로 돌아와야 합니다. sum(3) ->..
-
패턴매칭Elixir 프로그래밍 2019. 7. 30. 22:29
제 생각에는 패턴 매칭이야 말로, Elixir의 백미라고 생각됩니다. 패턴 매칭에 의해서 간결하고 이해하기 쉬운 코드의 작성이 가능해집니다. 그리고, 어찌 보면 애텀을 사용하는 이유가 패턴 매칭을 이용하기 위해서 이기도 합니다. 패턴 매칭의 편리성 때문인지, 비단 Elixir 이외에도 많은 프로그래밍 언어에서 패턴 매칭을 도입하고 있습니다. 이번 글은 패턴 매칭에 대해 설명하도록 하겠습니다. 사실 우리가 어떤 프로그램을 작성한다는 것은, - 어떤 입력을 받아서, 그 입력을 처리할 어떤 함수를 호출하고 , - 함수의 호출결과가 이러할 때는 이러하게 하고, 저러할 때는 저러하게 한다. 라는 것을 컴퓨터에게 시키는 것이라고 볼수 있습니다. 이는, - 어떤 입력(데이터)가 있을 때, 그 데이터를 처리할 함수를 ..
-
Function과 ModuleElixir 프로그래밍 2019. 7. 29. 09:52
Module과 Function Module은 Function의 그룹 입니다. OOP의 Method 등의 개념이 들어가지 않은 단순 Function의 모임이 Module 입니다. 사실, Module 내에는 관련 있는 Function의 모음을 만들건 그렇지 않건 상관없습니다. Module은 그저 Function들의 모임입니다. Elixir 프로그램에는 많은 수의 함수들이 있을수 있으며, 이들 함수들을 하나의 집합으로 만들어주는 것이 모듈입니다. 어찌 보면, 함수들의 Name Scope를 정해주는 정도로 생각할 수 있습니다. 앞글에 적었듯이 Elixir에는 객체의 개념이 없으므로 당연히 Module의 상속 개념도 없습니다 Module은 그저 함수들의 묶음입니다. 그리고, Module의 이름은 영대문자로 시작하..
-
변수와 애텀(Atom)Elixir 프로그래밍 2019. 7. 28. 01:05
Elixir를 배우기 시작하면서 가장 혼동이 오는 부분이 변수와 애텀이었습니다. 애텀은 ? 거의 모든 언어에서 부울린값으로 true, false 를 사용합니다. 그냥 0, 1 을 true, false의 의미로 사용할 수도 있는데, 왜 'true'와 'false'라는 단어를 사용할 가요..? 코드의 의미가 더 분명해지기 때문이지요.. 그럼 true, false 외에 ok, not_good, invalid 등은 사용할 수 없나요 ? c 에서는 define 으로 사용할 수 있습니다. 그런데, 이런 워드를 굳이 define을 하고 사용해야 할가요.? define 없이 그냥 사용하면 안될까요..? Elixir에서 애텀이 이런 용도입니다. define 하지 않고, 그냥 내가 정의해서 사용할 수 있는 워드.. 그게 ..
-
함수와 함수의 입출력Elixir 프로그래밍 2019. 7. 27. 23:25
함수는 입력을 받아 이에 대한 조작을 하여 출력을 생성합니다. 출처 : https://www.javatpoint.com/edp-full-form 위의 그림에서 "Processing"이 함수가 됩니다. 위의 코드에서와 같이 Elixir의 함수는 def functionname(parameters) do code... ....... end의 형태를 가지고 있습니다. 주의해야 할 사항은 함수의 이름은 반드시 영대 문자로 또는 숫자, 특수문자로 시작하지 않아야 합니다. 위의 코드 예제에서와 같이 함수의 이름은 "add"일 수도 있고, "합계"일 수도 있습니다. Elixir는 유니코드를 지원하므로, 영어가 아닌 다른 언어로 함수 이름을 지정하는 것도 가능합니다. Elixir의 함수는 다른 언어의 함수와는 조금 다른..
-
Elixir 의 데이터 형(Type)Elixir 프로그래밍 2019. 7. 26. 15:31
사족일 수 있지만, 컴퓨터는 사실 모든 정보를 숫자로 저장, 연산 처리를 합니다. MP3, JPG 이미지, 워드 문서 등등 컴퓨터가 처리하는 모든 정보 내용은 컴퓨터 내에서 수치화되어서 처리가 됩니다. 이는, 컴퓨터로 처리할 수 있기 위해서는 수치화를 해야한다는 것을 의미합니다. 인터넷 뱅킹을 하는 것도, 내가 가진 자산을 은행의 시스템에서 수치화한 거고, 송금을 하는 것은 내 자산의 수치를 감소하고 입금을 받는 사람의 자산에 수치를 증가시키는 것으로 볼 수 있습니다. 냄새를 아직 컴퓨터로 처리하지 못하는 것은 (어떤 물질을 컴퓨터로 분석하는 것과는 다른 - 어떤 냄새를 한 인터넷으로 다른 사람에게 보내지 못하는 것은) 냄새를 수치화하지 못하기 때문입니다. 결국은 컴퓨터는 현실의 어떤 개념이나 물질을 디..