전체 글 346

[PLT/프로그래밍언어론] 08. 중간 정리

PLT 중간 정리 1#PLT컴퓨터에서 프로그램이 동작하고, 이 프로그램을 작성할 때 PL이 필요하다.PL을 설계하거나 PL로 프로그램을 개발하기 위해 컴퓨터가 어떻게 작동하는지 알아야 한다.PL 실행 시 고려해야할 것Data Type적용 가능한 computation은 데이터 타입에 따라 달라진다.연산의 정확성을 verify하고 올바른 computation을 choose하기 위해 고려Operator내부적으로 컴퓨터가 어떻게 처리하는지 알 필요는 없다.PL은 우리에게 익숙한 computation을 지원하는 operator를 제공한다.Control of Execution컴퓨터는 연산의 실행을 제어하고, 원하는 결과를 얻으려면 의도한 대로 연산을 실행해야 함.Control of Data메모리에서 값을 레지스터로..

[PLT/프로그래밍언어론] 07. Control Abstraction and Data Types

Control Abstraction and Data Types#PLTControl AbstractionControl Abstraction은 프로그래밍 언어에서 데이터 추상화 (Data Abstraction)와 더불어 가장 중요한 개념 중 하나입니다. 복잡하고 큰 소프트웨어의 경우, 주요 목표를 달성하려면 더 작은 요구 사항을 충족시켜야 합니다. 이 개념은 분할 정복 (Divide and Conquer) 전략과 관련이 있습니다.모바일 쇼핑 앱을 개발한다고 가정해 보겠습니다. 이 앱에는 다음과 같은 기능이 필요합니다:상품 데이터 읽기앱에서 상품 표시상품 검색고객 정보 관리상품 리뷰결제구매 관리배송 옵션 관리이러한 모든 기능을 하나의 큰 프로그램으로 구현하는 것은 좋은 방법이 아닙니다. 대신, 각 기능을 독립..

[PLT/프로그래밍언어론] 06. Control Structure

06. Control Structure#PLT제어 구조표현식표현식(Expression)은 평가가 완료되면 값을 생성하거나 정의되지 않음을 생성하는 구문적 단위입니다(완료되지 않는 경우).표현식은 모든 프로그래밍 언어의 기본 구성 요소 중 하나입니다.함수형 언어처럼 문(statement)이 없는 언어도 있지만, 표현식은 모든 언어에 존재합니다.표현 방식연산자와 피연산자로 표현합니다.예: x + y, b - 1, f(3) >= 0전위(prefix), 중위(infix), 후위(postfix) 표기법이 있습니다.연산자의 위치에 따라 다음과 같은 구문이 있습니다: ::= |... ::= |... ::= |...표기법수학적 식을 예로 들어보겠습니다: a + b * c + d중위 표기법에서는 (a + b) * (c ..

[Spring MVC] 06. 스프링 MVC - 기본 기능

06. 스프링 MVC - 기본 기능#Spring/MVC정리로깅운영 서버에는 System.out.println()을 사용하지 않고, 로깅 라이브러리를 사용해 로그를 출력해야 한다.SLF4J로그 라이브러리는 Logback, Log4J, Log4J2 등등 수많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공한다.로그 선언private Logger log = LoggerFactory.getLogger(getClass());@Slf4j 롬복에서 사용할 수 있다.로그 사용 예시@Slf4j@RestControllerpublic class LogTestController { @RequestMapping("/log-test") public String logTest() { String name = "Sp..

Spring/MVC 2024.11.24

[Spring MVC] 05. 스프링 MVC - 구조 이해

5. 스프링 MVC - 구조 이해#Spring/MVC정리이전 챕터에서 직접 만들었던 MVC 프레임워크와 아래 스프링 MVC를 비교해보자.1 ~ 8 단계 구조가 같고, 이름만 다르다.FrontController DispatcherServlethandlerMappingMap HandlerMappingMyHandlerAdapter HandlerAdapterModelView ModelAndViewviewResolver ViewResolver(인터페이스)MyView View(인터페이스)달라진 부분을 하나씩 살펴보자DispatcherServletorg.springframework.web.servlet.DispatcherServlet스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있는데, 그게..

Spring/MVC 2024.11.21

[Spring MVC] 04. MVC 프레임워크 만들기

