2012년 3월 20일 화요일

운영체제 32bit or 64bit??

32BIT와 64BIT의 가장 큰 차이는 인식할 수 있는 램의 용량이 다릅니다.

32BIT 운영체제는 아무리 큰 램을 설치하여도 최대 약 3.25GB 까지 인식을 합니다.

만약 4GB의 램을 설치하였어도 3.25GB로 인식이 되어 0.75GB의 손실이 발생하는거죠.

또한 한번에 보내는 정보의 양이 다릅니다.

32BIT는 2의 32제곱만큼 양을 보내고, 64BIT는 한번에 2의 64제곱만큼의 양을 보냅니다.

한번에 많은 양을 보내는 64BIT가 당연히 빠를겁니다.

하지만 성능 상으로는 64BIT가 더 좋으나, 프로그램호환성같은 요인으로 인하여 일반 사람들은 32BIT운영체제를 더 많이 사용합니다.

요즘에는 램의 용량이 4GB이상인 PC가 많이 출시되어 64BIT 운영체제 프로그램도 많이 발전하고 있는 추세입니다.

2012년 3월 19일 월요일

트랙(Track), 섹터(Sector), 실린더(Cylinder)
컴퓨터 하드디스크 (또는 디스켓)를 포멧하면 여러 개의 동심원으로 나뉘어 지며 이 동심원을 트랙이라고 한다.
섹터란 트랙을 작게 나눈 디스크의 최소 저장공간이다.
실린더란 수직으로 잘랐을 때 같은 위치에 있는 트랙들의 모임이다.
1. 하드디스크를 포맷 하면 트랙과 섹터가 설정된다.
(예) 디스크를 포맷했더니 40개의 트랙이 생겼고, 각 트랙이 10개의 섹터로 나
뉘어졌다. 총 섹터수는 몇 개인가? 40 * 10 = 400개
2. Head는 섹터 단위로 데이터를 읽거나 기록한다.
(하나의 섹터는 256 바이트 또는 512 바이트의 크기이다.)
3. Head는 섹터번호와 그 섹터가 포함되어 있는 트랙번호로 Data를 찾아낸다
hierarchy 하이라키
diameter 직경 ,지름

2012년 3월 18일 일요일

C++ STL이란??

STL : 표준 템플릿 라이브러리(Standard Template Library)의 약자로서
많은 프로그래머들이 공통적으로 사용하는 자료 구조와 알고리즘에 대한 클래스.


컨테이너(container) (스마트 배열)
- 자료를 저장하는 구조이다.
- 벡터, 리스트, 맵, 집합, 큐, 스택과 같은 다양한 자료 구조들이 제공된다.

반복자(iterator) (스마트 포인터)
: 컨테이너 안에 저장된 요소들을 순차적으로 처리하기 위한 컴포넌트
- 반복자를 사용하는 이유는 "일관성" 때문이다. (컨테이너 종류와 상관없이 다 순차적으로 접근가능)
알고리즘(algorithm)
: 정렬이나 탐색과 같은 다양한 알고리즘을 구현

STL의 장점

  • STL은 전문가가 만들어서 테스트를 거친 검증된 라이브러리
  • STL은 객체 지향 기법과 일반화 프로그래밍 기법을 적용하여서 만들어졌으므로 어떤 자료형에 대해서도 적용
  • STL을 사용하면 개발 기간을 단축할 수 있고 버그가 없는 프로그램

검색을 빨리 하고 싶으면 연관 컨테이너를 사용하면 빠르다
컨테이너 어뎁터 : 리스트들을 연결해주는것

순차 컨테이너

  • 자료를 순차적으로 저장
  • 벡터(vector) : 동적 배열처럼 동작한다. 뒤에서 자료들이 추가된다.
  • 데크(deque) : 벡터와 유사하지만 앞에서도 자료들이 추가될 수 있다.
  • 리스트(list) : 벡터와 유사하지만 중간에서 자료를 추가하는 연산이 효율적이다.

연관 컨테이너

컨테이너 어댑터

반복자
  • 현재 처리하고 있는 자료의 위치를 기억하는 객체
  • 포인터와 유사
  • * 연산자 사용 가능
  • ++연산자 사용 가능
탐색(find) : 컨테이너 안에서 특정한 자료를 찾는다.
정렬

벡터
벡터 == 동적 배열 == 스마트 배열
템플릿으로 설계
[]가능

벡터와 리스트의 차이점

벡터에서는 임의 접근이 가능하지만 리스트에서는 불가능하다.
리스트는 [] 연산자를 지원하지 않으며 리스트에서 어떤 요소에 접근하려면 첫 번째 요소부터 수나적으로 이동하여야 한다.
따라서 임의 접근 반복자를 필요로 하는 binary_SEARCH()와 같은 알고리즘을 적용할 수 없다.

출처 : http://knightgame.tistory.com/209

