1. 프로그래밍 언어
1) 저급언어/고급언어
(1) 저급언어 - 기계중심, 실행속도빠름, 기계마다 다른 코드 (e.g. 기계어(이진법), 어셈블리어)
(2) 고급언어 - 자연어, 기계 독립적 (e.g. 포트란, 코볼 등)
2) 인터프리터 언어
고급 언어를 저급 언어로 번역하고 / 실행하는 것을 동시에 (e.g. LISP, PROLOG)
완전 번역 x, 번역본 저장 x
매번 필요할 때마다 실행, 실행 시간 증가, 메모리 절약
3) 컴파일러 언어
기계어로 완전 번역한 '목적 코드' 저장해둠
빠르게 재실행 가능, 실행 시간 단축
기계어로 번역하는 데 시간 오래 걸림, 메모리 낭비 가능성
2. 주요 프로그래밍 언어의 특징
1) C언어
1970, 데니스 리치
컴퓨터 언어계의 어머니 느낌
현재 유명 운체들 대부분 C언어로 구성됨
실행속도 빠름, 효율적인 메모리 관리, 표기법 간결, 절차지향적 언어
2) C++ 언어
C언어 + 객체 지향 프로그래밍
시스템 프로그래밍에 적합
3) Java 언어
1991, 제임스 고슬링
가전제품 제어
C++ 개선
현재 앱, 모바일 등에 가장 많이 사용
항상 자동 가비지 콜렉션 수행
객체 지향적 언어
자바 가상머신에 의해 실행 -> 플랫폼 독립적
4) Python 언어
1990, Guido Van Rossum
인터프리터 언어
객체 지향적 대화형 언어
Django - 오픈소스 기반의 웹 프레임워크 이용
동적 타이핑
비동기식 코드 작성에 유리
멀티패러다임 프로그래밍 언어 (절차적, 함수형, 객체지향 전부 지원)
5) JavaScript 언어
객체 기반
웹 브라우저 내에서 사용
다른 응용 프로그램의 내장 객체에 접근 가능
서버 사이드 네트워크 프로그래밍
보안에 취약
오픈소스 -> 확장성
컴파일 필요 x
Angular.js, D3.js, Node.js, React.js
3. 소프트웨어 개발 프레임워크
1) 이점
(1) 코드 품질 향상
(2) 개발 생산성 증대
(3) 유지보수성 향상
(4) 신규시스템 위험 감소
2) 스프링 프레임워크
자바 플랫폼을 위한 오픈소스 어플리케이션 프레임워크
(1) 특징
a. POJO (Plain Old Java Object) 경량 컨테이너 -> 객체 라이프 사이클 관리
b. DI (Dependency Injection) -> 객체 간 의존관계 설정
c. AOP (Aspect-Oriented Programming) -> 다수 모듈에 보편적으로 적용되는 기능
d. JDBC, MyBatis, Hibernate, JPA -> 데이터베이스 라이브러리
(2) 구성요소
3) 전자정부 프레임워크
자바기반의 시스템 개발 운영시 필요한 기능들 표준화해서 구현해둔
공공사업용 표준개발프레임워크
4. 통합개발환경 (IDE)
1) IDE 개념
대화형 인터페이스 기반
비주얼 스튜디오, 이클립스, XCode
2) CI (Continuous Integration)
지속적인 통합
자동화된 빌드
개발 활동에만 집중 가능
코드 통합 시 발생하는 문제점 사전 발견 가능
잦은 배포를 기반으로 자주 피드백 얻는 개발 프로세스 (애자일기법 등) 지원
3) 소프트웨어 빌드
소스코드 파일 -> 실행 가능 소프트웨어 가공물
4) 일일 빌드 및 동작 테스트
5) 소프트웨어 배포
소프트웨어 시스템을 만드는 모든 행위 지칭