티스토리 뷰

728x90

프로그래밍을 하면서 가장 많이 접하는 프로그래밍 언어인 C, Java, Python 의 각 특징을 알아 보려고 한다.

해당 내용은 실제 기술 면접시 받았던 질문이며, 부족함을 느껴서 정리하고자 한다.

또한 개발 직무를 하면서 각 프로그래밍 언어의 특징을 알고 사용하면 좋을 것 같아서 간략하게 정리하고자 한다.

 

C언어의 특징

1. C언어로 작성된 프로그램은 다양한 하드웨어로의 이식성이 좋다.

2. C언어는 절차 지향 프로그래밍 언어로, 코드가 복잡하지 않아 상대적으로 유지보수가 쉽다.

3. C언어는 저급 언어의 특징을 가지고 있으므로, 어셈블리어 수준으로 하드웨어를 제어할 수 있다.

4. C언어는 코드가 간결하여, 완성된 프로그램의 크기가 작고 실행 속도가 빠르다.


Java 란?

자바는 C언어에 객체 지향적 기능을 추가하여 만든 C++과 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어이다. 자바는 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여 운영체제와 독립적으로 동작할 수 있다.

따라서 자바는 어느 운영체제에서나 같은 형태로 실행 될 수 있다.

 

Java 특징

1. 자바는 객체지향 언어이다.

객체를 만들기 위해서 설계도인 클래스를 작성하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만든다.

객체지향 언어의 특징인 캡슐화, 상속성, 다형성을 완벽하게 지원한다.

 

2. 이식성이 높다

자바 실행환경이 설치되어 있는 모든 운영체제에서 실행 가능하다.

 

3. 메모리를 자동으로 관리한다.

개발자가 직접 메모리에 접근할 수 없으면 자바가 직접 메모리를 관리한다.

객체 생성시 자동으로 메모리 영역을 찾아 할당하고, 가비지 콜렉터(Garbage Collector)를 실행시켜 자동으로 사용하지 않는 객체를 제거한다.

개발자는 메모리 관리의 수고를 덜고, 핵심기능 코딩에 집중할 수 있다.

 

4. 오픈소스 라이브러리가 풍부하다.

자바는 오픈소스 언어이고 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스의 양이 방대하다.

고급 기능을 구현하는 코드를 작성하는 대신 검증된 오픈소스 라이브러리를 사용하면 애플리케이션을 다시 컴파일 할 필요가 없다.

 

5. 자바는 실행을 위해 자바 가상 머신을 거쳐야하므로, 다른 언어에 비해 실행 속도가 느리다.

6. 자바는 예외 처리가 잘 되어있지만, 개발자가 일일이 처리를 지정해 줘야한다는 불편함이 있다.

7. 자바는 다른 언어에 비해 작성해야 하는 코드의 길이가 긴 편이다.

 


Python 이란?

파이썬은 1991년네덜란드계 소프트웨어 엔지니어 귀도 반 로섬이 발표한 고급 프로그래밍 언어로, '인터프리터를 사용하는 객체지향 언어'이자 플랫폼에 독립적인, 동적 타이핑(dynamically typed) 대화형 언어이다. 

 

Python 특징

1. 스크립트 언어(Script Language)

파이썬은 스크립트 언어로 컴파일 과정없이 인터프리터에 의해 실행 결과를 바로 확인하고 수정하며 코드를 작성할 수 있다.

 

2. 동적 타입 언어

파이썬은 동적 타입언어로 변수의 자료형을 지정하지 않고 선언하는 것만으로 값을 지정할 수 있다.
이렇게 선언한 변수의 자료형은 코드가 실행되는 시점에 결정된다.

int a = 10 // Java

a = 10  // Python

이런 점은 개발당시에는 편할 수 있지만, 코드 실행 도중 예상치 못한 타입으로 에러가 발생할 수 있다는 단점이 있다.

 

3. 플랫폼 독립적 언어

파이썬은 대부분의 운영체제에서 모두 동작하는 언어이다.. 윈도우, 리눅스, 맥 등 운영체제에 따라 컴파일할 필요가 없기때문에 어떤 환경에서도 활용이 가능하다.

 

4. 객체의 멤버에 제한없이 접근할 수 있어 접근성이 좋다.

파이썬에서는 모든 요소가 객체로 취급되므로, 객체 지향적 코드를 명확하고 이해하기 쉽게 만들 수 있다.

파이썬은 멀티패러다임이면서 객체 지향을 지원하며, 절차적 언어이면서 일급합수를 지원하는 함수형 프로그래밍 스타일을 사용한다.

 

 

 

 

 

 

 

 

Reference Link

http://www.tcpschool.com/c/c_intro_basic

https://code-lab1.tistory.com/63

https://velog.io/@jnine/%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-%ED%8A%B9%EC%A7%95-%EB%B0%8F-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EC%A0%95%EB%A6%AC

 

 

728x90