본문 바로가기

Udemy 강의 후기/Udemy - POCU C# 프로그래밍 기초

(5)
생성자(Constructor)와 Get,Set 그리고 프로퍼티 생성자의 개념 프로그래밍에서 드물게, 영단어(?)와 그 뜻이 일치하지 않는 파트라고 생각한다. 영어로 Constructor는 건설자 정도가 되겠는데, 클래스(OOP)에서는 그 뜻이 '인스턴스 생성시 자동으로 실행되는 메서드' 정도가 되겠다. 굳이 원 뜻인 '건설자(?)'에 끼워맞춰보자면.... 클래스를 이용해 인스턴스를 만드는데(건설) 제일 기본적인 사항을 만드는(건설자) 거라고 생각해볼수도 있다 (좀 민망하기는 하다) 무슨 역할을 하는가? 1. 클래스 초기화 2. 메모리에 할당 정도가 되겠다. 가장 기본적인 형태를 써보자면... class Program { Program() { Console.WriteLine("Program 클래스 기본생성자!") } } Program program = new Prog..
C# Array와 List의 차이, Decimal, StringBuilder Array와 ArrayList, List C#은 특이한게, 배열(Array)이 있는데 크기를 지정할수 있다. string[] list = new string[3]; (배열의 크기가 3) 크기가 고정되어있다보니 퍼포먼스와 메모리 관련 이점이 있고, 다차원 배열(바둑판같은)을 생성할수 있다는 장점이 있다. 그에 반해, 이 고정된 크기는 변형이 불가능하다 보니, 이 단점을 극복하기 위해 ArrayList란게 나왔다. 다른 타입의 데이터도 저장이 가능하며, 크기도 자유롭게 조절이 가능하다. (다른 타입의 데이터를 다루는 것을 boxed, unboxed라고 표현, 성능이슈가 당연히 발생) 이 단점을 또 극복하기 위해 나온것이 List인데, box와 관련된 성능이슈를 극복하기 위해 타입 추론을 도입했다. 즉, 같은..
Default Parameter와 out 매개변수 기본 매개변수(Default Parameter) - JS에도 있음! 말 그대로 함수에 전달된 파라미터의 값이 undefined나 아무것도 전달되지 않았을때, 기본으로 설정해둔 값을 쓴다는 소리이다. 강사님은 게임 프로그래머 출신이라 게임에 빗대서 설명을 하셨는데, 만약 몬스터의 난이도가 따로 주어지지 않았으면 0, 즉 Easy가 기본값일때 쓸수 있다는 식으로 설명을 하셨다. 예를들어 static float getHP(int level, int mapID, int difficulty = 0) 라고 쓸수 있다. 그냥 언뜻 보면 '아 이거 실수 방지용으로 상당히 괜찮은 기능 아닌가?' 라는 생각이 들 수 있지만 다음과 같은 사항을 조심해야 한다 1. 중간에 누군가 기본값을 추가하거나, 삭제한다면, 코드가 제대..
Tokenizer 와 함수 오버로딩 1. 토큰과 Tokenizer 의 개념부터 나 정도 세대는 토큰을 경험해 봤을 것이다. 버스타면 내는 이상한 동전같은? 물건이 토큰이고, 로그인시 받는 AccessToken 같은것도 같은 의미이다. 그런데 또다른 의미가 있으니, 한국어의 '어절'과 비슷한 개념의 토큰이란 뜻도 있다. 그래서 내배캠 4기 프로젝트에서 구현한 챗봇 옵션에 'Token' 항목이 있었고, 처음에 그게 무슨 접근권한 이런건줄 알았는데, 알고보니 출력되는 ChatGPT의 어절의 수를 조절하는 거였다. 100어절 150어절 이렇게 말이다. 자바스크립트의 Split이랑 개념은 똑같다. 다만 왜 자바스크립트나 파이썬에서 배울때는 토크나이저란 용어를 사용하지 않았는지는 잘 모르겠다. 아주 새로운 개념은 아니다. 다만 용어 자체를 잘 몰랐을..
해당 강의를 듣는 이유 별거 없다. 유데미는 가끔 폭탄세일하면 강의 1개에 12000원이라는 엄청난 가격으로 행사를 하는데 그 행사에도 불구하고 한 강의당 21만 9천원이라는 엄청난 가격을 고수하는 시리즈가 있었으니 POCU 아카데미의 프로그래밍 시리즈였다. 강사님 목표가 '10년뒤에도 살아남을 프로그래머가 되자' 인데 현재 내가 느끼고 있는 심정과 그대로 맞닿아서 좀 비싸지만 구매해봤다. C#을 이용한 프로그래밍 기초인데 사실 자바스크립트를 조금 공부했기에 강의 중반부까지는 딱히 포스팅할 내용이 없었다. 함수에서 오버로딩의 개념이나 부동소수점 등등은 따로 정리할만 하여 현재 주제를 선별(?)하고 있다. 실제 포스팅할거는 C# 다음에 할 프로그래밍 수학 정도 있을것 같다.