2012년 3월 17일 토요일

Dr.과 PhD 의 차이

Dr: 모든 박사를 통틀어서 하는 말입니다. 어떤 경우는 의사를 가리키기도 하죠.

PhD: 라틴어 Philosophiae Doctor의 약어로 '철학박사'를 말합니다. 하지만, 지금은 철학을 포함하여 순수 학문(인문학, 사회과학, 자연과학)을 하는 사람들이 따는 박사 학위를 말합니다. 옛날에는 순수학문이 모두 철학에 속했기 때문입니다.

유럽에서 처음에 대학이 세워졌을 때 학문 분야는 교양과 '철학, 신학, 의학, 법학'밖에 없었습니다. 그래서 박사 학위도 철학박사(PhD), 신학박사(ThD: Theologiae Doctor), 의학박사(MD: Medicinae Doctor), 법학박사(JD: Jurum Doctor)밖에 없었죠.


출처 : 네이버 지식인   

답변자 : hian
답변채택률72.4%
2005.12.05 09:37

SHELL

SHELL(SHELL)리눅스
2011/10/30 11:09
쉘 SHELL

1. SHELL 의 정의
 Shell 은 유닉스및 리눅스 에서 대화형 사용자 인터페이스를 부르는 용어로서, Shell은 프로그래밍 계층에 있으면서 사용자가 입력하는 명령어를 이해하고, 실행하는 역할을 수행한다.
Shell 은 사용자가 입력한 문자열들을 해석하고, 그것에 타당한 명령어를 찾아서, 커널에 그에 따른 작업을 요청하게 된다. 그리고는 커널에서 작업을 수행하고 그 결과를 다시 Shell로 보내면, Shell은 그것을 유저에게 알려주개 된다.



<리눅스 구조 중 Shell>


2. Shell에서 제공하는 기능

- 자신의 작업 환경 꾸미기

작업 환경은 유저가 시스템에 login 하거나, 다른 Shell을 실행시킬 때 마다 정의된다.. 이 환경은 login 하거나, Shell이 시작될 때, 자동으로 처음으로 읽혀지는 초기화 파일들에서 정의한 값들로 지정된다.
그러면 유저는 파일을 편집하여 새로운 값을 부여하면, 유저의 작업 환경을 바꿀 수 있다.

- Shell 스크립트 작성
닉스는 프로그래밍 언어로 프로그램을 짜듯이 Shell스크립트라는 것을 이용,다른 명령어들을 연속해서 실행시키거나 간단한 프로그램 정도를 만들 수 있다.

- 명령의 별명 사용하기

수 많 명령어를 모두 기억하고, 그것을 그대로 입력하기란 그리 쉬운 일이 아니다. 그래 대부분의 Shell에서는 사용자가 자주 사용하는 명령어나, 어렵게 입력하는 명령들을 보다 쉽게 입력할 수 있도록 alias(별명, 별칭)라는 기능을 제공한다.

- 이전에 사용한 명령 사용하기 (history)

- 명령행 자동으로 입력해주기

Shell에서 파일관련 작업을 수행 할 경우 명령행의 인자로 파일이름이나, 디렉토리 이름을 입력할 경우가 많다. 이때 그 이름의 처음 몇 글자만 입력하고 Shell에서 지정한 글쇠를 누르면, 자동으로 그 입력한 글자로 시작하는 이름을 찾아 나머지 부분을 모두 입력하는 기능이 있는데, 이것을 completion 기능이라고 한다.

- 명령행 편집

pc혁명의 씨앗 IBM

