프로그래밍 용어 사전

반응형
  1. Compiler 컴파일러

    : 프로그래밍 언어로 작성한 코드들을 컴퓨터가 이해하는 기계어로 변환해 주는 것

  2. Syntax

    : 문법

  3. Syntactic Sugar

    • 기본적으로 내부적인 작동 원리는 변하지 않지만 좀 더 코딩이 편하도록 외부적인 형태를 교체해준 것

    • 프로그래밍 언어의 문법을 간단하고 편리하게 사용할 수 있도록 만든 구문적인 기능

    • 실제로 언어의 기능을 확장하지 않고, 단지 더 간단하게 표현하거나 코드를 더 직관적이게 만들어줌

    • ex)

      • Python에서 list comprehension을 사용하여 loop를 간단하게 표현하는 것

      • JavaScript에서 object literal을 사용하여 수비게 객체를 만드는 것

  4. Syntax Parser

    : Compiler나 Interpreter 처럼 개발자가 작성한 코드가 문법상 맞는지 분석하고, 이를 컴퓨터가 이해하는 언어로 전환 시켜주는 작업

  5. Script Language 스크립트 언어

    : 별도의 컴파일 작업이 필요 없는 언어. 이에 따라 변수마다 자료형을 지정할 필요가 없는 언어.

    -> HTML, CSS, PHP 등이 대표적인 스크립트 언어

  6. IDE (Integrated Development Environment)

    : 효율적으로 소프트웨어를 개발하기 위한 통합 개발환경 소프트웨어 어플리케이션 인터페이스.

    코드 편집기, 디버거, 컴파일러, 인터프리터 등을 포함하고 개발자에게 제공 ex) Eclipse, JDE, 안드로이드 스튜디오, 비주얼 스튜디오, 델파이, RStudio, 넷빈즈, 코드 블럭스

    ​ -> 가장 많이 쓰이는 것: Eclipse (IBM), 비주얼 스튜디오 (Microsoft)

  7. Control Flow (Flow of Control)

    : Statement들이 실행되는 순서

  8. Parameter 인자

    : Function 안의 괄호에 들어가는 값. (함수라는 기계에 들어가는 원재료)

  9. Argument 인자값

    : 인자에 실제로 대입 된 값

  10. API (Application Programming Interface)

: 프로그램끼리 서로 소통하는 인터페이스. 객체지향 프로그래밍 (OOP= Object Oriented Programming) 에서는 보통 class의 인스턴스를 만들어 서로 소통하므로 class의 property와 method를 통합하여 API라고 지칭함

