안녕하세요 기형쌤입니다.

겨울이 왔지만 아직은 그래도 따듯한 날씨를 유지하는듯 합니다.

그래도 감기 걸리실 수 있으니 몸 따뜻하게 입고 다니셔야 해요!

또 마스크도 항상! 끼고 다니셔야하는거 알죠? 다들 조심하자구요.

 

오늘 제가 들고 온 이야기는 비주얼 베이직 이라는 언어 이야기입니다.

 

비주얼 베이직(Visual Basic .NET)은 무엇인가?

비주얼 베이직은 마이크로소프트사에서 만든 .NET Framework 기반의 프로그래밍 언어입니다.

Visual Basic .NET 이전에 VIsual Basic 6.0 이라는 프로그램이 있었지만

6.0에서 파생되었다기에는 차이점이 조금 많아 6.0 버전을 사용하던 사람들이 많이 넘어오지 않아

초기에는 사용자의 수가 많이 적었습니다.

 

VB .NET은 객체 지향 언어라서 절차 지향인

VB 6.0 소스 코드가 VB.NET과 호환되지 않아 아예 처음부터 코딩해야 하는 번거로움이 있었습니다.

마이크로소프트도 이 문제를 몰랐던 건 아니었기에 모체 프로그램인 Visual Studio 2008까지는

VB 6.0 변환기를 포함했었으나 완전히 1:1로 변환할 수 있는 것도 아니었고

Visual Studio 2010부터는 변환기가 삭제되었습니다.

 

그러나 VB 6.0 지원이 중단이 되었고 최신 운영체제로 가면서

동작하지 않는 기능이 많아졌습니다. 그리고 강력해진 새로운 확장 라이브러리 및 기본 컨트롤도 개선되는 등

상당한 발전을 보여 많은 사용자들이 VB.NET으로 넘어오는 계기가 되었습니다.

 

.NET Framework 기반이지만 C#이라는

그야말로 .NET Framework를 위하여 새롭게 만들어진 언어가 존재하기 때문에

C#에 비해 인지도는 떨어지는편입니다.

그리고 VB.NET과 C#은 같은 .NET Framework 라이브러리를 사용하기 때문에

사실상 문법과 일부 런타임 라이브러리를 제외하면 기능적으로는 큰 차이가 없기도 합니다.

 

Visual Basic .NET의 특징?

VB.NET에서는 My namespace라는 기능을 제공하고 있습니다.

7가지의 기능들이 있는데

 

My.Computer : 당신의 컴퓨터에 대한 이름, 메모리, 시간, 네트워크 등의 정보를 제공

My.Application : 현재 응용프로그램의 실행경로, 이름이나 버전, 그리고 환경 변수들을 제공

My.User : 윈도우에 해당되어 있는 이름 같은 것을 가져옴. 또, 사용자가 특정 역할에 속하는지도 확인 가능

My.Forms : 프로젝트에 있는 모든 폼의 참조를 제공

My.WebServices : 웹 서비스에서 사용되는 프록시 서버에 대한 접근 권한을 얻는게 가능

My.Settings : 읽거나 저장하는 응용 프로그램 구성 설정이 가능

My.Resources : 현재 응용프로그램에서 사용중인 리소스 정보를 읽을 수 있음

 

이러한 기능들을 사용하실 수 있습니다.

또한 이전의 문법들에서 좀 더 가독성이 좋은 언어체계를 가지고 있기도 합니다.

ex) IsNot 연산자, WithEvent 선언자 등

 

또한 C#과 비슷하게 WPF의 프로젝트를 만들어서 활용이 가능합니다.

 

Visual Basic .NET과 C#

C# 언어는 .NET을 위해 만들어진 언어라고 봐도 무방하다는 평을 들을정도로

.NET과의 호환이 좋습니다. 물론 Visual Basic .NET 또한 .NET 프레임워크 기반이기에

.NET과의 호환성은 걱정하실 필요가 없습니다.

 

C#과 VB.NET은 같은 라이브러리를 사용합니다.

