화요일, 6월 19, 2007

[Computer] 존 배커스(John Backus)


존 배커스(John Backus)

[참고자료]: en.wikipedia



* 최초로 대중적인 인기를 얻은 고급 프로그래밍 언어. 포트란(Fortran)

배커스는 사람의 언어와 유사한 프로그래밍 언어를 개발하려는 야심찬 계획을 가지고 있었다.

이 계획에는 사용자로 하여금 기계어나 어셈블리어를 몰라도, 또한 기계의 동작 과정을 몰라도 알고 사용할 수 있는 언어의 개발에 관심이 포함되어 있었다. 이것은 오로지 프로그래밍언어는 사용자가 해결하고자 하는 문제 자체의 이해에만 집중하도록 하는 것이었다.
이것은 또한 프로그래밍과 디버깅에 들어가는 돈은 컴퓨터 가동 비용의 약 4분의 3을 차지하고 기 비율은 컴퓨터가 싸질수록 더 높아지기 때문이었다.

배커스와 그의 팀에게 핵심적이 문제는 언어의 설계가 아니라 효과적인 프로그램을 만들어내는 컴파일러의 설계였다. 그들은 과학자와 엔지니어들이 IBM 704에서 프로그램을 작성하는데 편리함을 느낄 수 있는 언어를 만들어내고자 했다. 배커스는 포트란 언어의 특징으로 대입문의 도입과 Do 순환문 사용등 몇 가지를 정했으며, 그 후 수정에 수정을 거듭하여 결국 1957년에 개발이 끝난 포트란 컴파일러를 세상에 선보이게 되었다. 그것은 2500 라인의 기계어로 이뤄져 자기테이프에 수록돼 있었다. 그러나 전문 프로그래머들의 반응은 냉담했다.

IBM은 이에 한가지 꾀를 냈다. 모든 IBM705 사용자에게 포트란 컴파일러를 무료로 보내 주는 것이었다. 그 결과 상당히 반응이 좋게되자 IBM은 IBM650용 포트란도 개발하게 된다. 점차 포트란 사용자들이 늘어가면서 점점 상위 버전도 개발되었으며, 사용자들의 반응도 다양해지고 포트란 컴파일러도 여러 종류가 시중에 나오게 되었다. 또한, 자신에 맞는 포트란 컴파일러를 개발하는 사람들도 늘어갔다.

표준안의 제정이 시급해 지자 1977년 국제회의에서 Fortran-77을 세계 표준으로 발표하였으며, 포트란의 성공으로 고급 언어의 개발이 상업적으로 성공할 수 있음을 알려 주었다.

사용자가 늘어나자 불만도 증가하였는데, 이것은 포트란 언어자체가 가지고 있는 한계성으로 과학기술 계산에는 적합했지만 사무용으로 적절하지 못했기 때문이다.
[원문보기1]
[원문보기2]


마이크로소프트 Visual C# .NET 팀의 프로그램 매니저인 에릭 거너슨은 존 배커스씨가 없었으면 우리는 아직도 토글 스위치나 사용하고 있을 것이라고 했다. 그는 포트란을 통해 루프, 변수할당문, goto문, 본질적인 데이타 타입을 처음으로 사용했으며 소프트웨어 개발자의 코드 포멧팅에 대한 강박관념을 처음으로 심어주기도 했다.
첫 1-5열은 숫자 라벨을 써 넣어야 하고, 한 줄에 72자이상은 인식하지 않는 등 등 제약이 많았다.
[원문보기]

오늘날에도 수치연산이 중요한 과학기술분야에선 포트란의 인기가 좋다. 수학, 천문학, 기계공학, 항공 및 우주공학 등 다양한 분야에서 포트란이 널리 쓰이고 있다. 가장 최근엔 Fortran2003이 출시됐고, Fortran2008이 개발 중이다.


* 형식언어문법. BNF(Backus-Naur Form)

BNF는 프로그래밍 언어를 정의하기 위한 최초의 메타언어이다. ALGOL58언어의 구문 기술을 위해 1959년에 존 배커스에 의해 처음 도입되었으며 피터 놈에 의해 내용이 추가되어 ALGOL60을 정의하는데 사용되었다. BNF는 구문 요소를 나타내는 기호 <>, 둘 중 하나의 선택을 의미하는 기호 | , 좌변은 우변에 의해 정의됨을 나타내는 ::= 등의 메타 기호들을 사용하여 규칙을 표현하였다.
[원문보기]
[참고자료]


* 튜링상 수상

존 배커스는
고급 프로그래밍 시스템, 프로그래밍 언어 명세의 형식적 절차로 1977년 튜링상을 수상했다.
1977년 튜링상 수상 강연
'Can Programming Be Liberated From the von Neumann Style?'
그는 프로그래밍 언어에서 가장 중요한 요소는 효율성이 아니라 가독성, 신뢰성과 같은 것이라 주장했다.
[참고자료]: 역대 튜링상 수상자