요즘 발생하는 사건, 사고는 뉴스나 인터넷 기사보다 소셜 네트워크 서비스(SNS)를 통해 더욱 빨리 세상에 알려진다. 더구나 SNS를 시간과 공간에 제약 없이 이용할 수 있게 하는 스마트폰이 유행해 사회 구성원 간에 정보가 실시간으로 공유되어 정치, 경제, 사회 등 여러 영역에 새로운 문화를 만들어내고 있다. SNS 역시 웹 기반의 컴퓨팅 환경에서 가능한 것으로, 컴퓨팅 환경과 컴퓨터가 상호 발전하며 탄생했다. 컴퓨터가 이 세상에 소개된 지 불과 60여년에 밖에 되지 않았지만, 우리는 컴퓨터가 없는 세상을 상상하기 어렵다. 어떤 역사를 거쳐 컴퓨팅 환경과 컴퓨터가 오늘날 우리 생활에서 빼놓을 수 없는 것이 되었을까?
컴퓨터 대중에게 다가가다
컴퓨터가 세상에 처음 출현했을 때 당분간은 데이터의 전송과 처리 및 해석만 가능했고 컴퓨터 간의 커뮤니케이션은 없었다. 무엇보다 컴퓨터가 대단히 비쌌고 프로그램 작성도 전문 교육을 마스터한 소수의 전문가들만 할 수 있어서 일반인이 컴퓨터에 접근하기 어려웠다. 그래서 컴퓨터는 국방 및 정보기관과 같은 정부 기관과 과학을 연구하는 대학과 연구기관 그리고 금융기관과 같은 소수의 대기업들만이 컴퓨터를 사용했다.
그림1. 나사(NASA)에서 IBM 704 모델을 이용해 데이터를 처리하는 연구원들(1957)
사진 제공 : 위키피디아
이후 네트워크가 컴퓨터 환경에 도입되고 서버/클라이언트 시스템 기반의 분산처리 환경이 일반화되고 반도체가 혁신적으로 발달하면서 컴퓨터 비용도 그 전에 비해 비교가 안 될 정도로 저렴해졌다. 특히 1990년 대 중반에 인터넷이 등장하고 사용자 편의를 고려한 그래픽 모드인 GUI가 일반화되면서 컴퓨터에 접근하기 쉬워졌다. 컴퓨터를 통한 지식과 정보의 생산 및 유통은 과거 전문교육을 이수한 소수의 전문가 중심에서 일반인 중심으로 이동했다. PC의 등장에 따른 이러한 변화 시기에 마이크로소프트를 대표로 애플, , 로터스, 컴팩 등의 회사가 떠오르고, MS 윈도즈를 대표로 한 마이크로 소프트 및 오피스 등과 같은 다양한 소프트웨어들이 소개됐다.
IBM, IBM 호환 PC를 내놓다
가장 유명한 컴퓨터 회사인 IBM(International Business Machines Corporation)은 컴퓨터를 포함한 각종 정보기기와 컴퓨터 관련 소프트웨어 및 서비스와 컨설팅 등을 선도하는 다국적 기업이다. 또한 IBM 호환 PC(IBM compatible PC)는 현재 개인용 컴퓨터 (PC : Personal Computer)의 주류를 이루고 있다. 1980년대 초반까지 IBM은 컴퓨터 메인 프레임 시장 대부분을 차지했으나, 1981 PC의 모델 5150을 출시했다. IBM은 중대형 컴퓨터의 메인 프레임과 달리, PC에서는 처음부터 개방적으로 내부를 공개해 어느 회사, 누구라도 IBM PC를 쉽게 모방해 만들 수 있도록 했다. 따라서 많은 업체들이 IBM PC와 호환되는 하드웨어와 소프트웨어를 개발할 수 있었다.
IBM PC에서 개방형 정책을 택했으며 IBM PC의 호환용 PC 공개는 어떤 의미를 가질까? IBM이 개방정책을 택한 까닭은 다른 회사에서 만든 여분의 부품으로 PC를 만들고 호환적인 PC를 출시함으로써 PC에 필요한 투자 비용을 대폭 줄이고 사업적으로도 의미가 있었기 때문이다. IBM사가 처음 PC를 출시한 1981년에 PC에 소요되는 대부분의 부품들을 IBM에서 자체 생산하는 대신, 외부 업체에 의한 아웃소싱 방식으로 조달했다. CPU에 들어가는 프로세서는 인텔사에서 구입하고 운영체제는 마이크로 소프트 회사의 제품을 사용하였으며, 그 외의 다른 응용 소프트웨어 및 하드웨어들도 다른 기업들이 참여하여 개발이 가능하도록 했다. 이 결과 IBM PC의 첫 제품을 불과 1년 남짓, 당시로서는 대단히 짧은 기간에 시장에 내놓을 수 있었다. 따라서 자체적으로 모든 것을 만들고 해결하는 폐쇄적인 정책을 채택한 경쟁사 애플을 쉽게 따돌릴 수 있었다.
하지만 IBM의 개방정책 및 공급 업체의 자율성은 IBM 호환 PC 제조 업체의 진입을 초래했다. 뿐만 아니라 IBM사는 경쟁업체들이 도저히 모방할 수 없는 중요한 핵심 부분을 지키는데 실패하고 정보기술 (IT) 및 시장의 변화에 효율적으로 대응하지 못했다. 이후 IBM 은 인터넷이 일반화되면서 인터넷 장비, 전자상거래 시장에 참여해 다양한 컴퓨터 네트워크 관련 제품 및 서비스 부문을 강화하고 인터넷 사용자들이 쉽게 정보를 검색, 보완, 관리할 수 있도록 하는 데 열중했다.
그림2. IBM 사의 개방형정책과 IBM 호환용 PC 공개가 미친 영향
그림3. 클라우드 컴퓨팅 다이어그램 사진 제공 : 위키피디아
새로운 차원의 스마트폰과 모바일 환경의 등장으로 오늘날 클라이언트 서버의 분산 컴퓨팅 환경에서 통합 컴퓨팅 환경으로 발전하고, 더 나아가서는 클라우드 컴퓨팅이 실용화될 전망이다. 클라우드 컴퓨팅이란 IBM 호환 PC들이 하드웨어, 소프트웨어, 데이터 등의 다양한 정보기술 자원들을 웹을 통해 표준화된 서비스의 형태로 제공하는 새로운 정보기술이다. 이는 전기를 이용할 때 일반 사용자들이 별도의 발전 시설을 갖추지 않고도 표준화된 서비스로 전기를 제공받고 사용료를 지불하는 것과 같다.
IBM 호환 PC를 포함한 앞으로의 컴퓨팅 환경도 컴퓨팅 자원이 웹을 통해 표준화된 방식으로 효율적으로 분배되고 공유되도록 할 것이다. 따라서 개발 및 테스트 환경을 구축하는데 소모되는 시간과 비용을 줄이고 인프라를 단순화하고 협업도를 증진시켜 궁극적으로 비용이 줄어들게 된다. 정보기술은 더욱 발전하여 새로운 컴퓨팅 환경이 등장하고 컴퓨터는 더욱 지능화될 전망이다.
[교육팁]
스마트폰 이용자가 늘어나면서 클라우드 컴퓨팅이 실생활에 깊숙이 자리매김하고 있다. 이미 클라우드 컴퓨팅을 활용하고 있으면서 그 의미를 모르는 경우도 있을 것이다. 클라우드 컴퓨팅에 대해서 더 자세히 알아보자.
●클라우드 컴퓨팅이란?
정보가 인터넷 상의 서버에 영구적으로 저장되고 이용자가 데스크톱, 태블릿 컴퓨터, 노트북, 스마트폰 등의 IT 기기를 사용해 인터넷 상의 정보를 가져와 IT 기기에 일시적으로 보관되는 컴퓨터 환경을 말한다. 클라우드(구름)는 정보들이 모이는 인터넷 상의 서버를 가리킨다. 인터넷 상의 서버는 데이터 저장뿐 만 아니라 데이터 처리, 네트워크, 콘텐츠 사용 등 IT 관련 서비스를 한번에 제공해 클라우드 컴퓨팅은 인터넷을 이용한 IT 자원의 주문형 아웃소싱 서비스라고 불리기도 한다.
●클라우딩 컴퓨팅의 장점과 단점
- 장점 : 비용(컴퓨터 시스템 유지, 보수를 위한 비용 / 서버 구매 및 설치, 업데이트 비용 등)과 시간, 인력 소모 절감 및 에너지 이용 절감 / 안전하게 자료 보관 가능 / 저장 공간의 제약 극복 가능 / 시간과 장소에 구애 받지 않고 정보 열람 및 수정 가능
- 단점 : 서버가 해킹 당할 경우 개인 정보 유출 위험 / 서버 장애 발생하면 정보 이용 불가능
[교육과정]
초등학교 5학년 실과, 컴퓨터는 내 친구
중학교 1학년 실과, 컴퓨터와 정보처리
중학교 2학년 실과, 컴퓨터와 생활
/ 정인정 고려대학교 컴퓨터 정보학과 교수
1.4.1 컴퓨터 구조

