2014년 9월 27일 토요일

[공포]군대를 빨리 가야만 했던 이유


 제가 군대를 가기전에 격었던 일에 대해서 이야기 해보겠습니다.


 난 그런대로 잘 수능을 마치고 원하는 대학에 무사히 합격 할 수 있었고 이제 막 신입생이 되고 나서 내가 간절히 바라고 바라던 유럽 여행의 꿈을 위해서 밤잠 줄여가며 학점을 관리 한 덕분에 장학금을 받아 [장학금을 받으면 모아두신 등록금을 부모님께서 내 용돈으로 주신다고 하셨기에] 겨울 방학에 꿈에 그리던 유럽 여행을 갈 수 있게 되었습니다.


 생에 처음 외국으로 떠나는 장거리 여행이기에 떨리기도 했고 사진과 영상으로만 보고 읽던 독일, 프랑스 등을 직접 볼 수 있다는 생각에 들떠 있었어요.


 수많은 여행자들의 글과 배낭 여행의 주의점을 인터넷을 찾아서 읽고 배웠지만 역시 인생은 실전이라고 첫 여행은 고난과 불편함의 연속이었지요.


 의사소통의 어려움은 둘째 치더라도 도시에서 구할 수 있을 것이라고 믿었던 상비 약, 세탁 가루, 등등의 부족한 물품은 내 보름 간의 배낭 여행에 가장 큰 역경이었고 고생이었어요. 그래도 생각했던 것 보다 여행 자금과 기간을 알차게 쓰면서 잘 여행 막바지에 도착하는 듯 싶었으나.


 가장 큰 문제는 외부보다 제게 있었고 제 짧은 생각으로 인해 800년이 넘었다는 교회에서 사건이 발생했습니다.


 저는 그날을 기억하건데 여행의 마지막 날이었고 여행 도중에 찍어놓은 사진을 일괄 정리하면서 보고 있었습니다. 꼭 기억하고 싶은 추억을 만들자, 사진을 많이 찍어가자라는 모토로 여행을 하던 중 예상 외로 내 얼굴이 담긴 사진이 별로 없다는 것을 알고 좌절했던 것으로 기억해요.


 그리고 지금까지의 사진을 보기엔 가져가서 두고 두고 기억할 만한 장소도 없는 듯 싶어 나는 그 교회에서 절대 관광객이 해선 안될 짓을 저질렀습니다.


 교회 벽에 한국에서 가져온 진한 모나미 볼펜으로 직직 제 이름 석자와 날짜, 그리고 장소를 적은 뒤 왔다감 이라고 자랑스럽게 휘적휘적 갈겨 쓴 뒤에 교회 벽면을 등지고 카메라 사진을 찰칵 찍어 댔습니다.


 집에서 가져온 디지털 카메라로 한 두 세방 찍은 뒤 그 중에서 가장 마음에 드는 사진 한장만을 남기고 나머지 두장은 모두 지운 뒤 나는 아무 생각없이 유유히 그 교회를 빠져나왔습니다.


 그리고 제 여행도 그렇게 종료 되었으나 진짜 사건은 제가 한국에 돌아 온 뒤 부터 발생했어요.





 유럽 여행을 마치고 돌아온 저는 그날 밤 부터 열병에 걸린 것 처럼 몇날 몇일을 열이 펄펄 끓면서 집에서 어머니 아버지 병 수발을 받으면서 3일 정도를 꼼짝도 하지 못했습니다.

 덕분에 여행을 다녀오고 유럽에서 무엇을 보았고 어쨌고 자랑할 틈 없이 3일 밤낮을 아프기만 했던 것 같아요.

 다행이 열이 많이 내리고 3일 후엔 한결 가벼운 몸이 되었지만 정말 까딱하면 병원에 실려 갈 뻔했다 싶을 정도로 아팠습니다. 나는 심한 몸살이라 여기고 제 방 침대 위에서 끙끙 앓았고 그렇게 거의다 나았다라고 생각했지요.

 그러나 그렇게 아픈 뒤에도 조금만 움직여도 쉽사리 오한이 들고 참을 수 없이 몸이 떨려오는 등 계속해서 두렵고 이유를 알수없는 공포에 몸과 마음을 가눌 수 없는 이상한 상태가 계속 되었습니다. 그렇게 몸이 심상찮게 아프던 중 저는 생각 하기도 싫을 만큼 끔찍한 가위도 자주 눌렸는데.


 가위의 내용은 정말 가히 기괴하다라고 표현 할 정도로 낯설고 우리가 평범하게 알고 있는 그런 내용이 아니었습니다.



 꿈에서 저는 침대에 누워 있는 것이 아니라 몸이 거대한 목책에 매달려있습니다. 발만 묶인채 거대한 교수대 같은 곳에 거꾸로 매달려 있는 것입니다. 처음에 이 모습이 어디서 보았고 어떤 모습인지 표현하기 힘들었는데 이제 와서 생각해보면 타로카드의 "행맨"을 꼭하니 닮은 모습이었습니다.


