[프로그래밍 언어론] 프로그래밍 언어론 개요
·
CS/프로그래밍 언어론
개요 사실 프로그래밍 언어론이라는 것을 들으면.. 그게 뭔데? 하는 반응이 많을 것이다. 요즘 대학원 랩실만 보더라도 거의 모든 곳에서 AI를 활용한 연구를 진행하다 보니 프로그래밍 언어를 주 주제로 하는 곳을 많이 찾아보기도 힘든 상황이니.. 그런데 사실 프로그래밍 언어론도 AI 모델에서 상당히 중요한 부분을 차지하고 있다. 프로그래밍 언어론을 기반으로 컴파일러를 만들고, 컴파일러 가속을 통해 인공지능 / 딥러닝 모델의 성능을 향상하는 것도 가능하니 프로그래밍 언어론도 인공지능과 영 관련이 없다고는 할 수 없겠다. 사담이 길었는데, 짧게 요약하면 프로그래밍 언어론은 결국 프로그래밍 언어의 구조, 의미, 설계 방식에 대해 다루는 학문이다. 프로그래밍 언어 먼저 프로그래밍 언어란 '계산 과정을 기계가 ..
[COLMAP] TanksAndTemples를 활용한 재구성 평가
·
CS/COLMAP
또 다시 긴 시간만에 돌아온 포스팅.. 종강 이후 약간의 요양을 하며 쉬었다. 더 늦기 전에 학부때 배운 내용을 최대한 많이 이 블로그에 정리해 보려고 한다. 동국대학교 컴퓨터공학과라면 이 블로그에서 조금이라도 도움을 얻어가길 개요https://hyeon0117.tistory.com/25 [COLMAP] COLMAP 오픈소스 튜토리얼근 1개월만에 돌아온 CS 관련 포스팅.. 시험기간과 제출할 프로젝트 기간이 겹쳐버려 쉬지도 못하고 너무 힘들게 4월을 보내버렸다..그래도 전공과목 공부하며 얻은 것이 없지는 않으니 조금 더hyeon0117.tistory.com 지난 COLMAP 포스팅에서는 COLMAP 툴을 이용해 여러 각도에서 찍은 사진을 재구성하고, 해당 재구성 파일의 카메라 정보, 메쉬 정보까지 따로 ..
[머신러닝] PercepTron & Multilayer Perceptron 개요
·
CS/머신러닝
전공 내용 정리 + 공부 겸 끄적여보는 포스팅. 시험기간이 다가오니 정리와 공부를 한번에 하고싶어서 포스팅하게 되었다. 아마 차후 시간이 더 나면 이때까지 배운 CS 전공 내용도 싹 정리하게 될듯한데.. 일단 이번학기 수강하는 과목부터 어느정도 마스터를 하고 가자.퍼셉트론 생명체의 뉴런은 역치 이상의 자극을 받으면 신호를 다음 뉴런으로 전파하는데, 퍼셉트론은 이런 뉴런의 특징을 가지고 있다. 퍼셉트론의 입력값이 여러 처리를 거쳐 결과를 도출하는데, 사용 목적에 따라 도출하는 결과를 조절한다. 퍼셉트론 구조 위는 퍼셉트론의 기본적인 구조이다. 입력값 x0 ~ xm이 각 가중치 w0 ~ wm과 곱해지고 그 곱한 값끼리 더해 z 값이 계산된다. 계산한 z 값에 활성 함수를 적용하여 출력 값이 결정된다. ..
[객체지향설계 & 패턴] 프록시 패턴
·
CS/객체지향설계 & 패턴
프록시 패턴 객체의 책임과 관련이 있는 프록시(Proxy) 패턴이다. 프록시 패턴의 핵심은 '객체가 필요해지면 만든다'인데, 대리자 Proxy가 객체를 생성하는 것이다. 프록시 패턴의 기본적인 구조는 다음과 같다. UML 그리는 툴이 익숙하지 않아 Subject 인터페이스에 request1, 2, 3 메소드들이 추가되지 않았는데 원래 Subjec에 request1, 2, 3 메소드가 존재한다. Subject는 Proxy와 RealSubject를 동일시하기 위한 API를 정의하고, Proxy는 클라이언트의 요청을 최대한 처리하는 역할을 맡는다. 클라이언트의 요청을 Proxy 혼자서 처리할 수 없다면 RealSubject에 처리를 맡겨야 하는데, 여기서 Proxy 패턴의 핵심이 등장한다. RealSu..
[객체지향설계 & 패턴] 데코레이터 패턴
·
CS/객체지향설계 & 패턴
개요 Decorate는 '장식하다'라는 뜻의 동사인데, 이것의 파생형 Decorator는 '장식자'라는 뜻이다. 이번에 알아볼 데코레이터 패턴은 객체를 장식하는 패턴인데, 여기서 장식은 '기능을 추가한다'라고 생각하면 더 이해하기 편하다. 데코레이터 패턴 데코레이터 패턴의 등장 구성 요소는 Component, ConcreteComponent, Decorator, ConcreteDecorator로 총 4가지이다. Component는 기능을 추가할 때 핵심이 되는 역할로 API만 정의하고 여기서 정의한 API는 ConcreteComponent에서 구현한다. 장식자 Decorator는 Component와 동일한 API를 가지고, Component를 인스턴스로 가진다. 구체적인 장식자 Concrete Decor..
[객체지향설계 & 패턴] 전략 패턴
·
CS/객체지향설계 & 패턴
개요 내비게이션 안내 앱을 서비스하기 위해 사용자가 목적지까지 자동차로 도로를 이동하는 경우만 고려하여 앱을 서비스하였다. 좋은 반응을 얻어 자동차를 이용하는 경우 이외에도 자전거를 이용한 경우, 도보를 이용한 내비게이션 안내 서비스를 추가하려고 한다. 그런데, 자전거와 도보를 이용하는 case를 모두 앱에 집어넣다 보니 클래스의 크기가 너무 커져버렸다. 이용자들은 주변 랜드마크를 경유하여 목적지까지 이동하는 등의 여러 경우를 추가로 서비스 해달라고 하는데, 개발자들은 너무 커진 클래스의 크기에 당황하며 서비스 추가에 어려움을 겪고 있다. 이런 경우에 전략 패턴을 이용하여 리팩토링해야 한다. 프로그램은 문제를 해결하기 위해 만들어지고, 문제를 풀기 위해서는 알고리즘을 만들어야 한다. 이 전략 패턴에서는..
[객체지향설계 & 패턴] 상태 패턴
·
CS/객체지향설계 & 패턴
개요 상태 패턴을 짧게 요약하면 상태를 클래스로 표현하는 것이다. 객체의 상태를 클래스로 표현한다는 것이 잘 와닿지 않을 수 있는데, 아래 코드를 살펴보자.1234567891011121314151617181920212223public class Player { public static final int NORMAL = 0; public static final int TIRED = 1; public static final int EXHAUSTED = 2; private int state; public Player() { state = NORMAL; } public void run() { if (state == NORMAL) { ..
[객체지향설계 & 패턴] 템플릿 메소드 패턴
·
CS/객체지향설계 & 패턴
개요 템플릿 메소드 패턴은 꽤 쉬운 패턴이다. 이때까지 여러 패턴을 적용할 때 Java의 '상속' 기능을 여러 번 사용했을 것인데, 상속과 많은 연관이 있는 것이 이 템플릿 메소드 패턴이다. 템플릿 메소드 패턴의 핵심은 기본 API를 제공하고, API의 자세한 구현은 하위 클래스로 미루는 것이다. 구조 위와 같이 구조가 굉장히 단순하다. 추상 클래스에서 하위 클래스가 사용할 추상 메소드 F1, F2를 선언하고, 구현 클래스에서 추상 클래스에서 정의된 추상 메소드 F1, F2를 구현한다. 아래 코드로 자세하게 살펴보자. 예시 코드1234567891011121314151617181920212223242526272829303132333435363738abstract class Drink { publi..