언어
- 수단과 목적
- 수단:실현하고 싶은 목표를 달성하기 위한 사람
- ex) 소프트웨어를 판매해 큰 돈을 벎, 사회공헌, 이직, 자동화 등
- 목적: 프로그래밍 그 자체를 즐기는 사람
- ex) 기존 프로그래밍 언어의 불만 해소, 컴퓨터 동작 원리의 이해 등
- 수단:실현하고 싶은 목표를 달성하기 위한 사람
- 선택
- 만들고 싶은 내용 O: 특성 또는 직군별 언어 선호도 퍼센트에 따라
- 만들고 싶은 내용 X: 최근 트렌드 또는 인기랭킹, 구인정보에 따라
- 복수의 언어
- 존재 이유
- 각 언어의 개발자가 하고싶은것에 대한 효율적 루트 계산 → 개발자의 바람(개인, 기업 등)
- ex) 기업이 자사의 제품을 위해, 학교에서 교육용으로 등
- 배우는 이유
- 모든 면에서 완벽한 언어란 없음 → 처리속도 추구, 사용의 편리성, 안전성 등 그 목적에 따라 특화
- 하드웨어나 이용자의 사용방법의 변화
- 복수의 프로그래밍 언어를 알고 있으면 보다 좋은 선택지를 발견할 가능성이 높음
- 존재 이유
역사
- 고급 언어
- 등장
- 1950년대 전반의 어셈블리어 사용 → 고급언어 등장
- 기계어(인간이해의 어려움), 어셈블리어(코드량이 많아 읽기 어려움)
- 인간이 읽기 쉽고 보다 효율적으로 개발할 수 있는 고급 언어 개발
- 컴퓨터의 이용 용도
- 군사목적: 탄도 계산, 시뮬레이션 등 (ex. FORTRAN:최초의 고급언어)
- 상업용 컴퓨터: 실행 결과만 이용자에게 전달하는 비즈니스 활동 확대 (ex.COBOL)
- 목적의 변화로 요구되는 성능, 개발 비용의 차이 발생 ⇒ 언어의 사용 분할
- 인공지능의 연구 시작(ex.LISP: 리스트 처리 장점)
- 컴퓨터의 소형화: 하드웨어 변화 → OS변화
- 마이크로 프로세서 등장: IC(반도체 소자 집합)탑재 CPU 등장
- 하드웨어의 제어: 하드웨어의 성능을 최대한으로 활용, 이식성을 높인 개발 요구
- 교육용 Pascal, 범용 C, 객체지향근접 Smalltalk, 데이터베이스 SQL 등장
- 등장
- 표준화와 객체지향의 보급
- 1980년경 PC, 워크스테이션 등장
- CPU 8 → 32비트 변화
- 독자적인 하드웨어 등장 → 다른 환경에서 같은 프로그램 동작 불가능한 문제 발생
- OS 등장: UNIX MS-DOS, Macintosh → 소스코드 호환성 소멸
- 유지 보수성 향상
- 컴퓨터 성능 ↓: 메모리 사용 가능한 적게 → 하드웨어 성능 최대한 활용하는 방식 추구
- 컴퓨터 성능 ↑: 메모리 영역의 증가로 인해 속도를 향상시키지 않아도 인간의 편의를 볼 수 있게 됨
- 대규모 소프트웨어 증가: 기업의 pc 보급
- 객체지향의 사고방식 등장: 절차형 언어의 유지보수성 저하(ex.Object-C, C++, Object Pascal 등 → 유지보수성 주목)
- 1980년경 PC, 워크스테이션 등장
- GUI AND WEB
- 1990년경 데스크톱 환경의 GUI(Graphical User Interface, ex. NeXTSTEP, Mac OS, Windows)등장: 프로그램 개발 환경 변화
- IDE(Integrated Development Environment:통합개발환경)를 갖춘 프로그래밍 언어 등장
- 안전성 확보와 스마트폰 앱의 등장
- 보안 주목 2000년대
- 네트워크 취약점 증가
- 웹 사이트 내용 수정, 관리자 권한 개인정보 유출
- 버퍼 오버 플로우 등 메모리 관리의 문제 대두: 소프트웨어 안전성 의심
- 가비지 컬렉션의 기능 각광: 포인터 관리를 개발자가 의식하지 않아도 되는 언어(ex. JAVA)
- 웹 애플리케이션 대상 공격
- 크로스 사이트 스크립팅, 크로스 사이트 요청 위조 이용한 악성 게시물
- Ajax 등장 → javascript를 사용한 사이트 多
- javascript를 무효화 하는 대책을 사용할 수 없는 상황의 보안 의식 요구
- SQL 인젝션에 의한 정보 누출: 웹 애플리케이션 공개시 취약성 진단 요청이 당연시
- 프레임워크 취약성 지적 多: Apache Struts, WordPress 등의 제로데이 공격
- 스마트폰의 등장: 개발 언어 제한(ex. ios vs android)
- Unity, Xamarin의 프레임워크 사용: 1개의 소스코드로 복수의 환경에 맞는 앱 개발 가능
- 보안 주목 2000년대
'PROGRAMMING' 카테고리의 다른 글
[VSC]VSC에서 마크다운 미리보기 (0) | 2024.07.08 |
---|