001.jpg

 그 곳에서 제가 보는 장면은 정말 충격적이었는데 지금 생각해봐도 이가 덜덜 떨립니다.

 제가 그런식으로 매달린 모습이 이상하다고 생각되었는지 낯선 사람이 저를 향해 저벅저벅 다가옵니다. 그것이 마침내 제 앞에 섰을 때 그것은 사람의 모습을 하고 있지 않았습니다. 예를들어 얼굴이 피가 줄줄 흐르면서 기괴한 웃음을 짓고 있는 말로 형용할 수 없는 영적 존재들이었습니다.

 즉 교수대에 매달린 제게 다가온 것은 하나같이 사람이 아니라 귀신처럼 보였습니다.

 그러나 이것이 다가 아니었습니다. 그 가위에 눌리는 동안에는 정말 두려웠습니다. 그 흉칙한 몰골의 귀신들이 제가 다가와 "왜 이렇게 매달려있어?" 라며 물어서도 아니었고 저를 보면 "낄낄낄 깔깔깔 호호호" 거리면서 미친듯이 웃어대서도 아니었습니다.

 정말 큰 문제는 다음에 있었습니다. 저에게 다가온 그 궁금증과 호기심 가득한 표정의 귀신들은 목이 잘려나갑니다.

 네 정말 목이 잘려나갔습니다.

 저를 향해 목을 길게 빼고 다가오던 귀신들은 낯선 어떤 거대한 것의 습격을 받고 목이 잘려나가는 것이었습니다. 저도 그 꿈에 대해서 더 이상 설명하기 어렵지만 확실한 것은 목이 잘린 귀신들은 끔찍한 단말마를 내뱉고 제 앞에 고꾸라집니다. 이유도 영문도 알 수 없다는 듯한 그 표정이 또렷하게 제 뇌리에 박히면서 저는 잠에서 깨어납니다.


 며칠씩이나 이런 꿈을 꾸면서 저는 신경이 있는대로 예민해지고 좀 처럼 정상적인 생활을 할 수가 없었습니다.

 그러면서 문득 전에 어머니를 따라 수능에 시험을 잘 치룰 수 있게 심적인 안정이나 얻고자 점집을 찾은 적이 있었는데 그때 저를 본 무당은 제 체구가 대장부와 같이 기골이 장대하고 주위에는 저와 함께하는 수호신들이 늘 있으니 잔병치례를 치룰 염려도 없고 큰 병이 나도 곧잘 나을 것이라고 이야기 한 적이 떠올랐습니다.

 저는 왜 그 말이 갑작스레 뇌리에 꽂혔는지는 모르겠지만 온몸이 부들부들 떨리면서 그 생각이 머리를 맴돌았습니다.

 제가 갑작스레 몸이 안좋아졌기에 그 무당이 사기꾼이라고 생각하고 있었던 것이 아닙니다. 저는 제 몸에 이상이 어쩌면 육체적인 문제가 아닌 영적인 문제가 아닐까라고 직감적으로 생각하고 있었던 것 같습니다.

 그리고 제가 그 생각을 떠올린 그날 밤 저는 그 꿈의 실체를 제대로 봤습니다.



  저는 그전에도 자주 가위를 눌려보았었습니다. 그때마다 나는 솔직히 두렵지 않았고 한번도 무섭다는 생각을 가져본적이 없었어요. 마치 주위에 뭔가 절 보호하는 느낌이 늘 들었습니다. 그러나 최근에 그것은 단순한 가위눌림 따위가 아니었습니다.


 난 그 날밤 잠을 자다가 무슨 소리를 듣고 두눈이 갑자기 번쩍 떠졌습니다.


 그리고 제 눈 똑똑히 그것을 확인했습니다.


 가위에서 몸이 움직이는 경우는 흔치 않지만 저는 제 의지와 다르게 침대에서 몸을 일으켜 제 방의 발코니로 다가가 바깥을 바라보았습니다.[바깥을 보고 싶지 않다는 생각에 휩싸였지만 저절로 바깥을 내려다 보았습니다.] 그리고 그것은 좀처럼 꿈처럼 느껴지지 않는 무시무시한 풍경이었습니다.


 아파트 단지 내에 주차장이라던가 가로등 같은 풍경이 보였습니다. 그리고 아파트 단지는 옅은 안개에 휩싸여 있었습니다. 그리고 그 안개 속에서 뭔가가 나타났습니다.


 그것은 말을 타고 있었습니다.


 그것은 정말 낯선 것이었고 아무리봐도 제가 지금까지 봐왔던 존재들과 너무나 달랐습니다. 가위에 눌렸고 몸이 뜻대로 움직이지 않고 생각할 새도 없이 후들거리는 다리를 꿇어 제자리에 털썩 주저 앉았고 그것이 벌이는 끔찍한 짓을 지켜만 보았습니다.


 그 거대한 것은 단지내에 보이는 남자, 여자, 아이, 노인 할것 없이 모조리 목을 잘라버리고 있었습니다.


 쫒기던 한 여자는 발코니에 있는 저와 눈이 마주치고는 잔뜩 겁에 질린 모습으로 제게 살려달라고 외쳤지만 제가 할 수 있는 일은 아무것도 없었고 저는 그 여자가 산 사람이 아니라는 것을 한눈에 보고 알 수 있습니다. 두 동공이 하얗고 얼굴이 파란빛을 띈 것이 사람의 형상이 아니었습니다.


 그 여자 귀신 생김새는 아직도 눈앞에 그려지 듯 생생한데 겁에 질려 쫒기는 모습은 평범한 사람 처럼 온몸을 휙휙 저으며 도망치고 있었습니다.


 안그래도 아무런 생각도 떠오르지 않는데 저를 보며 살려달라 애원하던 그 여자 귀신 머리가 잘려 바닥을 굴러다니는 모습을 보고는 더 더욱 머리가 하얗게 질리고 말았습니다.


 그리고 다음 순간.


 그 말을 탄 낯선 것이 지금까지 다른 귀신들 목을 베어대던 커다란 검을 들어 발코니에 주저앉아있는 저를 향해 가리켰습니다. 그 멀리있는 대도 저는 제 목에 그 차가운 검날이 닿고 있다고 느껴졌고 제 목이 잘려나갈 것 같은 다음 순간 정말 기적처럼 눈이 딱 떠졌습니다.


 저는 순간 이게 진짜 꿈인지 혹은 제가 봤던 영화가 꿈 속에서 재현된건가 싶었지만 잠에서 깬 순간 몸이 진짜 사시 나무 떨듯이 떨려오고 온몸에 열이 뺐긴 듯 차갑게 식어 바들바들 거렸으므로 범상치 않은 일이고 곧 제게 일어날 현실이라는 것을 직시 할 수 있었습니다.


 그리고 저는 그 악몽에서 깬 새벽부터 부모님 방으로 도망가서 제가 격었던 일 그리고 그 꿈의 내용까지 싹 다 내뱉으며 이건 범상치 않은 일이고 제게 무슨 일이 생기려 한다고 미친 사람처럼 중얼거렸습니다. 진짜 그 때는 살고 싶어서 잘못하면 죽을 것 같아서 그렇게 부모님께 빌듯이 사정사정하면서 떠들어댔습니다.


 다행스럽게도 부모님 또한 이게 범상치 않음을 생각하신 듯 절 그날 바로 전에 찾아갔던 점집으로 데려갔습니다.


 사실 귀신이나 영적인 존재에 대해서 그다지 믿고 있지 않은 편이었는데 저는 그날 겪은 일을 기점으로 무당과 귀신을 믿습니다. 점집에 택시를 타고 앞으로 가자마자 제가 겪은 건 또 숨이 안쉬질 정도로의 공포와 혼이 빠져나가는 듯한 추위였는데.


 점집 앞에 선 순간 저는 정말 귓속이 찢어질 듯이 커다란 비명소리를 들었습니다. 문제는 그 소리가 제 귀에만 들렸어요. 사지가 바들바들 떨려오는 공포에 저는 옆에 계신 어머니께 비명소리를 듣지 못했냐고 거듭 물었지만 어머닌 두눈만 휘둥그레 뜨시곤 절레 절레 고갤 흔드셨습니다. 게다가 더 놀라운 것은 제가 그 점집에 들어서자마자 그 곳에서 손님을 받고 있어야 할 무당이 호들갑을 떨면서 제게 뛰어온 것입니다.


 그러면서 사시나무 떨듯 떠는 제 두 손을 꼬옥 붙잡더니. '어디서 괴물을 데려왔어 도데체 어디서 무얼 했길래 저 엄청난 서양귀를 데려온거야!'  라고 호통을 치듯이 제게 고함을 질렀습니다.


 전 순간 두려움과 알 수 없는 죄송스러움에 두 눈에서 눈물이 하염없이 흐르는 것을 느꼈는데 도저히 눈물이 멈추지 않았습니다. 그러면서 제가 당시에 생각지도 못하고 있었던 오래된 서양 교회에다가 낙서를 한 일과 사진을 찍은 일 그리고 그곳에 누를 범한 일까지 샅샅이 무당 손을 붙잡고 떠들어댔습니다. 제가 벌벌 떠는 만큼 그 무당도 호들갑을 떨며 제 말을 듣더니만 더 이상 내 주위로 피를 보지 않으려면 제가가 장군들이 있는 곳으로 가야한다고 말했음.


 그 무당이 그때 장군들이 있는 곳이라고 이야기 한곳은 '군대' 였습니다.

 제가 빠른 시일내에 입대를 해야지만 그 서양 귀신이 자신의 군마를 이끌고 더 이상 참극을 벌이지 않는다고 호통치셨어요. 그러면서 이어 말하길 지금도 내 주위로 귀신이라는 모든 귀신, 악귀, 잡귀 할것 없고 저와 함께 계셨던 수호신까지 그 서양 귀신에 의해 싸그리 또 한번 죽고 있다고 이야기하는 것이었습니다.


 몇 월이고 관계없이 저는 빠른 월일에 입영신청을 넣었고 될수 있으면 빠른 시일 내에 입대를 하게 되었습니다. 그렇지 않으면 제 목이 잘려 죽을 것이라고 무당은 제게 크게 호통을 쳤습니다.

 그리고 그 입대일 전까지 저는 밖으로 나갈 수도 나가지도 않았습니다.

 최대한 몸을 사렸어요. 또한 우리나라의 전통적인 "천하대장군" "지하여장군"인 장승을 현관문 앞에 의자만한 크기로 주문 제작하여 세워두기 까지 했습니다. 그래야지만 제 명줄을 잡고있을 수 있다고 무당은 신신당부하면서 알려주었지요.

 정말 장승이 저를 지켜줬다고 저는 생각합니다.

 제가 입대를 하는 그 날 놀랍게도 저희 현관문 앞에 서있던 두 장승 모두 도끼로 쪼개지듯 반으로 갈라져버렸거든요...


