컴퓨팅 세계에서 광범위하게 사용되는 대부분의 프로그래밍 언어가 객체 지향적이라는 것을 알고 있었나요? 프로그래머들은 그들의 도움으로 많은 컴퓨터 프로그램과 웹 콘텐츠의 중요한 부분을 만든다. 따라서 객체 지향 언어(OL)가 작동하는 방식을 설명하는 것은 컴퓨팅 분야를 다루는 누구에게나 중요하다.
우리 젤빅스는 객체 지향 언어를 사용하여 많은 프로젝트를 만들어왔고, 우리는 여러분이 우리의 두뇌를 뽑아줄 준비가 되어 있습니다. 이 글은 현재 가장 널리 사용되는 객체 지향 언어 목록의 장단점에 초점을 맞추고 있습니다.
프로그래밍 언어 간략 정보
프로그래밍 언어(programming language)는 컴퓨터에 다양한 객체를 조작하는 방법, 특정한 계산 과정 등을 알려주는 컴퓨터 프로그램을 작성하는 도구이다. 언어마다 구문이 있으므로 학습한 후 컴퓨터의 작업을 프로그래밍할 수 있습니다.
기계어는 기계어로 된 명령어로 컴퓨터에 의해 잘 이해되지만 인간이 읽기 어렵다. 프로그래머들은 더 높은 수준의 프로그램을 읽고 쓰는 것을 선호한다.
어셈블리어는 기계어의 기호적 번역이다.
고급 절차 언어(예: 포트란, 파스칼, C) 이러한 언어로 코드의 모듈화를 위한 함수 및 프로시저를 작성할 때 프로그래머는 프로세스를 여러 가지 활동으로 나눌 수 있다. 고급 언어는 컴파일러나 인터프리터를 통해 기계어에 대한 명령어를 수신한다.
객체 지향 언어(루비, Java, C++) OOL은 인간이 더 쉽게 읽을 수 있지만 컴파일러나 기계용 인터프리터에 의한 번역이 필요한 고급 언어이다. 이들은 더 나아가 데이터와 프로시저를 단순히 함수(동사로 표현되는 동작) 이상으로 구성되는 객체라는 단위로 결합한다.
이 언어들은 또한 요소들을 모듈식으로 만든다. 고급 프로그래밍 언어 목록에는 C ++, 파이썬, 자바 등이 포함된다. 객체 지향적이지 않은 프로그래밍 언어는 무엇입니까? 이것들은 C, 코볼, 포트란, 포스, 파스칼이다.
프로그래밍 패러다임이란 무엇인가?
기계코드에서 멀어질수록 데이터 처리가 전문화되고 추상화된다. 그것이 바로 많은 프로그래밍 언어들이 생겨난 이유입니다. 우리는 프로그래밍 패러다임(작업하고 데이터에 액세스하는 스타일)에 따라 언어를 분류합니다.
프로그래밍 패러다임은 코드를 만들기 위한 원칙과 기술의 집합이다. 우리는 프로그램을 능률화하고 동일한 패러다임을 가진 다른 사람들이 프로그램을 구조화, 편리, 이해할 수 있도록 만드는 데 필요합니다.
OOP(객체 지향 프로그래밍)란?
현재 가장 널리 사용되는 패러다임은 객체 지향 프로그래밍입니다. 이것은 프로그램이 동작하는 데이터 수정 명령어의 순차 호출에 기반을 둔 명령형 프로그래밍의 하위 유형이다. 따라서 객체에서 동작하며 많은 애플리케이션에 편리합니다.
두 번째로 널리 퍼진 패러다임은 함수형 프로그래밍이다. 프로그램이 특정 문제를 해결하는 도구일 때 선언적 프로그래밍의 개념을 반영한다. FP는 객체가 아닌 프로세스(기능)에 대한 설명을 기반으로 합니다.
OOP는 절차적 프로그래밍의 개념을 대체하거나 작동하는 프로그래밍의 기본 요소 중 하나가 되었다. 절차적 프로그래밍의 전통적인 아이디어는 동작과 논리를 중심에 두고 있지만 OOP는 결과를 내기 위해 객체와 데이터를 사용한다.
OOP는 오늘날 다목적 프로그래밍 언어에서 필수적인 기능입니다. F #와 같은 FP 기반 언어도 클래스나 상속과 같은 OOP 기능을 직접 지원합니다. 자바스크립트가 좋은 예이며, 이후 버전에서 클래스나 상속과 같은 표준 기능을 추가했다.
일부 응용 프로그램(예: 컴파일러)은 FP를 선호하지만 다른 응용 프로그램(예: 고전적인 데스크톱 응용 프로그램)은 OOP 원리를 사용하는 데 더 적합합니다. 프로그래밍 접근 방식의 선택은 대상 프로그래밍 언어, 작성하는 응용 프로그램의 유형 및 프레임워크에 따라 달라집니다.
OOP 빌딩 블록
사실 객체지향적인 언어가 아니라 코드다. 우리는 이 언어가 객체 지향 코드를 작성하는 것을 지원하는 것이 그것을 "객체 지향 언어"로 만든다고 말할 수 있다.
반
사용자 정의 데이터 유형입니다. 클래스를 사용하면 인스턴스화하는 개별 객체를 기반으로 메서드 및 속성의 구조 스키마를 만들 수 있습니다.
물건들
이것은 특정 데이터로 설계된 클래스의 인스턴스입니다. 대부분의 OOP 언어에서 거의 모든 것은 값과 실행 코드가 있는 고유한 개체입니다. 다른 객체의 사본일 수도 있지만 변수는 다릅니다. OOP 소프트웨어 애플리케이션은 상호 작용할 수 있는 객체들의 집합입니다.
방법들
동작을 나타내고 개체에 대한 정보 복원 또는 개체 데이터 업데이트와 같은 작업을 수행합니다. 메소드는 재사용을 촉진하고 객체에 포함된 기능을 유지합니다. 개별 객체가 인스턴스화되면 클래스에 설명된 메소드를 이러한 객체라고 합니다.
특성
클래스 템플릿에 저장되는 정보입니다. 객체가 작성되면 고유 객체는 특성 필드에 저장된 데이터를 포함합니다. 개체의 상태는 개체의 속성 필드에 있는 데이터에 의해 결정됩니다.
OOP의 4가지 기본은 무엇입니까?
객체 지향 언어는 네 가지 원칙에 기초하고 있으며, 이것들이 그것들을 정의하고 훨씬 더 효과적으로 만드는 일반적인 특성들이다. 그렇다면 무엇이 언어를 객체 지향적으로 만드는가?
캡슐화
데이터를 안전하게 유지하는 기능에 대한 데이터 바인딩의 개념입니다. 예를 들어, 많은 OOP 언어들은 접근하기 위해 데이터를 소유하는 특정 클래스 메소드 이외의 것을 금지한다.
추상화
우리는 추상화를 캡슐화의 확장으로 볼 수 있으며, 추상화의 목적은 추상화와 상호 작용하는 데 필요한 정보 객체만을 드러내고 다른 모든 것을 숨기는 것이다. 이 원리를 사용하면 복잡성이 줄어들고 프로그래머가 쉽게 변경할 수 있습니다.
무언가를 너무 자주 하면 그것은 별개의 주체가 되어야 합니다. 예를 들어 여러 객체에 대해 동일한 함수를 자주 다시 작성하면 추상화될 수 있습니다.
상속
프로그래머들은 공통점은 많지만 독특한 논리를 가진 여러 객체를 다룰 때 상속을 사용한다. 이 원리는 프로그래머들이 더 나은 정확도를 위해 불규칙한 계층을 유지하기 위해 특정 논리를 다른 클래스로 제거함으로써 공통 논리를 재사용할 수 있게 한다.
다형성
다형성은 객체 지향 언어와 절차 언어(C, 포트란, 베이직, 파스칼)를 구별한다. 그것은 "한 형태를 취하는 것"을 의미한다. 그것은 같은 방법이 두 가지 방법으로 다른 행동을 할 수 있게 합니다.
과부하
컴파일 시간 다형성은 메서드 오버로딩을 적용합니다. 함수나 메서드는 같은 이름을 가질 수 있지만 메서드가 호출될 때 다른 매개 변수가 통과됩니다. 프로그래머들은 주어진 파라미터의 수에 따라 다른 결과를 얻을 수 있다.
재지정
런타임 다형성은 하위 클래스가 상위 클래스와 다르게 구현할 수 있는 메서드 재정의를 적용합니다.
OOP의 분명한 이점
- 소프트웨어 개발의 생산성. 모듈성, 확장성 및 재사용성은 기존 방법에 비해 소프트웨어 개발에서 더 높은 생산성을 제공합니다.
- 소프트웨어 유지보수성을 향상시켰다. 설계가 모듈식이기 때문에 이 제품은 큰 변경 없이 시스템을 업그레이드할 수 있습니다.
- 개발 속도 향상. OOPL은 향후 프로젝트에서 풍부한 객체 라이브러리와 재사용 가능한 코드가 함께 제공됩니다.
- 개발 비용 절감. 소프트웨어를 재사용하고 분석 및 설계에 집중함으로써 전체 개발 비용을 절감할 수 있습니다.
- 더 좋은 제품. 소프트웨어 개발 속도를 높이고 개발 비용을 절감하여 소프트웨어 검증에 시간과 리소스를 할애할 수 있습니다.
OOP의 몇 가지 제한 사항
- 해결책의 거대한 크기. OOP 제품들은 보통 절차적 프로그램보다 더 많은 줄의 코드를 포함한다.
- 가파른 학습 곡선. 유전과 다형성과 같은 기본적인 프로그래밍 원칙들 중 일부는 처음에는 이해하기 어렵다.
객체 지향 프로그래밍 언어의 장단점
OOP는 향후 프로젝트에 훌륭한 투자가 될 수 있습니다. 장단점을 고려함으로써 초기 값과 미래 수익을 비교하여 이것이 올바른 접근 방식인지 판단할 수 있습니다.
혜택들
모듈성
OOPL에서 모듈화는 앱을 객체와 클래스로 나눈다. 그것은 앱이 모듈식 구조를 가지고 있고 모듈식 코드를 읽고 유지하기가 더 간단하기 때문에 좋다. 그렇기 때문에 객체 지향 프로그래밍은 전통적인 절차 기반 방식에 비해 소프트웨어 개발에서 더 높은 생산성을 제공한다.
재사용 가능성
다형성과 추상화 때문에, 우리는 하나의 생성된 함수를 반복적으로 사용할 수 있습니다. 따라서 복잡성이 감소하고 시간과 공간이 절약되며 프로그래밍이 간소화됩니다. 상속을 사용하여 이미 작성된 정보 및 태스크를 복사할 수도 있습니다.
병행개발
결론은 프로그램의 일부가 별도로 개발되고 객체 지향 원칙에 따라 기능하기 때문에 대규모 개발팀의 업무가 간소화된다는 것이다.
이 코드는 전부는 아니더라도 대부분이 한 곳에 자리잡고 호출되어 재사용되기 때문에 유지 관리가 쉽다. 게다가, 하나의 모듈형 함수와 다형 함수는 100개의 다른 함수 호출들을 개별적으로 고치는 것보다 더 쉽다.
보안.
대부분의 언어에는 일부 취약성이 있지만 OOL의 보안에는 캡슐화가 내장되어 있습니다. 다른 방법은 기본적으로 개인 데이터에 액세스할 수 없으므로 OOP 언어로 작성된 프로그램이 더 안전하게 보호됩니다.
단점
종종 더럽다.
객체 지향 언어는 매우 확장 가능하고 사용자 정의가 가능하기 때문에 때때로 코드가 어떻게 작동하는지 이해하기 어려울 수 있다. OOP 코드 자체는 다양한 방식으로 동작할 수 있습니다. OOP에는 다른 방법들과 함께 동작하지 않거나, 비효율적이거나, 사용하기 어려운 많은 프로그래밍 방법들이 있다.
필수 계획
이러한 언어들은 확장 가능하고 모듈식이기 때문에 명확한 디자인을 포기하는 것은 실패할 것이다. 효과적인 프로그램을 만들기 위해서는 다른 프로그래밍 패러다임을 사용하는 것보다 일관성 있는 계획이 필요합니다.
불투명도
이것은 장점도 있고 단점도 있습니다. 개체와 함수는 독립적으로 작동할 수 있으며 정보를 수신하고 유효한 결과를 반환합니다. 하지만 때때로, 그들이 하는 일이 항상 명백하지는 않습니다. 프로그래머가 이 객체를 만들고 그것을 알고 있지만 OOP 언어는 다른 언어만큼 투명하지 않다.
성능
OOL은 종종 성능 저하를 겪습니다. 프로그램이 더 크기 때문에 실행하기 위해 더 많은 컴퓨팅 자원이 필요합니다. 그러나 이것이 항상 중요한 것은 아니다. 속도의 다양성은 거대하거나 복잡한 계산을 처리할 때 또는 극단적인 속도가 필요할 때만 명백해진다.
우리는 이 언어가 좋은 객체 지향 코드를 작성하도록 지원하는 것이 "객체 지향 언어"를 만든다고 말할 수 있다. 이제 객체 지향 언어가 무엇인지 알았으니 어떤 언어가 가장 수요가 많은지 알아보겠습니다.
공통 객체 지향 프로그래밍 언어 목록
위에서 언급한 바와 같이, 완전한 객체 지향적이 되려면 언어는 다음의 7가지 특성을 지원해야 한다.
- 데이터 캡슐화/숨기기;
- 상속;
- 다형성;
- 추상화;
- 모든 사용자 정의 유형은 객체입니다.
- 미리 정의된 모든 유형은 개체입니다.
- 객체에 대해 수행되는 모든 작업은 객체에 표현된 메서드로만 수행되어야 합니다.
1960년에 개발된 시뮬레이션 도구인 첫 번째 OOL이 고려되었습니다. 그러나 우리가 스몰토크라고 부를 수 있는 전형적인 객체 지향 언어는 1970년대 후반을 배경으로 한다. 또한 이 프로그래밍 스타일의 바통은 C++, 자바, C#에 의해 선택되었다.
우리는 현재의 OO 언어를 그들이 가장 많은 개념을 차용하는 범주로 대략 나눌 수 있다.
- Simula: C ++, Object Pascal, Java, C #.
- 잡담: 루비, 목표 C
OOP는 파이썬에서 가장 쉽지만 C++에서는 더 어렵다. 그러나 파이썬이 함수형 프로그래밍에도 적합하다면 자바와 C #에서는 항상 클래스를 만들어야 하며 함수만으로는 함수만으로는 충분하지 않다.
객체 지향에 가장 적합한 프로그래밍 언어는 무엇입니까? 난이도를 기준으로 가장 인기 있는 5개의 프로그래밍 언어는 다음과 같다.
파이톤
파이썬은 범용 인터프리터 프로그래밍 언어이다. 이것의 철학은 프로그래머들이 깨끗하고 유효한 코드를 쓸 수 있게 하는 것이다. 따라서 "파이썬은 객체 지향인가 아닌가?"라는 질문에 대한 명확한 답이 있다. 스트림을 제외한 모든 것이 파이썬에서는 객체이기 때문에 객체 지향이라고 부릅니다.
파이썬의 장점
- 그것은 배우기 쉽고 코딩하기 쉬운 오픈 소스 언어이다.
- 파이썬은 객체, 캡슐화 등의 개념을 기반으로 한다.
- 확장 가능한 기능 지원을 통해 통합 및 휴대가 가능합니다.
- Python은 그래픽 응용 프로그램을 만드는 데 가장 좋습니다.
파이썬의 단점
- 파이썬의 속도는 C와 C++에 비해 느립니다;
- 모바일 개발을 위한 최선의 선택은 아닙니다.
- 메모리 집약적인 작업에 적합하지 않습니다.
- 데이터베이스 접근 제한이 있습니다.
- Python은 런타임에 더 많은 오류를 발생시키므로 철저한 테스트가 필요합니다.
파이썬을 사용하여 다음을 만들 수 있습니다.
- 게임 및 내장 앱
- 데스크톱 GUI;
- 비즈니스, CAD 및 웹 스크래핑 애플리케이션
- 데이터 과학 및 데이터 시각화 기술.
우리는 이 언어가 기계 학습과 데이터 분석을 위한 최선의 선택이라고 생각한다. 그리고 ML과 DS의 중요성이 커지면서 파이썬의 인기가 높아지고 있습니다. 구글, 페이스북, 넷플릭스, 그리고 스포티파이는 그들의 프로젝트를 위해 파이썬을 적극적으로 사용했다.
루비
고급 인터프리터링 프로그래밍 언어이다. 루비는 동적으로 입력할 수 있으며 가비지 컬렉션을 사용합니다. 또한 객체 지향, 절차 및 기능을 포함한 프로그래밍 패러다임을 완벽하게 지원합니다.
루비 혜택
- 휴대용 플랫폼;
- 많은 유용한 도구와 라이브러리;
- 영향력 있는 공동체;
- 루비는 기준을 철저히 준수합니다.
루비 결점
- Ruby는 복잡하지 않은 작업 및 기능을 처리하는 데 유연성이 떨어집니다.
- 루비는 지속적인 갱신과 개발을 지원하지 않는다.
- 특히 프로젝트가 클 때 루비 런타임이 훨씬 짧다.
루비로 다음을 만들 수 있습니다.
- 웹 애플리케이션, 스크립트, DSL.
이 언어는 더 빠른 소프트웨어 개발에 맞춰져 있고 "스타트업 기술"이라고 불린다. 에어비앤비, 깃허브, 베이스캠프와 같은 유명한 회사들은 루비를 사용합니다.
골랑
바둑은 2007년 구글 팀과 다른 기여자들의 공동 노력으로 개발되었다. 바둑이 OOPL인지에 대해서는 여전히 논쟁이 있다. Go 프로그래밍 언어는 객체나 클래스와 유사한 것이 없지만, 몇 가지 유사한 구조를 가지고 있다.
바둑 혜택
- 바둑은 매우 정적인 형태의 초고속 언어이다.
- 네이티브 실행 파일로 컴파일 이동;
- 바둑 프로그램은 사용하기 매우 쉽습니다;
- 바둑은 훌륭한 표준 도서관을 가지고 있다.
- 문법이 단순하고 빈도가 낮으며 언어 수준에서 멀티스레딩을 할 수 있는 특징이 있다.
- 이 언어는 교차 플랫폼과 고성능입니다.
Go 언어 단점
- 바둑은 현대 언어 디자인의 발전을 무시한다.
- 불편한 오류 관리
- 바둑에는 제네릭이 없습니다.
- 돌연변이는 언어로 하드 코딩된다.
- 인터페이스는 구조화된 유형입니다.
이 언어는 뛰어난 동시성과 초고속 컴파일러를 제공한다. 우버, 사운드클라우드, 트위치와 같은 회사들은 성공적으로 바둑을 사용한다.
자바
의심할 여지 없이, 자바는 시장에서 가장 널리 사용되는 OOP 언어 중 하나이다.
모든 의존성을 구현하기 위해 명시적으로 설계된 범용 클래스 기반 프로그래밍 언어이다. 자바 프로그래머들이 한 번 쓰고 어디서든 실행할 수 있게 해주며 컴파일된 코드는 컴파일 없이 자바를 지원하는 모든 플랫폼에서 실행된다.
자바(Java)는 객체로서 사용자 정의 타입과 객체에 표현된 메소드의 실행에 대한 절을 지원하지 않기 때문에 순수하게 객체 지향적인 것은 아니다. 이것은 "자바는 객체 지향 언어인가?"라는 질문에 대한 대답이다.
Java의 이점
- 명확하고 이해하기 쉬운 구문
- 높은 보호 기능;
- 프로그램 작성과 업무 수행을 동시에 할 수 있는 멀티스레딩 기능
- 구현별 기능이 없는 휴대성과 신뢰성이 높은 플랫폼
- 컴파일 시간 오류에 중점을 두고 오류가 발생하기 쉬운 코드를 제거합니다.
Java의 단점
- 컴파일 수준 및 가상 시스템 추상화로 인한 성능 저하;
- 그래픽 인터페이스의 매력적이지 않은 외관
- 백업 기능 없음;
- 엄청난 양의 메모리가 필요합니다.
- 자바 코드는 보통 길고 복잡하다.
Java를 사용하여 다음을 작성할 수 있습니다.
- 임베디드 시스템;
- 데스크톱 GUI 및 웹 앱;
- 빅데이터 기술;
- 모바일 및 회사 앱.
자바가 널리 사용되는 이유 중 하나는 자바가 공식 안드로이드 개발 언어 중 하나이기 때문이다. 에어비앤비, 스포티파이, 링크드인, 이베이는 수백 개의 다른 유명한 회사들처럼 자바를 사용한다.
C++
기능, 절차, 객체 지향 프로그래밍 기술을 완벽하게 지원하는 강력한 범용 프로그래밍 언어이다. C++는 중간 수준의 PL이기 때문에, 우리는 그것을 낮은 수준의 언어, 높은 수준의 언어로 사용할 수 있습니다.
고급 언어 기능은 게임과 데스크톱 응용 프로그램을 개발하는 데 도움이 되며, 낮은 수준의 언어 기능은 커널과 드라이버를 구축하는 데 도움이 됩니다.
C++의 이점
- 원하는 플랫폼으로 개발을 포팅할 수 있는 이식성,
- 동적 메모리 할당은 메모리 할당과 재할당을 돕습니다.
- 사전 인터프리터는 코드를 더 빠르고 강력하게 만든다.
- 멋진 빌트인 라이브러리 세트;
- 거대한 공동체;
- 리소스 집약적인 애플리케이션을 구축하기 위한 확장성.
C++의 단점
- C++에는 특정 보안 문제가 있습니다.
- 쓰레기 수거기도 없고
- C++는 인라인 스트림과 대수 데이터 형식을 지원하지 않습니다.
- C++는 구문에 대해 매우 엄격하다.
- 포인터를 사용하는 것은 메모리 집약적입니다.
C++로 작성할 내용:
- GUI 기반 및 게임 애플리케이션;
- OS;
- Mozilla 또는 Firefox와 같은 브라우저.
이것은 가장 오래되고 가장 유명한 중간 수준의 언어이며 C 프로그래밍 언어의 업데이트된 버전입니다. 기본 업데이트에서는 연산자 오버로드, 네임스페이스 기능, 오류 및 예외 처리에 대해 설명합니다. C++를 사용하는 성공적인 기술 회사들은 마이크로소프트, 페이스북, 그리고 NASA이다.
산출량
객체 지향 프로그래밍 언어는 소프트웨어 개발에 중요한 역할을 하며 이는 곧 바뀔 것 같지 않다. 따라서 이들 중 어느 것이든 흥미로운 프로그래밍 세계로 가는 여정을 시작하는 데 탁월한 선택이 될 것입니다.
원래 https://jelvix.com에서 출판되었습니다.
'프로그래밍' 카테고리의 다른 글
살아남은 코딩 부트캠프: 2주차부터의 가이드 (0) | 2022.01.13 |
---|---|
PowerShell Part 1 소개. (1) | 2022.01.13 |
코모우사르 아날리스 드 다도스 멜호르 오수 의뢰인? P 제로 2부 (1) | 2022.01.13 |
Arrays Are So Often A Bad Choice (0) | 2022.01.13 |
녹에서 베어메탈 작업 관리를 위한 일반 인터페이스 (0) | 2022.01.13 |
댓글