목록STUDY/CS (14)
공부해봅시당

HTML을 작성하며 HTML이 HyperText Markup Language라는 것을 들어본 경험이 있을 것이다.여기서 HTML에 대해 익숙하게 사용하고 활용하면서도, 막상 HyperText가 뭔지 설명해보라고 하면 설명하기가 어려워서 부끄러웠다.따라서 이번 기회에 HyperText에 대해 간략히 정리해보고자 한다. 우리나라 말이 아닌 용어를 이해할 때 가장 좋은 방법은 역시 그 용어 자체의 뜻을 이해하는 것이다.Hyper의 의미에 대해 먼저 살펴보도록 하자. Hyper그리스어 접두사로 `over` 또는 `beyond`의 의미를 가지고 있다.영어로는 `초월한`, `과도한`, `과한` 등의 의미로 사용된다.그러니까 보통 `Hyper`가 포함된 단어들은 어떤 것의 범위를 넘어서거나, 일반적인 수준을 뛰어넘는..

먼저 인코딩과 암호화의 개념을 헷갈려하는 이유에 대해 살펴보자보통 인코딩과 암호화의 개념을 헷갈려하는 이유는 두 개념이 가진 공통점 때문이다.둘 다 `기존의 데이터를 원하는 데이터 형식으로 변환`한다. 예를 들어 이런 것이다.`Hello, World!`가 `SGVsbG8sIFdvcmxkIQ==` 이런 식으로 인간이 알아들을 수 없는 언어로 바뀌는 것 말이다.인코딩과 암호화는 둘 다 이런 식으로 알아들을 수 없는 문자로 변경된다는 점에서 공통점을 가지기 때문에 인코딩과 암호화를 헷갈려한다. 그럼 인코딩과 암호화는 도대체 어떤 차이가 있는 걸까? 인코딩과 암호화의 차이인코딩과 암호화의 가장 결정적인 차이는 `인코딩`은 누가 못알아보게 만들려는 처리가 아니라 사용성을 좋게하기 위한 가공이라는 것이다.반대로 ..

UML 관계 종류 요약 1. 일반화 관계(Generalization Relationship) 2. 실체화 관계(Realization Relationship) 3. 의존 관계(Dependency Relationship) 4. 연관 관계(Association Relationship) 4-1. 직접 연관(Directed Association Relationship) 4-2. 집합 연관(Aggregation Relationship) 4-3. 복합 연관(Composition Relationship) 관계명 설명 관계 일반화 관계(Generalization Relationship) 일반적인 것(동물)과 특화된 것(포유류)과의 관계 상속 실체화 관계(Realization Relationship) 인터페이스와 그것을 ..
명령형 프로그래밍 = 어떻게 명령형 프로그래밍에서는 '어떻게' 해야하는지 처리 방식을 모두 설명함 예시 루프를 사용하여 각 요소를 순회하고, 각 단계에서 무엇을 해야 하는지 명시적으로 지정함 List numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = 0; for (int number : numbers) { sum += number; // 각 숫자를 sum에 더함 } System.out.println(sum); // 출력: 15 장단점 장점 1. 명확한 흐름 제어 명령형 프로그래밍은 알고리즘의 각 단계와 작업 흐름을 명확하게 제어할 수 있게 해줌 특히 복잡한 알고리즘과 로직을 구현할 때 유용할 수 있음 2. 직관적인 이해 프로그래밍 경험이 많지 않은 사람들에게는 명령..
Groovy Junit5 기반이며 Java와 비슷해서 어렵지 않다고 함 (Junit5: Java용으로 가장 널리 사용되는 테스트 프레임워크 중 하나) Groovy가 개발된 이유 Java의 특성을 기반으로 하면서도 더 간결하고 표현력 있게 코드를 작성할 수 있는 언어를 만들기 위함 1. 간결성과 표현력 Groovy는 Java의 장황함을 줄이고 더 간결하며 표현력 있는 코드를 작성할 수 있게 하는 것을 목표로 함 Java는 강력하고 안정적인 언어로 잘 알려져 있지만, 때로는 장황하고 불필요한 부분이 많을 수 있음 2. 스크립트 언어의 필요성 Groovy 언어가 생겨날 당시, 스크립트 언어들의 인기와 활용도가 높아져 있었음 Java 플랫폼 위에서 쉽게 동작하는 스크립트 언어의 필요성이 느껴짐 Groovy는 이..
고차 함수(Higher-order function)는 함수형 프로그래밍의 핵심 개념 중 하나로, 함수를 인자로 받거나 함수를 결과로 반환하는 함수를 의미 이런 성질을 가진 함수는 프로그램의 추상화 수준을 높여주며, 보다 유연하고 재사용 가능한 코드를 작성할 수 있게 해줌 고차 함수의 예제를 먼저 살펴보고 특징과 장단점에 대해 알아보도록 하겠음 고차 함수 예제 자바스크립트 자바스크립트와 같은 함수형 프로그래밍 언어에서 고차 함수는 매우 중요한 역할을 함 자바스크립트에서 고차 함수의 한 예는 Array 객체의 map, filter, reduce 같은 메소드 이 메소드들은 각각 함수를 인자로 받아 배열의 각 요소에 적용함 기본예제 // 함수를 인자로 받는 고차 함수 예 function filter(arr, p..
정적 스코프와 동적 스코프는 변수가 어떤 값을 참조할지 결정하는 두 가지 다른 규칙 이 두 스코프는 프로그램이 변수 이름을 해석하는 방식에서 근본적으로 다름 정적 스코프 (Lexical Scope) 정의 정적 스코프는 프로그램의 텍스트에 따라 변수의 스코프가 결정되는 것을 말함 함수의 스코프는 그 함수가 어디서 호출되었는지가 아니라 어디서 정의되었는지에 의해 결정 특징 함수의 스코프는 함수가 정의된 시점에 고정 코드를 읽으면서 변수가 어디서 오는지 쉽게 파악할 수 있음 대부분의 현대 프로그래밍 언어에서 사용(예: JavaScript, Python, C) 예제 var x = 'global'; function outer() { var x = 'outer'; function inner() { console.l..
상관관계 렉시컬 스코프(Lexical Scope), 스코프 체인(Scope Chain), 클로저(Closure)는 서로 밀접한 관련이 있는 프로그래밍 개념들 이들 간의 관계를 이해하려면 자바스크립트와 같은 렉시컬 스코프를 가지는 언어의 함수가 어떻게 실행되고, 변수가 어떻게 조회되는지를 알아야 함 - 렉시컬 스코프(Lexical Scope) 렉시컬 스코프는 함수를 처음 작성할 때 결정됨 함수가 어디서 호출되었는지가 아니라 어디에 작성되었는지에 따라 상위 스코프가 결정됨 이 스코프 결정 방식은 코드를 예측 가능하게 만들고, 어디서 변수를 찾아야 할지 명확하게 함 대부분의 현대 프로그래밍 언어들은 렉시컬 스코프를 사용하여, 코드를 작성한 그 형태에 따라 스코프를 결정 렉시컬 스코프(정적 스코프)는 함수가 정..