디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

' ω') 학교에서 배우고 있는 환상적인 언어

땡칠도사갤로그로 이동합니다. 2012.03.01 05:48:46
조회 213 추천 0 댓글 4


uC++라고, 울 학교 교수가 만든게 이씀.


이름에서 보이듯이 C++ 확장이임.
근데 기능이 참 가지가지 있다능 ㅡㅡ)

1) Sequel
일종의 루틴. 코드블럭 내부에서 선언 가능.
호출하면 내부 코드를 실행한 후, 리턴하지 않고 속한 코드블럭에서 강제로 빠져나옴.
일종의 예외처리 기능.

{
        sequel StackOverflow{ ... } // handler
        class Stack {
                ...
                void push(int a) { ... if(...) StackOverflow(); ... }
                ...
        }
}

2) Resumption
throw의 변형. 예외처리 후 예외가 발생한 곳으로 되돌아 올 수 있음.
이 언어에만 있는 특이한 기능은 아니고, 옛날 옛적에 이미 논문이 나왔을 정도의 일반적 개념임.
원리는 exception handler를 찾을 때 스택을 정리하지 않고 보존.
핸들러는 스택 최상부에 새로 스택프레임을 할당해서 실행함 ㅡ ㅡ)

일반적으로 Resumption의 개념에는 Recursive resumption이라는 위험이 있음.
Recursive Resumption이라는건, Resumption을 rethrow할 때, 이미 사용된 핸들러를 다시 호출하는 상황임.
이런 상황이 발생하는 이유는, Exception Handler를 찾는 방식에 있음.
보통 Stack의 top에서 bottom까지의 linear search를 통해 사용 가능한 handler를 찾는데,
일반적인 Exception이 stack을 unwind하는 반면,
Resumption은 이를 보존하기 때문에 사용한 handler를 재사용하는 문제점이 있음.

이를 방지하기 위해 marking이라는 테크닉이 사용됨. (무려 논문까지 있음)
다른 방법도 있긴 한데, 이 방법의 강점은 exception과 resumption의 코드가 거의 일치한다는 점임 ㅇㅇ

3) Non-local Exception
여기서 Local은 동일 컨텍스트를 의미함. (같은 스택을 사용함)
(참고: 이 언어에는 Coroutine이 있기 때문에 같은 Thread라도 다른 컨텍스트에 있을 수 있음)
Non-local이라고 하면 Exception이 복수의 Coroutine과 Thread 사이를 넘나들 수 있다는 이야기.
함수를 막 돌리다가 아무한테나 예외를 막 "던질수 있음" ㅡㅡ);;;;
아무거나 막 죽일수 있는 궁극오의처럼 들리지만, 이를 막기위한 장치가 이미 존재 = =)ㅋㅋㅋ
_Enable{ ... } 블럭 내부에서만 Non-local Exception을 받아들임.

4) Coroutine
Python같은 가짜 코루틴이 아니라, 따로 스택을 가진 레알 코루틴 ㅇㅇ
실질적으로는 상속이 미리 지정된 C++ 클래스로
_Coroutine typename { ... }; 식으로 선언함. (NOTE: virtual void main())
더이상의 자세한 설명은 생략한다.

5) Task
뭐, 걍 쓰레드 클래스임.
선언시 _Task를 붙이는 것 외에는 Coroutine과 완전 동일.

6) Locks
uSpinLock - Spin-lock, non-preemptive, non-yielding
uLock - Spin-lock, preemptive, yielding
uOwnerLock - Mutex-lock
uCondLock - Synchronization-lock
uBarrier - Synchronization-lock, synchronized execution points
uSemaphore - Semaphore - _-)


0) 기타
* 이 언어는 User-thread와 Kernel-thread를 모두 활용함.

* G++ 옛버전을 기반으로 제작됨.
C++이면서 함수를 중간에 선언 가능한 점이 그 증거. 최근의 G++에선 정치적 이유로 빠짐.

