데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Rockstar 프로그래밍 언어 알아보기: 코드로 노래 가사를 쓸 수 있다면?

      햄버거주도개발 24.04.30
      1,203 10 5
      DEVOTEE 요약
      본 블로그는 노래와 프로그래밍 언어 간의 연결점을 찾아 Rockstar라는 프로그래밍 언어를 소개합니다. Rockstar는 메탈 가사를 모티브로 한 동적 타입 언어로, 프로그래밍 언어가 예술적일 수 있음을 보여줍니다. 이 언어는 복잡한 문법의 대신 가사처럼 보이는 코드로 프로그램을 작성하며, 농담에서 시작해 'CERTFIED ROCKSTAR DEVELOPER'라는 재미있는 측면도 있습니다.

      들어가며

      안녕하세요 데보션 영 3기 5CEAN에서 활동 중인 권지원이라고 합니다.

      우선 노래 좀 들으면서 시작할까요?

      저는 종종 노래방에서 Linkin Park의 Given Up을 부르면서 스트레스를 풀곤 합니다. 코딩을 할 때는 유명한 락 밴드들의 노래를 하루종일 틀어놓고요.

      노래를 들으며 코딩을 하다 보면 이런 생각이 들 수 있습니다. 프로그래밍 언어와 노래는 아무런 연관이 없을까?

      "Just call my name, 'cause I'll hear you scream Master, Master"란 Metallica의 Master of Puppets 노래 가사를 보고, 프로그래밍 언어의 컴파일러를 생각해보는 겁니다.


      call에게 print 란 키워드 역할을 주고, my name이 변수 이름이라고 가정하면?

      call my name
      Master hear your scream
      print(my name)
      Master = "your scream"

      공백을 기준으로 파싱하고, 특별한 규칙을 적용할 키워드를 정의한다면? 흥미로운 언어가 만들어지지 않을까?


      실제로 이런 농담 같은 생각에서 만들어진 언어가 존재합니다. 바로 오늘 소개할 프로그래밍 언어인 Rockstar입니다.

      Rockstar 언어란?

      계기

      The Art of Code 란 컨퍼런스를 보신 분 계신가요? 코드의 예술적인 면을 보여주는 아주 재미있는 강연입니다.

      그중에서도 제 눈을 이끈건 영상 말미에 소개된 강연자 Dylan Beattie가 제작한 Rockstar란 언어입니다.

      프로그래밍 언어 자체로도 아름다울 수 있다는 것을 깨닫게 해주었죠. 예제 코드를 한번 볼까요?

      Midnight takes your heart and your soul
      While your heart is as high as your soul
      Put your heart without your soul into your heart
      
      Give back your heart
      
      
      Desire is a lovestruck ladykiller
      My world is nothing 
      Fire is ice
      Hate is water
      Until my world is Desire,
      Build my world up
      If Midnight taking my world, Fire is nothing and Midnight taking my world, Hate is nothing
      Shout "FizzBuzz!"
      Take it to the top
      
      If Midnight taking my world, Fire is nothing
      Shout "Fizz!"
      Take it to the top
      
      If Midnight taking my world, Hate is nothing
      Say "Buzz!"
      Take it to the top
      
      Whisper my world

      해당 코드는 Rockstar로 쓰인 Fizzbuzz입니다.

      코드에 리듬만 붙이면 그럴싸한 노래가 될 것 같습니다.

      Rockstar 언어의 핵심 가치인 "If you can't sing it, you can't have it"이 드러난 코드입니다.


      그렇다면 Rockstar 언어는 어떻게, 그리고 왜 만들어지게 된 것인지 알아보겠습니다.

      언어 소개

      Rockstar language logo

      Rockstar란 메탈 가사처럼 보이는 프로그램을 작성할 수 있는 동적 타입 컴퓨터 프로그래밍 언어입니다.

      Paul Stovell의 트윗에서 영감을 받아 Dylan Beattie에 의해 만들어진 언어로, 1980년대 하드 록과 파워 발라드 가사 컨벤션에 큰 영향을 받았습니다.


      Rockstar 언어는 왜 만들어진 걸까요? Rockstar 개발자에 따르면 해당 언어는 순전히 농담에서 출발한 언어라고 합니다.

      그리고 노래 가사를 컴파일하는 것이 멋지고 'CERTFIED ROCSTAR DEVELOPER'라고 스티커를 붙일 수도 있다는 점이 장점인 언어라 홍보하고, 그 이외에 기능적인 장점은 일절 언급하지 않습니다.

      이것도 이 언어의 매력적인 점이라고 볼 수 있죠 😄


      언어의 주요 특징으로는 거의 모든 코드가 문자라는 것입니다.

      Rockstar의 주요 문법은 Hello World 코드 샘플을 분석해보며 훑어보겠습니다.

      Eternity takes the pain.
      The prize is silence
      Until the pain is nothing,
      Roll the pain into violence,
      Cast violence into your lies,
      Let the prize be with your lies.
      
      Give back the prize
      
      The night is calling me
      Rock the night like a colourcast tranquility
      The dawn is a spellbound moonbeam
      Rock the night with the dawn, the dawn,
      Your fire is a neverending aftereffect
      Rock the night with your fire
      
      The spirit is electric thunder
      Rock the spirit with your fire
      Rock the spirit like a thunderbolt fist
      Rock the spirit with the dawn
      Rock the spirit like a chamaeleon stormcloud 
      
      Let fear be eternity taking the night
      Let hope be eternity taking the spirit
      
      Time is all up
      Cast it into the void
      Let fear be with the void
      Let fear be with hope
      
      Shout fear

      해당 Rockstar 코드를 실행하면 콘솔 창에 Hello World가 출력됩니다. 엄청 길지만 참 멋진 코드입니다.


      Rockstar에서는 주석을 소괄호로 처리합니다.

      이번 게시글에서는 가볍게 알아보는 자리이므로 예제에 주석으로 코드가 의미하는 바를 분석해놓았고, 예제 밑에 주요 문법 특징을 적어보았습니다.

      Eternity takes the pain. (함수의 시작점으로, 함수 이름은 Eternity, 파라미터 이름은 the pain이란 뜻입니다.)
      
      The prize is silence (The prize의 값은 10진수 7 *poetic literals 참고)
      
      Until the pain is nothing, (the pain의 값이 0이 될 때까지 반복되는 반복문)
      
      Roll the pain into violence, (the pain의 첫번째 원소를 반환하고, 반환 값은 violence에 할당됩니다.)
      
      Cast violence into your lies, (cast는 문자열을 숫자로 바꾸고, 숫자를 문자열로 바꿉니다. 앞서 violence에 저장된 값이 숫자 혹은 문자열로 바뀌어 your lies에 저장됩니다.)
      
      Let the prize be with your lies. (the prize + your lies = the prize란 의미입니다.)
      
        
      
      Give back the prize (the prize가 함수의 반환값이란 의미입니다.)

      Poetic Literals

      • Rockstar만의 독특한 언어 기능.

      • 개발자 내면 깊숙한 곳의 공포, 두려움을 표현하도록 도와줍니다.

      • 그중 poetic number literal에 대해 살펴볼까요?

        • 변수 이름 + 키워드 is, are, was, were 뒤에 오는 해당 줄의 코드는 모두 10진수로 취급됩니다.

        • 따라서 The prize == 7이 됩니다.

      Cast

      • Rockstar에서 문자와 숫자는 유니코드를 기준으로 변환됩니다.

      The night is calling me (the night = 72, calling == 7, me == 2라서 72)
      
      Rock the night like a colourcast tranquility (the night = [72, 101]) 
      
      The dawn is a spellbound moonbeam (The dawn == 108)
      
      Rock the night with the dawn, the dawn, (the night == [72, 101, 108, 108])
      
      Your fire is a neverending aftereffect (Your fire == 111)
      
      Rock the night with your fire (the night + your fire -> the night == [72, 101, 108, 108, 111])

      Array

      • Rock -> 배열에 원소 삽입

      • with 뒤에 있는 원소를 삽입

      The spirit is electric thunder (The spirit == 87)
      
      Rock the spirit with your fire (the spirit == [87, 111])
      
      Rock the spirit like a thunderbolt fist (the spirit == [87, 111, 114])
      
      Rock the spirit with the dawn (the spirit == [87, 111, 114, 108])
      
      Rock the spirit like a chamaeleon stormcloud (the spirit == [87, 111, 114, 108, 100])
      • 변수 이름은 case insensitive이기 때문에 The dawn과 the dawn은 모두 같은 변수입니다.

      Let fear be eternity taking the night (fear = eternity(the night) => "Hello")
      
      Let hope be eternity taking the spirit (hope = eternity{the spirit} => "World")
      
        
      
      Time is all up (Time == 32)
      
      Cast it into the void (it은 가장 최근에 선언된 변수를 지칭합니다. Time = the void -> the void == 32, 32를 문자열로 바꾸면 '')
      
      Let fear be with the void (fear + the void => "Hello" + " ")
      
      Let fear be with hope (fear + hope => "Hello " + "World")
      
        
      
      Shout fear ("Hello World"를 출력합니다.)

      Rockstar 깃헙 레포지토리에 있는 예제를 이용해 "Hello World"를 출력해보았습니다.

      단순히 문자열만 출력하는 방법도 있지만 Rockstar 언어의 특징을 살려 "Hello World"를 출력한 코드를 보는 것이 더 의미있을 것 같아서 가져왔습니다.

      마무리

      가끔 공부를 하다 보면, 이런저런 것들을 따지느라 프로그래밍 언어 자체의 매력을 잊어버릴 때가 있습니다.

      저는 그럴 때마다 재미난 것들을 탐구하며 시간을 보내곤 합니다. 이번 탐구 활동의 결과물인 프로그래밍 언어 Rockstar를 소개글을 작성해보았습니다.

      거의 처음 작성해보는 게시글이라 글의 전개나 글이 어색한 면이 없지 않아 있지만, 제가 해당 언어를 보고 느꼈던 즐거움이 전해졌으면 좋겠습니다.

      최근에는 상대적으로 친숙한 언어인 Java로 Rockstar 컴파일러를 조금씩 제작하고 있는데, 생각보다 쉽지 않네요 🥲


      모두 힘들더라도 🤘Rock n' Roll 🤘하며 이겨냅시다. 화이팅 !!

      p.s.

      앞서 언급한 The Art of Code 컨퍼런스 번역본에 관심 있으신 분 계신가요?

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      햄버거주도개발 님의 최신 블로그

      더보기
      동영상 기고하기