목록전체 글 (106)
공부해봅시당
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) 렉시컬 스코프는 함수를 처음 작성할 때 결정됨 함수가 어디서 호출되었는지가 아니라 어디에 작성되었는지에 따라 상위 스코프가 결정됨 이 스코프 결정 방식은 코드를 예측 가능하게 만들고, 어디서 변수를 찾아야 할지 명확하게 함 대부분의 현대 프로그래밍 언어들은 렉시컬 스코프를 사용하여, 코드를 작성한 그 형태에 따라 스코프를 결정 렉시컬 스코프(정적 스코프)는 함수가 정..
프로그래밍에서 "스코프(Scope)"는 변수, 함수, 객체 등의 식별자(identifier)들이 어디까지 접근 가능한지, 즉 그들의 가시성(visibility)과 생명주기(lifetime)를 정의하는 데 사용되는 용어 스코프는 식별자들이 프로그램의 어떤 부분에서 유효한지 결정하며, 이를 통해 어디서 어떻게 식별자들을 찾을 수 있는지를 규정 스코프의 종류 - 글로벌 스코프(Global Scope) 프로그램의 어디서든 접근 가능한 식별자들을 포함 전역 변수, 전역 함수 등이 이에 해당 var globalVar = "This is a global variable"; function checkScope() { return globalVar; } console.log(checkScope()); // "This i..
주로 렉시컬 환경에 대한 내용은 주로 자바스크립트와 관련하여 설명하는 것을 찾아볼 수 있음 다른 프로그래밍 언어들도 렉시컬 스코프를 가지고 있지만, 자바스크립트는 특히 이런 내부 메커니즘에 대한 논의가 더 활발한 편 이는 자바스크립트 엔진의 작동 방식, 클로저, 이벤트 루프 등 자바스크립트의 독특한 특성들이 프로그래머가 코드를 작성하거나 문제를 해결할 때 중요한 역할을 하기 때문 (자바스크립트에서 더 많은 논의가 있는 7가지 이유는 아래 더보기를 펼쳐 확인할 것) 더보기 자바스크립트에서 더 많은 논의가 있는 7가지 이유 자바스크립트의 실행 환경 자바스크립트는 원래 브라우저에서 실행되도록 설계되었으며, 이후에 Node.js와 같은 서버 사이드 환경에서도 실행될 수 있게 됨 이러한 실행 환경들은 일반적으로 ..
DSL(Domain-specific Language): 도메인 특화언어 정의 DSL은 특정 도메인의 문제를 해결하기 위해 특별히 설계된 프로그래밍 언어 특정 작업이나 문제 영역에 대해 최적화되어 있음 해당 분야의 전문가들이 더 쉽게 이해하고 사용할 수 있도록 만들어짐 특정 기능이나 영역을 위해 만들어진 영역이고 아래와 같은 다양한 작업을 처리하기 위해 소프트웨어 개발에 많이 사용됨 소프트웨어 설정 설명 테스트 사양 작업 흐름 규칙 정의 UI 디자인 데이터 조작 예 SQL(데이터베이스 쿼리), HTML(웹 페이지 구조), CSS(웹 디자인), R(통계 계산) 특징 - 특정 도메인에 최적화: 특정 작업이나 산업 분야에 맞춰져 있어 관련된 문제를 효율적으로 해결 가능 - 짧은 개발 시간: 도메인에 특화되어 있..
스크립트 언어(Scripting Language) 1. 정의 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어 스크립트 작성 기능을 지원하는 소프트웨어를 제어하는 역할 수정이 빈번하게 발생하는 부분에서는 소스코드를 한줄씩 읽어 바로 실행하는 인터프리터 방식이 효율적 따라서 스크립트 언어도 대부분 인터프리터 방식을 사용하는 인터프리터 언어라고도 할 수 있음 예) Javascript, jsp, php, python, ruby 2. 특징 - 컴파일 언어에 비해 단순하고 쉬운 문법 구조 - 컴파일러 없이 명령어를 한줄씩 읽으면서 실행 -> 번역속도는 빠르지만 프로그램 실행 시 매번 같은 코드를 번역해야 함. 따라서 프로그램의 실행속도는 컴파일 언어에 비해 느림 - CPU 사용시간 낭비가 큼 -> 복잡한 산술연산..