* 참고문헌
-
http://apmath.kku.ac.kr/~seokko/turing.htm
-http://www.hwlab.com/computer_history.php?code=11615
-http://blogs.msdn.com/ericgu/archive/2007/03/21/
if-it-wasn-t-for-him-we-d-still-be-using-toggle-switches.aspx
-http://www.aistudy.com/linguistics/BNF.htm

일요일, 6월 17, 2007

[Computer] 임용고사 준비

방학때 논문을 다 작성한다면.
2학기때는 임고준비에 박차를 가해 보자.
임고준비라기 보다는
4년동안 학부생으로 배운 내용을 총 정리하는 시간.

항상 느끼고 고민하는 거지만.
하나의 목적을 이루기 위해서 필요한 것만 골라골라 성취하는 것도 효율적이고 좋은 방법 중 하나지만.
내가 좋아하는 것부터 내가 잘하는 것부터 해서 하다보니깐 목적에 도달하는 것도 좋은 방법이라 생각한다.
그리고 학점을 꼭 잘 맞아야지. 라기 보다는 내가 이 내용에 대해 잘 알아야 겠다. 그래도 남 부끄럽지 않게 알 정도로 열심히 해야 겠다. 하다 보니 학점도 잘 맞는 이런 상황을 더 좋아한다. 그리고 추구한다.

그나저나 남들이 추천하는 컴퓨터 교육 임고 준비용 전공서적 목록.

1.운영체제
Operating System Concept / 홍릉과학 / Abraham Silberschatz
운영체제 / 사이텍미디어 / Lubomir
2.데이터베이스
데이터베이스 시스템 / 인터비젼 / Silberschatz
데이터베이스 시스템 / 홍릉과학 / C.J.DATE
데이터베이스론 / 정익사 / 이석호
3.데이터통신
데이터 통신과 네트워크 / 교보문고 / Behrouz A.Forouazn
TCP/IP 프로토콜 / McGrawHill / Forouzan
4.자료구조
C로 쓴 자료구조론 / 희중당 / 이석호
5.컴퓨터구조
컴퓨터 시스템 구조 / 희중당 / Morris Mano
디지털 논리회로 / 방송통신대학출판부 /
6.프로그래밍언어론
프로그래밍언어론 / 정익사 / 원유헌
프로그래밍언어론 / 방송통신대학출판부
컴파일러 / 방송통신대학출판부

구입할 책 목록
OS - 공룡책 번역본
DB - 돗단배책 번역본
네트웍 - 번역본

수요일, 6월 13, 2007

[Computer] 컴파일러

컴파일러라 함은
고급언어로 된 소스코드를 기계어로 번역해 주는 번역기의 일종이다.

논리적 구조로는
소스프로그램->어휘분석기->토큰->구문분석기->구문분석정보(파스트리or추상구문트리)->중간코드생성기->중간코드->코드최적화->목적코드생성기->목적코드

어휘분석을 위해 정규문법을 사용하고
구문분석을 위해 Context-free문법을 사용한다.

정규문법을 인식하는 FA(Finite Automata)가 있고, DFA와 NFA가 있다.
Context-free문법을 인식하는 PDA(Push Down Automata)가 있고 FA와는 다르게 스택을 사용한다.

구문분석을 하는 방법으로 Top-down 방식과 Bottom-up 방식이 있다.

결정적으로 구문 분석을 하기 위해서는 First 와 Follow의 개념을 사용한다.

Top-down방식은 시작 심벌에서 스트링으로 트리를 작성하며
이때에는 결정적 구문 분석을 위해 left-recursion을 제거하고 left-factoring해야 한다.
또한 LL조건을 만족해야 한다.
Strong LL조건을 사용하는 Recursive-descent파서와 LL조건을 사용하는 Predictive파서가 있다.

Bottom-up방식은 스트링으로 부터 시작 심벌로 서브트리를 연속적으로 만들며
이때에는 결정적 구문 분석을 위해 LR조건을 사용한다.
LR조건을 사용하는 파싱 테이블로 SLR(simple LR), CLR(Canonical LR), LALR(Lookahead LR)이 있다.

어휘분석기를 자동적으로 생성해 주는 LEX가 있고, 구분분석기를 자동적으로 생성해 주는 YACC가 있다.

전체적인 흐름은 이와 같다.

1학년때는 단순히 컴파일 되는 과정을 배웠고 2학년때 계산이론을 통해 FA나 PDA등과 타입3~타입0까지 배우면서 도대체 어떻게 사용되는지 잘 이해가 안됐는데, 지금은 좀 더 구체적으로 이해가 되었다. 어휘분석기를 직접 C언어로 간단하게 만들어 보면서 문법을 정의하는 것 자체도 어렵구나 하는 생각을 했다.

그리고 컴퓨터에 수학적 내용을 적용해서 증명하고 성능을 향상시키는 방법을 실제로 봄으로써 컴퓨터에 역시 수학은 중요하구나 하는 생각도 들었다.

일요일, 6월 10, 2007

[Computer] 2007 웹앱스콘 자원봉사 신청.