* std 라이브러리를 조금 확장함.
기본 클래스 중 일부는 exception을 던지도록 변경됨

* Event 타입을 제공함.
Coroutine과 Task처럼 상속이 미리 지정된 클래스.
Exception의 기본 타입임.

* Coroutine과 Task는 restart가 안된다.
단순히 교육상 전혀 도움이 안된다는 이유로 = =);

* Task는 인스턴스 생성시 쓰레드가 돌기 시작해서, 실행이 종료될 때까지 인스턴스가 소멸하지 않는다.
원래는 블럭을 이용해서 구조적으로 하기 위함인데, 현실은 너저분한 동적할당 ㅁㄴㅇㄹ

* 모든 stack frame은 lexical link를 가진다.
Lexical link는 문맥상으로 연결되는 stack frame을 가리킴.
바로 전 스택프레임과 문맥이 연결된다는 보장이 없기 때문.
nested function이라던지, resumption이라던지.


덧)
덕짤을 싸기위해 적당히 프겔이야기를 쓴다는게
존나 길어져버렸다는 [...]

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
306117 c 에서 정수 올림 처리 하는 루틴 좀 알려줘. [4] 외계달팽갤로그로 이동합니다. 12.03.06 78 0
306113 1학년때 c언어 말아먹어서 개촙인데 .. [3] ㅇㅇㅇㄹㄹ(165.132) 12.03.06 82 0
306111 형들 시스템 엔지니어 면접은 뭐준비해야되?? 잘 몰라서 ㅋㅋ [2] ㅁㄴㄹㅇ(59.30) 12.03.06 110 0
306109 Node.js 존나 짜증난다.. [6] ㅅㅂ(14.39) 12.03.06 156 0
306105 갤럭시 s2 사용하는 사람들은 필독할것 [1] 갤쎅쓰2(124.197) 12.03.06 73 0
306103 UVB-76 Tanny Tales갤로그로 이동합니다. 12.03.06 42 0
306102 개강시즌을 맞아 C언어 강의를 씁니다 헤헤 [12] 남대생.갤로그로 이동합니다. 12.03.06 160 0
306101 쓰래드가 죽었는지 여부 확인 어케 하냐 [2] ㅇㅇ(121.162) 12.03.06 79 0
306100 프갤성님들 도와주세요 안드로이드 개발관련 간단한거 [1] 메리프갤로그로 이동합니다. 12.03.06 56 0
306098 나의 사마귀 유치원 재미 없는거야? [1] 생물학(175.120) 12.03.06 62 0
306096 성님들 컴퓨터공학과 진로에대해서 질문좀요 [1] 퀴퀴퀴갤로그로 이동합니다. 12.03.06 96 0
306094 ㅅㅂ 감격했다 [5] 마실나감갤로그로 이동합니다. 12.03.06 127 0
306093 컴공으로 유명한 대학? [11] 파괘신문복형(121.173) 12.03.06 444 0
306091 이거 어디가 잘못된거? [5] 마실나감갤로그로 이동합니다. 12.03.05 84 0
306090 중고딩을 위한 사마귀 유치원 [3] 생물학(175.120) 12.03.05 90 5
306089 컴공으로 전과하려고 하는데요 [6] (121.157) 12.03.05 139 0
306088 개인이 검색프로그램 구축하는게 가능한가요? [3] 개짐(125.131) 12.03.05 152 0
306087 삼성 자기소개서 쓰기 싫타 ㅠㅠ [성대아싸]갤로그로 이동합니다. 12.03.05 88 1
306084 근데 달리다가 오줌 누는거 가능하냐? ㅇㅇㅇ(121.144) 12.03.05 57 0
306083 학교컴 사이트제한 뚫는법좀ㅋ [2] 마실나감갤로그로 이동합니다. 12.03.05 133 0
306082 진지한 이야기로 궁금한게 하나 있는데 자바로 서버 맹들어본 사람? [20] 찌부된초코빵갤로그로 이동합니다. 12.03.05 165 0
306080 내일은 정상인이 될께 다만 오늘은 좀 슬픈일이 있어서.. [3] 찌부된초코빵갤로그로 이동합니다. 12.03.05 73 0
306079 오늘 드립 많이 쳤다 찌부된초코빵갤로그로 이동합니다. 12.03.05 30 0
306077 내가 오늘 서버프로그램에서 리눅스를 짰다. 찌부된초코빵갤로그로 이동합니다. 12.03.05 74 0
306074 아아아...런타임에러 원인좀 알려주실분... [4] ㅁㅌ(115.126) 12.03.05 73 0
306072 피자 열풍이 부는데 그럼 나도 [2] Dawnwalkre갤로그로 이동합니다. 12.03.05 92 0
306071 malloc은 재앙의 근원이다. [6] 찌부된초코빵갤로그로 이동합니다. 12.03.05 149 0
306070 이번학기 올 A+ 못 받으면 [3] 찌부된초코빵갤로그로 이동합니다. 12.03.05 112 0
306069 근데 임의의 자료 갯수 , 구조체에다 받을려면 [2] ㅇㅇㅇ(211.117) 12.03.05 64 0
306068 아.. n사 블로그 자동댓글 만드는중인데 [6] .3(175.210) 12.03.05 166 0
306066 유동닉이지만 이번학기 평점 4.1 이상 인증 못하면 [9] ggg(211.117) 12.03.05 114 0
306065 friend 구조체란 것도 있나 ???? [2] ㅁㅇㄹ(211.117) 12.03.05 64 0
306061 졸업한애들 다 공사준비하네 [2] ㅎㅎㅎ(211.117) 12.03.05 98 0
306059 어플에서 인터넷 캐시를 어떻게 가져오는거야? [2] 개짐(125.131) 12.03.05 83 0
306058 이번 4월 총선에서 한나라당이 영남에서 iljeomobolt갤로그로 이동합니다. 12.03.05 47 0
306057 프로포즈 노래 좀 좋은거 없냐? [2] 올체갤로그로 이동합니다. 12.03.05 54 0
306056 ㅋㅋㅋ 이거 졸라 우낀다. [1] iljeomobolt갤로그로 이동합니다. 12.03.05 76 0
306055 폰하고 캔커피를 합성하였다. 생물학(203.226) 12.03.05 59 0
306054 미치겟다 .. [1] ㅁㄴㅇㄹ(211.117) 12.03.05 46 0
306053 이렇게 인터페이스인가 만드는걸 어떻게 해야하나요? [9] EvilDragon갤로그로 이동합니다. 12.03.05 141 0
306052 취업준비생들아 쫄지말고 이런데나 한번 써봐라 NightWish갤로그로 이동합니다. 12.03.05 126 0
306051 너를 사랑하기 위해서... [1] 바보플머(218.155) 12.03.05 59 0
306050 고민해서 2개로 줄였는데 조언 부탁드립니다. [6] 두루미(218.39) 12.03.05 73 0
306049 내가 해킹할건아니고 해킹방지프로그램 이런거 만들고싶은데 얼마나 공부해야해 [4] Terminal(128.208) 12.03.05 161 0
306048 형들 노트북은 대기업이 진리라는게 최트루?? [4] BlueLagoon갤로그로 이동합니다. 12.03.05 138 0
306046 기술사 시험 쳐본 사람 ? [4] 올체갤로그로 이동합니다. 12.03.05 172 0
306044 C언어]재귀함수내의 변수선언에 대한 궁금증 [8] 12(59.12) 12.03.05 126 0
306041 아! 나도 가상서버 생겼다! [2] [성대아싸]갤로그로 이동합니다. 12.03.05 120 0
306040 일본어 잘 하는사람.. 이거좀 알려줘. [3] iljeomobolt갤로그로 이동합니다. 12.03.05 110 0
306039 소켓플밍떡밥점여 [1] 중간점검갤로그로 이동합니다. 12.03.05 58 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2