Programming/Environment2013. 6. 5. 08:53

 이클립스(Eclipse)는 다양한 플랫폼에서 쓸 수 있으며, 자바를 비롯한 다양한 언어를 지원하는 프로그래밍 통합 개발 환경을 목적으로 시작하였으나, 현재는 OSGi를 도입하여, 범용 응용 소프트웨어 플랫폼으로 진화하였다. 자바로 작성되어 있으며, 자유 소프트웨어이지만 막강한 기능을 자랑한다. 2004년과 2005년 졸트 어워드(Jolt Award)를 수상했다.
 식(蝕)을 뜻하는 이클립스란 이름은 자바를 개발한 회사의 Sun이란 이름을 염두에 두었다는 말도 있어 2003년도에 썬 마이크로시스템즈는 이클립스 파운데이션에 참여하지 않았던 이유중의 하나였지만 2005년도에 열린 EclipseCon의 키노트에서 Lee Nackman은 그 목적은 원래 마이크로소프트와 비주얼 스튜디오 생태 시스템을 겨냥한 것이었다고 말했다. 원래 IBM의 WebSpheare Studio Application Developer란 이름으로 개발되었던 것인데, 엔진부분을 오픈소스로 공개한 것을 기반으로 지금의 이클립스로 발전해 왔다. 최근 버전은 4.2로, 각 목적별(C/C++ 개발자용, 자바 개발자용, 웹 개발자용 등등)의 다양한 배포판이 존재한다.
