블로그 이미지
.
속눈썹맨

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

[PL]Ch.9 Data Abstraction and Modularity

2006. 6. 6. 15:06 | Posted by 속눈썹맨

Topics
. Modular program development
  . Step-wise refinement
  . Interface, specification, and implementation
. language support for modularity
  . Procedural abstraction
  . Abstract data types
  . Packages and modules
  . Generic abstractions
   . Functions and modules with type parameters

. Stepwise Refinement
  . Wirth, 1971
   . "program gradually developed in a sequence of refinement steps"
   . In each step, instructions .. are decomposed into more detailed instructinos.
  . Historical reading on web
   . N.wirth, program development by stepwise refinement, Communications of the ACM, 1971
   . D. Parnas, On the criteria to be used in decomposing systems into modules, Comm ACM, 1972
   . Both ACM Classics of the Month

. Dijkstra's Example
  . 간단하게 주석처럼 쓰고 점점 코드에 가깝게 만들어 감.

. Program Structure
  . Main program - 밑에 여러개의 sub-program의 tree로 hierarchical하게 구성됨.

. Data Refinement
  . Wirth, 1971 again:
   As tasks are refined, so the data may have to be refined, decomposed, or structured, and it is natural to refine program and data specifications in parallel.

  . Example
   . Bank Transactions - Deposit, Withdraw, Print Statement, Print transaction history
   . For level 2, represent account balance by integer variable
   . For level 3, need to maintain list of past transactions

. Modularity : Basic concepts
  . Component : Meaningful program unit - function, data structure, module
  . Interface : Types and operations defined within a component that are visible outside the component
  . Specification : Intended behavior of component, expressed as property observable through interface
  . Implementation : Data structures and functions inside component

ex) Function Component
  . Component : Function to compute square root
  . Interface : float sqroot(float x)
  . Specification : If x>1, then sqrt(x)*sqrt(x) = x
  . Impelmentation
   . Bisection method를 구현한 코드를 C로 적음.(길어서 생략)

Ex) Data Type
. component : Priority queue : data structure that returns elements in order of decreasing priority
. Interface
  . Type : pq
  . Operations :
   empty : pq
   insert : elt * pq -> pq
   deletemax : pq -> elt * pq
. Specification
  . Insert add to set of stored elements
  . Deletemax returns max elt and pq of remaining elts

. Problem with writing large programs
  . Wulf and Shaw : Global Variables Considered Harmful
   1. side effects - accesses hidden in functions
   2. Indiscriminant access - can't control access
   3. Screening - may lose access via new declaration of variable
   4. Aliasing

  . Characteristics of solution:
   1. No implicit inheritance of variables
   2. Right to access by mutual consent(담합)
   3. Access to structure does not imply access to substructure
   4. Provide different types of access
   5. Decouple declaration, name access, and allocation of space

. ADT : Abstract Data Types
  . Prominent(유명한, 중요한, 탁월한, 현저한) language development of 1970's
  . Main ideas:
   . Separate interface from implementation
     . Sets have empty, insert, union, is_member?
     . Sets implemented as .. linked list ..
   . Use type checking to enforce separation
     . client program only has access to operations in interface
     . Implementation encapsulated inside ADT construct

. Abstract Data Types
  . Package data structure and its operations in same module
  . Data type consists of set of objects plus set of operations on the objects of the type
   (constructor, operatos, observers)
  . Want mechanism to build new data types(extensible types)
  . Should be treated same way as built-in types
  . Representation should be hidden from users(abstraction)
  . Users only have access via operations provided by the ADT(encapsulation)
  . Distinguish between specification and implementation

. ADT Specification
  . ADT specification declares data type and operations without implementation details, but possibly with semantics of operations
  . Provides information needed to use ADT in programs
  . Typically includes
   1. Data strcutures : constants, types, and variables accessible to user
      (although details may be hidden)
   2. Declarations of functions and procedures accessible to user(bodies not provided)

. ADT specification
  . May also specify behavioral obligation of an implementation
  . As an example, an algebraic specification of behavior of a stack might look like

  . Formal specification of ADTs uses universal algebras
   . Data + Operations + Equations = Algebra

. ADT impelmentation (Representation)
  . Definition of the implementation details of an ADT collected in one location
  . Usually not accessible to user - some form of access control
  . Provides details on all data structures (including some hidden to users) and
   bodies of all operations

. Representation in language
  . Three predominant concerns in language design
   . Simplicity of design
   . Application of formal techniques to specification and verification
   . Keep down lifetime costs
  . Reusable modules to represent ADTs quite important
   . Separate (but not independent) compilation
   . Want to maintain type checking
   . Control over export and import of names (scope)

. ML Abstype
  . ADT supported in very straightforward way in ML
  . Provides for encapsulation and information hiding

. Generic stack ADT in ML
  . Cannot get at representation of stack
  . Reference to mkstack(1) will generate an error message
  . Only access through constants and operations
  . Module more sophisticated support with separate compilation

. Clu(1974)
  . Cluster is basis of support for abstrat data types
  . Provides both packaging and hiding of representation
   (cvt used to go back and forth between external abstract type and internal representation)
  . May have parameterized clusters where specify needed properties of type parameter

. Modules
  . General construct for information hiding
  . Two parts
   . Interface : A set of names and their types
   . Impelmentation :
     Declaration for every entry in the interface
     Additional declarations that are hidden

