디시인사이드 갤러리

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

갤러리 본문 영역

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

땡칠도사갤로그로 이동합니다. 2012.03.01 05:48:46
조회 212 추천 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 - -
305925 뉴비입갤. 장난감 갖고왔습니다 여우와포도갤로그로 이동합니다. 12.03.04 68 0
305924 3월 학기초라고 돋네 정신차리고갤질해라갤로그로 이동합니다. 12.03.04 63 0
305920 횽들 내 글 ㅊㅊㅅ 1등됨 생물학(203.226) 12.03.04 59 0
305919 안드로이드 노트북에서 돌릴라면 [1] 정의란 부엌인가갤로그로 이동합니다. 12.03.04 100 0
305916 기사셤치기 대기중인데..떨림_- 라베찌(220.86) 12.03.04 85 0
305915 기사시험 보는 휴먼들은 잘 보고 와염 생각놀이갤로그로 이동합니다. 12.03.04 60 0
305913 6시 40분이길 빔니다 복룡갤로그로 이동합니다. 12.03.04 39 0
305912 님들 이거 옛날에 프갤러가만든 쏘우게임있잖아요 ㅋㅋㅋㅋㅋ [3] 동그라미두개갤로그로 이동합니다. 12.03.04 169 0
305911 프로그래밍용 노트북 추천좀요 1234(218.237) 12.03.04 153 0
305910 리버싱을 공부하고싶은 대학생입니다... [1] 보노짜응(119.193) 12.03.04 213 0
305908 sehwa//base암호화 종류에요 잘찾아보세요 파괘신문복형(121.173) 12.03.04 101 0
305907 제가 제작한 웹 워게임 사이트입니다 파괘신문복형(121.173) 12.03.04 274 0
305905 기사시험 공부 하나도 안했는데 어떻하죠? [6] DMW갤로그로 이동합니다. 12.03.04 125 0
305904 소설시리즈 조치 않나 116.44(203.229) 12.03.04 44 0
305903 자격증 응시 자격이 없는데 자격증이 생기면 어떻게 되냐?? [5] 소음시러(59.7) 12.03.04 119 0
305902 일광면 처봐라 [8] 공돌이대장갤로그로 이동합니다. 12.03.04 124 0
305900 아 시발 d-day [1] dot(59.5) 12.03.04 67 0
305898 뉴비입니다 [5] 마실나감갤로그로 이동합니다. 12.03.03 64 0
305897 C는 버려졌나요? [19] rnmn갤로그로 이동합니다. 12.03.03 257 0
305896 횽들 이게 문제야 (불대수) [8] 적이되고싶은가갤로그로 이동합니다. 12.03.03 244 0
305895 떨려서 잠이 안 오네 [1] dot(59.5) 12.03.03 43 0
305893 횽들 낼 기사 잘보고... 불대수 잠깐 질문함.. [8] 적이되고싶은가갤로그로 이동합니다. 12.03.03 102 0
305892 소설같은 c# [2] 모미지(117.53) 12.03.03 162 0
305891 안드로이드 sdk 와 jdk [2] 정의란 부엌인가갤로그로 이동합니다. 12.03.03 66 0
305890 형들 열혈강의 공부하다 꼬꼬마가 허접한거 질문좀여 [1] 궁금하네여(58.140) 12.03.03 50 0
305889 마이크로소프트에서 제공하는 소프트웨어에 익숙해져라. [5] ㅇㅇ(112.159) 12.03.03 129 0
305888 형들 이제막 c 배울라고하는 초보가 쓸만한 프로그램 추천좀 [8] VFV갤로그로 이동합니다. 12.03.03 115 0
305887 DC에 슬쩍 꼽사리 끼는 자바 스크립트 소스 [2] 자칭선생갤로그로 이동합니다. 12.03.03 118 0
305885 형들이사양으로 코딩하기힘든가?? [6] ㅇㅇ갤로그로 이동합니다. 12.03.03 144 0
305882 c언어로 스택 짜고 있는데.. 포인터에서 막히네여.. 도와주세요 ㅠㅠ 일육육사사(203.229) 12.03.03 53 0
305881 니들중에 회사생활 한 5년이상인 훃들은 신입사원보면 [2] 1(220.117) 12.03.03 155 0
305880 아이패드1용 gta3 하고 있는데 분당살람갤로그로 이동합니다. 12.03.03 54 0
305879 ㅅㅂ 기사시험이 수능보다 떨려 [1] 돌아버린dot갤로그로 이동합니다. 12.03.03 84 0
305875 컴공 4년제 졸업하고 계산기 못짜는 사람은 많을 것 같지 않음??? [1] ㅇㅇ(112.148) 12.03.03 199 0
305874 이런 게임어플 만들어보고 싶다2 길가던놈갤로그로 이동합니다. 12.03.03 58 0
305870 아 코딩하고 싶다. [1] [성대아싸]갤로그로 이동합니다. 12.03.03 83 0
305869 개인적으로 가장 재밌는건 네트워크 [3] 공돌이대장갤로그로 이동합니다. 12.03.03 123 0
305868 컴 포맷해야하는데 외장하드가 고장났음;; file(121.138) 12.03.03 32 0
305866 파싱의 의미 [6] [성대아싸]갤로그로 이동합니다. 12.03.03 200 0
305863 재귀하향파싱 재탕하기 계산기: 사칙연산->추상어셈블리 [3] [성대아싸]갤로그로 이동합니다. 12.03.03 647 0
305861 이히히 드디어 각성 됬다. [2] ㅇㅇㅎ(110.47) 12.03.03 69 0
305859 테트리스 어케 만들어요? [3] rnmn갤로그로 이동합니다. 12.03.03 148 0
305858 계산기는 그래픽 유무로 수준을 따지는게 아니라.. [2] [성대아싸]갤로그로 이동합니다. 12.03.03 108 0
305856 주요 거래업체가 광고대행업체라... .3(175.210) 12.03.03 45 0
305854 컴공 졸업하고 계산기도 못짜는 사람 있다 [4] 길가던놈갤로그로 이동합니다. 12.03.03 234 0
305852 어제 컴구조 첫 수업 중에 [5] dot(59.5) 12.03.03 103 1
305851 근데 컴공 4년제 나오고 구구단 못짜는 사람이 있긴해? [9] 영어쓰던남자갤로그로 이동합니다. 12.03.03 224 0
305850 우리회사는 신입 절대 안짜르는데; [13] 영어쓰던남자갤로그로 이동합니다. 12.03.03 328 0
305849 .. ㄴㅇㄹ(58.149) 12.03.03 1269 1
305848 여자동생이 알려준 네이트 판 가봤더니 가관이네 ㄷㄷㄷㄷ 서현빠돌이갤로그로 이동합니다. 12.03.03 137 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2