출처 : [Playxp 자유게시판]

예민한 사람들을 위한 글

너는 나에게 상처를 줄수없다. 요즘 틈날때마다 간간히 보는책이다.
멘탈이 유리처럼 약하고 주변에서는 그럴의도가 아니었다해도 더욱 심한 의도로 오해를 하고 상처입는 나같은 사람에게는 옆에 붙잡아 앉혀놓고 읽어주고 싶은 글을 여기에 옮겨 본다.


만약 우리가 누군가를 만날때 두꺼운 갑옷을 입은 채 부자연스럽게 접촉해야 한다면 그 관계는 뭔가 잘못된 것이다. 우리가 아무리 노력한다 해도 상대가 우리의 말과 행동을 나쁜 의도가 있다고 해석하는 한 상처 주는 일을 피할 수는 없기 때문이다.
그런 함정에서 스스로를 구할수 있는 유일한 방법은 그의 기준에 맞추는 것이 아니라 자기 자신을 적극적으로 방어하고 보호하는 것이다.

흔히 많은 사람들이 아무것도 하지 않는 것, 다른 사람이 상처 입는 것을 신경 쓰지 않고 자신과 무관한 일이라고 생각해 버리는 것으로 함정을 피하려고 하는데 그것은 상처를 멈추지도 갈등을 해결하지도 못한다.