폰 노이만 구조(von nuemann architecture) 기반으로 설계
명령형 언어 - 데이터와 프로그램 모두 동일한 기억장소에 저장한다.
명령형 언어의 주요 특징은 변수, 배정문, 반복문

폰노이만 컴퓨터  구조상에서 기계 코드 프로그램의 실행은     실행-반입 주기(fetch-execute cycle) 과정


1.4.2 프로그래밍 방법론 (Programming Methodologies)
객체지향 방법론은 처리과정을 데이터 객체로 캡휼화 하고
데이터 추상화
상속 - 기존 소프트웨어의 재사용 가능성을 크게 향상시키는 강력 , 개발 생선성을 크게 향상 가능성
동적 타입 바인딩 - 보다 유연한 상속 사용을 허용


1.5 언어 부류
프로그래밍 언어는 보통 다음 네가지로 나뉜다
명령형 언어
함수 언어
논리 언어 - 규칙-기반 언어(rule-based language)
객체 지향 언어

마크업/프로그래밍 하이브리드 언어

JSTL, XSLT


1.6 언어 설계 절충

신뢰성과 실행비용 ex 자바와 C
작성력과 판독성 ex APL
작성력과 신뢰성 ex 자바와c++ - 포인터


1.7 구현방법




1.7.1. 컴파일

명령어는 흔히 실행을 프로세서로 이동되는 데 걸리는 시간보다 더 빠르게 실행 될 수 있기 때문에, 컴퓨터의 기억장소와 프로세서를 연결하는 속도는 보통 컴퓨터의 속도를 결정 한다. 이런한 연결을 폰 노이만 병목 이라 부른다. 폰 노이만 병목은 폰 노이만 구조 컴퓨터의 속도를 제한 하는 주요 요소다. 폰 노이만 병목은 병렬 컴퓨터의 연구와 개발을 위한 주요 동기 중의 하나 였다.


