본문 바로가기

프로그래밍8

[감 익혀보기] Strategy Design Pattern with C++ 본문을 공부하며 정리한 내용입니다. 프로그래밍을 하다보면 변경은 꼭 일어나기 때문에 항상 대비를 해둬야한다. 너무 딱딱하게 작성하면 안되고 유연해야한다. 그러기 위해 디자인 패턴을 사용하는 것이고, 디자인 패턴은 프로그램을 유연하고 독립적이고 유지관리가 편하고 사용성 높도록 도와준다. 그 중 Strategy 패턴은 계속 달라지는 행위를 정의할 때 클래스를 수정하지 않아도 되게끔 해준다. 몇 가지 원칙을 보면서 본 디자인 패턴을 익혀보자 Principle 1. 변하는 것은 항상 캡슐화 하자! 항상 클래스가 어떻게 행동(behavior)하는지를 살피고, 찾았다면 이를 캡슐화 해야한다. 예를 들어서 오리 클래스를 생각해보자면 울음과 비행이 행동(behavior)이 되겠다: class Duck{ void qua.. 2022. 3. 31.
게임엔진에 사용되는 디자인 패턴(Harold Serano) 원문: Design Patterns in Game Engine Development 이제 막 프로그래밍 언어들의 구문/문법을 알게 된 것이 프로그래머가 되었다는 말은 아니다. 아니라고 하고 싶지만 트루다. 진짜 프로그래머가되려면 데이터구조, 알고리즘, 그리고 디자인 패턴에 대한 지식이 필요하다. 문법을 아는 것은 알파벳 아는 정도이다. 누구든지 일주일이면 프로르램의 구문이나 문법을 배울 수 있지만, 모듈화 되어있고 유연하고 유지관리한 프로그램을 개발하는 것은 불가능하다. 이게 독자분의 동기를 오히려 감쇠시킨 것 같지만, 디자인패턴을 배워서 훌륭한 개발자가 되어 봅시다! 제일 많이 사용되는 디자인 패턴은 아래와 같습니다. Singleton Design Pattern: 프로그램이 시작될 때 클래스가 최초 한.. 2022. 3. 28.
물리엔진 개발 로드맵(Harrold Serrano) Harrold Serrano 는 Untold Engine이라는 인디 게임엔진을 개발하였다. 그가 물리엔진을 개발하는 방법에 대해 공유하고 있어 이를 번역하려 한다. 어떻게 게임엔진 개발자가 되는가? Step 1: 선형대수학을 배우자! 선형대수학을 먼저 배우자. 벡터나 행렬 계산을 자유롭게 할 수 있도록 익혀두자. 예를들면 내적, 외적, 회전행렬이 있다. Step 2: 프로그래밍 언어를 배우자 (C++) 다음으로는 프로그래밍을 할 수 있어야 한다. 일단 추천하는 언어는 C++이다. 전문가가 될 필요는 없으나, 꼭 알아야할 개념이 있다: classes, methods, inheritance, polymorphism and encapsulation. Step 3: 이제 수학 엔진을 만들자 이전에 익힌 벡터와 .. 2022. 3. 27.
[Julia] 기본2 - 1. 구조체 기본 정의법(outer/inner constructor) 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. 코드를 좀 심오하게 짜보려하니 구조체(struct)를 정의하는 법 먼저 궁금해졌다. 데이터를 뭉터기로, 효율적으로 다루기 위해서는 필수이니까. CONSTRUCTOR 일단 여타 다른 코드들과 비슷하게 정의한다. 특징이라면 형식을 정해주지 않아도 된다는 정도이다. 물론 데이터 형식을 정의할 수도 있다. 뒤에 나온다. struct Foo firstMass secondMass end 이렇게 구조체를 정의하고 이 구조체를 이용해 변수를 할당하면 . 으로 구조체 요소에 접근할 수 있다. myFoo = Foo(100,10) print("Mass of my first foo = ", myFoo.fisrtMass) #>> Mass of my second foo = 10.. 2021. 10. 12.
[Julia] 기본 - 1.줄리아 언어로 수치해석 하기 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. WHY 왜 줄리아 인가? 줄리아는 고성능이고, 범용 오픈소스 언어다. JIT(just in time) 컴파일러로 C/Fortran 급 속도를 지니며, Matlab/Python 마냥 쉽다. 그러니까 줄리아를 사용해야한다. FEATURES 몇 가지 특징 줄리아 특징은 많은데, 공학/과학 분야에서 관심가질만한 내용은 아래와 같다. JIT 컴파일 가능! 컴파일러/인터프리터/JIT 개념을 공부해보자(아직부족) 아무튼 한행씩 분석하지 않고 java/C# 마냥 중간언어로 바꿔 준다. 이 특징은 특히 크로스 플랫폼이라는 강점이 있는데, 아직 사용 안해봐서 잘 모르겠다. 배우다보면 알겠지. 컴파일된 프로그램마냥 빠르단다. 선택적 입력? 이건 사용하기 전에는 잘 모를거같.. 2021. 10. 5.
6. 유도데이터타입2(STRUCT), 예제로 배우기 MPI 튜토리얼을 제공하는 원본게시글을 따라가며 이해한 내용들을 기록한 문서이다. 포트란으로 병렬컴퓨팅 배우기 ←링크 VI MPI 유도데이터타입 _____________________ - Derived Data Type. 코딩을 하다보면, 데이터를 읽어 올때 내장 된 데이터 타입 외의 데이터 구조를 사용하면 편한 경우가 있다. 예를 들어 1~100을 1~10, 10 단위로 나눠야하는 상황(1~10, ... , 91~100)을 생각해 보자. 이런경우 루프를 통해 정수를 하나씩 읽어오기에는 다소 비효율적이다. 그보다 정수 10개짜리 리스트 형식을 정의해 한번에 10개씩 읽어오면 코드는 훨씬 간결하해지고 가독성이 좋아질 수 있다. 데이터 구조를 지정해주는 기법이 MPI 표준에도 존재한다. MPI 기본 데이터 .. 2020. 3. 24.