이는 C#과 VB.NET의 코드를 완벽하게 변환 가능하다는 것을 내포하는데

이를 이용하여 다양한 프로그래밍 방식을 진행해볼 수 있습니다.

 

그래서 .NET Core 환경에서의 개발은 프로페셔널하고 편리한 C#, 배우기 쉽고 간단하지만 강력한 Visual Basic.NET,

아직은 언급하지 않았었지만 연산에 특화된 F#, 이 세가지 언어로, 리눅스, 맥OS 개발을 할 수 있다는 말입니다.

그리고 웹 애플리케이션 개발용으로 ASP.NET Core를 사용 할 수 있습니다.

또한 .NET Standard를 통해 .NET Framework, Xamarin, Mono에도 호환이 됩니다.

 

단지 윈도우 운영체제 기반인 프로그램 언어인지라 윈도우 환경을 벗어나면 호환이 안된다는 단점 또한 있습니다.

윈도우 외의 운영체제에서도 실행할 수 있도록 하는 프로젝트이지만,

컴파일 시 결과물은 PE DLL 파일로 나오게 됩니다.

윈도우 비주얼 스튜디오에서 컴파일 시 EXE 파일도 나오지만,

실제 컴파일 결과물인 DLL 파일을 로드하여 실행하는 것에 불과하기 때문에

DLL 파일이 없으면 당연히 실행되지 않습니다.

다른 운영체제들은 터미널로 .NET Core 런타임을 설치한 후

dotnet (실행할 닷넷 DLL 파일)을 입력하고 실행하면 실행이 가능합니다.

 

배워봅시다!

프로그래밍 언어를 알아야 하는 것도 가짓수가 너무 많죠?

어디서 배워야 할까요?

 

현재 국비지원 받으시며 무료로 배우 실 수 있는 과정이 있습니다.

관심 있으시다면 아래의 네임카드를 클릭해주시면

바로 무료 상담 가능합니다!!

 

네임카드를 클릭해주세요!!

안녕하세요! 기형쌤입니다.

날이 많이 흐려졌네요. 이제 눈이 오고 본격적으로 겨울이 시작되려나봅니다.

다들 감기 걸리지 않게 조심하셔요!

 

오늘 들고 온 이야기는 C++에 대한 이야기입니다.

 

C? C++? 둘이 뭐가 다른거지?

C랑 비슷한거 아닌가? C의 심화과정?

프로그래밍에 이제 막 입문하시려는 분들이라면 이런 생각들을 하실 수 있을 것 같습니다.

 

C++은 확실히 C를 부분집합으로서 가지고 있습니다.

다만 프로그래밍의 방향이 C와는 다릅니다.

C++은 객체 지향 및 일반화 프로그래밍과 같은

멀티 패러다임을 지원하는 프로그래밍 언어입니다.

 

C를 부분집합으로 가지고 있다는 말은

C언어의 문법과 기능을 모두 사용할 수 있기 때문이죠.

1979년에 C언어에서 직접적으로 파생된

C with Classes라는 이름의 언어로 시작되었다가, 1983년에 지금의 이름을 갖게 되었습니다.

C++의 특징

비아르네 스트로우스트루프 라는 사람이 C언어를 바탕으로 만든 언어입니다.

C 계열 언어에서 "++"라는 것은 1을 더해서 원래 변수에 대입하라는 뜻입니다.

C는 B 언어를 계승한다는 의미에서 C가 되었는데 왜 C++이 D가 아니라 C++이 된 이유는

C 언어를 거의 그대로 두고 필요한 만큼만 향상시켰기 때문입니다.

그렇기 때문에 C에서 가능한 것들이 C++에서도 가능한 것이지요.

 

C++는 프로그래머의 자유도가 높은 언어로써, 객체 지향이나 절차 지향 등의 설계에 제한을 두지 않습니다.

다만, 객체지향과 일반화 프로그래밍을 사실상 거의 주된 패턴으로 사용하기 때문에

객체지향 언어에 가깝게 여겨집니다.

 

