코딩 배우기 첫걸음: 프로그래밍 언어 개념

이 글은 시리즈입니다.

  1. 코딩 배우기 첫걸음: 프로그래밍 언어 개념
  2. 개발에 적합한 프로그래밍 언어는 무엇일까?

공부 자료

국민대학교 강승식 교수님의 프로그래밍 언어 강의를 듣고 공부했습니다.

프로그래밍 언어를 배워야 하는 이유

소프트웨어 문제를 해결하기 위해서, 프로그램 작성을 위한 제약조건들에 대해 이해해야 합니다. 그 중 하나인 프로그래밍 언어의 특성을 이해하는 것은 중요합니다.

30초만에 읽는 “프로그래밍 언어의 등장 배경”

먼저 용어부터 정리해 봅시다!

프로그래머들에게 정확한 용어 사용은 기술에 대한 논의에 있어서 매우 중요합니다.

고급 언어

기능

  1. 데이터 추상화 → 데이터 타입 제약, 메모리 블록에 명칭 부여(구조적 추상화)
  2. 프로세스 추상화

소프트웨어의 역사는 ‘추상화의 연속’이라고 할 수 있습니다. 최초의 프로그램은 직접 전선을 연결하여 수행했습니다. machine-level 의 프로그래밍이라고 할 수 있겠죠. 좀 더 하드웨어를 유연하게 제어하기 위한 방법이 소프트웨어 입니다. 0과 1로만 구성된 데이터의 타입을 제약하고, 명칭을 부여해 접근하는 것이 바로 데이터 추상화입니다. 또한 기존 어셈블리어는 반복, 분기 지점을 찾아내는 게 어려웠습니다. 하지만 이런 프로세스를 좀 더 추상화한 것이 바로 프로세스 추상화입니다.

특성

  1. 단순성
  2. 직교성, 일반성
  3. 표현력
  4. 이식성, 추상화, 일반성

단순하면 프로그래밍 언어를 더 빠르게 배우고, 코드 가독성도 좋아질 것입니다. 직교성은 x, y 두 값의 “조합”이 가능한지 여부를 나타내는 것입니다. 예를 들어, C언어의 매개변수 전달 방식에서, 배열은 참조에 대한 전달방식, 나머지는 값에 의한 전달방식을 사용합니다. 이렇게 C언어의 매개 변수는 일반화되지 못하고, 직교성이 없는 하나의 예시라고 할 수 있습니다.

평가기준

  1. 판독성(변수명, 함수명 작성 방법과 문장의 구조 syntax)
  2. 작성력
  3. 신뢰성 → 에러 가능성(타입 검사, 예외처리, 별칭처리 aliasing)
  4. 비용
    → 목적 코드의 효율성(실행시간이 짧음)
    → 번역의 효율성(컴파일 시간)
    → 구현의 효율성(인터프리터, 컴파일러)
    → 프로그래밍 효율성(프로그램을 작성하는 시간)

저는 웹서비스를 제공하는 IT 회사에 근무하고 있습니다. 저희 회사는 백엔드 언어로 파이썬을 사용하고 있는데요, 파이썬을 선택한 이유는 다음과 같습니다. 우선 파이썬은 언어에서 indentation을 강제하고 있기 때문에 가독성이 좋고, 파이썬 언어의 철학대로 명료하고 간결합니다. 프로그래밍 효율성이 매우 좋다고 할 수 있죠. 작성력도 좋구요. 물론 파이썬 언어가 인터프리터 언어이기 때문에, JAVA보다 느리지만, 저희 회사 개발 프로세스에는 파이썬언어의 장점이 단점보다 훠어얼씬 큽니다 😊

패러다임

  1. 컴퓨터 H/W 구조와 연관성 ex. 폰노이만 아키텍처의 병목현상
  2. S/W 설계 방법론과 연관성 → Top-down 방식의 구조적 설계와 Bottom-up 방식의 객체 지향 설계가 있습니다.
  3. 인간의 사고 방식의 연관성

끄덕끄덕 하고 넘어가보세용!

그 밖에도 생각해볼 것

  • 언어의 구현: syntax, semantics
  • 프로그래밍 환경: 통합환경

--

--

--

Data Engineer interested in constructing Data-Driven Architecture with Cloud Service

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
SoniaComp

SoniaComp

Data Engineer interested in constructing Data-Driven Architecture with Cloud Service

More from Medium

Dynamic Library In C

Handling Large Dataframes — Dask

Scala Cleaner Testing Code

TIL: hash functions in cryptography and data compression