본문 바로가기
프로그래밍 지식/기본지식

프로그래밍 언어

by Ing_til_death 2021. 10. 19.

1. 프로그래밍 언어 살펴보기
- 해당 언어를 왜 공부해야하는가? 어떻게 공부해야하는가? 를 정하는 것이 어렵다.  컴퓨터, 프로그램, 프로그래밍 언어는 어떤 관계가 있는지 배우고, 프로그래밍 언어가 지나온 길
- 컴퓨터(일을 대신해주는 기계), 프로그램(컴퓨터가 어떤일을 해야할지 알려주는 설명서), 프로그래밍언어(설명서 작성 언어)
- 컴퓨터의 원조는 계산기를 위한 것이고, 성능이 좋지않아서 컴퓨터 친화적. 이제는 다양한 컴퓨터 기기에 숫자만이 아닌 다양한 표현이 가능한 프로그래밍 언어가 필요해진 것이다. 
- 각 언어가 다른 것: 자료형/변수/함수/파라미터. 
- 달라진 게 된 이유: 용도/상황/프로젝트에 따라
- TIOBE에서 프로그래밍 언어 인기 순위를 확인할 수 있다.

 

2. 프로그래밍 언어를 분류하는 두 가지 기준
(1) 객체지향프로그래밍(한 학기 과목일정도로 광대하다)
 프로그램의 여러 접근 방식 중 하나. 이제는 지배적으로 쓰이는 언어 ex) 파이썬, 루비, 자바, C, 코틀린 등 // but 정답은 아니다. 절차지향(c언어, 코틀란, 어쎔블리언)이 속도가 더 빠른 경우도.

- Top-down 방식(큰 걸 쪼개서 작은 것으로 나누는) 분업 but 전체로 합쳐져야 잘되는지 판단가능, 하나라도 잘못되면 전체 실행 불가하다.(마치 내 프로젝트 JS파일들처럼) 하나를 수정하려고해도 다른 것들과 데이터가 연결되어있다 ㅠ(전체 코드를 점검해야하는 경우도,...) 이처럼 기능(함수)으로 나누는 것이 아니라 함수와 이와 관련된 데이터로 묶는 객체단위로 코드를 나누는 방식을 택하게 되었다. (bottom-up 방식. 작은 것들을 모아서 큰 걸 만드는)
=> 인스타라면, 사용자 객체를 만들고 이에 대한 아이디, 비밀번호, 자기소개 데이터 + 로그인, 친구추가 기능, 게시글 작성 기능을 만든다. 그리고 게시글 객체도 마찬가지다. => 이를 통해 객체마다 살펴보면 함수와 데이터가 있으니 직관적.

(2) 변수의 데이터 타입
- 자료형 타입을 정해줘야하는지, 아닌지. 파이썬은 지정x(간편, 편리 but 오류가 생기면...) 자바는 지정(코드를 더 정밀하게 만들기위함. 더 단단하게).
- Dynamic Typing 언어(타입 지정x, 쉽게 배울 수 있다. 컴퓨터적 구조가 생략되서 실행속도가 느리다 but 해결되고 있다.)
- Static typing 언어(타입 지정, 명확-정교, 제약-규칙이 많다 => 체계적이라서 다수 협업 시 좋다. 그리고 컴퓨터적 구조가 작성되서 실행속도 빠르다)

3. 프로그래밍 언어 Overview

## 두 가지 기준으로 사용되는 프로그래밍 언어들을 나눈다. 컴퓨터와 가까운 언어인지(컴: 저수준 언어, 인: 고수준 언어): 변수의 자료형 활용. 대부분 고수준 언어에 가깝다. => 자세한 언어(저수준언어), 체계적인 언어(static typing), 쉬운 언어(Dynamic Typing)
// 추상화의 정도라고도 할 수 있다. (숨길 수 있는 기능은 숨기는 정도) => 문법, 코드 작성 방식, 코드 보는 관점이 달라진다. 
- 고수준언어: 필요한 기능과 논리에만 집중할 수 있다. 컴퓨터에 너무 맡기기에 실행 속도가 느린다. ex) 노트북 등
- 저수준언어: 신경 쓸게 많고 코드 작성에 어려움이 있다. 일일이 다 알려줘야한다. 효율적인 실행. ex) tv. 에어컨 등의 임베디드 시스템

 

