2011/09/18 - [컴퓨터] - Windows 8 Preview 설치후 간단 평

오늘은 Windows 8 Preview 설치 후 여러번 사용하면서 개발툴도 한번 실행해보았습니다.

Windows 8 Preview 첫 실행후 배경화면.

사용자 아이콘

Windows 8 Preview Metro UI로 부팅한 모습입니다. Desktop으로 옮길시 모습

Visual Studio 11 Express for Windows Developer Preview

Rebooting (Restarting)



Visual Studio 2011 도 한번 사용해보았습니다.

windows phone 7개발하는 것과 비슷한 느낌을 가지는 Visual Studio를 볼때... 응용 어플리케이션을 만드는 프로그래머의 진입장벽이 낮아지겠다는 생각을 하였습니다.

MFC보단  UI를 구성하는 XML의 확장인 XAML과 C++/C#을 이용해서 프로그래밍을 장려하듯 MFC(Microsoft Foundation Class Library)개발이 안보입니다. 원래 Visual Studio의  Expression Version 딱지 붙은 프로그램은 MFC관련 한 부분이 제외된 채 배포가 되었으니 MFC가 빠진다는 것은 억측이고, C#, .NET으로 개발을 장려하려는 것이 눈에 보이더군요. 

제대로 된 프로그래머가 되러면 역시 Kernel쪽 개발 또는 많은 아이디어를 가지는 창의적인 프로그래머가 되야 된다는생각?

Metro UI가 정말 우아한 화면을 구현하였지만, Desktop으로 쓰기엔 아깝고, Tablet과 Smartphone에서 주로 쓸법하다는 걸 느끼군요.


아직까진 Windows 8 Preview Version의 버그가 눈에 띄게 많이 보여도, M$사의 개발 계획(Milestone)이 Desktop+Tablet+Mobile 3가지를 융합하겠다는 목표가 보입니다!


ps. Google의 Android Tablet버전인 Honeycomb은 어떻게 진화될지, Chrome OS는?, Apple OSX(맥북 등의 맥계열)와 iOS(iPhone&iPad) 와의 진화를 보며 Windows의 진화는 어디까지 갈지 궁금해집니다!

Buy me a coffeeBuy me a coffee

Coffeenix라는 사이트에서 여러 글들을 보다 흥미로운 기사를 보게 되었습니다.

Computer World에서 나온 기사인 Unix turns 40: The past, present and future of a revolutionary OS 이였습니다.




지금 보시는 것 같이 UNIX는 1969년도에 개발되어서 2009년도에 40주년 기념기사(Unix turns 40: The past, present and future of a revolutionary OS )까지 나온 오래된 운영체제입니다.

1969년 8월 Ken Thompson, Dennis Ritchie가 AT&T의 Bell 연구소에서 UNIX를 개발한 후 점차 발전에 발전을 거듭하게 되었습니다. UNIX가 개발되면서 C언어도 1974년도에 Ken Thompson, Dennis Ritchie에 의해 개발되었기 때문에 C언어를 제대로 이해하고 쓰려면 UNIX에 대한 개념이 있어야 하는 구석이 있지요.

(Windows에서 왜 써야하는지에 대한 개념들은 UNIX계열 OS의 시스템 콜 관련 공부하다 보면 이해가 금방되더군요. UNIX의 잔재랄까?) 

이후 시간이 지나 UNIX는 메인프레임, 워크스테이션등 대형컴퓨터에서 주로 사용하던 OS가 되었습니다. 일반적으로 데스크탑, 랩탑 으로 부르는 소형컴퓨터(x86기반)에선 OS를 MS사의 DOS, Windows로 사용하게 되었구요.


시간이 1985년, 스티브 잡스는 본인이 사장으로 있던 Apple사에서 쫒겨나게 됩니다. 그 후에 사람들을 규합하여 1985년도엔 NeXT사를 차려 NEXTSTEP이란 OS를 가지고 워크스테이션(NeXTcube, NeXTstation) 컴퓨터 장사를 했었습니다.


