[ Computer Science ]

* 소프트웨어 아키텍처 = 소프트웨어의 내부적인 질을 높이기 위해 고려되는 소프트웨어의 구조 * 소프트웨어 아키텍처 패턴= 소프트웨어 아키텍처에서 일반적으로 발생하는 문제점들에 대해 일반화된 솔루션을 제공하는 것= 세부 구현이 아닌 소프트웨어의 뼈대나 전체적인 고수준의 기반을 담당 * 아키텍처 스타일 = 아키텍처 유형 (시스템 분할, 전체 흐름 제어, 오류 처리 방침, 서브시스템 간 통신 프로토콜)  * 시스템 타입시스템 타입은 아키텍처 스타일을 결정할 때 영향을 준다* 대화형 시스템 interactive- 가장 보편적 시스템 유형- 사용자-사용자 인터렉션- 유스케이스 단위로 컴포넌트 설계- 온라인 쇼핑몰, 모바일 앱 * 이벤트 중심 event driven- 특정 이벤트 발생시 시스템 동작 - 상태 다이..
0. 문제 공통 조건해당 테이블을 이용해서 소속 부서의 평균보다 급여가 높은 직원들을 출력하는 쿼리를 작성할 것 1. from을 활용하는 상호 연관 중첩 서브쿼리 (correlated nested subquery)1. subquery(SELECT 부서명, AVG(월급) 부서평균월급 FROM 직원 GROUP BY 부서명) A 서브쿼리에서는 직원 테이블에서 각 부서의 월급의 평균을 계산하고 부서명을 기준으로 그룹화해서 새로운 결고 테이블을 생선하다 부서 평균 원급 이라는 명칭의 열을 추가해서 결과를 보여두록한다  2. main and subSELECT 사번, 월급, 부서명FROM 직원 NATURAL JOIN (SELECT 부서명, AVG(월급) 부서평균월급 FROM 직원 GRO..
0. 문제 공통 조건해당 테이블을 이용해서 소속 부서의 평균보다 급여가 높은 직원들을 출력하는 쿼리를 작성할 것  1. where을 활용하는 상호 연관 중첩 서브쿼리 (correlated nested subquery)SELECT 사번, 월급, 부서명 FROM 직원 E1WHERE E1.월급 > (SELECT AVG(월급) FROM 직원 WHERE 부서명 = E1.부서명); 쿼리는 두 가지로 구성되어 있다 메인 쿼리는 직원 테이블에서각 행이 월급에 대한 조건을 만족하는 경우각 행의 사번과 월급, 부서명이 출력하도록 한다 where문의 부등호 뒤에 있는 select문이 서브쿼리이다이 서브 쿼리는 부서의 평균 월급을 계산한다 메인 쿼리의 각 행과 연관되..
어휘 구조 : 프로그램을 구성하는 토큰(token)의 구조 정의토큰의 종류예약어(reserved word) = 프로그래밍 언어에서 미리 정의된 단어. 특별한 의미리터럴(literal) 또는 상수(constant) =코드에서 사용되는 고정된 값특수 기호(special symbol) = 연산자나 구분자와 같은 기호식별자(identifier) = 변수, 함수, 클래스 등의 이름을 나타내는 문자열토큰 정의 방법자연 언어로 설명 / 정규 표현식(Regular Expression; RE)을 통해 구조화(a|b)c는 ‘a’ 또는 ‘b’가 반복되고 마지막에 ‘c’가 오는 모든 문자열식별자는 [a-zA-Z_$][a-zA-Z_$0-9] 형식으로 정의알파벳이나 $, _로 시작하고 이후에는 숫자도 포함할 수 있도록구문 구조 ..
효율(Efficiency)최적화 용이성(Optimizability) = 언어가 얼마나 최적화되어 있는가실행 효율프로그램이 실행될 때의 효율성을 높이는 것 목표빠르고 적은 자원을 사용하는 것이 바람직번역 효율코드가 컴파일러나 인터프리터에 의해 빠르게 번역될 수 있어야 함신뢰성과의 상충최적화를 위해 성능을 지나치게 중시할 경우, 프로그램의 신뢰성이 떨어질 수 있음구현 용이성(Implementability)  = 언어 구현의 효율성  / 번역기를 작성할 때 얼마나 효율적으로 구성할 수 있는가작성 용이성(Writability) = 프로그래밍 언어로 코드를 작성할 때 효율성표현력(Expressiveness) = 특정한 목표나 기능을 얼마나 간단하고 명확하게 표현할 수 있는가 판독성(Readability) : 코드..
The Tower of (Programming) Babel바벨탑: 1961년 1월 ACM 커버에 등장한 일러스트다양한 프로그래밍 언어들이 발전하며 복잡해진 상황을 상징적으로 표현시대 구분1950년대: 프로그래밍 언어의 여명기1960년대: 프로그래밍 언어의 범람1970년대: 기본으로의 회귀1980년대: 객체 지향 개념의 부상1990년대 이후: 웹 환경과 스크립트 언어의 대두미래 예측: 특수 목적 언어의 지속적 증가 1950년대 - 프로그래밍 언어의 여명기FORTRAN1954-1957년 IBM의 존 배커스(John Backus) 팀과학 및 공학 계산을 위해 개발효율성을 목표로 설계디익스트라는 이 언어가 과거의 실수에 매여 프로그래머들의 사고를 제한한다고 비판COBOL1959-1960년 미국 해군의 그레이스 ..
프로그래밍 언어란첫 번째 정의프로그래밍 언어 = “컴퓨터에게 우리가 시키고 싶은 내용을 전달하기 위한 표기법”초기 컴퓨터들은 하드웨어로 직접 연결되는 방식(하드 와이어링)으로 구성되어 프로그래밍매우 번거롭고 복잡한 과정명령어를 기호화하는 어셈블리어와 고급 프로그래밍 언어 탄생추상화의 진행프로그래밍 언어의 발전은 추상화 과정을 통해초기에는 기계어로 직접 CPU 명령어를 전달하던 방식어셈블리어, 고급 언어로 점차 발전하며, 특정 하드웨어와 독립적인 언어 체계를 만들 수 있게 되었음두 번째 정의프로그래밍 언어 = “기계-판독 가능(machine-readable)하고 인간-판독 가능(human-readable)한 형태로 계산을 서술하기 위한 표기 체계”컴퓨터가 이해할 수 있을 정도로 단순하면서도 인간이 읽고 이..
추상화의 정의특정 대상에서 필수 속성만을 뽑아내어 상위 개념으로 범주화복잡한 정보 속에서 중요한 부분만을 선택하여 일반화추상화 = 일반화, 분류, 부류화현생 인류의 핵심 특징 중 하나인간의 언어 발달과 밀접하게 연계범주화된 개념이 더 포괄적일수록 높은 추상화 수준높은 추상화 수준은 더 많은 사례를 포괄하는 정보가 포함되며, 반면 낮은 추상화는 더 구체적이고 국지적A의 한 개 문장 = B의 여러 개 문장A의 개념 하나를 구현하기 위한 B의 방식이 여러 개 존재구체화, 특수화와는 반대추상화의 예 물리적 외양의 추상화: 비행기 프라모델, 지도, 그래프 모형화 분류의 추상화: 생물의 계통수, 직장 조직도 / 특정 범주 안에 속하는 여러 개체를 분류하여 설명언어적 추상화: 사전의 표제어 / 간단히 특정 대상을 추..
프로그래밍 언어론에서 무엇을 왜 배우는가 사피어 호프 가설- 언어가 사고와 행동에 미치는 영향을 설명하는 이론- 강한 형태 : 언어가 사고를 결정하며 언어적 범주가 인지적 범주를 제한하고 결정- 약한 형태 : 언어적 범주와 사용이 사고와 특정 비언어적 행동에 영향을 미침- 우리가 사용하는 언어가 문화와 인지 범주에 따라 사고 방식에 영향을 미칠 수 있음- 프로그래밍 언어 역시 사고와 문제 해결 방식을 형성한다고 제안 언어를 익히는 철학적 이유- 비트겐슈타인 : 내 언어의 한계는 내 세계의 한계를 의미함, 언어의 한계가 사고와 인식의 범위를 결정함- 앨런 제이 펄리스 : 프로그래밍에 대한 사고를 변화시키지 않는 언어는 배울 가치가 없음, 언어가 사고를 형성하고 프로그래밍 언어가 새로운 사고 방식을 제공할 ..
1. Problems with Boolean Search - 결과가 너무 많음단순히 포함한다는 조건만으로 너무 많이 도출. 사용성 악화- 조건을 충족하거나 충족하지 않는 이분법적 방식결과의 순위 매기기 불가능. 중요한 결과와 덜 중요한 결과 구분 불가 2. 순위 기반 검색의 기초 - Scoring* 순위 기반 검색 장점- 검색 결과가 많더라도 정렬해서 보여줄 수 있음- 사용자도 더 중요한 문서를 쉽고 찾게 확인 가능 * 순서 부여 방법- 특정 쿼리와 문서가 얼마나 잘 일치하는지 문서마다 점수 부여 [0,1]- 점수가 높을수록 관련성 높은 문서 * 쿼리와 문서의 매칭 점수 계산- (쿼리, 문서) 쌍에 점수를 부여해서 그 점수 기반으로 관련성 계산- 쿼리 텀이 문서에 없다면 점수는 0점- 쿼리 텀이 문서 안..
dev charlotte
'[ Computer Science ]' 카테고리의 글 목록