그보다는 지금의 이런 관계가 자신을 얼마나 힘들게 하는지 상대방에게 솔직하게 말하는 것이 중요하다. 그리고 상대방의 함정에 말려들지 말고, 그토록 상처를 주는것이 무엇이고 그가 필요로 하는 것이 무엇인지를 물어봐야 한다. 장담컨데 당사자조차 자신이 원하는 것이 무엇인지 모르는 경우가 태반일 것이다.
지금까지 뭘 원하는지도 모르는 사람의 비위를 맞추겠다고 고군분투한 것이다.

하지만 어느 순간에도 자신의 주관을 포기하지 않고, 자기 자신안에 머물렀다면 그동안의 노력이 분노로 바뀌지는 않을것이다. 적어도 '내가 너에게 어떻게 했는데' 라는 분노나 '어쩌다 내가 이런 바보 같은 짓을 한 건가' 라는 자기 비하의 낭떠러지로 떨어지지는 않을 수 있다.









상처받은 사람들은 상처를 빌미로 상대가 자신을 떠나지 못하게 옭아맨다.
그들의 자존감은 나약하지만 다른사람에게 의존하고 매달리는 힘은 엄청나게 세다.

단호하게 끈을 자르지 않으면 그들의 고통까지 짊어져야 한다.



- 너는 나에게 상처를 줄수없다. Barbel Wardetzki 바르벨 바르데츠키(심리학자이며 심리상담가)



2014년 9월 25일 목요일

이벤트 루프와 비동기 I/O

이벤트 루프
http://en.wikipedia.org/wiki/Event_loop

Usage[edit]

Due to the predominance of graphical user interfaces, most modern applications feature a main loop. Theget_next_message() routine is typically provided by the operating system, and blocks until a message is available. Thus, the loop is only entered when there is something to process.
function main
    initialize()
    while message != quit
        message := get_next_message()
        process_message(message)
    end while
end function


비동기I/O
http://en.wikipedia.org/wiki/Asynchronous_I/O

자바스크립트로 컴파일할 수 있는 언어 목록


CoffeeScript Family (& Friends)

Family (share genes with CoffeeScript)
  • Coco A CoffeeScript dialect that aims to be more radical and practical, also acts as a test bed for features that get imported in CoffeeScript.
    • LiveScript is a fork of Coco that is much more compatible with CoffeeScript, more functional, and with more features.
  • IcedCoffeeScript A CoffeeScript dialect that adds support for await anddefer keywords which simplify async control flow.
  • Parsec CoffeeScript CS based on parser combinators. The project's aim is to add static metaprogramming (i.e. macros + syntax extensibility) to Coffee Script (CS), similar to how Metalua adds such features to Lua. The resulting compiler, once merged with the official compiler, should be usable as a drop-in replacement for it.
  • Contracts.coffee A dialect of CoffeeScript that adds built-in support for contracts.
  • Uberscript, a CoffeeScript fork that adds type annotations which are compiled to Google closure compiler type annotation comments.
  • ToffeeScript A dialect of CoffeeScript that support Asynchronous Syntax and Regexp operator =~
  • Caffeine A dialect of CoffeeScript that support packages and classes import, useful for browser applications
  • heap.coffee A dialect of CoffeeScript that offers a C-like type system with manual memory management
  • EmberScript Ember.js-infused CoffeeScript.