The World's First Web Server
The World's First Web Server by sbisson 저작자 표시비영리변경 금지

위의 사진은 세계 최초의 웹서버입니다. 1991년 Tim-Berners Lee가 NeXT Workstation으로 세계 최초의 웹서버를 만들었습니다.


어느덧 1990년, 핀란드에선 한명의 괴짜가 등장하게 됩니다. Linus Torvalds라는 핀란드 대학원생이 소형컴퓨터(x86 기반)인 데스크탑, 랩탑에 UNIX와 비슷한 시스템을 Linux라는 OS를 만들면서 Open Source로 GPL공개를 선언하고, 돈 받고 소프트웨어를 팔기보단 소스코드를 아예 공개해버리게 됩니다.


Linus Torvalds
Linus Torvalds by theducks 저작자 표시동일조건 변경허락


(참고로 Torvalds는 Linux를 만들기 전, 네덜란드의 Tanenbaum교수가 만든 UNIX 클론의 MINIX를 가지고 OS분석을 하다 Linux OS를 만들었다고 합니다.)

GPL공개를 하여 소스코드가 전부 공개되어서인지 소형컴퓨터(x86 기반)인 데스크탑, 랩탑에 DOS, Windows를 사용하는게 지루했던 Geek들이 Linux를 설치하면서 커뮤티니를 만들게 되고, 점차 쓸만한 운영체제가 되게 되었습니다.


위의 NeXTSTEP, Linux같은 OS를 설명하면서 왜 스마트폰과 연관이 있는가?? 쌩뚱맞는 글을 쓰고 있다고 생각하시면 오산. 

제가 소개를 하였던 NeXTSTEP은 1997년 스티브 잡스가 Apple사로 다시 컴백을 하면서 Mac OS X 10의 기반이 되었습니다. 스티브 잡스가 Apple사로 다시 돌아오면서 1997년 10억 달러의 적자를 낸 애플사를 1년 만에 4억 달러 가까운 흑자를 내게 만드는 기염을 토하게 되었죠.

그 후 스티븐 잡스는 컴퓨터시장뿐만 아니라  OSX10기반으로된 iPod라는 MP3가 나왔고 iPhone이 출시되고 iPad까지 출시가 됩니다.


wwdc-keynote_125
wwdc-keynote_125 by Dekuwa 저작자 표시비영리동일조건 변경허락


Linux는 GPL로 공개가 된후, 점차 소형컴퓨터(X86기반)뿐만 아니라 임베디드 장비에도 차츰 많이 들어가게 되었습니다.

그러다 2005년도, 구글은 Android사를 인수하게 됩니다. Android사는 안드로이드 OS를 Linux기반으로 만들던 회사였는데 구글이 인수함으로 모바일 OS를 구글이 원하는데로 제작하게 됩니다.

이후 2008년 10월 21일에 Android OS가 공개가 됩니다. 이후 Google은 hTC와 상호간 파트너쉽을 맺고 여러가지의 Android폰을 제작하게 됩니다.

Android Dev Phone 1 - G1 in Tagzania
Android Dev Phone 1 - G1 in Tagzania by tagzania 저작자 표시동일조건 변경허락


Spotify
Spotify by Johan Larsson 저작자 표시



Andy Rubin, Google
Andy Rubin, Google by Erwin Boogert 저작자 표시비영리

위의 분은 Google의 부사장 Andy Rubin 입니다.

지금까지 제가 UNIX의 역사를 이야기 하다 UNIX라는 것이 발전되어 NeXTSTEP-MacOSX-iOS(IPhoneOS), Linux-Android등의 소개를 하게 되었습니다.

쉽게 말해서 Mac OS는 UNIX의 후손, iPhone에 들어간 iOS도 UNIX의 후손입니다. 

