컴퓨터 프로그램 언어는 크게 3가지 타입이 있는데 Machine lang, Assembly lang, High-level lang 이 있다.
Machine Languages(기계어) - 컴퓨터만 알아듣는 저차원 언어이다.(차원이 낮을 수록 인간의 언어로부터 멀어지고 컴퓨터와 가까워진다.) - 0과 1로만 이루어져 있다.
Assembly Languages(프로세스 언어) - 저수준 프로그램어로 어셈블리코드능 어셈블러를 사용하여 기계코드로 변환할 수 있다. - 경우에 따라 프로그램을 미세하게 조정가능하다. - 변수가 얼마없고 기능이 적다.(ex. mov, add, sub, push, pop, jmp,int)
High-level Languages(고차원언어) - 우리가 자주쓰는 프로그램 언어이다. (Java, Javascript, c++, c#, python, PHP, Ruby ...) - 고차원언어라 인간의 언어에 가깝고 작성이 쉽다. - 버전에 유연하다. - Assembly언어로 함수를 미리 만들어 사용하기 쉽도록 만든 언어이다. - 이 언어에서도 두 가지로 타입이 나뉜다. (절차지향, 객체지향)
OOP의 특징 및 장점
캡슐화 (Encapsulation) - class 객체에 기능과 속성을 넣어놓고 언제든 가져와서 쓸 수 있게 만드는 것 ※ class : 설계도, 청사진, 기능들을 캡슐화,객체화를 시켜 코드를 간단하게 만들어 준다. ※ method : 특정작업을 사용하기 위한 명령문의 집합 ※ instance : 선언된 해당 class의 객체, 메모리에 할당 된 객체 ※ class로부터 객체를 선언하는 과정 = 클래스의 인스턴스화
상속(Inheritation) - 부모의 속성과 기능을 자식이 똑같이 갖는 것. - 이미 작성된 클래스를 이어받아 새로운 클래스를 생성하는 것을 말한다.(기존의 코드 재사용)
추상화(Abstraction) - 사용자가 모든 기능을 알지 않아도 간단한 인터페이스를
다형성(Polymorphism)
절차지향(Procedural Programing) vs 객체지향 (Object Oriented Programing)
절차지향: 컴퓨터의 처리방식과 유사함. 순차처리가 중시됨(C언어) -데이터 중심 함수 구현 - 장점 :처리속도가 객체지향에 비해 더 빠름 - 단점 : 유지보수가 어려움, 실행순서가 정해져서 코드가 바뀌면 동일한 결과가 나오지 않을 수 있음, 디버깅이 어려움
객체지향: 사람이 생각하는 방식과 유사함. (Java, Javascript, C++, C#, Visual basic.NET) -기능 중심 메서드 구현 - 장점 :코드의 재활용이 쉬움, 절차지향보다 간편함, 디버깅이 쉬움 - 단점 :처리속도가 절차지향에 비해 느림