Post

취미 개발, 쉬운 개발

고수준 언어와 취미 개발

고수준 언어는 쉬워요

편하게 개발할 수 있는 쉬운 언어를 고수준 언어라고 합니다.
대표적으로는 파이썬이 있습니다.

1
print('Hello World!')

요즘 고수준 언어는 코드 결과물을 예측할 수 있는 가독성과 자료 관리를 용이하게 해주는 객체(Object)식 구성을 제공하여 편하게 코딩할 수 있습니다.

같은 고수준 언어지만 만들어진지 시간 좀 지난, 자바정도만 되어도 사용자가 알아야하는 개념이 더 많아지게 되는데

1
2
3
4
5
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!"); 
    }
}

우… 겨우 취미로 무언가 만들겠다는데 이렇게 부담스러워서야.. !

( 자바도 저수준 언어에 비하면 굉장히 편한 편입니다 😅 )

취미로 개발해볼까?

dictionary

저는 코딩을 하면서 공식 문서를 자주 찾는 편인데, 제가 느끼기에 이건 마치 사전에서 용어찾는 것과 비슷했습니다.

예를 들어, 배열 뒤에 값을 추가하는 push_back() 이라는 함수가 있다면, 어떻게 동작하는지, 어떤 인자를 필요로하는지 그 구성을 알아봅니다.

배열 뒤에 값을 추가할 필요가 있을 때 말이죠.
그 전까지는 push_back() 이라는 함수의 존재조차 모르고 있다가, 마치 모르는 단어를 마주하고 사전을 찾는 것처럼, 그러한 개념이 필요한 순간 참조 문서를 펼치는 것입니다.

실제로 참조 문서(Reference)가 사전처럼 동작하기 때문에, 주먹구구식으로도 충분히 치고 올라갈 수 있습니다. 그 과정에서 결과물의 최적화와는 동떨어지겠지만, 초심자 기준에선 결과물의 최적화가 아닌 작업 시간의 최적화라고 볼 수 있겠습니다.

주입식 K-IT교육

사전을 ㄱ~ㅎ까지 전부 읽고나서 개발을 시작하는 방식 역시 존재합니다.

이 방법의 목적은 한 번 읽고 전부 머리 속에 기억하려는게 아니고, 이미 있는 개념을 빠르게 활용하기 위해서지요.
예를 들어, 비밀번호에 특정 문자가 들어가있는지 검토하는 부분을 만들 때 문자열을 처리하는 방식 중 하나인 정규표현식을 사용하면 빠르게 구성이 가능한데, 이 개념 자체를 모른다면 문자열 필터링하는 방식을 연구하며 시간을 허비하게 될 수 있습니다.

보통 직업 육성 교육을 할 때 이런 방식을 채택합니다. 현장에서 정규표현식을 몰라서 노가다 작업이 진행되지 않도록 말이죠.


sub_image

대상 언어 또는 프로그램 선택하기

본인이 개발과 전혀 무관하다고 생각이 드는 일을 하더라도, 전자기기가 주변에 있을 가능성이 높습니다. 21세기는 그런 세상이니까요 😃

개발 언어를 배우다보면 그동안은 보이지 않았던 일상 생활 속에서 자동화가 가능한 것을, 아니면 좀 더 편하게 처리할 수 있는 것을, 그것도 아니면 그냥 더 재밋는 인생을 위한 어떤 것을 내가 만들 수 있겠노라 하게 됩니다.

그렇게 하려면 이제 무엇을 공부할지 골라야겠네요.
보통의 개발자라면 용처에 맞는 개발 언어가 이미 정해져 있지만,
여러분이 개발을 처음 진입하는 초심자라면…

게임엔진으로 내가 원하는 프로그램 개발

scripting

갑작스러운 유턴에 많이 놀라신 것 같은데, 일단 읽어주세요 ^^;
저는 이게 정말로 편한 방법이라고 생각하고 추천합니다.

이미 겜돌이/겜순이로 게임 플레이 경험이 많다구요?
정말 강력 추천합니다.

독특한 목적을 띄지 않는다면

예를 들어, 오픈소스 하드웨어 개발을 생각하고 초심자로 뛰어드셨다면 아마 아듀이노를 사용하게 될 것입니다.
아니면 개발하려는 내용이 이미 평범한 범주를 벗어났다면 (예를 들면, 윈도우 정품 인증 문구처럼 프로그램과 무관하게 디스플레이에 뭘 띄우는 것 등), 그런 것을 해내기 위해 이미 중-저수준 언어를 찾거나 고수준 언어 중에서 그런 기능을 지원하는게 있는지 먼저 찾아봐야 할 겁니다.

이처럼 개발하려는 내용이 명료하다면 보통은 개발 언어가 이미 정해져있거나 기능 검토가 필요합니다.
근데 그런 독특한 경우가 아닌 보통의 경우라면, 프로그램 창이 생기고 그 위에서 어떤 행동을 하게 될 것입니다. 보통 그렇게 동작하기를 원하기도 하구요.

이미 그럴 줄 알고 다 준비했지

게임엔진의 장점은 이미 준비된 녀석인 점입니다.
다른 언어들에서는 다양한 패키지를 떡칠해야 동작하게 될 것들을 게임엔진은 이미 기본적으로 가지고 있습니다. 대표적인 내용은 다음과 같습니다.

  • 게임엔진에서 개발하면 게임으로서 배포할 수 있는 모든 플랫폼들, 메이저 OS(윈도우, 맥, 리눅스) 및 모바일 메이저 OS(안드로이드, iOS)에서 실행할 수 있습니다.
  • 게임에 필요하기 때문에 이미 준비된 기능들이 많습니다. (화면에 상호작용 가능한 버튼, 파일 엑세스, 물리엔진과 객체 생성, 원한다면 3D 개체를 화면에 띄울 수도 있음)
    그래서 원하는 표현이나 기능을 구현하기 쉽습니다.
  • 경험이 쌓이고 여차하면 게임을 개발하게 될 수도 있습니다.

게임엔진의 이러한 장점으로 인해, 이미 게임이 아닌 미디어 아트와 같은 예술 활동에도 작품을 만들 때 게임엔진을 활용합니다.
우리가 우리 편의를 위해, 예를 들어 딱히 화려할 필요 없는 문서 편집 자동화를 위해 게임엔진을 쓴다 하더라도 별로 문제될 이유가 없습니다.
뭐로 가도 서울로만 가면 되니까요.

물론 게임엔진의 단점도 있습니다.

  • 실행을 위한 기본 사양이 높습니다.
  • 레이아웃 구성 등으로 굳이 내가 이런 것까지 알아야하나? 싶은 것들을 공부하게 될 수도 있습니다. (물론 로우코딩보단 더 유연하게 동작합니다)
  • 게임 범주를 많이 벗어난 작업을 처리하려면 다른 언어가 더 나은 경우도 있습니다. 계속 확장중이긴 하나 자유로운 범주가 게임에 맞게 한정되어 있습니다. 일단은 “게임엔진”이니까요.

도망쳐

추천은 추천일 뿐, 선택은 여러분의 몫이지요.

저는 추천글을 마치겠습니다.

This post is licensed under CC BY 4.0 by the author.