------
어셈블리 언어, Fortran, COBOL, Pascal, BASIC 등은 “자세한 언어”에 속하고,
Go, Kotlin, Haskell, Swift 등은 “체계적인 언어”, 
JavaScript, PHP, Perl, Objective-C 등은 “쉬운 언어” 에 해당한다고 볼 수 있습니다.

이외에도, 
특별한 목적을 위한 프로그래밍 언어 (Domain-specific programming language)들도 있습니다.
R
R은 주로 통계 소프트웨어 개발과 데이터 분석 및 시각화에 널리 사용되고 있습니다.
특히 통계나 빅데이터 분석에 필요한 데이터 전처리, 분석, 수학적인 계산과 그래프를 그리는 등의 기능에 특화되어 있습니다.

SQL
SQL은 데이터베이스를 관리하기 위한 목적의 프로그래밍 언어입니다. 데이터베이스란 데이터를 모아둔 공간을 의미하는데요. 프로그래머들은 SQL을 사용해서 데이터베이스를 설계하거나 운영하고 관리합니다. 요즘에는 데이터가 워낙 많이 활용되기 때문에, 개발자 뿐 아니라 마케터나 데이터 분석가들이 SQL을 사용하여 서비스의 데이터(매출, 고객 정보 등)를 분석하곤 합니다.

++ HTML, CSS 등


4. 프로그래밍 언어 제대로 사용하기(활용법)

- 잘 돌아간다고 좋은 코드가 아니다. 코드의 퀄리티가 중요하다. => 이게 바로 실력의 판단 기준이다.
- 문제풀이: https://leetcode.com/problemset/all/
- 변수명 잘 짓기: https://tv.naver.com/v/4980432    혹은 도서 "개발자의 글쓰기"
// 개발자들이라면 누구나 선호할만한 코드는 있을 것 같아용. 바로 읽기 좋은 코드인데용. 소위 말하는 가독성이 떨어지는 코드를 짠다면 협업하는 동료들은 코드를 이해하는데 불필요한 시간을 소모하게 될 것이에요 그만큼 생산성도 떨어질 것이고요. 이런 좋은 코드를 짜는데는 많은 것들이 필요합니다. 그 중 코드를 처음 배울 때 부터 들일 수 있는 습관은 바로 좋은 이름을 짓는 것입니다.
- 코드의 길이가 프로그램 처리 속도에 전혀 영향을 끼치지 않는 것은 아닙니다. 하지만 코드 길이 자체가 속도에 영향을 주는 정도는, 코드를 통해 컴퓨터가 연산을 수행하는 (즉, 코드의 내용을 실행하는) 과정이 주는 영향에 비하면 무시할 수 있을 정도로 작습니다. 그렇기 때문에 조금 더 긴 코드를 작성하더라도, 더 효율적이고 가독성이 좋은 코드를 작성하는 것이 권장되는 것입니다.

- 가독성 좋은 코드
(1) comment 활용
(2) 좋은 변수명(전체적인 코드의 흐름 안에서 충분히 구체적이고 간결한 이름. 이를 위해 고민을 많이 한다)

-- 변수(보통 띄어쓰기 불가): snake표기법(math_score), pascal 표기법(MathScore), camel 표기법(mathScore)
- 각 언어마다 style guide가 있다. ex) 이름은 camel 표기법, 1줄에는 79글자이상 넣지 x
ex) JS :  https://happycording.tistory.com/entry/%EA%B5%AC%EA%B8%80%EC%97%90%EC%84%9C-%EB%A7%90%ED%95%98%EB%8A%94-JavaScript-Style-Guide

 

