프로그래밍 언어

이영주·2021년 3월 13일
0

프로그래밍 언어를 분류하는 두가지 기준에 대해 알아보자!

  1. 객체지향 언어인가?
  2. 변수의 데이터 타입을 어떻게 사용하는가?(Dynamic Typing vs Static Typing)

객체지향의 장단점

장점

  • 유지 보수에 용이하다
  • 가독성이 높다
  • 작은 단위로 나뉘어져있어 재사용하기 좋고 테스트가 가능하다.

단점

  • 코드를 잘 나누고 설계하는것이 어렵다.
  • 규모가 작거나 데이터를 크게 신경쓰지 않아도 되거나 이후에 바뀔 염려가 없는 경우 비효율적이다.
  • 사람이 이해하고 작성하기 편한 방식이다 보니 처리속도가 느리다.

Dynamic typing 언어 / Static typing 언어

Dynamic typing - 파이썬, 루비 등
Static typing - 자바, C, C++ 등

위의 기준으로 정리해보면 '자세한 언어', '체계적인 언어', '쉬운 언어'라는 세가지 분류로 나눌 수 있다!

자세한 언어

자세한 언어로는 Low-level에 가까운 어셈블리 언어나 C 언어 등이 있다. 객체 지향 개념이 적용되지 않는다.
스마트 워치, TV, 스피커, 전광판, 가전제품 등, 컴퓨터가 메인이 아닌 기계에 자주 사용된다.
참고로, 이런 곳에 들어가는 시스템을 임베디드 시스템이라고 부른다. IoT라고 해서, 이런 임베디드 시스템을 연결해서, 스마트홈을 만들거나, 기계들 사이의 통신을 할 수 있게 한다.

임베디드 시스템 말고도 예를 들어 수많은 문자를 거의 실시간으로 전송해야 하는 텔레그램 같은 채팅 애플리케이션이나 트위치 같은 동영상 스트리밍 서비스, 검색 엔진, 개발자들이 코드 관리를 위해 사용하는 github, 머신 러닝 같은 빅데이터 처리 속도와 알고리즘이 중요한 그런 분야의 회사에서 많이 사용된다.
사람이 코딩하는 시간은 길어지지만, 컴퓨터가 실행하는 시간은 조금이라도 빠르게 하고 싶은 경우들이다.

체계적인 언어

자세한 언어와 마찬가지로 static typing 언어이지만, 객체 지향 개념이 적용된 언어이다.
Java나 C++ 같은 언어들이 여기에 속하고, 체계가 잡혀있기 때문에, 여러 사람이 함께 작업하기에 가장 적합하고, 협업 과정에서 오류가 적어서 주로 큰 규모의 프로젝트에 적합하다.

규모가 큰 기업들에서는 Java를 많이 사용하고 있다. 구글, 에어비앤비, 우버 뿐 아니라 이베이, 핀터레스트, 스포티파이, 트립 어드바이저, 아마존, 인텔, 필립스, 등등

쉬운 언어

객체 지향 개념이 적용된, dynamic typing 언어를 말하며, 프로그래머가 아닌 사람도 비교적 쉽게 배우고 사용할 수 있는 Python, Ruby 등의 언어이다.
최대한 간결하고, 짧은 코드를 추구하고, 문법도 간편해서, 코드를 작성하는 시간이 가장 짧다.


코드 퀄리티

내공이 있는 프로그래머들은 잠시 훑어보기만 해도 이 코드가 좋은 코드인지 아닌지 알아차릴 수 있다.
우리가 작성한 코드에 대한 에러가 없다는 것은 컴퓨터에게 정확히 전달했다는 의미이다.
개발자들은 다른 개발자와 협업하는 경우가 많기 때문에 컴퓨터가 이해하면서도 사람도 읽기 쉬운,
가독성 좋은 코드를 작성해야 한다.

  • 코멘트 활용하기

  • 변수 이름 잘짓기

  • 코드를 구조화
    긴 코드를 작성할때 코드 분리, 파일 분리가 필요하게 된다.
    여러사람이 협업할 때 동료 개발자가 내가 만든 함수를 잘못된 방식으로 사용할 수 있는 것처럼 몇몇 문제들이 발생하는데 이런 다양한 문제들이 생기다보니 디자인 패턴이라는 해결책들을 만들어내게 되었다. 디자인 패턴이란, 프로그래밍에서 고질적으로 발생하는 문제들을 해결하기 위한 테크닉이다.

  • 스타일 가이드 활용하기

#python

Python 스타일 가이드
Google Python 스타일 가이드

#java

orcle 스타일 가이드
Google Java 스타일 가이드

#javaScipt

JavaScript 표준 스타일 가이드
Airbnb JavaScript 스타일 가이드
Google JavaScript 스타일 가이드


라이브러리랑 프레임워크의 차이점

  • 라이브러리

자주 쓰일법한 코드를 모아둔 것이 '라이브러리'이다. 마치 도서관에서 필요한 책을 찾아보듯 필요한 코드를 찾아서 쓸 수 있게 해준다.

  • 프레임워크

프레임워크는 프로그래밍의 뼈대가 준비되어 있고 작성할 공간들만 비워져있어서 간단하게 빠르게 프로그램을 만들 수 있게 해준다.
큰 틀이 정해져있고 세부내용만 바뀌는 프로그램에 효과적이다. 다만 프레임워크는 이미 짜여진 틀 안에서 프로그램이 만들어지기 때문에 틀을 바꾸고 싶다면 복잡한 프레임워크의 구조에 대해서 자세하게 알아야 한다. 따라서 웬만한 실력자가 아니면 프레임워크의 구조를 바꾸는게 힘들다는 단점이 있다. 심지어 바꾸는것보다 처음부터 만드는게 좋은 경우들도 있다.

  • 라이브러리 vs 프레임워크

라이브러리는 카페에 기계를 놓아두는것과 같다.
각각의 메뉴를 버튼을 누르면 자동으로 음료 제조를 도와주는것

프레임워크는 프렌차이즈카페를 운영하는것과 같다.
기존 카페를 운영할 때는 내부 디자인이나 이름 메뉴판 재료 모든것을 다 신경써야 하지만,
프렌차이즈에서는 다 지정해주기 때문에 사소한 부분만 조금씩 변경해서 쓰면 된다.
내 마음대로 틀을 바꿔버릴 수는 없지만 최소한의 노력으로 카페를 만들 수 있게 된다.


코드 읽기

1: 라이브러리 내부 살펴보기
Seaborn 라이브러리
Pandas 라이브러리

2: 개발 문서
Python
Javascript
Ruby
Java

3: 커뮤니티
구글 검색 - Best Practice라는 키워드로 검색

0개의 댓글