. Ex) Modula modules, Ada packages, ML structures

. Modules and Data abstraction
  . Can define ADT
   . Private type
   . Public operations
  . More general
   . Several related types and operations
  . some languages
   . Separate inferface and implementation
   . One interface can have multiple implementations

. Ada (approx 1979)
  . Designed via a U.S. DoD competition
  . Packages used to define abstract data types
  . Package together type, operations (and state) and hide representation
  . Provides support for parameterized packages(polymorphism)

. Modula-2
  . Modula (modular language) designed by Wirth in 1975 for programming small real-time control systems(no files, sets, or pointers)
  . Modula-2 is 1980 revision (influenced by Mesa at Xerox PARC)
   intended to synthesize systems programming with general purpose language supporting modern software engineering
  . Operating system for Lilith microomputer written in Modula 2
  . Minor changes to Pascal to simplify programming (reliability) and improve program readability and efficiency
  . Upward extension of Pascal to support large system design projects
   (Separately compiled and type checked modules)
  . Downward extension to allow machine-level programming and supports coroutines

. Modula-2
  . Opaque types (thos declared but undefined in Definition module) must be pointers or take no more space than pointers.
  . Compare and contrast Modula-2 and Ada on supporting abstract data types
   . Both can import from other units(modules or packages) and export items to other units
   . For external representations not mush difference
   . Private types in Ada force recompilation if implementation changes, but opaque types in Modula-2 do not.
     (구현이 바뀌었을 때 recompile여부가 다름.)
   . Internal representations almost identical
   . Generics make Ada more flexible - can use to create new instances of packages

. Generic Abstractions
  . Parameterize modules by types, other modules
  . Create general implementations
  . Can be instantiated in many ways
  . Language examples
   . Ada generic packages, C++ templates, ML functors
   . ML geometry modules in book
   . C++ Standard Template Library(STL) provides extensive examples

. ADA generic stack example
  . Stack represented internally in package
  . Data structure of stack is entirely hidden from user - there is no object of type stack available to user.

. C++ Templates
  . Type parameterization mechanism
   . template<class T> indicates type parameter T
   . C++ has class templates and function templates

  . Instantiation at link time
   . Separate copy of template generated for each type
   . Why code duplication?
     . Size of local variables in activation record
     . Link to operations on parameter type

. ex)
  . Monomorphic swap function
  . Polymorphic function template

. STL(Standard Template Library) for C++
  . Many generic abstractions
   . Polymorphic abstract types and operations
  . Useful for many purposes
   . Excellent example of generic programming
  . Efficient running time (but not always space)
  . Written in C++
   . Uses template mechanism and overloading
   . Does not rely on objects - No virtual functions

. Main entities in STL
  . Container : Collection of typed objects
   . Examples : array, list, associative, dictionary
   . Iterator : Generalization of pointer or address
   . Algorithm
   . Adapter : Convert from one form to another
     . ex) produce iterator from updatable container
   . function object : Form of closure("by hand")
   . Allocator : encapsulation of a memory pool
     . ex) GC memory, ref count memory

. Example of STL approach
  . function to merge two sorted lists
   . merge : range(s) x range(t) x comparison(u) -> range(u)
   . This is conceptually right, but not STL syntax.
  . Basic concepts used
   . range(s) - ordered "list" of elements of type s, given by pointers to first and last elements
   . comparison(u) - boolean-valued function on type u
   . subtyping - s and t mush be subtypes of u

. How merge appears in STL
  . Ranges represented by iterators
   . iterator is generalization of pointer
   . supports ++ (move to next element)
  . Comparison operator is object of class Compare
  . Polymorphism expressed using template
   template<class InputIterator1, class InputIterator2,
            class OutputIterator, class Compare>
   OutputIterator merge(InputIterator1 first1, InputIterator1 last1,
                        InputIterator2 first2, InputIterator1 last2,
                        OutputIterator result, Compare comp)

. Comparing STL with other libraries
  . C : qsort((void*)v, N, sizeof(v[0]), compare_int);
  . C++, using raw C arrays
   int v[N]
   sort(v, V+N);
  . C++, using a vector class;
   vector v(N);
   sort(v.begin(), v.end());

. Efficiency of STL
  . C나 C++ raw arrys qhek dhglfu Qkfmek.

. Main point
  . Generic abstractions can be convenient and efficient
  . But watch out for code size if using C++ templates

[Tip]휴대폰 Nateon(네이트온), MSN 연동하기

2006. 6. 4. 21:48 | Posted by 속눈썹맨

. MSN 휴대폰 연동
사람 아이콘이 노란색으로 된 친구는 문자메세지를 보낼 수 있다.

. 휴대폰에 있는 주소록 내용을 nate.com으로 보내기
휴대폰에서 Nate 버튼을 누른다.
NATE > My > 1.Nate주소록
> 1. Nate.com에 폰주소록 올리기
> 1. 확인
> 1. 전체올리기
> 확인을 몇 번 더 누르면 전송을 한다.
주소 1개당 2~3초씩 걸린다.
(100개 당 1,000원 쯤 돈이 든다.)

. SKT 휴대폰 주소록 자동저장 서비스