Linux는 UNIX의 복제품이고, Android OS는 Linux의 자손. 대부분 스마트폰은 UNIX계열이란 결론이 나게 됩니다.

1969년도에 개발된 UNIX의 후손들은 PC시장에선 MS사의 Windows때문에 힘을 못쓰지만, 스마트폰시장에선 MS사의 Windows Phone이 삽질을 너무 많이 한 탓에 UNIX계열인 iPhone, Android가 강세인거지요.

UNIX family tree를 보다 스마트폰의 조상도 따져보면 UNIX, Linux라는 걸 알게 되니 UNIX란 OS를 40여년전에 설계한 Ken Thompson, Dennis Ritchie가 대단하다고 느껴집니다.

그 당시에 이렇게 컴퓨터의 개념이 확장될줄도 몰랐을것이고 대형 컴퓨터에서 사용하던 개념이 조그마한 장비에도 들어갈 줄은 누가 감히 생각하겠습니까?

UNIX의 설계를 아주 확장성 있게 한 것으로 40년전의 OS의 기본개념이 지금까지도 지속된것 같습니다.

결론: iPhone, Android 스마트폰의 원류는 UNIX였다.

Buy me a coffeeBuy me a coffee


관련포스트
Inside the C Programming - 아쉽지만 원 저자의 요청으로 비공개가 되었습니다.

관련내용
GNUPro Toolkit Manuals 4. Basic Principles of the Tools


2010년 5월 30일 오후 2시경.

강남구 아무개동 아무개회사에서 GNU Korea의 blueguy님의 세미나가 있었습니다.

제목은 Inside the C Programming 이라는 것이였습니다.

세미나 내용은 Inside the C Programming 의 내용 그대로 진행하였습니다.

Inside the C Programming 의 내용을 보면 학부 3~4학년때 배우는 과목인 System Programming+Operating System+Compiler(앞부분)을 종합하여 넣은 것이라 내공이 상당하게 쌓이지 않은 이상 쉽게 설명하려고 해도 안드로메다로 넘어갈수 있습니다.

학부를 졸업한 사람에게도 내용이 이해되는건 몇개 있고 약간 모르는 내용들이 여러 개씩 나오긴 하지만, 학부생에게 이런 내용 알려주면 거의 상모돌리고 졸아 버릴 위험성이 높겠군요.

Inside the C Programming 에서 다루는 내용을 아래와 같이 압축하여 간단하게 설명하겠습니다.


1. (우선 C언어를 학부때 배웠다는 전제하에서) gcc(the GNU Compiler Collection-GNU C Compiler가 아님.)는 IDE를 가지지 않은 command line compiler이다.

gcc가 하는 일

(1) 사용자에게 옵션과 소스 파일명들의 입력을 받는다.

(2) 소스 파일명의 확장자를 보고 어떤 단계를 처리해야 할지 결정합니다.

(3) 사용자의 옵션을 각각의 단계를 맡고 있는 실행파일의 옵션으로 변경합니다.

(4) 각각의 단계를 맡고 있는 실행파일을 호출(fork와 exec이겠죠?)하여 단계를 수행하도록 한다.

2. gcc는 껍데기이고 내부에서 cpp, as, ld 등에서 처리된다.  (참조: GNUPro Toolkit Manuals 4. Basic Principles of the Tools)

3. 전처리(preprocessing)과정에서는 프로그래밍 컴파일을 하기전 소스코드의 매크로 치환을 합니다. 여기까지는 소스 코드의 parsing을 하지도 않고, 컴파일 과정도 거치지 않으므로 여기까진 어느 플랫폼의 컴파일러가 돌아가던 문제 없이 처리할수 있습니다.
(※ 참고로 전처리 과정은 매크로 치환을 할 뿐이고 에러를 잡을 수 없습니다.)

4. 전처리과정이 끝났으면 C언어 소스의 파싱을 합니다. 여기에서 모든 에러를 걸려줍니다. 전처리과정에선 매크로 치환만 하지 에러는 파싱과정에서 대부분을 잡습니다.

