디시인사이드 갤러리

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

갤러리 본문 영역

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

땡칠도사갤로그로 이동합니다. 2012.03.01 05:48:46
조회 209 추천 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 - -
이슈 [디시人터뷰] 충무로가 주목하는 신예, '세계의 주인' 서수빈 운영자 25/11/24 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
305706 아이유가 일본에 진출했나보다~~ 서현빠돌이갤로그로 이동합니다. 12.03.02 57 0
305703 이과트리 생물학(123.228) 12.03.02 62 0
305702 학교 컴실 컴퓨터 바꿈 [1] elwlwlwk갤로그로 이동합니다. 12.03.02 89 0
305701 대세는 웹언어다! 대세론자(115.92) 12.03.02 87 0
305697 아 형들 저 고딩인데 약간 상담좀요 [3] rr(219.251) 12.03.02 139 0
305696 ieplayer쩐다 [6] 해빵갤로그로 이동합니다. 12.03.02 170 0
305695 라어 형들 오래된 움식 함부로 먹지마여 [5] 공학적닭튀김갤로그로 이동합니다. 12.03.02 52 0
305694 배우는 순서좀 물어봄 [3] rr(219.251) 12.03.02 109 0
305693 프겔을 밝히는 덕짤 땡칠도사갤로그로 이동합니다. 12.03.02 76 0
305692 엿됬다 복룡갤로그로 이동합니다. 12.03.02 45 0
305688 자바에서 String 을 split으로 |로 나누려는데 [2] SODMaster갤로그로 이동합니다. 12.03.02 83 0
305683 헤헤 [1] 코딩...?갤로그로 이동합니다. 12.03.01 42 0
305681 나도 소설보다 자야지 [1] ㅇㅇㅎ(110.47) 12.03.01 58 0
305680 갤에 와서 컴 관련 진로 질문하는 중/고딩들 꼭 보삼. [21] 파괘신문복형(121.173) 12.03.01 245 0
305678 방금 알바가 자른거임? [4] ㅇㅇㅎ(110.47) 12.03.01 76 0
305676 디미고 진학 [14] ㅇㄹㅎ(110.9) 12.03.01 225 0
305674 갑자기 궁금한게 있음 [2] 12(59.12) 12.03.01 55 0
305673 또 정전인콰? [1] ㅇㅇㅎ(110.47) 12.03.01 34 0
305672 병신이 병신이 아니게 되는 일은 없다 [2] 분당살람갤로그로 이동합니다. 12.03.01 89 0
305671 컴공이라든지 컴퓨터쪽 대학에 지원하고싶은 문과생인데 언어영역은 [5] 애인있는잉여(118.41) 12.03.01 109 0
305670 형아들 문과 찌질이가 컴공이나 보안쪽 대학 과에 가고싶은데 어떻게해야 [3] 애인있는잉여(118.41) 12.03.01 103 0
305669 정말 짧은 공학용 계산기 코드 php [2] 파괘신문복형(121.173) 12.03.01 146 0
305668 망가어플 하나 만들어보려고하는데 ㅋㅋㅋㅋㅋㅋ [8] ㄹㄹ(112.146) 12.03.01 460 2
305667 형들은 노엘공연하고 비디아이공연 선택하라고 하면 어디택함? [4] ㅇㅇㅎ(110.47) 12.03.01 73 0
305664 아 한국은 버스 기사, 택시 기사가 왜이리 불친절하냐 [5] 분당살람갤로그로 이동합니다. 12.03.01 126 0
305663 API 진짜 힘들다.. [2] 애슐리::그린갤로그로 이동합니다. 12.03.01 112 0
305662 형들 증감연산자 이해가 안되는 부분이 있습니다 [1] ㅁㄴㅇㄹ(112.155) 12.03.01 66 0
305661 오 풔킹 ㅇㅇㅎ(110.47) 12.03.01 46 0
305660 내 미래와 꿈에관한 질문을 받아주겠어? 프갤형들? 진지하게 질문할게 [3] 애인있는잉여(118.41) 12.03.01 66 0
305659 창업멤버 개발자 찾고 있는데 조언좀 부탁드립니다. [5] 스타트업(175.253) 12.03.01 176 0
305658 우와아아아앙 땡칠도사갤로그로 이동합니다. 12.03.01 53 0
305657 1학년개학임 컴교 [7] ●알콩이갤로그로 이동합니다. 12.03.01 96 0
305656 C언어] C레퍼런스 어디까지 알고있는게 좋을까에 대한 궁금증 [3] 12(59.12) 12.03.01 80 0
305652 안드로이드 개발 하려면 뭐부터배워야대? [1] ㅇㄹㅇ(112.146) 12.03.01 97 0
305651 가가라이브 디컴 막혀버렸나..>? [4] SODMaster갤로그로 이동합니다. 12.03.01 90 0
305650 형들 게임교육원가는게 좋아 아님 4년제 지잡대 컴공가는게 좋아? [1] Reki_갤로그로 이동합니다. 12.03.01 318 0
305649 [질문글]아놔 제대하고 C다시 하려니깐 미치겠네 [1] 엠엠데쓰갤로그로 이동합니다. 12.03.01 92 0
305648 잘자라 우리 복룡갤로그로 이동합니다. 12.03.01 38 0
305647 형들 자료구조 공부할만한 책 없어? [1] 하파타갤로그로 이동합니다. 12.03.01 160 0
305646 형들아 [1] StocK갤로그로 이동합니다. 12.03.01 59 0
305644 이미지 디자인과 상세페이지 디자인 해주실 분 찾습니다 [3] 위아트(175.198) 12.03.01 87 0
305643 스마트폰 보급에 따른 IT 기술의 동향에 대해서 어떻게 보십니콰? [5] 추상화갤로그로 이동합니다. 12.03.01 121 0
305642 이런이런 애니를 원하는 사람이 생기다니. 나도 힘내야겠는걸 [2] ㅇㅇㅎ(110.47) 12.03.01 86 0
305641 야 웹디자이너가 코딩못하면,우쨰? 아이고(220.117) 12.03.01 212 0
305640 그러고 보니 오늘 글 안쌌네 [2] ㅇㅇㅎ(110.47) 12.03.01 46 0
305639 서류에 사이트 등수 같은걸 내놓을려면... [10] 생물학(219.248) 12.03.01 113 0
305637 Deer팀에서 새 식구가 되실 인재를 찾습니다. [1] TeamDeer(115.88) 12.03.01 140 0
305636 형들 코로나 sdk 라고 알어?? [6] 리사심슨R갤로그로 이동합니다. 12.03.01 424 0
305633 공부는 하기 싫고 [1] 공돌이대장갤로그로 이동합니다. 12.03.01 56 0
305628 아 죽을거 같아 공학적닭튀김갤로그로 이동합니다. 12.03.01 54 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2