1.7.2 순수 해석
순수 해석(pure interpretation)은 구현 방법에 있어서(컴파일과는)정반대에 위치한다. 이방법을 통해서, 프로그램은 어떠한 번역 과정 없이 인터프리터라 불리는 또 다른 프로그램에 의해서 해석된다.

1.7.3 혼합 구현 시스템












Algol58  블록구조의 개념이 도입.

어떤 면에서 보면 ALGOL60은 상당히 성공적이었지만, 이 언어는 슬픈 실패작이었다. 20년 이상 알고리즘을 기술하는 유일한 언어 유지해왔다.  60년대 이후 많은 언어들이 이 언어의 영향을 받았다. PL/L, SUMULA67, ALGOL68, Pascal, Ada, c++, Java가 그예이다.
언어의 구문이 형식적으로 기술된 첫 번째 언어이다. BNF의 성공적 사용 -> 형식언어, 파싱이론, BNF 기반 컴파일러 설계가 그것이다.  마지막으로 ALGOL 60 구조는 기계 구조에 영향을 끼침.

미국에서 주목 받지 못하고 유럽에서 사용됬지만 주요언어는 아니였음.
그 이유 : 1. 너무 큰 유연성 2. 입출력문의 결여 3.IBM의 지원 결여(FOTLAN과는 달리)


COBOL
사무형 언어로 LISP과 정반대의 길은 걷는 언어다.
자체적으로 오래동안 살아남았지만 다른 언어에는 영향을 주지않은 언어(PL/1에만 영향).
PLANKALKUL에서 처음 제시된 계층적 데이터 구조(레코드)가 COBOL에서 처음으로 구현되었다.

2.7 시분할의 발단 : BASIC

1970후반-1980초에 마이크로 컴퓨터상에서 매우 널리 쓰였다.
두기지 특성의 직접적인 결과이다.
1. 초보자 특히, 과학에 관련되지 않은 사람들이 쉽게 배울 수 있었다.
2. 이 언어의 더 작은 버전들이 매우 작은 기억 용량을 가진 컴퓨터상에 구현될수 있었다.

마이크로컴퓨터의 성능 향상과 함께 쇠퇴되었다가
1990년대 초반에 visual BASIC(Microsoft)의 출현으로 부흥
2

vb.net 객체지향 프로그래밍 완전 /// 대신하여 C#을 쓰기도함

2.8 모든 사람을 위한 모든 것:PL/1
IBM의 생상품으로 야심차게 개발(like Fortran)
과학과 사무처리로 양분된 상황에서 과학에서는 Fortran이 독점하다시피하고
사무 응용 분야 사람들이 어셈블러에서 COBOL로 넘어가는 과도에서
IBM이 두 분야를 두루 아울를 수 있는 단일의 보편적 컴퓨터 IBM System/360 계열의 개념을 탄생시켰다.


30. 오늘날 객체지향 언어의 중요한 일부가 된 SIMULA67의 특징은 무
엇인가?
실행 재개를 허용하는 부프로그램은 호출자와 피호출 부프로그램이 명
령형 언어세ㅓ 갖는 엄격한 주인과 노인(mster/slave)의 관계가 아니
라 , 서로 간의 다소 동등한 관계를 갖기 때문에 코루틴(coroutin)으
로 알려져있다.코루틴을 지원하기 위해서 클래스 구조가 개발되었다.
이는 데이터 추상화의 개념이 클래스로부터 비롯되었기 때문에 중요한
개발이었다.
객체지향의 3요소
추상화, 상속, 동적할당
그 중의 추상화를 simula67가 호출과 피호출프로그램에 대한
(master/slave) 관계가 아닌 coroutine으로 동등한 관계에서 시작한
객체에 대한 개념으로써 많은 영향을 미쳤다.



2.11 직교적 설계 : ALGOL68
ALGOL68 은 직교성
PL/1은 상당히 많은 고정된 구조를 제공함으로써 작성력을 취하였다.
PL/1은 컴파일러를 생성하는데 IBM의 후원, ALGOL68은 X

2.12.1
설계의 단순성

Pascal
1970년대 후반부터 컴퓨터 교육목적으로  널리 사용되었지만 여러 응용분야에서 필수적인 여러 가지 특징들이 결여되어있다. 그래서 Turbo Pascal과 같은 비표준화된 여러 변형들이 출현.


2.12.2 이식성을 갖는 시스템 언어 : C

C는 어떤 특징은 BCPL을 통해서, 어떤 특징을 직접적으로 ALGOL68로부터 영향을 받았다.
이러한 특징은 for, switch문, 배정 연산자 그리고 포인터의 취급 등에서 볼 수 있다.


