본문 바로가기
🌱 Computer Science/Programming

[Programming] Python과 Java 차이점 | 객체지향vs절차지향

by 카프리썬_ 2021. 8. 4.
728x90

면접에서 자주 물어보는 기초 질문이라 한번 정리해보려고 한다.

 

뭔가 보수적인 회사(?) 또는 코딩테스트가 없어서 개발능력을 팩트체크해보려고 할 때 아래처럼 질문을 받았다.

Q: 자주 사용하는 개발언어가 무엇이냐

A: 파이썬입니다

Q: 파이썬밖에 할줄 모르나요?

A: 아..자바도 조금할줄 압니다...! 

Q: 그럼 자바와 파이썬의 차이점은 무엇이죠?

 

근데 개인적으로 이런질문을 아니 이런질문을 하는 회사는 뭔가 답답한 느낌이 든다랄까..

솔직히 개발언어는 각자 장단점이 있고, 스타일이 있어서 비교할만한 주제가 아닌것같은데..

(실제로 구글링해도 명확하게 구분한 글이 없네.) 

그래도 기본을 짚고 넘어가는 목적으로 한번 알아보자.

 

자바(JAVA)

1. 객체지향 언어 

데이터를 객체로 취급해서 기능들을 하나의 객체로 묶어서 프로그래밍하는 언어  

함수랑 필드를 묶어서 하나의 클래스로 만들고, 기능을 객체로 만들어 사용한다.

 

참고로, C언어는 절차지향 프로그래밍언어이고, Python도 마찬가지로 객체지향 프로그래밍 언어이다.

 

객체지향vs절차지향

절차지향 프로그래밍

함수를 만들고 순차적으로 프로그램이 동작하는 방식

장점 - 객체나 클래스를 만들 필요없이 바로코딩가능, 함수호출가능, 프로그램 흐름을 쉽게 추적할 수 있다. 

단점 - 코드끼리 유기성이 높아서 새로운 데이터나 기능을 추가하기 어렵다, 코드재사용불가, 유지보수 어려움

 

객체지향 프로그래밍 

각 객체에서 수행할 수 있는 함수랑 필드를 묶어서 하나의 클래스로 만들고,  기능을 객체로 만들어 동작하는 방식

장점 - 캡슐화(모듈화)로 인해 유지보수 용이, 객체자체가 하나의 프로그램이기 때문에 상속처럼 코드재사용에 용이 

단점 - 많은 양의 메모리 사용해서 속도가 느림, 설계하는데 시간필요 

 

참고 :  https://st-lab.tistory.com/151 << 이 블로그에 있는 코드예시로 구분해서 이해하기 쉬웠다!

 

2. 운영체제 독립적

JVM(자바 가상머신)위에서 실행되기 때문에 OS 관계없이 같은 작동한다.

 

3. 컴파일언어

컴파일되면 결과를 확인할 수 있고, 코드를 수정한다고 해도 다시 컴파일할때까지 같은 결과를 나타낸다. 

 

파이썬(Python)

1. 객체지향 언어 

자바와 마찬가지로 함수와 클래스를 통해 기능을 객체로 묶어서 프로그래밍 할 수 있다. 

 

2. 인터프리터 언어 (스크립트 언어)

실행될때마다 바로 해석해서, 코드변경시 실행할 때 마다 결과가 계속 바뀐다. 

 

비교

이런 이론적인 내용으로 비교할 뿐만 아니라 직접 경험한 내용을 비교를 해보자면..! 

 

자바는 정적타이핑 언어이고, 파이썬은 동적타이핑 언어라는 특징이 있다. 

1. 변수선언

자바는 변수를 사용하기 위해 데이터유형을 선언해야하는데, 

파이썬은 변수유형을 선언할 필요가 없는 동적유형이기 떄문에 런타임에 의해 유형 결정 된다.

2.코드가독성

자바는 한줄을 출력하기 위해 클래스, 함수를 선언한는것부터 시작해야하는데, 

파이썬은 정말 단 한줄만 출력하면 된다. 

 

출처

자바 기술면접 모음 : https://sas-study.tistory.com/m/53?category=774876 

개발자 기술면접 준비 : https://blex.me/@baealex/%EC%B7%A8%EC%A4%80%EC%83%9D%EC%9D%B4-%EC%83%9D%EA%B0%81%ED%95%98%EB%8A%94-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84

신입개발자 기술면접 : https://coding-restaurant.tistory.com/136

정적타이핑 vs 동적타이핑 : https://ko.myservername.com/java-vs-python-key-differences-between-java#Java_Vs_Python_8211_Key_Differences

반응형