한국에서 컴퓨터공학과를 다닐 경우 배울 수 있는 프로그래밍 언어 3개 중에 속합니다.

그러나 실상 C++11 이후의 모던 C++ 기능을 가르쳐주는 곳이 매우 드물어서

C++의 객체 지향만 조금 배울 수 있게 됩니다.

C++의 객체 지향은 다른 언어에 비해서 좀 더 복잡합니다.

제대로 다루기 위해서는 별도의 서적을 참고하는 것이 권장되며,

실제 프로젝트의 코드에 대해 탐구하고 경험해보는 것 또한 권장됩니다.

 

C와의 차이점?

그렇다면 C와는 어떤 차이가 있는걸까요?

C++의 개발이 C언어를 기반으로 이루어졌기 때문에

대부분의 C 프로그램은 C++ 컴파일러에서도 문제없이 컴파일됩니다.

 

초기의 C++은 C++의 언어로 프로그래밍을 한 코드를 C로 변환하고

그것을 C로 컴파일 하는 방식을 채택하여 사용했을 정도입니다.

물론 C를 기반으로 만들어졌기 때문에 그랬던거지만 말입니다.

다만, C가 항상 C++의 부분집합이었던 것은 아니라서 공통적인 부분에서 몇몇 차이점이 있으며,

순수 C 소스 코드를 C++로 컴파일 할 때 문제의 여지가 생길 가능성이 있습니다.

 

C++은 C와 프로그래밍 패러다임이 크게 다릅니다.

그래서 C로 작성된 프로그램에서 C++ 방식으로 코딩하려면

해당 코드에서 C++에 새로 도입된 것을 추가하는 게 아니라,

설계부터 시작해서 완전히 새로 해야 하는 경우가 많습니다.

 

이유는 C++의 객체지향이 다른 객체지향 언어들에 비해

이해하기가 조금 난해한 개념이기도 하고

C++의 객체지향은 C언어를 하위 요소로서 유지하면서

여러가지 문법적인 요소를 추가해야하기 때문에

신경쓸 부분이 많아집니다.

그래서 초심자분들의 경우 C와 C++은 다른 언어라고 생각하고 접근하셔서 공부하는게 좋습니다.

 

C++은 C에대한 이해와 객체지향 프로그래밍의 이해가 모두 필요하므로

C를 배우고, Java를 배우신 후 C++에 입문하시게 된다면

공부가 편하실거라 생각됩니다.

 

다만 C를 알고 있다고 C++를 쉽게 할 수 있는 것은 아닙니다.

두 언어는 추구하는 설계 구조가 상당히 다르기 때문이인데요,

C언어는 절차 지향이지만

C++는 절차 지향, 객체 지향, 일반화 프로그래밍, 함수형 프로그래밍을 모두 지원하는 언어입니다.

그래서 C언어를 알고 있는 사람이 C++ 초보자용 교재를 1권 끝내고 프로그램을 만들어 보라고 하면

대부분 C 방식에서 벗어나지 못하게 됩니다.

C++ 방식을 잘 활용하려면 STL까지 배운 다음

자료구조와 스트림, 템플릿 정도는 쓸 수 있어야 합니다.

C++이 C언어의 변형버전이라는 얘기는 어느정도는 맞는 이야기긴 합니다.

C++의 특

C++는 객체 지향 프로그래밍을 지원하지만,

C++의 객체지향은 다른 객체지향 언어에서와는 성격이 조금 다릅니다.

대부분의 객체지향 언어에서는 많은 부분을 런타임에 처리하며 메모리를 자동으로 관리하는 반면,

C++에서는 최대한 많은 것을 컴파일 타임에 처리하는 것을 지향하며

메모리 등을 프로그래머가 직접 관리하게 하기 때문에 전반적인 클래스 디자인 자체가 상당한 차이를 보이게 됩니다.

 

Java 등의 다른 객체지향 언어에서와 같은 방식으로 C++ 클래스를 디자인하면

거의 틀림없이 컴파일이 제대로 안 되거나 메모리 문제가 발생하게 됩니다.