script 언어 종류
sh
awk
Tcl
perl : 초창기 sh과 awk의 결합형태 였으나 상당한 발전. 스크립터 언어로 불리지만 명령형 언어에 가깝다.  왜냐면 이 언어는 실행 전에 항상 적어도 중간 언어로 번역되기 때문에
 . 더욱이 매우 다양한 계산 문제에 대해서 적용 가능한 모든 구조를 지원한다.



2.13 논리 기반 프로그래밍 : Prolog

비절차적언어 - 결과가 계산되는 방법을 서술하기보다는 단지 결과의 형태를 서술한다.

prolog 프로그램의 데이터베이스는 두 가지 종류의 문장으로 구성된다. 사실(fact)와 규칙(rule)이 그것이다.

-사실(fact)
mother(joanne, jake); //joanne는 jake의 엄마
father(vern, joanne); // vern은 joanne의 아빠
-규칙(rule)
grandparent(X,Z) :- parent(X, Y), parent(Y,Z); //X가 Y, Y가 X의 부모면 X는
Z의 조부모다.

널리 사용되지 않은 2가지 이유  : 1.동등한 명령형 언어와 비교 결과 , 비효율적임. 2.매우 제한된 분야 (데이터베이스 관리 시스템, AI의 일부 영역)에서 효과적.

2.14역사상 최대 설계 노력 : Ada

Ada 언어의 네 가지 주요 특징

1. 패키지 -> 데이터 추상화의 사용지원
2. 많은 예외처리 장치  -
3. 프로그램 단위는 포괄적(generic)일 수 있다.
4. 동시실행(concurancy execution) 제공 - 랑데부(rendezvous)메커니즘을 사용하여 task라 불리는 들을 특정프로그램 단위들에 대한 동시실행 제공



c++이 급격히 널리 사용되는 언어가 되었다 그 인기 요인중 하나는 성능이 좋고 가격이 저렴한 컴파일러가 존재.
그리고 C와 거의 완벽하게 호환가능.
하지만 C의 안전하지 못한 특징을 대부분 이어 받았고, 따라서 Ada, Java언어 보다 덜 안전하다.

관련언어
 Eiffel  : 혼합형 언어. C++ 보다는 더 작고, 더 단순하고, 더 안전하나 표현력과 작성력은 거의 동일하다.
Delphi: 혼합형 언어. 차이점은 C++은 C기반, Dephi는 pascal기반이므로 해당 특징들을 따라감. ex )안정성

명령형 언어 기반 객체지향 언어 : Java

가전제품의 내장 장치를 위한 프로그래밍이었다. 신뢰성 중심의...
가전제품에서 중요한 요소중에 하나가 신뢰성이기에. 아니면 모두 회수해야되니까

하지만 초창기에는 웹에서 자바애플릿으로 빠르게 매우 널리 사용되었다.

자바에서 동시성 프로세스를 생성하는 것이 상대적으로 쉽다. 이러한 프로세스를 자바에서 스레드(thread)라 부른다.
자바는 객체에 대해서 묵시적인 기억장소 회수를 사용하는데, 이를 흔히 쓰레드 수집(garbage collection)이라 한다.

자바는 확장될 경우에만 배정 타입 강제 변환을 허용한다.
int -> float는 가능 하지만 그 반대는 안된다.



스크립트 언어 : JavaScript, PHP, Python, Ruby
+perl


2.19 새 천년을 위한 C-기반 언어 : C#

C#의 다른 특징 가운데는 대부분의 프로그래밍 언어에서 지원하지 않는 장방형 배열(rectangular array)과 배열과 객체 집합체를 위한 반복자(iterator)인 foreach문이 있다.
C#의 의도된 주요 응용은 .NET 환경에서 주요 언어로서이다. C#이 많은 사용자들을 끌어들이는 데 성공할 것이라고 확신하여 말하기에는 아직 이르다. 그러나 마이크로 서프트사가. NET을 판매하는 데 막대한 노력을 투여하면, C#은 널리 사용될 아주 좋은 기회를 가질 것으로 본다. 더욱이, C#의 어떤 특징은 분명히 가까운 미래에 프로그래밍 언어에서 채용될 것이다.



2.20 마크업/프로그래밍의 하이브리드 언어

2.20.1 XSLT

XML문서가 디스플레이 되기 위해서 변환되는 방법중의 하나는 다른 마크업 언어, XSLT를 사용한다.

2.20.2 JSP
JSTL의 핵심부분은 또 다른 마크업/프로그래밍 하이브리드 언어다. 그러나 그 형태와 목적이 XSLT와 다르다. JSTL을 논의하기 전에, 서브릿과 JSP(Java Server Pages)의 개념을 소개하는 것이 필요하다.
서브릿은 웹 서버 시스템 상에 상주하여 실행되는 자바 클래스다.

부동소수점

부동소숫점이란 소숫점의 위치가 고정되어 있지 않고 떠 다닌다는 의미입니다. 다음과 같이 말이죠.