평소 고객이 휴대폰에 저장해 놓은 그대로 이름, 휴대전화번호, 전화번호, e-mail 주소 자료를 다운받을 수 있다.
이 서비스는 무선인터넷 네이트에 접속해 좌측 하단의 ’MY’ 메뉴를 선택, ‘3.NATE유용한 정보’ > ‘3.주소록 자동저장’을 선택하면 다운로드가 가능하다.
서비스는 월정액 500원을 내면 이용할 수 있다. 프로그램 다운로드시 정보이용료는 무료이고 통화료만 부과되며, 매일 주소록 업로드에는 통화료도 부과되지 않는다.
‘주소록 자동저장’ 서비스를 이용할 수 있는 휴대폰은 2005년 하반기 이후 출시된 휴대폰 부터 사용이 가능하다. SK텔레콤은 이 서비스를 이용할 수 있는 휴대폰이 약 110만대 가량 될 것으로 추정하고 있다.
해당 휴대폰은
삼성전자의 SCH-B250, SCH-B300, SCH-B360, SCH-V650, SCH-V670, SCH-V720, SCH-V730, SCH-V740, SCH-V840.
LG전자는 SV590, SD870, SD410.
모토로라 단말기는 MS-500, MS-550이고
팬택은 PH-S6000, PT-S110, PT-S120, PT-S130, PT-S170 이다.

. Nateon으로 문자메시지 보낼때
보내는 사람과 인증된 휴대폰 번호가 다를 때 수정하는 법

Nateon( http://helpdesk.nate.com/ )
-> 사이버 고객센터 -> 회원정보 -> 회원정보변경 -> 휴대전화번호

미디어 미학 - 2006.5.26

2006. 6. 4. 00:42 | Posted by 속눈썹맨

. Paul Virilio - '속도와 정치', dromologie
. 벤야민 - 축의 - 미래파, 이탈리아의 에티오피아 침공(전쟁 미학)
. 부르조아적 소유관계, 생산력의 제약
. 전쟁 - 기술의 반란, 속도에 대한 열망, 예술 지상주의의 완성, 자기자신의 파괴, 정치의 예술화.
. 정치의 예술화 - 파시스트
. 예술의 정치화 - 막시스트
. Media를 속도의 관점에서 접근, transportation
. 현대는 가속의 시대 - KTX에 의해 대전이 수도권에 편입됨
. 유럽 - 일일 생활권, 이제 유럽에서 공간은 사라진다.
. 휴대폰 - 이제 시간은 사라진다.

. 고속촬영 - 시간의 변화
. 확대촬영 - 공간의 변화

. technology - 카폰, 무전기, 삐삐, internet - 군용으로 시작

. 고대의 전쟁 - 공간적 - 공성전, 방성전 - 성을 뚫음, 위기 상태 - 공간적 초위상태, 함락
. 중세 - 부르크(성), 오사카성(군사적), 영주 - 농민을 지킴, 성안에 들어와 병사가 됨.
. 야전에서는 처음에는 중보병, 기병이 나타나고 전차가 나타나 기동력이 중요해짐
  하지만 최후에는 성으로 들어감
. 유럽 기사 - 중무장, 너무 느림
. 몽골 - 경무장, 활, 매우 빠름, 파발(매우 빠른 command control, communication)
. 1차 대전 - 병력과 물자가 기차, 자동차로 이동하기 시작함(기계적 속도)
  소설 '서부전선 이상 없다.' - 참호전 + 철조망
  수백만이 죽어도 한치의 땅도 바뀌지 않음. 무의미한 진격, 최각.
  플랑드르 - 벨기에 지방, 교착상태
  비행기는 주로 정찰용 혹은 그것을 떨어뜨리는 것
. 영국군의 탱크가 창호를 캐터필러로 뚫고 감.
. 베르사유 조약 - 독일의 엄청난 배상금, 갚기 불가능함
. 2차 대전 - 나치 히틀러, blitz krieg, 전격전, lighting war, 전차부대, 항공대
. 프랑스 - 마지노선, 우회해버림,
. 손자병법, 나폴레옹 - 기동성, 전력 = 병력 * 속도
. 군국주의 - 후방의 사람들이 전방에서 어떤 일이 일어나는 지 모름.
. 비행기의 폭격 - 전방, 후방이 없어짐, 공습이 일상적, 민간시설도 공격,
  민간인이 더 많이 죽음 - 공간의 구별이 사라짐
  민간인과 군인의 구별이 사라짐 - 총력전
  ex) 런던 폭격, 드레스덴 폭격(군수시설이 없는 곳) - 런던 폭격의 보복
. 드레스덴 - 작센 왕국의 수도, 런던 폭격에 대한 보복, 유적파괴

. 베트남 전쟁 - 미군 : 온갖 communication system
  C3I -> C4I, 시간, 공간을 저항.
  . 베트남 : 저항할 공간과 시간에서 사라짐, 게릴라전, 땅굴을 파고 민간인이 됨.
   언제든 결집과 해산이 가능, 호치민, 북베트남에서 넘어온 무기 - 호치민 route
. 호치민 route - sensor와 폭탄으로 공격, sensor를 역으로 이용
  . 비선형적 network망, 우회로가 얼마든지 존재(post-modernism적)
. 민간인에 대한 terror - 아라파트, PLO, 항공기납치, 전쟁이 정치화 됨.
  soft target을 잡는 다. 미디어 전쟁, 방송되지 않으면 일어나지 않은 것