그래서 Java에서 막 C++로 입문한 학생이 프로그램을 만든다면 초반에는

메모리가 새는 프로그램을 만들게될 확률이 상당히 높습니다.

 

반면 C++ 스타일로 다른 객체지향 언어에서 프로그래밍을 하는 경우는

특별히 안 될 것은 없지만, 해당 언어의 스타일로 작성한 코드에 비해

시간이 많이 걸리고 너저분해 보이며 클래스 구조가 경직되어 수정하기 어려워집니다.

 

C++에서는 템플릿을 이용한 일반화 프로그래밍(Generic Programming)이 매우 폭넓게 사용됩니다.

특히 C++11을 시작으로 하는 모던 C++는 일반화 프로그래밍을 빼고 이야기하는 것이 불가능할 정도입니다.

 

일반화 프로그래밍의 결과물으로는 C++ 표준 라이브러리의 일부분으로 포함된 컨테이너, STL 같은 것들이 있으므로,

C++ 표준 라이브러리를 사용하는 순간 일반화 프로그래밍의 도움을 받는 것입니다.

따라서 '나는 C++을 사용하지만 템플릿을 이용한 일반화 프로그래밍은 어려우니까 패스하겠다'는 말은

애초에 성립하지 않는 말이지요.

중급 이하 개발자는 이런 결과물을 일상적으로 쉽게 가져다 쓰면 되고, 직접 만들어 쓸 필요는 없습니다.

이는 중급 개발자 정도로는 템플릿을 사용한 일반화 프로그래밍 기법을 정확하게 적용하는 것이 무척 까다롭고,

디버깅할 때 이해 불가능한 컴파일러 메세지를 받게 되는 경우가 많아서 발견된 오류를 수정하기도 어렵기 때문입니다.

이런 이유로 C++ 학습 초반에 템플릿 프로그래밍을 직접 하는 것을 피하고

기껏해야 컨테이너 클래스만 사용하는 습관이 들다 보니,

C++은 객체지향 언어이고 STL이라는 템플릿 라이브러리를 덤으로 쓸 수 있는 정도라는

오해가 널리 퍼진 것이라 생각이 됩니다.

하지만, 특수 목적의 컨테이너를 설계하거나 범용 라이브러리를 설계하는 수준의

고급 개발자가 되려면 템플릿을 사용한 일반화 프로그래밍을 능숙히 할 줄 알아야합니다.

 

C++을 배워보자

그렇다면 C++을 배우려면 어떻게 해야할까요?

사실 C++은 프로그래밍 언어들 중에서도 상당한 난이도를 자랑하는 언어입니다.

일단 기본적으로 배워야할 양이 많다는 점과 활용할 수 있는 기능들이나 특성들이 많은만큼

잘 활용하는 법 또한 어렵습니다.

사실 이전에 설명드렸던 C나 Java, Python같은 경우 입문을 하시는 경우라면

혼자 시작을 하셨다가 난이도가 올라가고, 배워야할 영역이 늘어나면서

학원을 찾는 경우가 많지만 C++같은 경우는

애초에 잘 배우시는게 중요하다고 생각합니다.

 

기초가 되어야하는 언어들을 배워야 하는 것도 있으니

하나를 알더라도 제대로 아는것이 중요합니다.

 

프로그래밍을 배우고싶고 전문가가 되어보고싶다면

하단의 이미지를 클릭해주세요. 상담은 무료이니

부담없이 말 걸어주시면 친절하게 원하시는 방향으로 이끌어드리겠습니다.

클릭해주시면 바로 상담 가능합니다.

안녕하세요 기형쌤입니다.

이제 날씨는 완전 겨울이 되어버렸네요.

위험한 시국에 감기걸리시면 위험하니 다들 옷 따듯하게 입으셔야해요...!

 

오늘 들고 온 이야기는 C언어에 관해서입니다.

프로그래머를 꿈꾸는 사람이라면 가장 처음 고민하는것이

C언어를 배울까? 와 그래서 C언어는 도대체 뭐지?

하는 고민일 것 같은데요

 