3.14 == 0.314*10 == 314./100
4 바이트(32 비트) 실수인 float 형을 기준으로 실수 표현을 설명합니다.

32 비트 중,
첫번째 1 비트(±)는 부호를 나타내고,
그 다음 8 비트(e)는 지수를 나타내는데, 실제 지수에 127을 더한 값으로 표현합니다.
나머지 23 비트(m)는 1.??? 다음의 수소 자리를 나타냅니다.


±
e
m
0
00000000
00000000000000000000000000000


e-127
±1.m * 2


3.5
= 3 + 0.5
= 112 + 0.12 = 11.12

정규화하면,
= 1.112 * 2^1
= +1.112 * 2^(100000002-011111112)
± : 0 (+)
e : 100000002 (128)
m : 112 (0.5+0.25)
=> 0 10000000 11000000000000000000000

결국
3.5 = 1.75 * 2 = (1+0.75 )*2 = (1.+0.5+0.25)*2 = 1.112 * 2
/**

2.3 = 2 + 1/4 + 1/8 + 1/32 + 1/64 + 1/ 512 + 1/1024...

= 10.0100110011001100110011(2)

정규화(1.???로 만들기)하면,

1.00100110011001100110011(2) * 2^1

± = 0(+)
e = 100 0000 0(2) = 128
m = 001 0011 0011 0011 0011 0011(2)

--------------------------------------------------
= 0100 0000 0001 0011 0011 0011 0011 0011(2)
= 4 0 1 3 3 3 3 3(16)*/

#include <stdio.h>

union F {
float f;
struct {
unsigned m:23;
unsigned e:8;
unsigned s:1;
};
char c[4];
};

void printb(float f)
{
unsigned *d = (unsigned*)&f;
int i;

for(i=0; i < 32; i++) {
putchar((*d&0x80000000)?'1':'0');
*d <<= 1;
}
putchar('\n');
}

int main()
{
union F v;
v.f = 2.3F;

printb(v.f);
printf("%d %d %d\n",v.s,v.e,v.m);
printf("%2x %2x %2x %2x\n",v.c[3],v.c[2],v.c[1],v.c[0]); // little-endian
}


비운의 과학자 콘라드 추제

Z3의 구조를 살펴보면 제어장치와 부동소수점 연산기 그리고 메모리가 있습니다. 이들 장치들은 폰 노이만 모델의 장치들과 거의 유사한 기능을 합니다. Z3는 프로그램을 이용해 동작하는 점, 메모리 적재와 연산기를 이용하는 방법 등에서 노이만형 컴퓨터로 생각될 수 있습니다. 만약 추제의 연구가 빨리 알려졌다면 우리는 노이만형 컴퓨터 대신 추제형 컴퓨터라는 용어를 사용하고 있을지도 모릅니다.

이와 함께 추제의 또 다른 업적은 최초의 고급 알고리듬 기반 프로그래밍 언어를 만든 것입니다. 1941~45년에 만들어진 프란칼퀼(Plankalkul language)은 For문과 유사한 반복문, Jump 명령어인 Fin 그리고 조건문을 가지고 있습니다. 이 언어의 특징은 프로그램 변수들간의 수학적 표현식을 포함하고 있습니다.

추제는 이 언어의 가능성을 점검하기 위해 프로그램을 작성해 봅니다. 숫자를 정열하는 프로그램, 제곱근을 포함한 정수와 부동소수점 연산을 수행하는 프로그램, 체스게임 등 다양한 프로그램을 통해 이 언어의 가능성을 증명했습니다. 하지만 프란칼퀼은 1970년대까지 세계에 알려지지 않았습니다.

왜 최초의 컴퓨터와 최초의 프로그래밍 언어를 만든 추제가 널리 알려지지 못한 것일까? 가장 큰 원인은 그의 연구성과들이 전쟁 중 파괴되었기 때문입니다. 그가 패전국의 과학자였던 것도 이유입니다. 그의 컴퓨터가 독일군을 위해 이용되었기 때문에 알려지지 못한 것일 수 있다는 주장도 있습니다.

추제는 전쟁이 끝난 후에도 연구를 계속합니다. 추제KG란 회사를 설립한 그는 취리히기술대학(ETH)에 Z4를 공급하는 것을 시작으로 컴퓨터 생산과 판매 사업을 합니다. 그의 회사는 1967년까지 251대의 컴퓨터를 생산하지만 금융상의 문제로 지멘스에 매각됩니다. 그림을 그리며 노년을 보내던 추제는 1992년부터 풍력발전을 위한 건물인 헬릭타워(The Helix-Tower) 설계와 건설에 매진하다 1995년 심장마비로 사망합니다. 독일에서는 그의 업적을 기리기 위해 Z1~3의 복원 작업이 이루어졌습니다. 그리고 현재 독일은 물론 미국, 유럽에서 진짜 원조였던 그의 연구에 대한 재조명 작업이 이루어지고 있습니다.