. 미국 대통령은 항상 핵가방을 들고 다닌다.
. 미국이 소련에서 내려오는 것은 12분의 시간 - 의도적 or 비의도적, 전술핵 or 전략핵, 고의 or 실수
. 쿠바 핵기지 건설 - 마이애미에서 2분 거리, 미국은 NATO에서 철수

. 인간이 2분내에 판단 불가 -> computer -> war game -> 영화 '터미네이터'
. 1950~60년대 미국의 핵공포 - 벙커 + 깡통(음식)
. 전략 핵무기 협상 - 갯수는 의미가 없다. hot-line를 파악하는 것이 더 중요하다.
  나의 도시가 하나 날아가더라도 실수였다면 보복하지 않는 다.
  보복은 연쇄작용을 불러일으켜서 모두를 죽일 수도 있다.

. '느림의 미학', '게으름의 미학'
. 서양의 속도와 동양의 속도는 다르다.
. 한국 - 몸은 빠르지만, 일을 시작하는 데 30분이 걸린다.
  오래 일하지만 빠르지는 않다. 휴가 때도 더 피로하다.
. 독일 - 5분만에 일한다. 50분 일하고 10분 쉬는 데, 칼 같다. 휴가가면 정말로 쉰다. 꼼꼼하다.
. 농경사회처럼 산업화가 느리면 속도가 느리다.
. 기계의 속도에 인간이 맞춰야 한다.
. 한국 사람은 몸은 빠르지만, 일이 진행되는 속도는 느리다. 외연적 속도는 바르지만, 내포적 속도는 느리다.

. 미디어의 영역
  1. transportation의 혁명 - 유럽에서 공간의 소멸 - 기계적 속도, 기차, 항공기, 자동차, 청년 나치당 - 폭주족
  2. communication - 시간의 소멸 - 전기적 속도 (빛의 속도)
   제 3의 혁명은 속도에서 일어날 수 없다. 무어의 법칙, 황의 법칙
  3. transplantation : 장기복제, 이식혁명, 유기적 + 무기적, 유기적 + 유기적
    무기적 : 사이버네틱스, 로보틱스, 인간 신체의 금속화 - 의족, 의수
    유기적 : 생명공학 - 황우석

. Picnolepsi - 망각이 동반되는 발작증
  ex) 간질
  . 소멸의 미학
  . 우리의 의식은 원래 연속적이지 ㅇ낳다. 사회화에 의해 선형적 시간으로 이어진다. (훈련과 학습)
  . 아이들 - 비선형적, 단속적
  . 의식도 사회적으로 구성된 것이다.
  . 무궁화 꽃이 피었습니다. - 영화의 jump cut - '여고괴담'
  . '나홀로 집에' - 가족들의 사라짐
  . '메멘토(memento)' - picnolepsi
  . '하워드 휴즈' - 영화 '에비에이터(aviator)' - 부자 , 천재, 영화, 미디어에 대해, 노출, tick wkddo
   - "나는 시간의 지배자이기 대문에 시계가 필요없다."
   - 천문학적 시간(schedule)의 지배를 받지 않는 다.
  . 몽타주 - 영화도 picnolepsi, 파편적, 몽타주적
  . 빌렌푸르스 - 전자글쓰기는 edit가 항상 가능하다.
  . 비선형적 글쓰기 - 기존에 쓴 글을 모아서 펴냄, 독자 스스로 정리해서 이해함.
  . Montage
   . 기술적 - cut
   . 미학적 - 감독에 따라 편집이 다름
  . 그리피스 - continuous editing, 자연스럽게 따라감, montage를 서술(narration)의 수단으로 사용함. conti(콘티)
  . 러시아 - discontinuous editing, Avant garde, 혁명적, 인민들이 주인공, 전함 포템킨 - 짜르 군대 수병의 반란(1905년)

. 잠자는 민중 -> 깨어난 민중 -> 봉기하는 민중
. A에도 없고 B에도 없는 것이 A와 B의 사이에서 생겨나
. 창조적 지리학 - 여러 장소에서 찍어서 편집
. 형상적 사유, 은유적 사유 - 추론의 결과가 아님
  . 과학의 새로운 패러다임 - 토마스 쿤 - '과학 혁명의 구조'
. 진중권 blog - "붉은 돼지" - 1~2차 대전 사이의 유럽, '죽은 조종사의 사회'
  . 독일 조종사 - 뵐케, 이카루스의 추락
. 새로운 것은 요소가 아니라 배치다. - montage
. 은유 - 어던 대상과 다른 대상의 생각지도 못한 유사성을 찾는 것이다.
  가능한 멀리 떨어진것.
. 다른 분야의 책을 보고 내용을 연결
. 도서관에서 아무 책이나 꺼내서 읽기 - 신적인 계시와 같은 것들
. 보드리야르 - 사라지게 함 - 마술사 - '데이비드 카퍼필드' - 연속성, 비연속성
. 건물 전체를 포장 - 예술사 크리스토프, 퐁뇌프의 다리, 제국의 건물을 쌓아버림
. 베를린 공수 - 동독 지역이지만 수도이므로 1/2로 나눔
. 독일 의회 - 히틀러의 선출, 화재로 사회주의자들이 몰림, 통일 독일의 국회가 됨.

미디어 미학 - 2006.5.21

2006. 6. 3. 00:57 | Posted by 속눈썹맨