오늘은 C언어에 대한 기본적인 정보를 공유해드리려고 합니다.

C언어는 무엇일까요?

C언어는 1972년 벨 연구소의 데니스 리치 라는 사람이 만든 프로그래밍 언어입니다.

명칭은 그냥 C 이지만 우리나라에서는 C 언어 라는 명칭으로 주로 불립니다.

수많은 프로그래밍 언어가 생겨났지만 여전히 명실상부 가장 많이 쓰이는 프로그래밍 언어이기도 합니다.

 

C언어는 탄생 어원으로 들어가면 ALGOL이라는 언어에서부터 시작되었다고 할 수 있습니다.

ALGOrithemic Language의 줄임말인데 말 그대로 알고리즘 연구 개발에 사용되던 언어였습니다.

이것을 더 다양한 용도로 사용하기 위해 개발하고 개발하여 나온 언어가 Basic CPL이라는 언어였고

이 언어가 미국으로 건너오며 통칭 B라는 언어로 개발되어 불리웠습니다.

 

그리고 데니스 리치가 PDP-11이라는 컴퓨터를 제어하기 위해 B 언어의 특징을 물려받은

C 언어를 만들게 되었습니다.

 

C언어는 효율성을 중시하여 만들어진 언어입니다.

현재는 Java라던지 Python같은 쉽고 편한 언어들이 생겨났지만

당시의 프로그래밍 환경에서는 그렇지 못 했습니다.

C 언어 이전에도 고수준 언어들은 많이 존재했지만,

대부분 특정 어플리케이션 영역을 대상으로 하거나,

컴퓨터 과학 이론을 입증하기 위해 만들어진 실험실 언어들이었습니다.

 

당시에는 운영체제를 어셈블리어가 아닌 언어로 작성한다는 것은 금기라 말 할 정도로

시도조차 하면 안되는 것 이라는 인식이 있었습니다.

그러나 C언어는 그러한 금기를 깨는 엄청난 효율성을 보여주었고 금기를 정면으로 깨버렸죠.

그리고 아이러니 하게도 현대에 들어서 운영체제는 C언어가 아니면 안된다는 새로운 금기가 생겨버렸습니다.

그동안 컴퓨터의 평균 성능이 놀랍게 발전했고,

운영체제 역시 초기와는 비교할 수 없을 정도로 커져 효율성이 중요해졌기 때문입니다.

 

C는 처음부터 어셈블리어와 비교할만한 효율을 가지게 저수준으로 설계되었습니다.

개발 당시의 고수준 언어들은 원래는 프로그램 코드가 업무 서류로도 사용이 가능하도록 설계가 돼있기도 하여

문법들이 굉장히 불친절했습니다.

C는 이런 당대 고수준 언어들에 비해 매우 이해가 가기 쉬운 문법을 사용하여 초보자가 쉽게 접근할 수 있었죠.

 

C언어 자체는 지원되는 기능이 적고 문법이 간단합니다.

객체 지향 프로그래밍(OOP)이나 코루틴, 클로저, 메타 프로그래밍 등

고수준의 기능들을 지원하는 언어들과 비교하면 특히나 그렇습니다.

550쪽 정도밖에 안 되는 C언어 표준에서도 순수 문법 부분은 200쪽 정도밖에 안 되며

나머지는 다 라이브러리 관련 부분이고, 함수의 개수로 치면 고작해야 150개 근처밖에 되지 않습니다.

수천 개나 되는 기본 라이브러리를 지원하는 다른 언어들과 비교하면 정말 작고 간단하죠?

초반의 포인터 장벽만 넘는다면 문법 자체를 마스터하고

간단한 커맨드라인 프로그래밍을 할 수 있는 수준까지는 엄청 쉽게 진행하실 수 있습니다.

 

하지만 기능이 적다고 결코 쉬운 건 아니겠죠.

프로그래밍을 할 때 지원하는 기능이 적다고 그 적은 기능만 쓸 수는 없으니까요.

따라서 기본 라이브러리에서 지원하지 않는 기능은 결국 프로그래머가 직접 구현해서 써야 하는데,

