java 와 c언어의 차이가 뭔가요?
파이썬, html, css, java script를 기본적인 부분은 써봤는데 다른 언어를 배워보고 싶어서요 자바랑 씨언어가 대표적인 프로그래밍 언어 같은데 둘의 차이점이 뭐고 어떤 언어를 공부하는게 좋을까요?
자바언어와 C언어의 가장 큰 차이는 패러다임이 아닐까 합니다.
자바의 경우 대표적인 객체지향 프로그래밍 언어 입니다.
프로그래밍을 할때 여러개의 독립된 단위인 객체로 만들고 객체들이 메세지를 주고받고 데이터를 처리할 수 있습니다.
C언어의 경우 절차지향 프로그래밍 언어입니다.
명령어를 위에서부터 아래로 순차적으로 처리할 수 있습니다.
프로그래밍 언어를 배울때는 어떠한 분야에 관심이 있는지에 따라서 달라지지 않을까 합니다.
웹개발은 자바프로그래밍이 좋지만 하드웨어 제어부분의 경우 C언어가 압도적으로 좋은 것으로 알고 있습니다.
안녕하세요.
C는 절차지향적언어이고 자바는 객체지향적언어라고 합니다. 절차지향적이라는 것은 코딩한 순서대로 실행이 된다고 보시면 되고, 객체지향적이라는 것은 객체(하나의모듈)라는 것을 만들어서 재사용함으로써 여러 군데서 호출해서 쓸수 있다고 보시면 됩니다. 그래서 C 같은 경우에 속도는 빠르지만 유지보수는 좀 불편한 점이 있고 반대로 자바는 속도는 좀 느리지만 유지보수에 편한 장점이 있습니다. C는 기초를 다지기에는 좋은 반면 좀 난이도가 있어서 어렵습니다. 자바는 실활용도 면에서는 제일 많이 쓰이는 언어입니다. 웹이나 앱, 정부에서 쓰는 전자정부프레임워크에서도 자바가 쓰이죠.
일단 둘의 가장 큰 차이는 언어의 바라보는 방향이 다르죠.
C는 절차지향 언어이고, java는 설계에 강한 객체지향언어 입니다.
그리고 중요한 차이는 C는 메모리를 직접 접근해서 작업하여 메모리 낭비가 많이 없는 편이며
java는 클래스로 인해 기본적으로 잡아먹는 메모리가 상당합니다. 메모리 누수가 상당하다고 하죠.
둘의 주 용도는 c는 보통 윈도우나 임베디드같은 곳에 많이 쓰이며 제가 생각하는 정점은 화성탐사선 같은 HW에 최적화된 코딩이고,
자바는 솔직히 어디든 쓸 수 있는 것 같습니다. (대표적인 예가 웹이죠, Spring)
객체지향이 타언어에서도 많이 쓰는 만큼 자바를 강력 추천하며,
만약 금융권을 노리신다면 c도 적절히 병행하시길 추천드립니다.
Java = 객체지향
C = 절차지향
- 절차지향은 대부분 코드가 main메소드에 한방에 정의 된다
- 흐름을 읽기는 좋지만 부분수정할때도 전체코드를 컴파일 해야 된다
------------------------------------------------------------------------------------------------------------------------------
- 객체지향은 여러 Class로 나누어 개발이 가능 함
- 필요한 Class만 수정해서 컴파일 할 수 있어 유지보수 측면에서 유리 함
-------------------------------------------------------------------------------------------------------------------------------
* C/C++과 Java의 컴파일 과정 차이점
-----------------------------------------------------------------------------------------------------------------------
- C코드는 [ Editor -> Source File --(컴파일)--> Object File --(링크)--> 실행 File -> 프로그램 실행 ] 순서로 진행
- 컴파일 : 프로그래밍언어로 작성한 원시코드파일을 기계어로 번역하여 목적코드파일에 저장
- 링크 : 목적코드 파일과 라이브러리 파일을 하나로 합처 실행파일 생성
-------------- -----------
- Java코드는 링크과정이 없음
- 컴파일러가 바로 바이트코드를 생성
개인적으로 C언어부터 하시는것을 추천드립니다.
파이썬, html, css, java script를 기본적인 부분은 써봤는데 다른 언어를 배워보고 싶어서요 자바랑 씨언어가 대표적인 프로그래밍 언어 같은데 둘의 차이점이 뭐고 어떤 언어를 공부하는게 좋을까요?
====>
한가지 언어에만 중점적으로 공부하시기 바랍니다
여러가지 언어를 문어발식으로 배우시면
안배우니만 못합니다
남들 좋다고 해서 이것저것 하지 마시고
최소한 한가지 개발언어로 무엇이 되었든 중급정도 실력이 될때까지 공부하시기 바랍니다
안녕하세요. 일단 답변부터 말씀드리면, 메모리를 개발자가 관리하냐 안하냐의 차이입니다.
파이썬/자바스크립트를 공부할 때 "가비지 컬렉터"라는 것을 들어보셨는지요? 자바의 경우도 가비지 컬렉터라는게 있어서 힙 영역에 더 이상 쓰지 않고 남아 있는 메모리의 경우 자동적으로 수거를 해갑니다. new 연산자로 메모리를 할당하고, 참조를 잃어버리면 가비지 컬렉터가 알아서 메로리를 수거해가는 형태이지요. 하지만 C의 경우에는 그런게 없어서 개발자가 일일이 다 메모리 할당/해제를 모두 해주셔야 합니다.
개인적으로 자바를 추천드립니다. C를 공부하면 포인터나 메모리 할당/해제를 본인이 직접하는 등 조금 더 기계에 가까운? 생각할 수 있는 힘이 길러지긴 합니다. 하지만 개발자 풀, 문서량이 심지어 개발을 본업으로 삼으시는 경우 취업 풀마저 압도적으로 자바가 높습니다.
최근 C를 잘 모르긴 합니다만, 제가 배울 당시(벌써 10년 가까이 됐군요..) 외부 의존성 관리며 자잘한 코드들도 관리해야 해서 매우 어려운 편에 속해서 추천드리지는 않습니다.
일단 프로그래밍을 배우셨으니 문법 대충 훑고, 애플리케이션이든 웹 서비스든 하나 만들어보시는 것을 추천드립니다. 자바나 스프링 프레임워크 혹은 안드로이드 관련 공식 문서를 토대로 공부하는 것을 추천드리나 꽤 번거롭다면 다음 책들을 추천드리겠습니다.
- 자바 기본서 https://coupa.ng/bRkQZS
- 웹 서비스를 만들고 싶다면 https://coupa.ng/bRkRa2, 안드로이드 애플리케이션을 만들고 싶다면 https://coupa.ng/bRkRfn
개인적으로 자바로 웹 서비스를 개발하는 것을 추천드립니다. 이상입니다.