디지털 타임즈 강진규 기자 kjk@dt.co.kr | 입력: 2008-01-31 16:27

2012년 1월 6일 금요일

I'm happy: 임베디드 링크

I'm happy: 임베디드 링크: 임베디드 시스템 엔지니어를 위한 리눅스 커널 분석 임베디드 리눅스 공부자료 리스트 초보자를 위한 임베디드 리눅스 학습 가이드 The Linux Programmer's Guide 원문 How To Be A Programmer 원문 리눅스 커...

I'm happy: 임베디드 관련

I'm happy: 임베디드 관련: ARM ARM Ltd - http://www.arm.com ARM core 설계 회사, ARM core에 관한 공식 자료는 여기에 있음 armlinux.org - http://www.armlinux.org 암 아키텍처와...

I'm happy: 오랫동안 프로그래머로 남을려면?

I'm happy: 오랫동안 프로그래머로 남을려면?: php스쿨에 리사아빠라는 분의 글입니다. 저도 오랜만에 다시 읽는중입니다.--;;글이 꽤기니 같이 읽어보자구요^^ㅎㅎ 리사아빠입니다. 프로그램이란것은 컴퓨터가 알아 먹는 말로 일을 하게끔 하는 것에 불과 하다는 생각이 듭니다. 그러기 위해서 ...

프로그래밍 관련 웹사이트

프로그래밍 관련 웹사이트 모음 (Ver. 2)

C/C++
데브피아 - 거의 왠만한 C 관련 문제는 여기서 끝남.
http://www.devpia.com

WinAPI - 윈도우즈 API 프로그래밍 관련 강좌 및 예제
http://www.winapi.co.kr/

KLDP - 오픈소스 소프트웨어 사용자 및 개발자 커뮤니티
http://kldp.org/

자료구조 알고리즘 예제 소스 모음 - 여기에도 많은 양의 자료구조 예제 코드들이 있습니다.
                                                 이번에는 그냥 복사해서 어디 저장해두시는 것이 좋을 듯...
http://kuic.kyonggi.ac.kr/~skpaik/algori.html

자료구조 관련 소스 모음 - 위의 페이지와 같이 자료구조 알고리즘 관련 소스가 있습니다.
http://www.geocities.com/SiliconValley/Program/2864/ds.html

Koi4u - 정보올림피아드를 준비하는 웹사이트.
           알고리즘을 공부하기 때문에 굳이 시험이 아니더라도 자료구조 알고리즘 공부하기에 좋습니다.
           시험 예제도 제공하니 해보시는 것도 유익할 듯.
http://www.koi4u.net/


JAVA - 모르실 때 아래 사이트들 다 훑으면 왠만한거 다 나옵니다.
JAVA API Specifications (영문) - 자바 공식 API 소개 페이지야말로 자바 API의 경전이라고 할 수 있죠.
http://java.sun.com/reference/api/index.html

자바스터디
http://www.javastudy.co.kr

자바누리
http://www.javanuri.com

JavaWorld (영문)
http://www.javaworld.com/

자바까페
http://www.javacafe.or.kr/

MobileJAVA
http://www.mobilejava.co.kr/

열린 자바랜드
http://www.javaland.co.kr/

J2ee STUDY
http://www.j2eestudy.co.kr/

JavaRanch (영문)
http://www.javaranch.com/

JavaService NET
http://www.javaservice.net/


오픈소스
코드구루 (영문)
http://www.codeguru.com

코드 프로젝트 (영문)
http://www.codeproject.com

소스포지 (영문)
http://www.sourceforge.net
http://www.sf.net


웹프로그래밍 & 기타
DebugLab.com - 디버깅의 모든 것
http://www.debuglab.com/

PHPSCHOOL - PHP 개발할 때 유용한 웹사이트
http://www.phpschool.com

PHP 공식 웹사이트 (영문)
http://www.php.net

비주얼베이직 공개 소스 - 원래는 가입하고 포인트 지불해야 이용가능한 사이트지만
                                   게시물을 올리신 분은 공짜로 올려두셨습니다. 물론 회원가입도 필요없음...
http://www.personaldb.net/databank/data_list.asp?group_no=2923&chk_session=Y

SQLER - SQL 공부하는 곳입니다.
http://sqler.pe.kr

taeyo's ASP & .NET
http://www.taeyo.pe.kr/

하야시의 와글와글네 (ASP, 자바스크립트 등등)
http://www.waglwagl.net/

LeeChen과 함께 (다이렉트 X 프로그래밍)
http://www.leechen.net/

gotAPI (영문) - 각종 언어의 API를 찾을 때
http://www.gotapi.com/html


펌 : http://blog2.kimkoon.net/2007/08/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B4%80%EB%A0%A8-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EB%AA%A8%EC%9D%8C-ver-2.html