. 독서 - 한 두번 읽어서 50% 이상 이해하기 어렵다.
  정보를 모두 기억하거나 습득할 수는 없고, processing 능력을 높이는 수준에서 한다.
  필요할 때 책을 찾는 다.
. 철학의 전문 용어(인문학)와 일상 용어를 잘 찾아본다.
  "쉽게 말해서 무슨 이야기일까?"
. 책읽기 - 훈련이 필요, 독해 전략이 필요하다.
  자신에게 유의미한 것을 찾아라.
  맥락의 차이를 알고 적용. syntax를 semantics dp wjrdyd
. 책쓰기 - 훈련이 필요.
ex) 움베르트 에코 - "장미의 이름"
. 오캄, 수도원 - 사회주의 국가 비유, 아리스토텔레스 시작, 이중코드(포스트 모던)
. 이중코드 - post-modern은 전문가와 일반인을 모두 만족시킨다.
  . 일반인 - 재미있는 추리소설을 읽는 것
  . 전문가 - 관점의 문제
. 한국 - 영상문화는 앞서고 있다. 황우석 사태도 앞서고 있다. (서양보다 빠르다.)

. Vilem Flusser(빌렌 푸르스) - 3세대 미디어 이론, 1~3세대 모두 유태인, 독일어권
  . 유태인 - outsider, 주류에 편입되지 못해 오히려 새로운 일들이 가능
  . 체코에서 태어남
  . 남미로 도망감, 유럽으로 재망명, 1991년 체코 방문시 교통사고로 사망
. 미국 - 실증적, % 계산 등..
. 독일 - 해석적, 의식적, 철학적
. 책 - "디지털 가상" - illusion, apperance, sein & schein
. 피상성 에찬
. digital 시대에 철학이 바뀌어야 한다.
. 플라톤 - 철학 - 진짜와 가짜를 가르는 것.
  "우리가 보고 있는 것은 모두 가상이다."
  불변적, 필연성, 일반적
. 디오게네스 - 플라톤에 반발함. performance를 함. 가변적, 우연성, 기지(wit), 상황성
. 디오게네스 -> 니체 -> 들뢰즈
. "우리는 왜 가상을 불신하는 가?"
  => "가상은 거짓말을 한다."
  => "가상만 거짓말을 하나?"
. data - datum의 복수형(주어진 것)
  . datum : give의 p.p = given의 라틴어 => 세계(W1 = world I) - 자연
. fact - factum(aksemfdjwls rjt)
  . factum : make의 p.p = made => 대안적 세계(W2 = World II) -  dlsrhd
. 철학자는 data는 긍정하지만 fact는 의심한다.
. 인간은 data를 fact로 만든다. = 신이 준 세계를 바꾼다.
. existence - Ek-sistens
  . Ek : 바깥으로
  . sistens : 존립한다. - 자연의 바깥에 존재한다.
. being : 그냥 있음, 삶의 그리스어, bias
. existence : 본질의 규정에 맞게 존재(참된 존재)
  = bias + eidos(형식, style) = style, 형식, 생각이 있게, 미학적으로 존재해야 함.
. France - "Style이 인간이다."
. style이 있어야 참된 인간이다.

. 헤브라이즘 - eden 동산을 벗어난 인간
. 헬레니즘(그리스) - 프로메테우스
  . 자연에서 뛰쳐나와 형벌을 받음.
. 자연에서 벗어나면 자연과 적대적, 소외감을 가짐 - 주술, 마술, 예술, 철학의 발전
. 플라톤 - 참과 거짓이 중요, 귄터 한더스, 비관론자.
. 니체 - 미학적 세계관, 빌렌 푸르스, 진리보다 더 중요한 것이 예술이다.
  천진난만(naive), 낙관론자.
. Media - telepresence
. 청동기 - 권력관계가 발생, 자연과 대결을 위해 사회 조직을 하면서 발전
  . 정치 - 치 : 물을 다스림, 대단위 치수 하업
. 르네상스 이후 - 세계를 인간이 바꾸고 있음을 인식
. 구두만들기
  . 중세 - 구두를 만드는 이데아를 가지고 만든다.
  "구두는 모름지기 이래야 한다." 구두가 idea와 가까울수록 비싸다.
  구두의 이데아를 engineer가 아닌 주교가 값을 매긴다.
  . 현대 - designer가 만든다.
. theoria(= theory) - 관조, 마음의 눈으로 바라본 이상적 활동, 주교, 성직자들이 함.
. praxis(poiesis) - 몸을 움직이는 육체 활동
. 르네상스 때부터 생산의 조건이 바뀜 - 주문생산에서 시장생산으로 바뀜
  . 가격이 idea적으로 선행적 결정이 아니라 수요, 공급에 따른 후행적으로 결정됨
  . 더 이상 원본, 성직자에 의한 결정이 아니게 된다.
  . 시장의 소비자는 주문자와 달리 사후에 선택을 한다.

. 모상 vs 모형 - 모상의 제작에서 모형의 제작으로 바뀐다.
  . 모상 - 인식론적, 논리적
  . 모형 - practical, 쓰다가 설명이 안되면 바꾸거나 버린다. 창의력이 필요.

. 세계 -> existence(소외) -> 인간
. 상징형식 : 세계와 다시 가까워지기 위한 방법
  . 이미지 - 빌렌도르프의 비너스, 벽화 => 수렵 => 주술적 상상력