Friends (philosophically related)
  • Kaffeine Enhanced Syntax for JavaScript.
  • Jack Making programming playful.
  • move A simpler and cleaner programming language.
  • Moescript Indent-based language
  • pogoscript language that emphasises readability, handles async control flow nicely, is friendly to domain specific languages and compiles to regular JavaScript
  • LispyScript A JavaScript with Lispy syntax and Macros. 
  • wisp A homoiconic JavaScript dialect with Clojure syntax, S-expressions and macros. Aims to be rich subset of Clojure(Script) that seamlessly interops with both Clojure(Script) and JavaScript. 
  • Hot Cocoa Lisp A Lisp-like language that compiles to JavaScript. 
  • Sibilant JavaScript with a lisp. 
  • ki Clojure-like syntax, mori's immutable data structures in a few sweet.jsmacros. Can be intermixed with JavaScript. 
  • jisp A JS-native and axiomatic Lisp that focuses on the core ideas of code-as-data, S-expressions, and macros, introducing as few new concepts as possible. 
  • Ham looks very similar to JavaScript at first, but offers (hopefully) many useful features
  • GorillaScript Compile-to-JavaScript language designed to empower the user while attempting to prevent some common errors, offers Macros and optional Typing
  • RedScript Ruby-flavored JavaScript.
  • Daonode functional logic solver, compiler.
  • LiteScript Literate, highly-readable, type annotated, imperative language that compiles to JavaScript.
  • Radium A programming language with design of syntax and simplicity as a big focus.
  • ColaScript similar to Dart, CoffeeScript, Python and PHP
  • Taijilang a customizable and extensible language with dynamic parser and meta language.
  • MoonScript MoonScript is a dynamic scripting language that compiles into Lua. The syntax of MoonScript has been heavily inspired by the syntax of CoffeeScript.
  • Earl Grey An extensible language with pattern matching, hygienic macros and a syntax similar to Python.

JavaScript Extensions

Security enforcing JavaScript
  • Caja Compiles ES5/strict to ES3 and supports object-capabilities
  • ADsafe Client-side static verifier and API, making third party scripts safe.
  • FBJS Facebook JavaScript, used for scripting FBML (Facebook Markup Language) gadgets.
  • Jacaranda Static verifier supporting object-capabilities.
  • Microsoft Web Sandbox Technology preview of securing web content through isolation.
  • Gatekeeper Microsoft Research project.
  • Dojo Secure Framework for building secure mashups.
  • Local.js uses Web Workers to sandbox applications and a RESTful messaging protocol called HTTPL (HTTP Local) to communicate between them
Static typing
  • Some of the ones listed below are also statically typed, such as mobl, GWT, JSIL, NS Basic, and Haxe.
  • Dart by Google. C/Java-like syntax with optional typing.
  • TypeScript by Microsoft. Typed superset of JavaScript.
  • TeJaS from Brown PLT. Types for JavaScript (itself).
  • asm.js – subset of JavaScript that can be used as a low-level, efficient target language for compilers. Now included in Firefox.
  • JavaScript++ JavaScript superset with classes, type checking, among other features
  • MileScript [commercial] A strongly-typed language similar to C# and Java, but which compiles to JS. free for non-profit, educational use.
  • Mascara [commercial] Enhances JavaScript with powerful features like classes, namespaces and type-checking.
  • Roy tries to meld JavaScript semantics with some features common in static functional languages
  • Elm type-safe functional language that compiles to HTML, CSS, and JavaScript.
  • JSX a faster, safer, easier alternative to JavaScript
  • Este.js Google Closure written in CoffeeScript statically compiled to JavaScript (and much more).
  • Swym – statically typed, with type inference and generics
  • Typecast.js – JavaScript platform for statically typed variables without a custom compiler.
  • purescript – statically typed compile-to-JS language with basic extensible records and type-safe block
Synchronous to Asynchronous JavaScript Compilers (CPS)
  • Streamline.js Uses underscore (_) to stand for callbacks. This fork preserves line numbers for debugging.
  • mobl The new language for programming the mobile web.
  • StratifiedJS JavaScript + structured concurrency.
  • NarrativeJS JavaScript extension with asynchronous futures and promises.
  • jwacs JavaScript With Advanced Continuation Support.
  • Wind.js Wind.js is an advanced library which enable us to control flow with plain JavaScript for asynchronous programming (and more) without additional pre-compiling steps.
  • TameJS adds new keywords 'await' and 'defer'
  • async.js Async utilities for node and the browser
  • Continuation.js A lightweight JIT compiler for simplifying asynchronous JavaScript programming with no runtime dependences. It supports both Node.js and browser-side JavaScript and is compatible with CoffeeScript (also TypeScript, and any other scripts compile to js).
  • Kal makes asynchronous programming easy and clean by allowing functions to pause and wait for I/O, replacing an awkward callback syntax with a clean, simple syntax
  • JSPipe provides JavaScript primitives to write async code without callbacks or chained functions. Inspired by Goroutines and Channels found in Go and in Clojure. For Web and NodeJS. ES5 and ES6.
