9월, 2020의 게시물 표시

프로그래밍 언어 탐방 - Nim

이미지
(본 글은 2020년 9월에 Nim 1.2.6 버전 기준으로 작성했습니다.) Nim은 System Programming Language를 표방하고 있습니다. System Programming Language의 대표적인 언어는 C이므로, Nim은 "더 나은 C"가 되는 것이 목표인 것으로 보입니다. 그렇다면 C에서 불편했던 점이 Nim에서 어떻게 개선됐는지 살펴봅시다. 1. 메모리 관리 C에서는 메모리를 수동으로 관리해줘야합니다. malloc, calloc, realloc 함수로 메모리를 동적할당했으면, free 함수로 메모리를 해제해줘야합니다. 반면에 Nim은 Garbage Collector를 사용하고 있습니다. type Entity* = ref object x*: int y*: int 이렇게 ref object 키워드를 사용해서 타입을 정의하면 참조 타입이 되고, 참조 타입의 메모리 관리를 자동으로 해줍니다. 여기까지는 Java와 다를 게 없습니다. 그런데 성능상의 이유로 참조 타입말고 값 타입을 사용하고 싶은 경우가 있는데, 이럴 때는 object 키워드만 사용해서 타입을 정의하면 됩니다. type EntityObj* = object x*: int y*: int 여기까지는 C#에서도 가능합니다. (struct는 값 타입, class는 참조 타입) 재미있는 점은 둘을 섞어서 사용할 수 있다는 것입니다. type EntityObj* = object x*: int y*: int type Entity* = ref EntityObj 위와 같이 하면, EntityObj를 값 타입으로 정의하고 Entity를 참조 타입으로 정의해서 둘 다 사용할 수 있게 됩니다. 값 타입(EntityObj)의 변수에 addr 함수를 사용하면 포인터(pointer)를 얻을 수 있는 반면에, 참조(Entity)를 얻을 수는 없습니다. 따라서 값 타입(EntityObj)용 함수와 참조 타입(Entit...

Aseprite 컴파일 하는 방법

이미지
Aseprite는 픽셀 아트에 사용되는 프로그램입니다. 주로 게임에 들어갈 도트 찍는데 사용합니다. Aseprite는 독특한 배포 전략을 취하고 있습니다. 유료 판매도 하고 있지만, 무료로 사용할 수 도 있습니다. 소스코드를 받아서 컴파일 할 수 있다면 말이죠. (소스코드는 공개돼있지만, 소스코드를 재배포할 수 없는 등의 제약이 있으므로, 오픈소스 소프트웨어는 아닙니다.) Aseprite를 컴파일하는 방법은 다음 주소에 들어가면 나오기는 합니다. https://github.com/aseprite/aseprite/blob/master/INSTALL.md (이하 "공식설치문서"라고 하겠습니다.) 하지만 설명이 매우 불친절하므로 어떻게 해야하는지 몰라서 헤메기 딱 좋습니다. 본 글에서는 Aseprite를 윈도우 10에서 컴파일하는 방법에 대해서 설명합니다. 컴파일하기 위해 필요한 것들을 단계별로 진행해봅시다. - 운영체제 : 윈도우 10 - 컴파일러 : Visual Studio Community 2019 - 빌드 도구 : CMake, Ninja - 기본 라이브러리 : Windows 10 SDK - 그래픽 라이브러리 : Skia - 소스코드 : Aseprite 1. 운영체제 홈페이지에서는 운영체제는 윈도우 10이면 된다고 나와있으나, 윈도우 10 32비트 버전에 대해서는 테스트해보지 않았지만, 컴파일이 안될 수도 있을 것 같습니다. 본 글에서는 윈도우 10 64비트 버전이 설치돼있다고 가정하고 설명하겠습니다. 윈도우 10 64비트 버전인지는, "내 PC"를 우클릭하고 "속성"을 클릭하면 "Windows 버전"과 "시스템 종류"를 확인할 수 있습니다. 2. 백신 네이버 백신에서는 아무 문제가 발생하지 않았지만, Avast 같은 경우 컴파일 중에 액세스 오류가 발생해서 컴파일이 멈춰버릴 수 있다고 합니다. 이런 경우라면 컴파일 중에는 백신의 실시간...