. 출산력 - 생산력을 결정
. 마술이 통하지 않게 되자 다시 소외
. 문자가 등장하여 철학적 사유, 철학 - 모든 학문을 일반적으로 말함.
. 16세기 - 구텐베르크 인쇄술, 종이, 책
. 계몽주의 - 글자를 가르침
. 공교육, 의무교육 system
. 1700년 경 - alphabet 대신 숫자를 이용, 자연의 수학화, 방정식의 총합
  = alpha-numeric code
  . technology
. 데카르트 - "피상성 예찬"
  . 연장실체 - 물체, 공간을 차지, volume, mass가 있음, continuity
  . 사유실체 - 정신, 공간을 차지하지 않음, discontinuity
  . "clear and distinct" - 명석, 판명
. 이론적 가능성은 있지만 실제로 사용하기 힘듬(17~19세기 - 계산이 너무 오래 걸림)
  . 계산기(computer)의 등장으로 미적분 등을 쉽게 할 수 있게 됨.

. 문자 - 선형적
. 숫자 - 수식 - 공간적
. 숫자는 문자에서 image로 넘어가는 과도기적인 것.
. 르네상스 - 명석, 판명
. 바로크 - 선, 윤곽이 모호해짐
. image : iconic turn, 디카로 사진찍어 보냄, 표제를 붙임
. 과학이 비직관적으로 바뀜
. 조각 - 3차원
. text - 1차원
. 벽화 - 2차원
. pixel - 0차원
. 모든 image는 마법적 요소가 있다.
. 주술적 상상력 -> 기술적 상상력
  (믿음)           (technology) 기술 + 상상력

. 20:80
  . 20 : programming하는 사람(elite), text를 영상으로 실현
  . 80 : programming하는 사람(대중, 군중)
. 수학, 논술이 아니라 상상력이 중요하다.
  . red ocean -> blue ocean

. 가상과 현실이 점점 줄어든다.
  . 3D도 점점 나아지고 있다.
  . 가상과 현실은 해상도의 차이일 뿐이다. (정보의 밀도, 양적인 문제)
  . 복제의 전면성, 원본이 복제를 따라가기 시작한다.
. Hyper-realism - 현실보다 가상에서 더 만족을 느낌.
  . 플라톤주의의 붕괴

. 수업의 밀도 - 점점 아는 내용이 많아지고 반복되는 내용도 많아지면서 얻는 정보도 줄어들고 있다.

. 인간이 subject -> project로 바뀜
  . project형 인간이 되야한다. 상상을 하고, technology로 상상을 실현해야 한다. 기획력 아직 없는 현실을 꿈꾼다.
  1. 기술적 상상력
  2. 기술적 형상 - textdml rmfla

. 막스주의 - 자연을 인식해서 변형
. Project - 변형이 아니라 생성
. 계급은 몰락하고 netizen만 남았다. (학생운동, 노동운동 모두 망함)
  . 현실에서는 아무도 내 말을 들어주지 않지만 네티즌이 되면 정치인이 내 말을 귀기울여 준다.
  . 정치인도 site를 개설하고 있음.
. 1950년 대 구조주의 - 공시적, 들뢰즈, 보드리아르, 데리다.
  . 데리다 - '그라마톨로지' - 사멸하는 text문화가 지르는 마지막 비명

. 노둥운동 - 저개발의 정치, 목숨을 걸고 함, 대추리 문제
. 노사모 - 과개발의 정치, 유희로 즐김
. 계몽의 상황은 남아 있지만 계몽의 시대는 지나버렸다. - 압축성장의 문제.


Visual Studio .NET 2003에서 컴파일한 프로그램이 실행되지 않을 때.
에러의 예 : "지정한 장치, 경로, 또는 파일을 액세스할 수 없습니다."

. 해결책 1
C:\WINDOWS\system32\msvcp71d.dll 파일을 복사한다.

. 해결책 2
해결책 1)이 안 될때.
Visual studio .NET 2003의 debug mode로 compile했다면
Visual studio .NET 2003이 깔리지 않은 컴퓨터에서는 실행되지 않는 다.
따라서 Visual studio .NET 2003을 깔거나
debug mode가 아닌 release mode로 compile한다.

[C++]static const member variable initialize

2006. 5. 15. 20:34 | Posted by 속눈썹맨

. static const member variable initialize
class A
{
  public:
  static const int m_n = 10;
  int alpha[m_n];


};

int main()
{
  A a;
  a.alpha[0] = 1;

  return 0;
}

. 참고
http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=/com.ibm.vacpp6m.doc/language/ref/clrc13cplr038.htm
http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=/com.ibm.xlcpp8l.doc/language/ref/cplr038.htm

[Numerical Analysis] Ch.5

2006. 5. 11. 11:42 | Posted by 속눈썹맨

. Differential Egns
  . Ordinary Differential Equation(ODE)
  . http://en.wikipedia.org/wiki/ODE
  . http://en.wikipedia.org/wiki/Numerical_ordinary_differential_equations
   . A ODE is an equation containing a dependent function y(t) and its derivatives and possibly the independent variable t