1970년대 이후 프로그래밍 언어계에서 오늘날 영어와 같은 위치를 차지하고 있던 덕분에

그런 기능의 구현이나 최적화에 관한 많은 트릭들이 존재하고 이것을 얼마나 많이 알고있는가가

사실 C언어의 핵심이 됩니다.

C언어의 장점?

사람들이 많이 사용하는데에는 이유가 있겠죠?

 

C로 짜여진 코드는 속도가 빠르고 바이너리 크기도 작아 속도가 다른 무엇보다도 중요한 임베디드 혹은 모바일 계열,

또는 시스템 프로그래밍 등에서 주로 사용됩니다.

프로그램의 규모가 커질경우 C언어로 작성해서 얻을 수 있는 파일의 규모는 Python보다 훨씬 작기까지 하죠.

과거에는 메모리 가격이 비쌌던 만큼 메모리를 적게 잡아먹는 프로그래밍 기법이 선호했으며,

화성 탐사선도 이러한 점을 반영하여 C언어로 만든 프로그램을 사용했습니다.

 

이러저러한 고급 언어들이 나오는 상황에서도 아직 저수준의 제어를 위해 C가 필요한 경우도 많습니다.

예를 들어, OS를 만든다면 아무리 생산성을 고려한다고 해도

시스템 제어 측면과 OS의 기능들 위에서 돌아가는 어플리케이션 때문에라도 속도라는 면은 중요하고

그렇다고 속도를 높이기 위해 어셈블리어나 기계어로만 OS를 짜기에는 생산성이 매우 낮아지기 때문에

결국 돌고돌아 C를 쓰게되죠.

 

현시점에서 C의 가장 큰 의의는 사실상 모든 아키텍쳐와 운영체제에서 지원하는 언어라는 점입니다.

일반적으로 C++는 지원하지 않더라도 C는 지원하는게 보통이 되었습니다.

워낙 널리 쓰이다보니 CPU 디자이너들이 가장 먼저 하는 일은 C언어를 instruction set으로 포팅하는 것이

기본적인 상식이 되었고, 심지어 C언어 설계 자체가 CPU 인스트럭션 설계에 영향을 주는 단계에 이르렀습니다.

그런 관계로 이식성이 중요한 경우는 대개 C를 사용합니다.

 

고수준의 언어들이 많이 나오고있고 이렇게 이미 한물 간 언어처럼 보이지만,

여전히 '프로그래밍' 입문으로는 C를 추천하는 추세입니다.

 

C라는 언어는 매우 심플하면서도 배우는 과정중에 소프트웨어 구성의 최소단위인 bit부터 시작해서

메모리 관리, 그리고 고급 개념인 OOP와 비슷한 정도까지 흉내내면서 소프트웨어 전반을 훑게 되고,

C 를 배우는 과정중에 나오는 과제들은 커맨드라인에서 이미 쓰이고있는 기본적인 툴들을

reinvent the wheel하는식의 과제들이 많기때문에 바닥부터 훑어가며 견문을 넓히는데 좋습니다.

 

로우레벨부터 단계를 높여가며 관찰을 해보면,

머신코드는 머신에 따라 달라지고, 어셈블리어도 Intel/AT&T 등 문법에 따라 몇가지 버전이 존재하지만

결국 그 위쪽에서 C 언어로 대통합이 이루어지게 됩니다.

 

그리고 C 언어 위 쪽으로 향하게 되면  C++/Java/C#/Objective-C/Python 등으로 다양하게 갈라지죠.

결국 C 언어란 것은 과거와 현재를 잇는 중요한 꼭짓점이 되는 셈입니다.

C 언어가 사용되는 분야는?

C 언어가 사용되는 대표적인 분야는

기본적으로 운영체제 및 디바이스 드라이버 분야입니다.

윈도우, 리눅스, 유닉스 커널의 핵심부는 모두 C로 짜여져있습니다.

 