2007년 6월 21일 목요일 삼성동 코엑스 그랜드 볼륨에서 웹 애플리케이션 컨퍼런스 2007이 열린다. 오전 워크샵과 오후 컨퍼런스 등 다양한 행사가 열리고, 오전 워크샵때 승범이 형이 seaside로 발표한다.

사전 참가비가 22,000원인데 딱히 돈내고 가기는 그렇고 해서 자원봉사를 신청했다. 작년 대안언어축제때의 경험도 있고 해서 좋은 경험이 될 것 같다.

비록 그날 과제제출일이라(웹기반) 그렇지만, 그 전에 다 해놓으면 되지. -_-;

자세한 사항은 공식 홈페이지에서..

2007 웹앱스콘(http://webappscon.com/Volunteer/Event)

블로그.

내 생각과 경험과 추억을 하나로 모을 수 있는 공간이 필요하다.

싸이 - 사진 올리기, 일촌관계 위주.
개인위키 - 개인적인 글 올리기는 별로.
네이버 블로그 - 그냥 별로.
블로거 - 좋은데, 느려.
테터툴즈 - 왜 내 계정에 mysql권한이 없어진 거지?

수요일, 2월 14, 2007

서대문 도시속 작은학교 졸업식.

졸업식의 주인공은 누구인가?

졸업식 회상....

초등학교 졸업식.
교장 선생님의 기억나지 않은 말씀.
담임 선생님의 말씀.
그리고 나눠주는 성적표, 개근상, 상품
가족과 함께 찍은 사진.

중학교 졸업식.
교장 선생님, 담임 선생님의 말씀.
성적표, 개근상.
가족 친구와 함께 찍은 사진.

고등학교 졸업식.
....사진.
졸업식의 주인공은 누구지?

작은학교의 졸업식....

졸업생은 4명이다.
졸업생은 한명씩 나와 자신의 이야기를 한다.
방황했던 과거와 지금 마음을 잡고 열심히 살아가기 까지.
졸업을 하면서 느낀 점 등.
그리고 그들이 지금까지 갈고 닦은 실력을 발휘한다.
노래를 부르고 악기를 다룬다.
그리고 지금까지 지도해주신 선생님도 잊지 않는다.

그들은 다짐했다.
과거 자신은 어떤 이유에서든지 자신의 의지와 상관없이 어려운 길을 갔지만.
이제는 자기 스스로 자신이 하고 싶은 길을 찾아 가겠다고.

참석자는 축하했다.
그들이 힘들게 지나온 과거를 안타깝게 생각할 뿐 아니라.
앞으로의 그들의 활약에 더 기대했다.
졸업식의 주인공은 바로 그 4명이었다.

물론 일반 학교의 수백명의 졸업식과 단 4명의 졸업식을 단순 비교할 순 없다.
졸업식을 진행하는 사람들은 수백명의 졸업식을 4명의 졸업식과 같게 할 수 없다고 할 수 있다.
나보고 하라고 해도 어떻게 그렇게 할 수 있냐며 짜증부터 낼 지 모른다.

하지만 나에게는 졸업앨범과 졸업사진만으로 남아있는 졸업식이
작은 학교의 4명의 졸업생들이 기억할 졸업식과는
너무도 다를꺼라는 생각이 든다.
그리고 부럽다.
졸업식의 주인공은 졸업생이다.
졸업생이 자신이 주인공임을 인식할 수 있도록 하는것이.
앞으로 내가 해야 할 일중의 하나일 것이다.

대안교육연수 中.

고병헌 교수님의 강연중에

"...교육은 머리 뒤에서 이뤄져야 합니다. 국어교육 전공인 선생님은 국어를 가르치는 선생님이 아니라 국어를 통해 사람을 가르치는 선생님입니다...."


그렇다.
선생님은 전문 지식을 가르치지만.
전문 지식만을 가르치지 않는다.
전문 지식을 통해 사람에 대해 가르치는 것이다.

"...우리가 기억하는 훌륭하신 선생님의 과목이 기억나십니까? 기억 안나실 겁니다. 단지 기억나는건 그 선생님의 느낌일 겁니다..."


물리를 가르치신 고3 담임선생님은 내가 기억하는 선생님 중에 한 분 이시다.
물리를 참 잘 가르치셨지만 그것보다는.
물리는 쉽다라는 것을 보여주신 선생님이다.
대부분의 학생들이 어렵다고 느끼는 거지만 선생님은 어렵지 않다라고 하셨다.
그리고 선생님의 수업을 들으면 정말 어렵지 않게 느껴졌다.
선생님의 자신감. 항상 긍정적인 생각.
정말 그 선생님 앞에는 어려운 것이 없을거란 생각이 들었고.
나도 그런 선생님이 되었으면 하고 생각했다.

나는 컴퓨터 교사를 꿈꾸지만 내가 진정으로 꿈꾸는 것은.
컴퓨터를 통해 사람과 소통하는 것을 꿈꾸는 것이다.