JavaScript Language Extensions
  • ContextJS is an implementation of Context-oriented Programming for JavaScript.
  • Objective-J Shares with JavaScript the same relationship that Objective-C has with the C programming language: that of being a strict, but small, superset.
  • Mochiscript Object-oriented JavaScript with syntactic sugar. Released as a Ruby gem.
  • jangaroo AS3 (ActionScript) to JavaScript.
  • Flapjax Event-driven, reactive evaluation.
  • jLang adds object oriented syntax, namespaces, operators overriding
  • Restrict Mode
  • TIScript gentle extension of JavaScript
  • Six Six is a language super-set of JavaScript that enables new syntactic features from the 6th edition of ECMAScript to be used, through a transpiler, in your scripts today.
  • js-- JavaScript subset for interactive/visual programming.
  • Latte JS Superset of JavaScript (eventually ES6), with similar goals to CoffeeScript, but keeping JS syntax.

Ruby

  • Opal Ruby to JavaScript compiler.
  • HotRuby Runs opcode, compiled by YARV on Ruby inside a web browser or in Flash.
  • ColdRuby Compiler of Ruby 1.9 MRI bytecode, and a runtime written in JavaScript to aid in execution of Ruby code.
  • rb2js Converts Ruby to JavaScript.
  • RubyJS A successor to rb2js
  • Red Writes like Ruby and runs like JavaScript
  • Quby Used for game coding site, open source.
  • 8ball Ruby-to-JavaScript source-to-source transformer

Python

  • PYXC-PJ [CS friend] Python to JS. Can generate a (line/col)-number mappings file.
  • Pyjamas Python to JS.
  • Pyjaco Python to JavaScript compiler with module support.
  • Pyjs Python to (readable) JS.
  • Skulpt Python. Client side.
  • PyCow Python to MooTools JS.
  • PyvaScript Python-like syntax to JavaScript.
  • RapydScript JavaScript with a Pythonic syntax.
  • Brython browser python
  • PythonScript Python-like compiled to JavaScript
  • pythonscript Python compiled to readable JavaScript using the AST. (proof of concept)
  • PythonJS Integrates several python to js methods into one project. Very Active.

Erlang

  • Shen is the first and yet smallest Erlang JavaScript Compiler based on Erlang AST. It allows you to translate Elixir, Joxa, Lol and Erlang programs to JavaScript with erlc. JavaScript/OTP subset. Has node npm package callederlang-shen-js.
  • LuvvieScript a browser-based dom-scripting language that is a strict sub-set of Erlang which is AST-to-AST transpiled to JavaScript (code )

Perl

  • Perlito Project to compile Perl 5/6 to JavaScript, Ruby, SBCL, and Go.

Java/JVM

  • GWT Google Web Toolkit, compiles Java to JavaScript.
  • Java2Script Eclipse Java to JavaScript compiler plugin and JavaScript version of SWT.
  • j2js Java bytecode to JavaScript.
  • Strongly-Typed JavaScript (STJS) – JavaScript code generator from Java source. It is built as a Maven plugin.
  • BicaJVM JavaScript implementation of JVM.
  • Doppio JVM interpreter on CoffeeScript.
  • Processing, a Java-based visualization language that interprets to JavaScript.
  • Kotlin Statically typed programming language targeting the JVM and JavaScript.
  • Ceylon a modular static-typed JVM language compilable to JavaScript.
  • GrooScript a framework to convert Groovy code to JavaScript.
  • node-jvm java virtual machine in pure node.js
  • Bck2Brwsr Run "browserified" Java Code in, well, the browser.
  • QWT QWT consists of a Java-to-JavaScript compiler, a prepared library of Qooxdoo componente (version 0.7.x) and some other tools. Similar to GWT
  • TeaVM is an ahead-of-time transpiler that takes JVM bytecode and produces JavaScript.

Scala

  • Scala.js A Scala to JavaScript compiler
  • js-scala JavaScript as an embedded DSL in Scala
  • scalagwt enhanced GWT (accepts jribble as well as Java) plus Scala to jribble.
  • JScala Scala macro that produces JavaScript from Scala code.