(참고 : http://ko.wikipedia.org/wiki/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4)

 

 위키백과에서 가져온 내용 그대로, 이클립스는 범용 응용 소프트웨어 플랫폼, 곧, 프로그래밍을 위한 개발 툴이라고 보면 된다. 편집기에서 코드를 만들고, 컴파일러를 통해 컴파일 해서, 실행파일을 만들어 실행을 하는 복잡한 과정을 툴에서 간단하게 해준다. 또한, 강력한 자동완성 기능은 프로그래밍을 할 때에, 타이핑 된 코드의 양 보다, 자동완성 기능(컨트롤+스페이스) 를 통해 만들어진 코드의 양이 많을 정도로 만들어준다. 프로그래밍 언어를 처음 익히는 사람이라면 편집기와 컴파일러를 이용하여 자동완성 기능 없이 스터디를 하는 것을 추천하며, 이 후, 생산성을 위해 이클립스를 사용하는 것을 권한다.

 

 Eclipse 홈페이지에 접속한다.(링크 : http://www.eclipse.org/) 아래의 페이지가 열리면, "Downloads" 를 선택한다.

 다음페이지(링크 : http://www.eclipse.org/downloads/) 에 접속되면, Eclipse IDE for Java EE Developers 의 우측에 있는 "Windows 32 Bit" 혹은 "Windows 64 Bit" 을 OS 에 맞게 선택한다.

 다음 페이지(링크 : http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR2/eclipse-jee-juno-SR2-win32.zip) 에 접속되면, 다운 받을 수 있는 링크를 선택한다.

 다음과 같이 이클립스의 다운이 시작된다. 바로 저장하거나, 옵션을 이용하여 원하는 위치에 다운받는다.

 다음과 같이 다운받은 파일(eclipse-jee-juno-SR2-win32.zip) 은 설치파일이 아닌 압축파일이다.

 위와 같이 eclipse 폴더 내에 eclipse 프로그램이 들어있으므로, 원하는 위치에 압축을 해제한다.

 압축을 해제한 폴더에서 이클립스(eclipse.exe) 를 실행한다.

 이클립스 로고가 뜨면서, 이클립스가 실행된다.(이클립스는 JDK 나 JRE 가 설치되어 있어야 실행이 가능하다. 링크 : JDK (Java Development Kit) 설치 1. 다운 / 설치, JDK (Java Development Kit) 설치 2. 환경변수 설정 / 확인)

 이클립스가 실행되면서 Workspace 곧, 이클립스를 통해 생성할 Project 관련 파일들이 저장될 곳을 물어본다. 기본적으로 사용자의 내 문서 폴더로 지정되는데, "Browse..." 를 선택하여 원하는 폴더를 지정한 후, "Use this as the default and do no ask again" 라디오 버튼을 선택하여 저장하면, 다음부터는 아래의 내용을 다시 묻지 않는다.

 아래와 같이 이클립스가 실행된다.

Posted by 개발자테오
Programming/Algorithm2013. 6. 4. 23:32

 합병 정렬 (Merge Sort) 은 데이터 영역을 잘게 쪼개어 정렬을 하는 분할 정복 (Divide and Conquer) 에 기반한 정렬 방법으로, 잘게 쪼갠 데이터들을 하나씩 합병하여 정렬하는 방법이다.(분할 정복과 같은 알고리즘 방법에 대한 이야기는 간단한 알고리즘 정리 이후에 다룰 예정이다.) 구현이 어렵고, 재귀 함수 활용시 추가적인 메모리가 필요하지만, 기초적인 정렬 방법과 비교하여 정렬 속도가 매우 빠르다.

 위의 그림과 같은 단계를 통해서 정렬이 진행된다. 먼저, 전체 데이터 영역을 최소 단위로 쪼갠다. 쪼갠 데이터들을 하나씩 합병할 때에, 정렬을 한다. 이 방식을 반복한다.

 

 합병 정렬을 다음과 같이 구현하였다.

 데이터 영역의 가운데 위치를 iTemp_CenterPosition 에 저장하고, 이를 기준으로 데이터 영역으로 두개로 나눈다. 두개의 영역을 합병 정렬하도록, 합병 정렬 함수를 재귀적으로 호출한다.(우선적으로 전체 데이터 영역이 최소 단위로 쪼개어진다.) 데이터 영역만큼의 메모리를 추가적으로 할당한뒤, 두개의 영역은 각각 정렬이 되어 있다고 가정하고, 순서대로 값을 비교하여, 합병, 정렬된 데이터 영역을 만든다. 이 방식을 반복한다. 이 정렬 사용하는 예제는 이전 글(링크 : [C] 거품 정렬 (Bubble Sort) 정의 / 코드 / 개선)에서 확인할 수 있다.

Posted by 개발자테오
Programming/Algorithm2013. 6. 4. 12:52

 선택 정렬 (Selection Sort) 는 정렬이 되지 않은 데이터 영역에서 최소값을 찾아 데이터 영역의 가장 앞으로 이동하는 방식을 반복하여 전체 데이터 영역을 정렬하는 방법이다. 데이터가 많아질수록 많은 시간이 걸리고, 다른 정렬과 비교하여 장점이 없어, 추천하기 어려운 정렬 방법이다.

 위의 그림과 같은 단계를 통해서 정렬이 진행된다. 정렬이 되지 않은 데이터 영역에서 최소값을 찾아 가장 앞으로 이동한다. 이동한 값을 제외한 정렬이 되지 않은 데이터 영역에서 최소값을 찾아 가장 앞으로 이동한다. 이 방식을 반복한다. 이 방식은 항상 같은 비교 횟수((n-1) + (n-2) +  (n-3) ... + 2 + 1 = n * (n-1)/2 = n(n-1)/2)를 가지게 된다.

 

 선택 정렬을 다음과 같이 구현하였다.

 정렬이 되지 않은 데이터 영역의 가장 앞 위치를 iTemp_Processing 에 저장하고, iTemp_Compare 가 증가하며 값을 비교하여 가장 작은 값의 위치를 iTemp_MinPosition 저장한다. 마지막으로 iTemp_MinPosition 의 값을 iTemp_Processing 으로 이동한다. 이 방식을 반복한다. 정렬할 때에 사용하는 Swap 함수, 이 정렬 사용하는 예제는 이전 글(링크 : [C] 거품 정렬 (Bubble Sort) 정의 / 코드 / 개선)에서 확인할 수 있다.

Posted by 개발자테오