5. 파싱이 끝나고 나선 Assemble 과정을 거칩니다 as(GNU assembler)가 어셈블리 언어로 변환을 해 줍니다.

5. 이후 relocatable object과정을 거칩니다. Assemble과정이 끝나면 Object파일이 생성됩니다. 이 Object파일들을 모아서 어떤 symbol을 참조하는지에 대해서 조사하고 Linking을 하고 메모리상에 Loading을 하게 됩니다. 이를 Linking and Loading이라고 부릅니다.

2시간 동안 진행 되었던 Inside the C Programming (원 저자 요청으로 비공개) 세미나 내용을 매우 압축하여 표현하였으나 여기선 설명이 부족한듯 합니다. -_-;; 상세한 내용은 Inside the C Programming (원 저자 요청으로 비공개)을 보시기 바랍니다.

(참조: GNUPro Toolkit Manuals 4. Basic Principles of the Tools)
Compilation involves up to four stages, always in the following order:

  • preprocessing

  • compiling

  • assembling

  • linking


컴파일러가 컴파일을 하면 preprocessing, compiling, assembling, linking 등의 4단계로 진행된다고 설명할 수 있습니다. 컴파일러가 컴파일하는 것의 내부를 더 뜯어보면 Parsing은 물론이고 컴퓨터 메모리 구조등의 OS 기본지식이 있어야 알수 있는 내용들이 들어있습니다.

역시 컴퓨터공학부 3~4학년 과정 과목인 System Programming, Operating System, Compiler(앞부분) 3과목의 내용을 통틀어 설명하기 때문에 2시간의 세미나가 부족하긴 하더군요. 더 많은 정보를 얻고 싶은 분들은 gcc, cpp, as, ld 등의 manpage와 manual을 참조해야 되는 사실을 보고나선... (한글화가 된 자료는 joinc.co.kr의 내용을 다 읽어보면 빠른 시간내에 이해되실겁니다.)

공부할 것은 많고, 시간은 부족하다.


Buy me a coffeeBuy me a coffee

2010년 5월 19일~20일간, Google에서 Google I/O(Innovation in the Open) 2010 행사에서 안드로이드 플랫폼에 대해서 많은 소개를 하였습니다.

그리고 새로운 OS인 Android OS 2.2 Froyo를 공개를 하며 안드로이드 플랫폼 오픈소스 홈페이지도 새로 바뀌었습니다.


Android Open Source Project: http://source.android.com/ 



바뀐 부분은 Porting부분과 Compatibility 부분입니다.

Porting부분은 Android OS를 어느 Device(장치)에 넣을수 있게 하는 매뉴얼이라고 보심 됩니다.

Compatibility는 적합성 부분으로 혹시 휴대폰에 Android OS를 Porting하여 넣었다고 하면, 휴대폰에 넣은 Android OS가 Google이 지정한 휴대폰의 기준에 맞게 들어갔는지에 대해서 CTS(Compatibility Test Suite)를 제공하며 이 테스트를 통과해야 제대로 된 안드로이드 폰이라고 규정할수 있게 하는 부분입니다.

(만약 **T에서 안드로이드폰에 회사 입맛대로 어플을 넣고 , 구글의 기준 대신 **T기준대로 어플을 만들어서 CTS를 통과하지 못하면 **T의 안드로이드 폰은 안드로이드폰이라고 부를 수 없게 되는 것입니다. 안드로이드폰은 꼭 CTS를 통과해야 안드로이드 OS를 사용하고 Google의 기준에 맞는 안드로이드폰이라고 팔 수 있습니다.)

그리고 여러가지 정보들이 많이 추가 되었습니다.

이번에 바뀐 부분을 보니 안드로이드 OS의 많은 부분들이 추가되어 이를 습득하는데 시간이 많이 걸릴 듯 합니다.

Buy me a coffeeBuy me a coffee

+ Recent posts