구글에서 말하는 JavaScript Style Guide

이번 시간에는 Google JavaScript Style Guide에서 가장 흥미로는 규칙들에 대해서 정리한 글을 번역해보았다. 아직 익숙하지 않은 사용자를 위해 Google은 깨끗하고 이해할 수 있는 코드를 작성하기 위한

happycording.tistory.com

- 구조화가 잘 된 코드(수정하기 편리하게 파일 분리 잘된)
-- 객체지향프로그래밍 활용, 디자인패턴(프로그래밍에서 고질적으로 발생하는 문제들을 해결하기위한 테크닉) 
// 아키텍쳐 패턴은 코드를 어떤 기준으로 분리할지에 대한, 큰 관점의 테크닉입니다.

디자인패턴책은 고전처럼 유명한건 GOF 디자인패턴(책 "GoF의 디자인 패턴 :재사용성을 지닌 객체지향 소프트웨어의 핵심요소")이 있지만 처음 배우실 때 볼만한 책은 아니라 생각해요
그나마 Head First 디자인 패턴책이 읽기 좋다고 생각합니당. 책 "Head First Design Patterns"

 

- 스타일가이드 vs 디자인패턴
스타일 가이드는 통일된 형식으로 작성하여 개발자 또는 코드를 읽는 사람들이 코드를 읽을 때 가독성을 높이고, 원활하게 협업할 수 있기 위한 약속과 같습니당.
디자인 패턴은 이와는 좀 다른 의미인데, 어떤 문제들을 해결할 때 빈번하게 겪는 것들을 많은 개발자들의 피와 땀(?)이 축적되어 쉽게 해결할 수 있도록 만들어진 방법입니다.
스타일 가이드는 조직에 따라 같은 언어라도 조금씩 차이가 날 수도 있지만, 어떤 코드를 작성하든 지켜야되는 약속입니다. 하지만 디자인 패턴은 상황에 따라 적용하기도, 안하기도 하게 됩니당. 어떤 상황에 어떤 디자인패턴이 적절한지 판단하는건 개발자의 몫이겠죵.

 

스타일 가이드 정리 _ 수업 상세.pdf
0.17MB

- 라이브러리(자주 쓰이는 코드를 베낄수있게)
-- 언어마다 맞는 라이브러리가 있기에, 언어를 선택하는 기준이 되기도한다. 


- 프레임워크(뼈대가 있고 빈 공간만 내가 작성하는)
-- 프레임워크 수정도 가능 https://webclub.tistory.com/458 을 참고(다만, 프레임워크 구조를 알아야하기에 실력자만..)
-- 큰 틀이 정해져있고 세부 내용만 바뀌는 프로그램에 좋다. 
-- 쇼핑몰의 경우, 필수 기능 제공 + 내가 고려하지 못한 보안, 암호화처럼 어려운 부분도 알아서 해준다.

라이브러리 vs 프레임워크 //https://webclub.tistory.com/458 참고

- 라이브러리: 이미 누가 만든 도구를 가져오는 것. 커피 머신
- 프레임워크: 프랜차이즈 가맹점 개설(최소한의 노력으로 프로그램 개설 가능)

##개발자에게 있어서 가장 좋은 스승은 잘 짜여진 좋은 코드입니다.

훌륭한 개발자들의 코드를 잘 살펴보고, 그 코드는 어떻게 구조가 짜여져 있는지, 스타일 가이드는 어떻게 적용하고 있는지, 변수 이름이나 주석은 어떻게 쓰고 있는지, 어떤 라이브러리나 프레임워크를 사용하고 있는지, 이런 것들을 잘 살펴볼 필요가 있습니다.

'프로그래밍 지식 > 기본지식' 카테고리의 다른 글

소프트웨어  (0) 2021.10.19
컴퓨터 사이언스의 기본기  (0) 2021.10.19
객체지향언어  (0) 2021.10.19
웹 브라우저 및 HTTP  (0) 2021.10.19
기본  (0) 2021.06.15

댓글