-> a set of routines, protocols, and tools for building software applications. Basically, an API specifies how software components should interact. Additionally, APIs are used when programming graphical user interface (GUI) components.

  1. AJAX (Asynchronous Javascript and XML)

    : 비동기적 자바스크립트와 XML

  2. Asynchronous 비동기적

    : 다른 작업을 막거나 기다리지 않고 곧바로 수행되는 방식.

    ex) 어떤 앱이 용량이 큰 동영상을 불러오는 동안 유저가 화면이동을 자유롭게 하게끔 하는 것

    -> 어떤 작업이 끝날 때까지 기다리기 않고 여러 작업이 동시다발적으로 진행됨

  3. Multi-thread

    : 동시에 여러 작업이 진행되는 것

  4. Imperative Programming 명령형 프로그래밍

    : 프로그램이 어떻게 (How) 목적을 달성하는지 그 절차와 방법을 중시하는 프로그래밍 패러다임. 프로그램의 상태(State)를 변경하기 위해 Statement를 사용함

  5. Declarative Programming 선언형 프로그래밍

    : 프로그램이 무엇을 (What) 달성하는지 그 결과에 보다 집중하는 프로그래밍 패러다임.

    -> Imperative 프로그래밍과 반대 개념. 연산의 로직을 Control Flow에 대한 설명없이 표현함.

  6. Script 언어

    : 따로 컴파일 작업이 필요 없는 언어를 말함. Chrome이나 Edge같은 웹 브라우저가 컴파일링 작업을 대체해줌. 용어 자체는 연극의 대본(Script)에서 유래.

  7. Javascript 엔진( 구글 V8 )

    : Javascript를 기계가 이해할 수 있는 언어로 변환시켜주는 엔진으로 구글의 V8이 대표적이다. 이러한 Javascript 엔진은 주로 C++와 같은 언어로 만들어짐.

  8. ECMA

    : Javascript 표준 중 하나.

    -> 여러 브라우저들마다 제각각 다른 표준을 적용하면 혼란스러우므로 Javascript 작성의 표준을 정해놓은 것.

  9. Node.js

    : 원래 웹 프런트 위주로 사용되는 Javascript를 백엔드 언어로 확장한 것.

    -> Javascript 엔진인 V8은 C++로 만들어졌는데, V8의 C++을 확장하여 Javascript가 서버 쪽도 다룰 수 있게 한 것이 Node.js!

  10. 렌더링(Rendering)

    : 논리적인 문서의 표현식을 그래픽 표현식으로 변형시키는 과정

    => html, css등 코드로 적어 놓은 것이 웹사이트에 나타나게 되는 과정-렌더링 2 단계DOM 요소와 스타일에 기반을 둔 레이아웃 계산. 계산된 요소의 화면 표현- 브라우저에서 렌더링 성능은 중요한 요소 가운데 하나.

    -> 렌더링 성능을 향상 시키면 사용자가 느끼는 체감 속도를 개선할 수 있음

    -> 자바스크립트로 동적인 작업을 실행할 때의 렌더링 문제를 최소화하여 성능을 높일 수 있다

  11. 비즈니스 로직 (Business Logic)

    : 업무에 필요한 데이터 처리를 수행하는 응용 프로그램의 일부 Data 처리를 수행하기 위해 Data를 활용하여 계산, 판단, 가공 등을 하는 ‘Logic’을 의미. 대부분의 Client Program은 User Interface와 Business Logic으로 구성되며, server Program은 대부분 Business Logic으로 구성된다.

    -> 프로그래밍에서 비즈니스 로직은 요구사항을 직접 해결하는 영역이기 때문에 유지 보수에 신경쓰지 않는다면 생산성과 품질이 저하된다

  12. 롬복 (lombok)

    : 자바에서 @Getter, @Setter 같은 annotation 기반으로 관련 기존 DTO, VO, Domain Class 작성할 때, 멤버 변수에 대한 Getter/Setter Method, Equals(), hashCode(), ToString()과 멤버 변수에 값을 설정하는 생성자 등등을 자동으로 생성해 주는 라이브러리

  13. CDATA <![CDATA[...]]>

    : CDATA sections provide a way to tell the parser that there is no markup in the characters contained by the CDATA section. This makes it much easier to create documents containing sections where markup characters might appear, but where no markup is intended. ( by MS Developer Network) (Unparsed) Character Data.

    -> 즉, 파싱하지 않는 문자 데이터를 말함.Tag 안에 들어가는 텍스트가 파싱되지 않게 하는 기능을 함 Parser가 잘못 파싱 할 수 있는 텍스트를 다룰 때, Tag 안에 있는 내용은 무시해도 된다는 것을 알려주므로 Parser의 잘못된 파싱을 방지한다문자열 (String)을 표현할 때 사용함ex) RSS 데이터에 HTML이나 XML Tag가 포함된 내용을 RSS용 XML Tag와 헷갈리지 않도록 CDATA로 감싼다

  14. PCDATA

    : 파싱하는 문자 데이터

  15. Groovy

    : JVM (= Java Virtual Machine) 에서 실행되는 스크립트 언어. Java와 마찬가지로 소스 코드를 작성하고 Java 가상 머신에서 동작하지만, Java와 달리 소스 코드를 컴파일 할 필요는 없다. Groovy는 스크립트 언어이며, 소스 코드를 그대로 실행한다. Java와 호환되고, Java Class File을 그대로 Groovy Class로 사용할 수 있다.문법도 Java에 아주 가까워, Java를 보다 사용하기 쉽게 한 것으로 느낄 수 있다.

  16. Gradle

    : ‘간편하게 사용할 수 있는 Java’ 라고 할 수 있는 Groovy를 사용하여 빌드 처리를 작성하고 실행하는 것.

    -> Gradle을 사용하면 Java와 거의 비슷한 코드를 써서 빌드 처리를 관리 할 수 있음

  17. Maven

    : XML 기반의 빌드 처리를 작성. 간단한 내용이라면 상관 없지만, 복잡한 내용을 작성하게 되면 XML 기반에 의한 묘사는 상당히 어려워짐.

  18. IOC (= Inversion of Control) 역제어

    : 어떤 일을 하도록 만들어진 Framework의 제어 권한을 넘김으로써 Client Code가 신경 써야 할 것을 줄이는 전략

    -> 제어가 역전되었다고 함

    -> 일반적으로 Library는 Programmer가 작성하는 Client 코드가 Library 의 Method 를 호출해서 사용하는 것을 의미함Framework를 규정하는 특성은 Framework의 Method가 사용자의 코드를 호출 한다는데 있음

    -> 첫 번째 방법

    Framework의 event, delegate에 나의 Method를 등록시키는 것전달되는 인자와 반환 형식만 일치 한다면, Framework 코드는 내가 작성한 객체와 타입을 고려하지 않음 -> 등록된 Method만 감지하여 실행 Invoke 하는 것 -> 두 번째 방법

    Framework에 정의되어 있는 Interface, Abstract Type을 나의 코드에서 구현, 상속 한 후 Framework에 넘겨주는 것Framework는 Interface와 Abstract Class 를 알고 있으므로 내가 하고자 하는 일련의 작업을 처리 할 수 있음

    => 객체를 Framework에 주입하는 것 => DI (= Dependency Injection) 의존성 주입

  19. JDBC, DBCP

    : Java Web Application에서 DB접속과 관련된 Libraries

  20. JDBC (= Java DataBase Connectivity)

    : Java에서 Database에 연결하기 위한 Interface

    -> Oracle, MySQL, MsSQL 등 Database는 JDBC를 사용하기 위한 각각의 Driver를 제공함

    -> JDBC는 이 Driver를 통해 DB에 접속함

  21. DBCP (= DataBase Connection Pool)

    : 효율적인 DB Connection을 위해 사용하며, DB와 Connection을 맺고있는 객체를 관리하는 역할을 함DBCP를 사용하면 WAS 실행 시 미리 일정량의 DB Connection 객체를 생성하고, Pool이라는 공간에 저장해둠DB 연결 요청이 있으면, 이 Pool 이라는 공간에서 Connection 객체를 가져다 쓰고 반환하게 됨

    [ DBCP 설정 옵션 ]

    1. maxActive : 동시에 사용할 수 있는 최대 커넥션 개수

    2. maxIdle: Connection Pool에 반납할 때 최대로 유지될 수 있는 커넥션 개수

    3. minIdle: 최소한으로 유지할 커넥션 개수

    4. initialSize : 최소로 getConnection() Method를 통해 커넥션 풀에 채워 넣을 커넥션 개수

  22. Fault tolerance 내결함성

    : 운영중이던 System의 data가 손실되거나 진행중인 작업이 손상되지 않도록 전원 부족 또는 hardware 장애와 같은 돌발 사태에 대비할수 있는 컴퓨터 또는 운영체제의 기능

  23. HA (= High Availability) 고가용성

    : Server와 Network, Program 등의 정보 시스템이 오랜 기간동안 지속적으로 정상 운영이 가능한 성질

    -> 고가용성을 제공하기 위해서 주로 2개의 Server를 연결하는 방식을 사용

    -> 2개로 묶인 Server 중 1대의 Server에서 장애가 발생하면, 다른 Server가 즉시 그 업무를 대신 수행하므로 시스템 장애를 불과 몇 초만에 복구 할 수 있다

  24. In-memory Database

    : Data storage의 main memory에 설치되어 운영되는 방식의 DBMS

    -> Disk에 최적화된 database보다 빠른데 그 이유는 disk 접근이 memory 접근보다 느리기 때문

    -> 내부 최적화 알고리즘이 더 단순하여 더 적은 CPU 명령을 실행

    -> memory의 data에 접근하면 data를 조회할 때 검색 시간이 줄어들며 disk보다 더 빠르고 더 예측 가능한 성능을 제공한다

  25. Subnet

    : 하나의 네트워크가 분할되어 나눠진 작은 네트워크

    -> 네트워크를 분할하는 것을 Subnetting 이라고 함

    -> Subnetting은 Subnet Mask 를 통하여 수행 될 수 있음

  26. Subnetting

    : 네트워크 관리자가 네트워크 성능을 향상시키기 위해 자원을 효율적으로 분배하는 것

    -> 네트워크 영역과 호스트 영역을 분할 하는 것

  27. SandBox

    : 외부로부터 받은 파일을 바로 실행하지 않고 보호된 영역에서 실행시켜 봄으로써 외부로부터 들어오는 파일과 프로그램이 내부 시스템에 악영향을 주는 것을 미연에 방지하는 기술

    -> 외부로부터 유입되는 악성코드로부터 시스템 내 파일이나 프로세스를 보호하는데 사용

    -> SandBox에서 실행되어 안전하다고 검증받은 파일이나 작업은 시스템 변경이 가능하지만, 허용하지 않은 경우에는 변경 불가

  28. Information Silo 정보 사일로

    : 하나의 정보 시스템이나 하위 시스템이 다른 관련 시스템과 상호 간의 운영을 할 수 없는 배타적인 관리 체제

    -> 정보는 적절히 공유되지 않고 각 시스템이나 하위 시스템에 격리되며, 이는 마치 곡물이 사일로(저장탑) 안에 갇히는 것처럼 컨테이너 안에 갇히는 것으로 비유됨

  29. Data lake

    : 가공되지 않은 다양한 종류의 데이터를 한 곳에 모아둔 저장소의 집합

    -> 빅데이터를 효율적으로 분석하고 사용하고자 다양한 영역의 Raw 데이터(가공되지 않은 데이터)를 한 곳에 모아서 관리하고자 하는 것

  30. Scale-up

    : Server가 더 빠르게 동작하기 위해 hardware 성능을 올리는 방법

  31. Scale-out

    : 하나의 Server 보다는 여러대의 Server가 나눠서 일은 하는 방법

    -> Pros

    • Hardware 향상하는 비용보다 Server 추가하는 비용이 더 적다

    • 여러 대의 Server 덕분에 무중단 서비스를 제공할 수 있다

  32. Load Balancing 부하 분산

    : 하나의 인터넷 서비스가 발생하는 traffic이 많을 때 여러 대의 Server가 분산처리하여 Server의 로드율 증가, 부하량, 속도 저하 등을 고려하여 분산처리하여 해결해주는 것

  33. Load Balancer

    : 여러대의 Server에게 균등하게 traffic을 분산시켜주는 역할을 하는 시스템

  34. DevOps

    : SW 개발자들과 IT 종사자들 사이의 의사소통, 협업, 융합을 강조한 소프트웨어 개발 방법론이며 SW 개발과 IT 운영간의 상호 의존 관계에 대한 산물

    -> Devops는 운영팀과 개발팀을 하나의 팀으로 묶어놓고 전체적인 개발 사이클을 빠르게 하고자 하는 조직 구조이자 문화

    출처: https://bcho.tistory.com/1325 [조대협의 블로그]

  35. CI (Continuous Integration)

    : 개발자가 각각 개발한 소스코드를 모아서 한번에 빌드하는 통합 빌드의 과정을 특정 시점이 아니라 주기적으로 수행함으로써 통합에서 발생하는 오류를 사전에 해결하고, 이러한 과정들에 소요되는 시간을 줄이기 위한 기법

    -> Agile 방법론이 대두되면서 더욱 주목 받게 됨

    -> 배포를 위한 build 단계, testing 단계 등에서 시간을 절약하는 효과를 발휘하여 시장 변화 속도에 발맞춰 대응 할 수 있음

    -> 속도와 품질 모두 잡는다!

    • CI System 구축을 위한 구성 요소

      • CI Server

        : Build process를 관리하는 server

        ex) Jenkins, Travis CI

      • SCM (Source Code Management)

        : Source code 형상관리 시스템

        ex) Git, Subversion

      • Build Tool

        : Compile, test, 정적 분석 등을 실시해 동작 가능한 software를 생성하는 도구

        ex) Maven, Gradle, Ant

      • Test Tool

        : 작성된 Test code에 따라 자동으로 test를 수행해주는 도구로 build tool 의 script에서 실행됨

        ex) JUnit, Mocha

    • Parser

      • compile의 일부로서 원시 program의 명령문이나 HTML 문서 등에서 Markup Tag 등을 input으로 받아들여서 syntax를 해석할 수 있는 단위와 여러 부분으로 분할해주는 역할을 함

    • Parser 역할을 하는 컴퓨터가 parse tree 로 재구성하는 구문 분석 과정

    • Parsing 과정에서 부호에 불과한 일련의 문자열이 기계어로 번역되고 의미있는 단위가 됨

    • Parsing의 종류

      • 상향식 파싱 (bottom-up parsing)

      • 하향식 파싱 (top-down parsing)

        Parsing

        : html 등의 page에서 내가 원하는 data를 특정 pattern이나 순서로 추출해 가공하는 것

  36. MIME types

    : A media type (also known as a Multipurpose Internet Mail Extensions or MIME type) is a standard that indicates the nature and format of a document, file, or assortment of bytes.

    Browsers use the MIME type, not the file extension, to determine how to process a URL, so it's important that web servers send the correct MIME type in the response's Content-Type header. If this is not correctly configured, browsers are likely to misinterpret the contents of files and sites will not work correctly, and downloaded files may be mishandled.

ping

: icmp프로토콜을 이용하여 명령어에 지정한 주소로 응답요청을 보내고 그 응답을 받아 네트워크 상태를 파악하게 하는 명령어

반응형