Sister Nosilv story

2. 프로그래밍 언어 이해하기

by 노실언니

컴퓨터개론Course

   📺컴퓨터개론📺

  • 프로그래밍 시작하기 in Python- 📺   📝
  • ▶ 프로그래밍 언어 이해하기- 📺  📝
  • 프로그래머의 세계 이해하기- 📺  📝
  • 소프트웨어 이해하기- 📺  📝

1. 프로그래밍 시작하기

 

Topic 2. 프로그래밍 언어 이해하기

⑴ PL 분류

프로그래밍을 할 때에는 바로 코드작성을 할 게 아니라 사전작업이 필요하다.

그 사전작업 중, 조건에 맞는 PL(Programming Language)선택이 있다.

다양한 PL들을 분류하여, 어떤 조건에 어떤 언어가 맞는지 알아보자.

 

분류기준① Object-oriented 지원여부

객체지향○ PL: Java, Python, C++, Ruby, Swift

객체지향× PL: Assembly, C

 

배경지식요구 : Object-oriented가 무엇인가 → 탄생배경 알아보기

객체의 탄생배경 : Top-down의 단점보완

- Top-Down : from the general to the specific '분해'

추상→구체화

- Bottom-Up : from the specific to the general '조각모음' *more difficult for human

구체→추상화(Object)

 

<Top-down단점>→해결책:Bottom-Up

- 전체를 완성하기 전까지 부분적 test불가능

- 일부 기능 수정시에도 전체 코드 점검필요

- 일부 오류발생시에도 전체에 치명적인 영향을 끼칠 수 있음

左 TOP-down : 프로그램을 통Data & Function단위로 <분해>하여 협업 및 제작을 했음

右 Bottom-Up : 쪼개놓은 함수와 데이터들을 객체에 <모음>

 

Object-oriented programming은 프로그램을 객체단위로 파악하는 패러다임이다.

Object-oriented language는 이 패러다임을 실현할 수 있는 기능을 지원하는 언어이다.

즉, 객체지향언어는 다 좋은데

추상화 3단계인만큼 속도, 자원 등 컴퓨터의 관점에서 효율이 떨어진다는 단점이 존재한다.

 

분류기준② Typing 자료형

Static typing PL: C, C++, Java, Swift

Dynamic typing PL: Python, Ruby

 

분류기준③ Level 친화방향

저↔고수준은 절대적 상대적이다.

세세하게 떠먹여줌 <---> 추상화, Dynamic typing

 

세 분류기준 Object-oriented, Typing, Level은 발전과정으로 보았을 때, 연관성이 있다.

①+②=사분면 : 3자세한 / 4체계적 / 1쉬운언어

 

분류기준④ 범용/특수

 현재까지 거론된 언어들은 모두 범용 General purpose language

<Domain specific language>

- R : 통계&시각화

- SQL : 데이터베이스

- HTML구조, CSS표현 : Web (+Javascript동작)

- Matlab : 공학시뮬레이션

- CSound : 음악

- Scratch : 교육용

 

⑵ PL 제대로 사용하기

①좋은 코드란?

가독성UP, 적절적당한 Comment, 협업&수정에 용이

잘 짜인 구조화, 최적화

∴Style Guide를 숙지하고, 좋은/유명 코드들을 분석하자

 

②문제 발생시

Design Pattern참고 : 고질적 문제들에 대한 권장해결책

 

③라이브러리&프레임워크

Library : [주도적] 이미 만들어져있는 코드블럭조각 *참고할만한 좋은 코드

Framework : [수동적] '넌 그냥 나만 따라오면 돼' *수정이 많이 어려워 전문성이 요구됨

이 둘을 적절히 사용하자

좌:라이브러리 & 우:프레임워크

 

[Keyword]

#PL분류기준4 #좋은코딩 #문제발생

#라이브러리&프레임워크

  • PL분류기준4 : 객체지향, Typing, Level, 범용/특수
  • 좋은코딩 : 가독성 코멘트 구조화 최적화 스타일가이드
  • 문제발생 : 디자인패턴 참조
  • Lib&FW : 주도VS수동

 

[Remark]

#단어익숙하게 #객체지향은 대체 무엇인가(2)

 

반응형

블로그의 정보

노력하는 실버티어

노실언니

활동하기