이외에는 마이크로 컨트롤러, 임베디드 시스템, 암호학 라이브러리, 프로그래밍 언어 인터프리터(CPython 등),

웹서버 등등의 기타 빠른 계산속도가 필요한 프로그램이나 라이브러리들에 사용됩니다.

그렇다면 C언어는 어디서 배우는게 좋을까?

C언어는 사실 쉬운언어이기에 혼자 독학하는 학생분들도 많습니다.

다만 기초를 탄탄히 잘 다져놓는것이 전문가가 되어가는 과정이라고 생각 합니다.

기초를 탄탄하게 쌓으시려면 좋은 곳에서 좋은 선생님께 배우는게

결국은 실력을 빠르고 확실하게 키우는 방법입니다.

 

IT 전문가가 되고싶으시다면 연락 주세요.

언제든지 무료 상담 해드리겠습니다.

 

아래의 네임카드를 클릭

해주시면 상담 진행 바로 가능합니다!

네임카드를 클릭해주세요!!

안녕하세요! 기형쌤입니다. 오늘 제가 가져 온 이야기는

JAVA에 대한 것입니다.

 

일단 JAVA는 무엇일까요?

JAVA는 객체지향 프로그래밍 언어입니다.

말이 조금 어렵죠? 객체지향 프로그래밍 언어란 프로그램의

설계 방법론이자 개념의 일종입니다.

프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라,

프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식입니다.

객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음으로 보시면 됩니다.

JAVA는 크게 4 종류로 나뉩니다.

1. Java SE

 JAVA SE는 대부분의 사람들이 가장 많이 접하는 말하자면 표준 에디션입니다.

 JAVA의 핵심적인 API와 기능들을 제공하고 있습니다.

 

2. Jakarta EE

 이전에는 JAVA EE라고 불리웠고 기업등지에서 운영하는 서버 페이지에 특화되어 있습니다.

 웹 애플리케이션 서버에 관련된 기술들이 포함되어 있습니다.

 

3. JAVA ME

 PDA나 셋톱박스, 센서 등의 임베디드 시스템 환경에 특화되어있는 에디션입니다.

임베디드 시스템이란 세탁기나 냉장고 등 가전제품에 들어가는 단일목적 컴퓨터라고 생각하시면 좋습니다.

 

4. JAVA FX

데스크톱 애플리케이션 개발 및 배포를 위한 에디션입니다. 크로스플랫폼 이식과 GUI 라이브러리를 제공합니다.

C, C++과의 차이점?

C 언어는 포인터 등을 활용한 저수준 시스템 프로그래밍(리눅스 커널과 하드웨어 프로그래밍)에 강점을 가집니다.

C++은 C의 그러한 장점을 거의 그대로 가져오면서 객체 지향이나 일반화 프로그래밍과 같은 멀티 패러다임을 지원하고자 하는 시도(3D게임, 그래픽 프로그래밍)에서 만들어졌습니다.

이렇게 고수준과 저수준 개념 모두를 포함하려 하다보니 점차 복잡해졌고

게다가 최신 프로그래밍 환경을 지원하기 위해 지속적으로 개정되고 있는 모던 C++는 변화의 폭이 커서, 새로운 기능을 전부 제대로 다룰 줄 아는 프로그래머는 비교적 적다는 평이 널리 받아들여지고 있습니다.

그에 비해 JAVA는 C++의 방향성과는 다르게 안정성에 포인트를 맞춰 개발되어 왔습니다.

JAVA는 고수준의 객체지향 부분을 잘 구현하는 것에 집중하는 방향으로 언어가 복잡해지는 것을 방지하고 있습니다.

 

JAVA와 C,C++의 공통점은 같은 C계열 프로그래밍 언어이기 때문에 비슷한 문법 구조를 가지고 있다는 것에 있습니다.

하지만 그러면서도 JAVA가 C,C++보다 훨씬 널리쓰이는 분야가 많이 존재합니다.

대표적인 예: 안드로이드 앱이라던지 웹 애플리케이션

 

하지만 안정성을 중요시하는 언어이기 때문에 속도가 느릴 수 있습니다.

