1) Event-driven programming
사건기반 프로그래밍 : 비주얼 베이직과 같이 사용자의 명령, 마우스 클릭, 다른 프로그램의 메시지, 키보드 입력 과 같이 ‘사건’에 따라 제어 흐름이 결정되어 일을 하도록 하게끔 만들어진 프로그래밍 언어방식
2) Cloud computing
클라우드(인터넷) 을 통해 가상화된 컴퓨터의 시스템리소스(IT리소스) 를 요구하는 즉시 제공(on-demand)하는 것이다,. 인터넷 기반의 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술을 의미한다. 최소한의 관리 노력으로 빠르게 예비 및 릴리스를 가능하게 한다.
3) SaaS(Software as a Service), ASP(application hosting)의 차이점
SaaS : 소프트웨어가 호스팅 환경으로 배포되어 인터넷을 통해 서비스 되는것.
2단계 Saas : 고객당 instance를 하나씩 띄우긴 하지만, 커스터마이징이 아닌 메타 데이터를 활용한 Configuration을 통해 고객 설정을 한다. 초기 셋업을 서비스 제공자가 아닌 고객이 직접 하고, 커스터마이징이 없기에 비용을 절감할수 없지만 규모의 경제는 실행하지 못한다.
3단계 SaaS : Muli Tenant를 실현하고 configuration가지 가능하다. 하나의 instance로 다수의 고객을 서비스하기에 규모의 경제가 실현되며 Configuration으로 고객 설정을 하기에 비용절감 규모의 경제가 실현된다.
4단계 SaaS : Multi Tenant, Configuration, Scalability를 가지게 된다
ASP : 하나의 고객을 위해 1개의 instance를 띄우게 되고 고객에게 맞춰서 커스터마이징을 하게 된다. 커스터마이징에 많은 비용이 소요되고 instance를 개별로 띄우기에 규모의 경제를 실현할 수 없는 단점이 있다
공통점 : 원격의 호스트에 저장된 소프트웨어를 인터넷을 통해 이용하는 서비스
차이점 : 어플리케이션 제작과 실행 기술 측면
asp- 붙박이장, saas-가변형 장
saas 핵심요건 :
Configuration(사용자에 맞게 수정할 때 재코딩, 재컴파일 과정을 밟지 않고 정의 작업만을 통해 수행할 수 있어야 한다.) ,
Multi Tenant(고객사별 맞춤 업무 처리 서비스를 하지만 앱 실행 인스턴스는 단 1개만이 실행되어야 한다.)
Scalability : 성능확장성
4) Web-service
네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용을 하기 위한 소프트웨어 시스템. 서비스 자향적 분산 컴퓨팅 기술의 일종. 월드와이드 웹과 혼동하면 안됨, WWW는 사람과 컴퓨터 간의 상호작용을 위한 시스템인데 반해 웹 서비스는 컴퓨터와 컴퓨터 간의 상호작용을 위한 시스템, 분산 컴퓨팅을 실현할 수 있는 신기술로 등장.
5) PaaS(Platform as a service)
개발자, IT 관리자 및 최종 사용자가 모바일 및 웹 어플리케이션을 구축, 통합, 마이그레이션, 배포, 보호, 관리할 수 있도록 해주는 인프라 및 미들웨어 구성요소를 제공한다. PaaS는 생산성을 지원하기 위해 인공지능, 챗봇, 블록체인, 사물인터넷 등 혁신적인 기술을 포함하여 개발자가 새로운 기능을 자신의 어플리케이션에 구축 할 수 있도록 해주는 즉시 사용 가능한 프로그래밍 구성요소를 제공한다, 또한 빅데이터 분석, 콘텐츠 관리, 데이터베이스 관리, 시스템 관리, 보안 등을 포함한 분석가, 최종 사용자, 전문 IT관리자를 위한 솔루션이 포함되어 있다.
장점) IT운영 표준화 및 간소화, 즉시사용가능한 솔루션으로 비즈니스 혁신 가속화, 운영 보안 관리 위험 감소
6) P2P과 client-server model의 차이
둘다 네트워크 아키텍처,
client-server ) 서비스 요청자인 클라이언트와 서비스 자원의 제공자인 서버 간에 작업을 분리해주는 분산 어플리케이션 구조이자 네트워크 아키텍쳐를 제공한다.
장점) 서버가 집중적으로 서비스 관리를 하기 떄문에 시스템의 설계 유지가 편하다. 업데이트 및 관리가 쉽다.
단점)서버 장애가 생기면 전체가 중단된다.
p2p) 동등 계층 간 통신망, 양방향 파일 전송 시스템, 중앙 서버 없이 피어끼리 각각 서버와 클라이언트가 된고 서로 사이를 연결하여 파일을 주고받는것
장점) 서버가 없고 각 노드들이 트래픽과 자원을 할당해 부하를 분산시킨다. 높은 확장성을 가진다
단점) 새로운 기능 추가나 업데이트 관리가 어렵다, 네트워크 전송 시간으로 인해 노드간 정보 불일치, 성능 저하가 발생한다.
결론 차이점)
a) 서버 아키텍처에서 서비스를 제공하는 서버와 클라이언트를 지정하는 클라이언트가 있지만 p2p시스템 에서는 피어가 두 서비스 공급자 및 서비스 소비자 이다.
b) 서버 시스템은 중앙 파일 서버를 필요로 하며 p2p보다 구현 비용이 비싸다.
c) 클라-서버 시스템에서 전용파일 서버는 클라이언트에 대한 엑세스 수준을 제공하여 보안이 최종 사용자에 의해 처리되는 p2p시스템 보다 향상된 보안 환경을 제공한다.
d) p2p는노드 수가 증가함에 따라 성능이 저하되지만 클라-서버 시스템은 보다 안정적이며 필요한 만큼 확장 할 수 있다.
7) Agent-oriented programming
programming paradigm where the contruction of the software is centered on concept of software agents. In contrast to OOP which has object at its core, AOP has externally specified agent(with interfaces and messaging capabilities) at its core. They can be thought of as abstractions of objects. Exchanged messages are interpreted by receiving “agents” in a way specific to its class of agent
*software agent : 사용자를 대신해서 사용자가 원하는 작업을 자동적으로 해결 하여 주는 시스템, 복잡하고 동적인 환경에서 목표를 달성하려고 시도하는 시스템, 외부 환경과 센서 행위자를 사용하여 상호작용.
가상 공간에 위치하여 특별한 응용 프로그램을 다루는 사용자를 도울 목적으로 반복적인 작업들을 자동화 시켜주는 컴퓨터 프로그램을 소프트웨어 에이전트 또는 지능형 에이전트 라고 부른다.
8) Big data
기존 데이터 베이스 관리 도구 능력을 넘어서는 대량(수십 테라바이트) 의 정형 또는 데이터 베이스 형태가 아닌 비정형의 데이터 집합에서 가치를 추출하고 결과를 분석하는 기술이다. 통상적으로 사용되는 데이터 수집 관리 및 처리 소프트웨어의 수용 한계를 넘어서는 크기의 데이터를 말한다. 공통적 특징 3V : Variety, Volume, Velocity, + (Value, Complexity, Variablity[가변성], Visualization, Veracity[정확성])
10) HTML 5.0
HTML의 완전한 5번째 버전으로 WWW의 핵심 마크업 언어이다. 비디오 오디오 등 다양한 부가기능과 최신 멀티미디어 콘텐츠를 액티브X없이 브라우저에서 쉽게 볼 수 있게 하는 것을 목적으로 한다. HTML4에서 구조적인 요소(div가 header, nav, article, section등으로 바뀜) 멀티미디어 요소 등이 추가되었다.
11) CSS2.0(cascading style sheet), 종속형 시트
마크업 언어가 웹사이트의 몸체를 담당한다면 CSS는 옷과 같은 액세서리 정도., CSS2는 1998년 권고안으로 발표됨, css3개발중
12) Deep learning
여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화를 시도하는 기계 학습 알고리즘의 집합으로 정의되며 큰 틀에서 사람의 사고방식을 컴퓨터에게 가르치는 기계학습의 한 분야라고 이야기 할 수 있다.
DNN, CNN, RNN 등이 있다.
13) Web of things
실제 객체를 WWW의 일부로 사용 할 수 있는 소프트웨어 아키텍처 스타일 및 프로그래밍 패턴, 웹(어플리케이션 계층) 이 인터넷(네트워크 계층) 에 대한 것과 유사하게 WoT는 다른 플랫폼과 어플리케이션에 걸처 여러 장치로 구성된 사물 인터넷 어플리케이션의 생성을 단수화 하는 어플리케이션 계층을 제공한다. WoT는 네트워크 계층에 중점을 둔 IoT와는 달리 장치간의 연결이 이루어 지고 구축 방법에 중점을 둔다.
완전히 새로운 표준을 재발명 하기보다는 프로그래밍 가능한 웹에 사용되는 기존의 잘 알려진 웹 표준을 재사용한다,
14) Data frames of R
데이터 프래임은 가장 많이 사용되는 데이터 형식이다. 엑셀의 스프레드시트의 외형과 비슷하다. 기본적으로 행렬의 형태를 취하고 있다.
15) memory maps in C++
주소로 파일 가져오는것(바로 메모리에 썼다가 가져올 수 있다.)
16) tables in Relational DB
관계형 디비에서 테이블이란 세로줄과 가로줄의 모델을 이용하여 정렬된 데이터 집합(값)의 모임이다.
17) Hoisting in JavaScript
호이스트 : 건축/건설이나 화물 운반에 사용되는 장비로 화물 등을 들어올리는 업무를 수행(아래에 위치한 것을 위로 끌어올리다)
코드에 선언된 변수 및 함수를 코드 상단으로 끌어올리는 것을 말하며 이는 변수 범위가 전역 범위인지 함수 범위인지에 따라 다르게 수행될 수 있다. 함수 내에서 선언한 함수 범위의 변수는 해당 함수의 최상위로, 함수 밖에서 선언된 전역범위의 전역변수는 스크립트 단위의 최상위로 끌어올려진다.
—> 선언, 할당 내용을 모두 끌어올리는게 아닌 선언부분만 분리하여 최상위로 끌어 올린다.(예시로 할당부가 없으면 에러없이 undefined가 뜸)
함수 내에서 변수 선언 명령어를 제외하고 선언 시 전역 변수 형태로 사용됨에 주의하여야 한다.
18)Duck typing
동적 타이핑의 한 종류로 객체의 변수 및 메소드의 집합이 객체의 타입을 결정하는 것을 말한다. 클래스 상속이나 인터페이스 구현으로 타입을 구분하는 대신, 덕타이핑은 객체가 어떤 타입에 걸맞는 변수와 메소드를 지니면 객체를 해당 타입에 속하는 것으로 간주한다.
(유래 : 만약 어떤 새가 오리처럼 걷고(메소드), 꽥꽥거리는 소리를 낸다면 나는 그 새를 오리라고 부를 것이다.)
덕타이핑에서는 객체의 타입보다 객체가 사용되는 양상이 더 중요하다. 예를 들어 덕타이핑이 없는 프로그래밍 언어로는 ‘오리’타입의 객체를 인자로 받아 객체의 ‘걷기’ 메소드와 ‘꽦꽦거리기’ 메소드를 차례로 호출하는 함수를 만들 수 있다. 반면에 같은 함수를 덕타이핑이 지원되는 언어에서는 인자로 받는 객체의 타입을 검사하지 않도록 만들 수 있다. ‘걷기’ 메소드나 ‘꽥꽥거리기’ 메소드를 호출 할 시점에서 객체에 두 메소드가 없다면 런타임 에러가 발생하고 두 메소드가 제대로 구현되어 있다면 함수는 정상적으로 작동한다.
19) White spaces
blanks characters that represent space between other characters. The Space, Tab, carriage return and line feed characteds are all whitespace
20) forward declaration
전방선언 : 실제로 식별자를 정의하기 전에 식별자의 존재를 컴파일러에게 미리 알리는 것이다. 함수의 전방선언을 하려면 함수 원형(프로토타입)이라고 하는 선언문을 사용해야 한다.
• 선언(declaration)은 식별자(변수 또는 함수 이름) 및 해당 타입의 존재를 컴파일러에게 알려주는 명령문(statement)이다
• 정의(definition)은 식별자(identifier)를 실제로 구현하거나 인스턴스와(메모리 할당)한다.
21) Lambda calculus
가장 작은, 범용 프로그래밍 언어이다, 계산 가능한 함수를 정의하기 위한 수학적인 시스템으로 함수형 언어이다, 모든 계산을 함수의 관점에서 표현 살 수 있고 AI, Proof System, Logic Programming 분야에서 사용하기 편하다. 함수와 데이터를 균등하게 다루며 순수 함수형 언어의 모델로 사용된다.
22) Memory map
프로그램에 의해 작성된 코드를 실행 파일로 만들어 OS가 실행할 때 메모리에 각각의 데이터 영역을 분리하여 할당 된 지도를 말한다. 결국 프로세스가 실행 되기 위한 데이터 저장 할 변수 영역, 기계어 코드 영역 등의 분류별로 나누어 저장하는 지도이다. 프로그램 실행 시 나누어 분리하여 파일화 하고 실행 할 때는 메모리 묶음으로 나누어 배치한 후 실행한다. 운영체계에서 실행되는 프로그램 메모리 배치 뿐만 아니라 마이크로 프로세서의 프로그램도 마찬가지로 메모리를 나누어 배치한다.
23) smart pointer
c++프로그램에서 new 키워드를 사용하여 동적으로 할당 받은 메모리는 반드시 delete키워드를 사용하여 해제해야 한다. 메모리 누수로 부터 프로그램의 안전성을 보장하기 위해 스마트 포인터를 제공하고 있다.
포인터 처럼 동작하는 클래스 템플릿 으로 사용이 끝난 메모리를 자동으로 해제해 준다. new 키워드를 사용해 기본 포인터가 실제 메모리를 가리키도록 초기화 한 후에 기본포인터를 스마트 포인터에 대입해서 사용한다.
24) uniform initializer
여러가지 변수 초기화 방법 중 하나. 객체의 초기화를 보다 간단한 코드 만으로구현할 수 있는 기능. 코드가 직관적으로 된다.
25) variadic template
가변인자 템플릿 : 템플릿의 타입 인자의 종류 및 개수가 가변적인것을 말한다. C++ 11의 기능이다 과거 C++의 경우 템플릿을 선언할 때 인자의 수를 반드시 명시해야했기 때문에 각각 인자수에 맞는 모든 템플릿을 정의해야했었다
'Computer Science > Programming language' 카테고리의 다른 글
prolog - 가족관계 추론 (0) | 2020.05.01 |
---|---|
한글코드의 표준화 과정 (0) | 2020.03.27 |
손이 가는 프로그래밍 일탈 10가지 (0) | 2020.03.26 |
프로그래밍 언어 : Rust (0) | 2020.03.26 |
프로그래밍 언어론 (0) | 2020.03.26 |
댓글