분류 전체보기
-
데이터에 관하여경제 2024. 9. 1. 23:45
Elements (요소): 데이터가 수집되는 대상. 예를 들어, 설문 조사에서 응답자 한 명 한 명이 바로 요소다.Variables (변수): 요소의 특징이나 속성. 예를 들어, 연간 매출 등이 있다.Observation (관찰값): 한 요소에 대해 수집된 정보의 집합. 테이블의 한 행(row)이 바로 관찰값이 되는 거다.Dataset (데이터 세트): 특정 연구에서 수집된 모든 데이터. 모든 Observation을 모아놓은 것이라고 생각하면 될 듯. 다음 이미지를 보면 이해하기 쉬워진다. 이제 데이터 측정에 사용되는 네 가지 척도를 알아보자각각의 척도는 데이터가 얼마나 많은 정보를 담고 있는지 결정하고, 그에 따라 적절한 요약 방법이나 통계 분석 방법이 달라진다. Nominal (명목척도): 이름이나 ..
-
테스트 주도 개발(TDD, Test-Driven Development)컴공지식/프로그래밍언어론 2024. 8. 31. 23:25
TDD는 소프트웨어 개발 방법론 중 하나로, 테스트를 먼저 작성한 후 그 테스트를 통과할 수 있는 코드를 작성하는 방식이다.이 방법론은 코드의 품질을 높이고, 버그를 줄이는 데 아주 효과적이다. TDD의 첫 번째 단계는, 구현할 기능을 테스트하는 테스트 케이스를 작성하는 거다.테스트는 코드가 올바르게 작동하는지 확인하기 위한 명확한 기준이 된다.예를 들어, 정사각형의 넓이를 구하는 함수를 작성할 때, 4를 입력하면 16이 반환되어야 한다는 테스트 케이스를 먼저 작성하는 거다. 그리고 그 테스트를 통과할 수 있는 가장 간단한 코드를 작성한다.코드가 복잡할 필요는 없어, 오직 테스트를 통과하는 것만 목표로 한다.예를 들어, 아까 말한 테스트 케이스를 통과하기 위해 a * a처럼 간단한 코드를 작성하는 거다...
-
어떻게 함수를 설계할까컴공지식/프로그래밍언어론 2024. 8. 31. 23:22
계약(Contract): 함수의 입력과 출력의 타입을 정의.목적(Purpose): 함수가 하는 일을 설명.테스트(Tests): 함수가 올바르게 동작하는지 확인.헤더(Header): 함수의 정의와 매개변수, 반환 타입을 명시.본문(Body): 함수의 실제 동작을 구현. 다음을 모두 만족시키도록 함수를 설계하자.예를 들어 정사각형의 넓이를 구하는 함수를 설계한다고 해보자. 계약 단계에서 입력으로는 정사각형의 한 변의 길이인 정수 타입 a를 정의하고 정수 타입 넓이인 w를 정의하고목적으로는 정사각형의 넓이를 구한다고 할 수 있다.테스트로는 4를 넣으면 16이 반환되는지 테스트 해볼 수 있다.헤더에는 areaOfSquare이라고 함수를 정의하고 매개 변수로는 a, 그리고 반환타입으로는 정수형인 Int를 붙일 수..
-
스칼라의 리스트(List)카테고리 없음 2024. 8. 31. 23:14
스칼라의 List는 불변(immutable)이며, 여러 유용한 메서드와 연산을 제공한다. 리스트는 다음과 같이 정의한다. val x: List[Int] = Nil val y: List[Int] = List(1, 2, 3, 4) Nil은 빈 리스트를 나타낸다. 즉, x는 요소가 하나도 없는 Int 타입 리스트다. y는 1, 2, 3, 4라는 요소들을 가진 Int 타입의 리스트다. 스칼라에서는 리스트를 만들 때 List()를 사용한다. 이제 리스트에 요소를 추가하는 법을 알아보자 42 :: y :: 연산자는 리스트의 앞에 요소를 추가하는 연산자다. 여기서는 42를 y 리스트의 앞에 추가해서 새로운 리스트를 만든다. 결과는 List(42, 1, 2, 3, 4)가 된다. 이 연산은 불변 리스트의 특성에 따라 새..
-
패턴 매칭 vs if-else 절컴공지식/프로그래밍언어론 2024. 8. 31. 22:57
패턴 매칭(Pattern Matching)과 if-else 절은 모두 조건에 따라 다른 코드를 실행하는 방법이지만, 각각의 장단점과 사용 사례가 다르다. 패턴 매칭은 단순한 조건 비교뿐만 아니라, 데이터의 구조를 분석하고 그 구조에 따라 분기할 수 있다. 예를 들어, 객체의 타입, 내부 필드, 리스트의 패턴 등을 기준으로 분기할 수 있다.한 번의 match 구문 안에서 여러 경우를 처리할 수 있다.스칼라는 패턴 매칭에서 모든 경우를 처리하지 않으면 컴파일러가 경고를 주기 때문에, 오류를 미리 방지할 수 있어 디버깅에 유리하다. 그에 비해 if-else절은 단순히 조건이 true인지 false인지에 따라 코드의 실행 흐름을 결정한다.간단한 조건을 처리할 때는 if-else가 직관적이고 이해하기 쉽다. 조건..
-
스칼라의 패턴 매칭컴공지식/프로그래밍언어론 2024. 8. 31. 22:41
패턴 매칭은 스칼라에서 매우 강력하고 유용한 기능 중 하나이다.이걸 잘 이해하면 코드를 훨씬 간결하고 직관적으로 작성할 수 있다. 패턴 매칭은 주어진 값이나 표현식(expr)을 여러 패턴(case variant_id)과 비교해서, 어떤 패턴과 일치하는지에 따라 특정 코드를 실행하는 기능이다.스칼라에서 흔히 쓰이는 match 키워드를 이용해 이런 패턴 매칭을 구현할 수 있다. 기본 구조는 다음과 같다 expr match { case variant_id1 (field_id11, ...) => expr1 ... case variant_idm (field_idm1, ...) => exprm } expr: 여기에는 매칭할 표현식이나 값이 들어간다.match: 패턴 매칭을 시작하는 키워드야. expr의 ..
-
스칼라에서 타입을 정의하는 방법컴공지식/프로그래밍언어론 2024. 8. 31. 22:27
trait type-idtrait는 스칼라에서 타입을 정의하는 일종의 설계도라고 할 수 있다.자바의 인터페이스(Java interface)와 비슷하지만, 스칼라에선 조금 다르게 동작한다. trait는 클래스가 구현해야 할 메서드나 필드를 정의할 수 있다.하지만 실제로 그 메서드를 구현하지는 않는다.그 역할은 trait를 사용하는 클래스가 하게 된다. 중요한 점은 스칼라에서는 여러 trait을 상속받을 수 있다는 것이다.즉, 다중 상속이 가능하다. case class variant_id (field_id: type) ... extends type-idcase class는 스칼라에서 특별한 종류의 클래스다.자주 쓰이는 패턴을 간단하게 표현할 수 있게 해준다.case class는 자동으로 equals, has..
-
Scalar의 assert컴공지식/프로그래밍언어론 2024. 8. 31. 22:00
다음은 코드 예시다def areaOfSquare(a: Int) = a * a @main def runAreaCalculator(): Unit = { println("areaOfSquare(5) returns " + areaOfSquare(5)) assert(areaOfSquare(5) == 25, "Test failed for areaOfSquare(5)") println("areaOfSquare(3) returns " + areaOfSquare(3)) assert(areaOfSquare(3) == 9, "Test failed for areaOfSquare(3)") } areaOfSquare는 정사각형의 넓이를 구하는 함수이다.a를 매개변수로 받고 a와 a를 곱하여 정사각형의 넓이를 도출해..