. First order equation : F(y, y', t) = 0
. Second order equation : F(y, y', y'', t) = 0
. Linear : y', y''의 계수가 상수
. Nonlinear : y, y''의 계수가 변수
. Analytical하게는 linear, nonlinear가 중요하지만
  Numerical하게는 linear, nonlinear가 계산하는 데 별 차이가 없다.

. Initial Coditions
  . These are conditions that y must satisfy at a given point usually t = 0

. 3-body problem
  . http://en.wikipedia.org/wiki/3-body_problem
  . We can't solve it.
  . ex) solar system
  . 가장 좋은 방법을 써도 2억년 전 과거의 행성의 위치를 알기 어렵다.

. Initial Value Problem(IVP)
  . http://en.wikipedia.org/wiki/Initial_value_problem
  . t가 특정한 점에서 y, y' 값 등이 모두 주어진다.

. Boundary Value Problem(BVP)
  . http://en.wikipedia.org/wiki/Boundary_value_problem
  . y(t0), y(t1)의 t0, t1 boundary에서 값이 주어진다.

. Analytical하게는 IVP, BVP가 별 차이가 없지만
  Numerical하게는 계산하는 방식에 차이가 있다.

. 풀기
. y' = A
  y = Ax + B
  단순히 적분만 하면 된다.

. y'' = A
  y = Ax^2 + Bx +C
  단순히 적분만 2번 하면 된다.

. Linear 2nd order Eans
  g(x)y'' + f(x)y' + h(x)y = 0
  with constant coefficients
  y'' + by' + cy = 0
  a, b : given constants

  y = e^(alpha*t)로 놓고 푼다.
  y' = alpha * e^(alpha*t)
  y'' = alpha^2 * e^(alpha*t)

  e^(alpha*t)(alpha^2+a*alpha+b) = 0
  alpha = 1/2*(-a+-sqrt(a^2-4b)) = alpha1, alpha2 (근의 공식)
  http://en.wikipedia.org/wiki/Quadratic_equation

. Three Cases
  . 근이 두 실근일 때(distint real)
   a^2 - 4b > 0
   y = A*e^alpha1*t + B*e^alpha2*t

  . 근이 허근일 때(imaginary)
   a^2 - 4b < 0
   a^2 - 4b = -beta^2
   y = e^(-1/2*a*t) * (A*e^(1/2*beta*i*t) + A*e^(-1/2*beta*i*t))
   e^(i*theta) = cos(theta) + i*sin(theta)
   y = e^(-1/2*a*t) * (C1*cos(1/2*beta*t) + C2*sin(1/2*beta*t))

  . 근이 중근일 때(multiple)
   a^2 - 4b = 0
   y = A*e^alpha1*t + B*t*e^alpha2*t

[언어학개론]한글과 입력시스템

2006. 5. 10. 23:26 | Posted by 속눈썹맨

. 입력방식
  . 음성언어 : 음성인식
  . 문자언어 : 필기인식, 버튼 입력
   . 필기인식 - 한글의 경우, 영어보다 인식률이 낮다.
     26개가 아닌 1만개의 pattern이 필요하고 글자가 복잡하게 생겼다.
     (물론 중국어보다는 훨씬 낫다.)
   . 버튼 입력
     . 키보드 - 두벌식, 세벌식
     . 키패드 - 12개의 키, 천지인, 이지한글 등.

. 한글오토마타
  . KAIST 최광무 교수님 석사논문

. 키보드
. 두벌식
  왼손 - 자음
  오른손 - 모음
  도깨비불 현상 - 초성, 종성이 구별되지 않음.
  90%이상 쓰는 국가 표준

. 세벌식
  왼쪽 - 종성
  가운데 - 중성
  오른쪽 - 초성
  공병우 박사가 제안
  두벌식과 하드웨어는 같다.
  모아치기 가능
  균형적으로 손을 사용
  두벌식보다 빠르고 오타가 적음

. QWERTY
  타자기 typebar 꼬임을 막기위한 배치

. DVORAK
  qwerty를 개선, 복수표준

. 영문 - 원천적으로 모아치기 불가능

. 일문
  . 히라가나를 자판에 1:1배치 - 50개의 글자라 shift를 너무 자주씀
  . 발음대로 로마자 입력
   . spacebar를 누르면 변환
   . 한자는 dictionary가 자동으로 떠서 고름.

. 중문 - 일문과 비슷

. Dictionary 방식의 문제점
  dictionary를 관리하고 update해야 한다.
  신조어의 등장이나 빈도수 변화를 따라가기 어렵다.
  사람마다 빈도수가 다를 수 있다.
  하지만 좋은 사전을 갖추면 꽤 smart한 방식이다.

. 휴대폰
  . 글자당 클릭수
  . 입력 규칙의 단순성 - 쉽게 배울 수 있는 것
  . 손가락의 이동거리(동선)

. Error detection
  . 가방 - 가ㅏㅇ(ㅂ를 빼먹은 것이 쉽게 드러남)
  . 자판 - 자ㅏㄴ(ㅍ를 빼먹은 것이 쉽게 드러남)
  . keyboard - keyborad (a, r이 바뀐것이 잘 보이지 않음.)
  . transformation - transfomation (r이 빠진것이 잘 보이지 않음.)

. 참고
MS windows XP 확장입력기 ? 필기인식
MS windows XP Japanese IME
ezTrans XP 일한 번역기
한글 모아쓰기 오토마타, KAIST 전산학과, 최광무
세벌식 사랑 모임 - http://kyg.pe.kr/3key/
한글문화원 - http://moonhwawon.ye.ro/
휴대폰 한글 입력 UI 유형 ? 호남대학교 고갑천
http://en.wikipedia.org/wiki/Qwerty
http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard
An Introduction to Formal language and Automata

[언어학개론]한글의 기원

2006. 5. 10. 23:17 | Posted by 속눈썹맨

. 과연 한글은 세종대왕이 만들었는 가?
집현전 학자들은 꾸준히 반대 상소를 올렸다.
결국 국사교과서는 잘못된 것이다.
세종대왕이 만든 이후 그들은 주석을 달고(훈민정음 해례본) 교육용 교제를 만드는 일만 했다.

. 그럼 누구와 만들었는 가?
세종대왕은 왕족 측근들을 동원해서 만든 것으로 보인다.

. 정말 그들이 처음부터 만들었는 가?
한단고기(위서 논란이 있지만)와 많은 역사서들을 보면
원래 우리나라에는 고조선 시대부터 한글과 비슷한 글자가 있었고
그것을 정리해서 세종대왕이 반포한 것으로 보인다.
(이두, 향찰 외에도 한글과 비슷한 글자가 있었다.)
세종대왕의 업적은 창제가 아니라 정리, 반포가 되어야 한다.

. 발성기관
발성기관을 본따서 만드는 것은 가능한가?
조선시대 해부학 수준으로 봤을 때 어렵다.
아무리 입안을 자세히 봐도 해부전에는 알 수가 없다.
조선은 유교 사상과 한의학때문에 해부학이 엄격하게 금해지고 있다.
조선 중기 이후에서야 처음으로 해부가 시작된다.
독살시에도 주로 외부를 보고 판별하였고
종기를 째기는 것보다 더 깊히 째거나 장기를 관찰하지는 않았다.
알려진 바처럼 허준이 동의보감을 쓰기위해 해부를 했다는 것도 허구다.

. 외국의 비슷한 문자들
일본의 신대문자가 비슷하다는 주장 - 일본인들이 100년전 조작한 것으로 보인다.
인도의 문자와 비슷하다는 주장 - 비슷해보이지만 언어적 연관성이 전혀 없다.

[언어학개론]문장부호, 한글 풀어쓰기

2006. 5. 10. 23:07 | Posted by 속눈썹맨

오늘은 조별 발표를 했는 데,
한 조는 문장부호를 열심히 설명했고
다른 조는 한글 풀어쓰기를 다뤘다.

. 문장부호
맞춤법 부록에나 나오는 꽤나 사소한 문제라고 볼 수도 있는 데,
아무튼 연구가 부족한 편이란다.
11세기 한문을 독해할 때부터 사용했다는 군.
생각보다 역사가 긴 것 같다.
주로 문단 나누기, 제목, 소제목 분리, 독해를 위한 보조선 등으로 쓰이다가
19세기 후반 서양언어에서 !, ? 등 오늘날의 문장 부호를 도입했다.
한국어는 어미변화가 잘되는 편이니까 !, ?가 없어도 사실
의문문, 감탄문을 표현하는 데 지장이 없다.
그래서 서양의 언어처럼 문장부호가 발달하지 못했다고 한다.

. 풀어쓰기
. 1911년 주시경 선생, 1946년 최현배 선생
세상 대부분 언어들이 풀어쓰기를 하니 우리도 그렇게 하자.

. 1970년대 타자기, 신문조판
타자기나 신문조판에서 한글은 매우 다루기 어렵다.
풀어쓰기를 하면 24개로 되는 데, 모아쓰려면 1만개의 글자판이 있어야 한다.
Automata가 매우 단순해 진다.
하지만 컴퓨터의 발달로 이미 그런 것들은 극복되었다.

. 검색엔진
풀어쓰기를 하면 검색엔진에서 어미 변화에 무관하게 query를 던질 수 있고
결과도 더 괜찮게 얻을 수 있지 않을 까?
조합형 encoding으로 처리해서 검색 엔진 내부에서 얼마든지 처리 가능하다.

. Encoding
24글자면 되니 ASCII에서 잘 끼워넣을 수도 있을 것 같다.
하지만 UNICODE를 쓰는 것이 internationalization, localization에 더 적합하다.

. 문법의 일관성
풀어쓰기를 하면 문법의 예외상황이 줄어든다.

. 외계어
초등학생들이 좋아하는 외계어도 사실 풀어쓰기의 일종이다.
'ㅋㅋㅋ'도 표준어가 될 수 있다.

. 전통
수백년간 써온 한국어와 과연 같을 까?

. 로마자 mapping
그럴바에는 차라리 로마자에 mapping 시켜버리자.
ㅣ-> I 등으로 비슷하게 생긴 것끼리 하든지, 음가를 보고 하든지.

. Font
풀어쓰기를 하면 font 개발이 쉬워진다.

. 줄여쓰기
ㅇ, ㅡ는 음가가 없는 글자들로써 placeholder이다.
풀어쓰기에서는 그것들을 안 써도 된다.

. 단점들
세벌식 모아치기가 안된다.
한글의 구성원리를 포기하는 것이 된다.
ㅔ와 ㅓㅣ의 구별이 어렵다.
한국어 문법을 너무 많이 바꾸게 된다.
사람들이 읽는 데 익숙하지 않다.