C#, F#, .NET related languages

  • jsc [experimental] Recompile your .NET assembly to JavaScript, ActionScript, PHP or Java.
  • JSIL MSIL (.NET bytecode) to JavaScript
  • Script# Compiles C# to JS.
  • Prefix in development
  • Blade Visual Studio add-on for converting C# to JavaScript
  • SharpKit C# to JavaScript Cross-Compiler
  • Saltarelle C# to JavaScript Compiler
  • FunScript F# to JavaScript compiler with JQuery etc. mappings through a TypeScript type provider
  • Pit F# to JavaScript compiler
  • WebSharper Lets you compile F# to JS.
  • NemerleWeb Nemerle language compiled to JS.
  • Blue Storm F# to JavaScript (and some other languages).
  • JScriptSuite .NET to JavaScript compiler (cross browser API, client site controls and components).
  • DotNetWebToolkit Toolkit providing a .NET CIL to JavaScript transcoder and Visual Studio project/debugging integration
  • Netjs .NET to TypeScript and JavaScript compiler. It uses multiple stages to produce JavaScript for your web apps.
  • WootzJs C# to Javascript cross-compiler built on top of Microsoft Roslyn, which handles the complex process of converting your C# code into syntax trees with symbol information

Lisp, Scheme

Clojure-like
  • ClojureScript Clojure to JS, the official version. Supports the majority of Clojure including persistent datastructures.
  • ClojureJS Subset of Clojure to JS.
  • Chlorinejs A fork of ClojureJS with a port of clojure.core library.
  • wisp A homoiconic JavaScript dialect with Clojure syntax, S-expressions and macros. Aims to be rich subset of Clojure(Script) that seamlessly interops with both Clojure(Script) and JavaScript. 
  • Scriptjure Library for generating JavaScript from Clojure forms.
  • ki Clojure-like syntax, mori's immutable data structures in a few sweet.jsmacros. Can be intermixed with JavaScript. 
Scheme-like
  • BiwaScheme Scheme(R6RS) in JavaScript
  • Fargo Scheme in JavaScript
  • Moby Scheme A Scheme running in JS.
  • nconc Scheme interpreter in JavaScript with stack-friendly tail calls and full call/cc
  • scheme2js Scheme to JavaScript.
  • Spock A Scheme to JavaScript compiler that uses Henry Baker's Cheney-on-the-MTA compilation strategy
  • Whalesong Racket to JS compiler
Other
  • EdgeLisp A Lisp in the tradition of Common Lisp
  • Parenscript Subset of Common Lisp to JS.
  • Ralph Lisp-1 dialect that compiles to JavaScript, inspired by Dylan
  • Oppo A JavaScripter’s lisp. Inspired by JavaScript, Clojure and CoffeeScript. Compiler built using Jison.
  • LispyScript A JavaScript with Lispy syntax and Macros. 
  • Outlet A simple Lisp that supports CPS and in-browser stepping debugging, and other things. In development.
  • Hot Cocoa Lisp A Lisp-like language that compiles to JavaScript. 
  • Sibilant JavaScript with a lisp. 
  • jisp A JS-native and axiomatic Lisp that focuses on the core ideas of code-as-data, S-expressions, and macros, introducing as few new concepts as possible. 

OCaml

Haskell

  • UHC (Utrecht Haskell Compiler) backend converts UHC core to JavaScript, allowing the compiling of Haskell code to JS.
  • ghcjs Compile normal Haskell into JS
  • jmacro Quasi-Quoted JS that you can insert Haskell values into (there is alsoshakespeare-js for that purpose), but also supports a more Haskellish syntactic version of JavaScript.
  • https://github.com/aculich/lambdascript Compile a subset of Haskell into JS
  • YHC (York Haskell Compiler) backend, as above but with YHC core language.
  • jshaskell
  • haste
  • fay A proper subset of Haskell that compiles to JavaScript
  • forml A contemporary programming language intended to approximate the safety of Haskell and the expressiveness of Ruby.

Smalltalk

  • Amber – formerly known as Jtalk
  • Clamato a Smalltalk dialect that is designed to operate within the JavaScript runtime.
  • Silver Smalltalk [commercial?] Smalltalk in the browser. (Still active?)
  • Lively Kernel – smalltalk/squeak-like development environment in the browser. See also Avocado, built on top of it.
  • Little Smallscript Little Smalltalk to JavaScript translator.

C/C++

  • Emscripten LLVM to JavaScript compiler. LLVM is "an aggressive open-source compiler for C and C++," as well as other languages.
  • Cheerp (former Duetto) “compiles C++ applications to binary code and JavaScript. Based and integrated into the LLVM/clang infrastructure”
  • maja vala (gobject) to JavaScript
  • Clue C language compiler to different runtimes (Lua, JS, Perl 5, C, Java, CL).
  • LLJS typed dialect of JavaScript that offers a C-like type system with manual memory management
  • Mandreel Can convert C++ and Objective-C applications based on OpenGL ES to JavaScript or Action Script 3 web application.

Basic

  • NS Basic/App Studio [commercial] Visual Basic-style BASIC to JavaScript compiler. Includes IDE. Targets iOS and Android
  • qb.js An implementation of QBASIC in JavaScript

Pascal

  • Smart Mobile Studio [commercial] Object Pascal to JavaScript compiler and Delphi like IDE that brings classes, inheritance, interfaces and more to JavaScript
  • Elevate Web Builder [commercial] Visual development tool for web applications that compiles standard Object Pascal source code into JavaScript