그렇게 속도가 중요한 부분들은 따로 떼어서 C,C++언어로 따로 개발하기도 합니다.

JAVA의 특징!

Java의 가장 큰 특징은 플랫폼에 독립적인 언어라는 점 입니다.

C나 C++같은 경우 소스 코드를 직접 컴파일하여 링크하는 것과는 다르게

Java는 .class 파일을 생성하고 이 파일의 바이트 코드를 읽은 뒤 기계어로 바꾸어 실행하는 것은 Java Virtual Machine

통칭 JVM입니다. 이 방식이 좋은 이유는 윈도우 환경에서 Java를 이용해 빌드한 프로그램을

리눅스나 맥OS에 적합한 JVM만 깔려있다면 바로 실행이 가능합니다.

 

JAVA의 다른 특징 중 하나는 범용성입니다.

JVM 기반의 프로젝트에서는 하나의 언어만을 고집하지 않습니다.

함수형 언어가 유리(최근 유행하는 빅데이터 등)한 부분은 Scala로 작업하며, 견고한 인터페이스와 대규모 통합이 필요한 곳은 Java로 작업한 뒤 이들을 서로 합쳐서 운영하는 게 가능합니다.

실제 현업에서는 Java를 비롯한 여러가지 인기 언어가 자주 사용되므로 장단점을 잘 알아두는게 좋습니다.

다른 언어에 대해 맹목적으로 찬양/비판하는 태도보다는 환경이나 주어진 작업의 특성에 따라 적합한 언어를 선택할 수 있는 노하우가 있다면 좋은 개발자로서 이름을 날리실 수 있을 것입니다.

JAVA는 왜 쓰는걸까요?

JAVA는 왜 아직도 가장 많이 쓰이는 언어일까요?

기본적으로 JAVA는 수많은 개발자와 레퍼런스를 가지고 있습니다.

오래된 언어이고 범용성이 뛰어난 언어이다보니 수많은 JAVA개발자들이 있고

시대에 맞춰 지속적인 개발이 이뤄지고, 그에따른 수많은 레퍼런스들을 갖고있습니다.

 

또한 JAVA는 비교적 높은 생산성을 가지고 있습니다.

IT는 점차 발전해나가고 있고, 무거운 프로그램들이 많아짐에 따라 복잡한 C,C++을 이용한

프로그래밍이 사실상 너무 힘들어졌습니다. 언어 자체가 복잡할 뿐 아니라

관리 또한 힘들어서 프로그램이 커지면 커질수록 작업이 힘들어지게 되었습니다.

하지만 JAVA는 C,C++과 문법적으로도 비슷하면서도 객체 지향을 적극적으로 활용,

호황성까지 좋은 언어이기 때문에 등장하자마자 순식간에 대세가 되었습니다.

 

위에서도 지속적으로 말했다시피 JAVA의 큰 장점 중 하나는 안정성입니다.

메모리를 대용량으로 사용하는 프로그램에서 상대적으로 C/C++보다 안정적인 모습을 보일 때도 있는데, 이런 경우에 JVM이 시작될 때 필요한 메모리를 먼저 통으로 잡아버립니다.

메모리를 자주 할당하거나 해제하는 C/C++ 프로그램은 오히려 Java보다 성능이 느릴 수 있습니다.

JAVA 프로그래머가 되려면?

범용성이 넓다는 것은 그만큼 알아야 기본적인 지식의 베이스도 넓다는 말입니다.

그리고 기초적인 지식은 지식을 쌓아 올리고 실력이 높아지는데에

아주 중요한 역할을 하죠.

 

기초부터 차근차근 잘 다져나가셔야 합니다.

기초부터 전문가까지 차근차근 공부하실 수 있습니다.

그리고 지금이라면 국비지원 받으시면서 무료로 진행하실 수 있습니다.

언제나 연락주세요. 기다리고 있겠습니다.

하단의 이미지를 눌러주세요! 바로 상담 가능합니다.

이미지를 누르시면 상담 진행 바로 가능합니다.

 

+ Recent posts