04. MVC 프레임워크 만들기#Spring/MVC정리프론트 컨트롤러 도입 이유 - 챕터 3 마지막에 다룬 내용포워드 중복View로 이동하는 코드가 항상 중복 호출되어야 한다.Thymeleaf 같은 다른 뷰로 변경한다면 전체 코드를 다 변경해야 한다.사용하지 않는 코드특히 HttpServletResponse의 response 객체는 현재 코드에서 사용되지 않는다.이런 HttpServletRequest, HttpServletResponse를 사용하는 코드는 테스트 케이스를 작성하기도 어렵다.공통 처리가 어렵다기능이 복잡해질수록 컨트롤러에서 공통으로 처리해야 하는 부분이 점점 더 많이 증가한다.공통 메서드로 추출해도 되지만, 호출 과정도 중복이고, 호출하는 것을 놓칠 수도 있다.프론트 컨트롤러를 도입해보자...

Spring/MVC 2024.11.20

[PLT/프로그래밍언어론] 05. Memory Management

Memory Management인터프리터의 주요 기능. 프로그램이 실행되는 동안 다양한 정보(지역변수, 임시값..)가 생성/로드/저장PL에서는 메모리 접근 처리 방법을 결정해야 한다.Subprogram(a.k.a procedure, routine, function)함수, 루틴, 프로시저 다 같은 의미로 사용하겠다. 이론적으로는 반환 값이 있는 것을 subprogram이라고 함.Stack데이터를 쌓는 자료구조. LIFO 구조. 데이터 push/popStack and Procedure스택은 프로시저에 적합하다. 프로시저 또한 LIFO 구조로 호출/종료되기 때문. Env도 이 방식으로 처리 가능Heap(자료구조 아님)힙은 pq나 힙 정렬과 관련된 자료구조이지만, PL에서는 프로그램이 allocated 될 수 ..

[PLT/프로그래밍언어론] 04. Names, Bindings and Scopes

04. Names, Bindings and ScopesName: 단순히 다른 객체를 표현하거나 나타내는 일련의 문자. PL에서는 identifier의 형태name과 object는 같은 것이 아니다. 하나의 이름이 여러 다른 객체, 하나의 객체가 다른 이름을 가질 수 있다.Denotable Object: 이름을 부여할 수 있는 객체들사용자가 부여 : 변수, 매개변수, 함수….PL 부여 : primitive types, primitive operations, pre-defined constnatsBinding: Association(연관성) between a name and a denoted object.다양한 시점에서 생성될 수 있다static : 디자인, 프로그램 작성, 컴파일타임Dynamic : Run..

[PLT/프로그래밍언어론] 03. PL Principle 2

03. Principle 2#PLT이전 시간에 컴파일 Step에 대해 배웠다. 그 중 Syntax Analysis를 자세히 살펴보자.문법 vs. 의미론 vs. 화용론문법(Syntax)은 프로그램의 형식에 관한 것이다.의미론(Semantics)은 프로그램의 의미에 관한 것이다.화용론(Pragmatics)은 특정 맥락에서 프로그램의 의미를 다룬다.예시: 톰과 제리문법:"쥐가 고양이를 차고 있다." ➞ 올바름!"쥐 고양이를 차고 있다." ➞ 잘못됨!의미론:"쥐가 고양이를 차고 있다." ➞ "음, 잠깐만… 뭐라고?"화용론:"쥐는 제리, 고양이는 톰이다." ➞ "아하! 가능하군."문법에 중점세 가지 중, 이 강의에서는 문법에 더 중점을 둔다.다른 것들에 대해 논의하기 전에, 프로그래밍 언어를 어떻게 정의할지 알아..

[PLT/프로그래밍언어론] 02. PL Principle 1

02. Principle 1#PLTComputers and Turing MachineWhat is a Computer?이 강의에서는 PL을 중점으로 다룰 예정이다.우리는 프로그래밍 언어의 크리에이터가 된다고 생각하자.PL을 디자인할 때, 컴퓨터에서 프로그램이 동작하도록 하기 위해 많은 것들을 고려해야 하고, 우리는 이 부분을 중점으로 학습한다.PL의 관점에서 컴퓨터란 무엇인가요?프로그래밍 언어는 결국 컴퓨터에서 실행됩니다.프로그래밍 언어를 설계하거나 프로그래밍 언어로 프로그램을 개발하려면 ➞ 컴퓨터가 어떻게 작동하는지 이해해야 합니다.이 질문을 들으면 컴퓨터에 대한 다양한 이미지가 떠오를 수 있습니다.이번 주 강의에서는 이 질문에 대해 좀 더 이론적으로 살펴볼 것입니다.강의가 끝나면 컴퓨터에 대한 일반적..