Go

  • Go2js Line-to-line translator from Go to JavaScript.
  • GopherJS A transpiler from Go to JavaScript.
  • TARDISgo Compile Golang to Haxe (then on to JavaScript, Flash, Java, C++, C#, PHP & Neko)

Multitarget

  • Haxe compiles to several platforms (C++, Flash, JS, Neko, PHP).
  • Fantom Evolutionary object-oriented language emphasizing succinct and effective APIs (JVM, CLR, JS).
  • LZX (Laszlo XML) LZX is OpenLaszlo's declarative user interface language, which is compiled into JavaScript 2 as an intermediary format, and further compiled into either JavaScript 1.5 or ActionScript 3.
  • Clue and jsc above target multiple runtimes in addition to JavaScript
  • Nimrod compiles to C and JavaScript
  • Monkey [commercial] compiles to several platforms (JavaScript, ActionScript 3, C++, Java, CSharp).
  • defrac compiles Java bytecode to several platforms (including JavaScript)

Tierless languages (produce both client & server)

  • Fun A programming language for realtime webapps – compiles to client-side and server-side JS.
  • Ur In the tradition of ML and Haskell.
  • mobl The new language for programming the mobile web.
  • E Compiles E to JS. E is a secure distributed persistent pure object language.
  • Sugar new programming language designed to replace JavaScript for client-side (and server-side) web development
  • Opa write your complete application in just one language, and the compiler will transform it into a self-sufficient executable

Visual programming tools

  • Waterbear Tool for making Scratch-inspired block-based languages on the web. Examples include blocks for JavaScript, ProcessingJS, NodeJS, and more.
  • Snap – JavaScript of BYOB, which is a fork of Scratch
  • ScriptBlocks
  • Illumination [Commercial] Visual, cross-platform tool creates apps for Android, iPhone, iPad, Desktops and HTML5 or Flash websites. The I language underlies the tool.
  • JsMaker visual JavaScript programming
  • Meemoo flow-based visual programming framework for hackable web apps
  • NoFlo JavaScript implementation of Flow-Based Programming. Programs (network graphs) can be visually created with DrawFBP
  • Blockly web-based, graphical programming language. Users can drag blocks together to build an application
  • Maeda Block – visual game programming language powered by enchant.js and Google Blockly. See also the Japanese version.

SQL

PHP

  • phype run PHP code directly in your browser
  • uniter run PHP code in Node.js or the browser

Others

  • Oia A port of Io to JavaScript.
  • Plaid A gradually-typed, typestate-oriented language designed as a better Java.
  • Quixe a Glulx VM interpreter written in JavaScript
  • Gnusto a Z-Machine VM interpreter written in JavaScript
  • Logo Interpreter
  • p2js Perl to JavaScript converter
  • Reb2Static Rebol to JavaScript
  • RPN Interpreter for a language with a Reverse Polish Notation syntax.
  • jsForth
  • wForth
  • Agda a dependently typed functional programming language and mechanized proof assistant
  • XLCC Interpret LCC into JavaScript on node
  • SMLtoJs SML to JavaScript compiler
  • lua.js Lua parser
  • Brozula Lua bytecode interpreter
  • Pygmy a dynamic language that compiles to JavaScript designed to be readable but concise enough to be competitive in code golf.
  • browserl An Erlang Emulator written in JavaScript
  • ErlyJS (abandoned) JavaScript to Erlang compiler
  • Topaz Rebol inspired language on top of JavaScript
  • NGN APL an APL-to-JavaScript compiler written in CoffeeScript
  • CobolScript COBOL language compiler to JavaScript.
  • Idris Dependently typed functional language with a JavaScript backend.
  • Dogescript JavaScript for the moon; so syntax very doge much future.
  • Wortel J/APL inspired language with Polish Notation, compiles to JavaScript.
  • JEnglish interprets regular English statements into HTML/CSS
  • Jotlin a small programming language in Kotlin
  • uilang and uiscript simple UI-focused script languages for web designers

Tools for Compiler Writers

JavaScript Parsers and Extensions

JavaScript Optimizers
JavaScript Parser Generators
  • jison Bison in JavaScript, used by CoffeeScript
  • nearley A fast, lightweight Earley parser generator
  • OMeta/JS (source) metacompiler for many languages to many targets, including js.
  • PEG.js parser generator for JavaScript based on the parsing expression grammar formalism
  • languagejs – PEG parser written in JavaScript with first class errors
  • Canopy Self-hosting PEG parser compiler for JavaScript, influenced by Ruby parser generators such as Treetop and Citrus
  • JS/CC LALR(1) parser generator
  • jsparse PEG by Grandmaster Chris Double
  • ReParse parser combinator library for JavaScript like Haskell's Parsec
  • p4js Monadic parser library for JavaScript
  • JSGLR Scannerless, Generalized Left-to-right Rightmost (SGLR) derivation parser for JavaScript
  • ANTLR 3 has a JavaScript target. ANTLR 4 has not implemented its JavaScript target yet.
  • Cruiser.Parse LL(k) parser
  • MetaCoffee PEG parser using CoffeeScript and white-space-significant syntax
JavaScript AST, Semantics

출처:
https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS