카테고리 보관물: 개발언어

C++은 무엇인가?

안녕하세요!

오늘은 C++은 무엇인가?
C++에 대해서 알아보도록 하겠습니다.


C++의 개요

C++는 1979년 벨 연구소의 비야네 스트롭스트룹(Bjarne Stroustrup)에 의해 개발된 프로그래밍 언어로, C 언어의 확장판입니다. C++는 객체 지향 프로그래밍(OOP) 개념을 도입하여 코드의 재사용성과 유지보수성을 높였으며, 다양한 프로그래밍 패러다임을 지원합니다.

어… 역사는 알겠고!
왜 요즘 Python처럼 쉬운 언어가 있는데 왜 복잡한 C++를 사용할까요?

이유는 바로 “속도”에 있습니다.

C++는 프로그래밍 언어의 가장 Low 레벨인 C언어를 기반으로 제작된 언어라서 속도와 효율성 측면에서 직접 컨트롤할 수 있는 장점이 있습니다.

그래서 C++을 이용하여  금융 및 과학 관련 프로그램, 실시간 처리 프로그램, 게임 엔진, 그래픽 라이브러리, 운영 체제 프로그램 등 다양한 방면에서 활용할 수 있습니다.

그렇다면 속도가 중요하다면서 Low 레벨의 언어인 C언어를 쓰지 왜 C++ 을 쓸까요?

C언어는 Low 레벨이라 컴퓨터가 이해하기 쉽게 작성되어 있습니다.
컴퓨터가 이해하기 쉽다면? 우리 개발자들한테는 이해하기 어렵겠죠..
그래서 그나마 객체 지향 특징이 들어간 C++을 사용합니다.
물론 그렇다고 C언어가 안 쓰이는 것은 아니고 오히려 더 많이 쓰입니다.
각 언어마다 특징이 있어 C언어도 많이 쓰이고 C++도 많이 쓰입니다.


C++의 특징

  1. C언어를 확장하여 만든 고급 범용 프로그래밍 언어입니다.
  2. 절차 지향적 언어 + 객체 지향형 언어의 특징을 지니고 있습니다.
  3. 연산자 오버로딩, 구조체, 포인터 등의 기능을 지원합니다.
  4. 메모리 관리를 수동으로 할 수 있습니다.
  5. 플랫폼에 종속적입니다.
  6. 표준 라이브러리 STL을 제공합니다.

자 그러면 하나씩 뜯어보도록 하겠습니다.

C++는 C언어를 기반으로 제작된 언어라서 C언어의 문법과 유사합니다.다만.. 차이점이 있다면 C언어의 업그레이드 버전이 C++이라 객체 지향의 특성이 추가된 버전이라 생각하심 됩니다.

C언어를 배웠다면 포인터, 구조체와 같은 개념이 익숙하실 겁니다.
거기에 연산자 오버로딩을 통해 객체 지향의 특성도 살려주고요.

C언어에서도 메모리 관리를 수동으로 할 수 있으며

C언어나 C++언어나 OS에서 기계어로 바로 컴파일을 진행하여 OS 플랫폼에 종속적인 언어가 되버립니다.
윈도우, 리눅스, 유닉스 등 다양한 OS 플랫폼에서 직접적으로 컴파일 하기 때문에 각각의 OS별 같은 코드이지만 결과가 달라질 수 있습니다.

표준 라이브러리(STL)에는 다양한 데이터 구조와 알고리즘을 쉽게 사용할 수 있도록 정의해놓은 라이브러리 입니다.
Vector, List, Map, Set 등 다양한 데이터 타입과, 정렬, 검색 등 다양할 알고리즘을 포함하고 있어 개발자의 생산성을 높일 수 있습니다.

끝으로, C++를 이용하여 앞으로는 HTS 프로그램을 만들어보려고 합니다.
속도와 성능이 중요한 만큼 HTS도 잘 만들어가는 과정을 보여드리도록 하겠습니다.

오늘도 감사합니다.

Java(자바)란 무엇인가?

안녕하세요.

오늘은 앞으로 진행해볼 프로젝트로 C++를 이용해 증권사의 HTS 프로그램을 개발해볼 예정인데요~
그래서 저는 Java를 하는 개발자라서 C++과의 차이점을 위해 Java에 대해서 먼저 자세히 알아보는 시간을 갖도록 하려고 합니다!

Java(자바)가 무엇인지, 왜 사람들이 사용하는지 알아보도록 할게요!


Java(자바)란?

Java는 객체지향 프로그래밍 언어입니다.
운영체제나 하드웨어에서 독립적으로 실행이 가능해서 현재까지도 전 세계에서 많이 쓰이는 프로그래밍 언어입니다.

그렇다면 사람들이 왜 Java를 많이 쓸까요?

바로 Spring 프레임워크라는 Java 기반의 환경에서 웹 페이지의 다양한 기능을 쉽게 구현할 수 있는 아주 좋은 도구가 있기 때문입니다.
당장 인터넷에 웹 개발하면 파이썬의 Django,  Node.js의 NextJs 등 웹 프레임워크들이 많은데 Java에서는 Spring 프레임워크가 가장 유명합니다.
또한 웹 뿐만 아니라 다양한 강점들이 있어 사람들이 Java를 사용하고 있습니다.

그러면 어떤 강점들이 있는지 알아볼까요?


Java의 장점은?

객체 지향 프로그래밍 언어

자바의 “핵심” 입니다.
보통 프로그래밍이라 한다면 데이터를 입력 받아 순서대로 처리하여 결과까지 도출해냅니다.
그런데 객체 지향 프로그래밍은 순서대로 처리한다라는 패러다임은 같지만, 여러 부품들을 조합할 수 있도록 하여 객체들의 유연한 처리를 할 수 있도록 도와줍니다.
그렇기 때문에 코드에 대한 유지보수가 쉽고 훨씬 직관적입니다.

쓰레드(Thread) 처리

자바에서는 쓰레드 처리를 지원합니다.
하나의 일을 여러 개의 쓰레드에게 나누어 주어 동시에 수행할 수 있도록 하는 멀티쓰레딩 기술로 더욱 더 빠르게 처리가 가능하도록 합니다.

이식성 Good

자바는 가상머신(JVM)만 설치되어 있다면, 모든 운영체제나 하드웨어에서 구동되는 프로그램을 만들 수 있습니다.

자동 메모리 관리 (Garbage Collector)

자바는 객체 생성 시 자동으로 메모리 영역을 할당하고, 사용이 완료되면 Garbage Collector를 통해 메모리를 해제하고, 자동으로 메모리 관리를 해줍니다.
즉 개발자가 직접 메모리에 접근할 수 없으며, 자바가 알아서 직접 관리하니 개발자 입장에서는 편하게 메모리 관리가 가능합니다.

동적 로딩

프로그램을 실행할 때 1GB의 자바 소스들을 모두 로딩하면 그 만큼의 시간이 걸리겠죠?
자바는 이러한 방식으로 프로그램 로딩을 하지 않고 프로그램이 필요한 시점에 로딩하여 사용할 수 있습니다.


Java의 단점은?

속도가 느리다.

자바는 실행을 위해 JVM 을 한번 거쳐 실행하기 때문에 다른 언어에 비해 실행 속도가 느립니다.

예외처리 (Excpetion)

자바의 예외처리는 개발자가 일일이 지정해주어야 합니다.

메모리 차지

자바는 C와 C++ 같은 프로그램 언어와 비교하여 더 많은 메모리를 차지합니다.


Java 실행은 내부적으로 어떻게 동작하나?

자바는 JVM을 통해 실행한다고 하였습니다.
그러면 자바를 실행했을때 컴퓨터 내부에서는 어떻게 실행되나 절차를 한번 알아보도록 하겠습니다.

  1. 개발자가 Test.java 파일을 작성합니다.
  2. Java 컴파일러가 Test.java 파일을 바이트코드 파일 Test.class로 변환한다.
  3. Class Loader가 Test.class를 JVM 메모리에 로드한다.
  4. 로딩한 Test.Class 파일을 실행 엔진을 통해 해석한다.
  5. 해석된 바이트코드는 메모리에 배치되어 수행이 이루어진다.
    (이때, Test.java 에 작성한 코드 내용에 대해서 수행)
  6. 실행하는 동안 JVM의 필요에 따라 메모리 GC를 수행한다.

JDK? JRE? JVM?

자바 공부를 하다 보면 JDK, JRE, JVM 단어는 비슷하지만 아주 헷갈리는 단어가 있습니다.

JVM (Java Virtual Machine)?

자바 프로그램을 실행하기 위한 “가상 머신” 입니다.
어느 운영체제에서 JVM 설치를 하면 Java 프로그램을 사용할 수 있게 도와주는 머신입니다.
또한 메모리를 효율적으로 관리 & 최적화 할 수 있도록 도와줍니다.

  • JVM 덕분에 모든 운영체제에서 Java를 사용할 수 있습니다.
    과거에는 프로그램 개발 시, 같은 프로그램이지만 운영체제 별로 다르게 작성을 해야했습니다. 그러던 중 JVM이 등장하여 각 운영체제 별로 고민 없이 개발을 진행하면 JVM에서 알아서 운영체제에 맞도록 바이트 코드로 변환하여 프로그램을 실행 할 수 있습니다.

JRE (Java Runtime Environment)?

JRE는 자바 클래스 라이브러리(Java class libraries), 자바 가상머신(JVM) 를 포함하고 있습니다.
자바 클래스 라이브러리를 통해 작성한 자바 코드를 라이브러리와 결합한 후 JVM에게 넘겨 실행시킵니다.
JRE만 있어도 자바를 실행시킬 수 있습니다.

JDK (Java Devlopment Kit)?

우리가 일반적으로 자바를 공부하기 위해 설치하는 것이 JDK 입니다.
JDK는 앞서 말씀드린 JRE, JVM을 포함하고 있고 JDK를 설치하면 자동으로 JRE, JVM 또한 설치됩니다.
자바로 개발하지 않고 실행만 하기 위한 사람들은 JRE만 설치해도 됩니다
하지만 자바로 무언가를 개발하기 위한 사람은 JDK를 설치해야 합니다.
JDK에는 JRE, JVM에는 없는 “자바 컴파일러”가 존재합니다.
이 컴파일러를 통해 우리는 자바에 대한 개발을 진행 할 수 있습니다.