PROGRAMMING

[Theory]About Programming

먹지 2023. 4. 8. 14:41

언어

  1. 수단과 목적
    • 수단:실현하고 싶은 목표를 달성하기 위한 사람
      • ex) 소프트웨어를 판매해 큰 돈을 벎, 사회공헌, 이직, 자동화 등
    • 목적: 프로그래밍 그 자체를 즐기는 사람
      • ex) 기존 프로그래밍 언어의 불만 해소, 컴퓨터 동작 원리의 이해 등
  2. 선택
    • 만들고 싶은 내용 O: 특성 또는 직군별 언어 선호도 퍼센트에 따라
    • 만들고 싶은 내용 X: 최근 트렌드 또는 인기랭킹, 구인정보에 따라
  3. 복수의 언어
    • 존재 이유
      • 각 언어의 개발자가 하고싶은것에 대한 효율적 루트 계산 → 개발자의 바람(개인, 기업 등)
      • ex) 기업이 자사의 제품을 위해, 학교에서 교육용으로 등
    • 배우는 이유
      • 모든 면에서 완벽한 언어란 없음 → 처리속도 추구, 사용의 편리성, 안전성 등 그 목적에 따라 특화
      • 하드웨어나 이용자의 사용방법의 변화
      • 복수의 프로그래밍 언어를 알고 있으면 보다 좋은 선택지를 발견할 가능성이 높음

 

역사

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

'PROGRAMMING' 카테고리의 다른 글

[VSC]VSC에서 마크다운 미리보기  (0) 2024.07.08