2020년에는 사라지는 플래시, AS3.0을 보고 느낀 점

나에게 플래시의 의미는 2000년대에 웹 개발을 한다면 필수적으로 사용해야 했던 플래시는 2020년 12월을 끝으로 웹상에서 사라지게 된다.

내가 중학생 때부터 고등학교, 대학생이 될 때까지 프로그래밍의 길을 걷게 한 출발점은 플래시 게임이었던 것 같다. 어려서부터 컴퓨터 프로그래밍을 자연스럽게 접한 친구들을 보면 대부분 이런 과정을 많이 거쳤다. 아니면 비주얼 베이직으로 게임을 만들거나 프리메이플 소스 코드를 열어 운영하던 친구..

플래시라는 IDE를 쓰면서 ActionScript를 첫 번째 언어로 접했다. 그리고 그 언어를 약 10년간 사용했다. 진짜, 이거 하나만 팠어. 이 언어로 할 수 있는 걸 이것저것 다 해본 것 같아. 그리고 이 인터프리터 언어에 한계가 있을 때쯤 커널을 만져야 하거나 권한 수준 있는 동작을 구현할 때 자바나 어셈블리 언어를 잡았다.

내가 쓰는 언어가 사라지고 있을 때 초등학생, 중1, 중2, 중3, 그리고 IT고등학교에서의 3년, 졸업하고 대학에 와서 군대까지 갔다 오니 점차 플래시의 입장이 죽었고 내가 자유자재로 다룰 수 있는 이 언어가 사라지고 있었다. 고등학생 때 스티브 잡스가 HTML5를 채택해 플래시를 iOS 생태계에서 꺼버린 뒤 자연스럽게 죽어갔는데 왠지 그때는 액션 스크립트가 너무 애착이 가 쉽게 버리고 다른 언어를 팔지 못한 것 같다.

주로 쓰던 언어가 사라진다는 게 내겐 너무 막연한 일이었다. 어떤 느낌인지 설명할 때 이 비유를 들곤 했다. 가장 많이 쓰는 언어는 한국어지만 군대를 다녀오면 한국어를 쓰는 사람이 한 명도 없다. 전부 영어를 쓴다. 그런 상황이 온다면 내가 느낀 답답함이 얼마나 공감될까.

지금와서 생각하면 플래시의 몰락은 나에게 Dependency(의존)의 위험성을 뼈저리게 새겨준 것 같다. 무언가가 사라졌을 때 내가 설 자리가 없어진다는 것은 매우 정신적으로 충격적이었다. 하지만 앞으로 사용하지 않는 플래시가 또 언젠가 야크면도의 기회가 찾아올 때 큰 역할을 할 것 같다. 고통스러웠지만 크게 성장했다.

이렇게 보면 처음 접하는 것부터 망하기까지 늘 내게 깨달음을 준 언어였다. 이런 표현이 재미있지만 반려동물을 배웅하는 느낌이다.

(관심없으시겠지만 일기장처럼 쓰시는,,) ActionScript를 사용해서 자연스럽게 CS지식을 배운 에피소드

  1. Byte 단위의 자료구조 ByteArray와 Base64 플래시 게임을 만들어 저장 기능을 만들었다. 중학생 때 서버를 구입할 돈은 없고 JS의 localStorage처럼 클라이언트에 데이터를 저장하도록 했는데 컴퓨터를 할 수 있다는 사람들이 이를 악용해 저장 데이터를 위조하거나 막고 싶었다.첫 번째 시도, Base64를 알고 인코딩한 값을 저장했다. 하지만 베이스64임을 눈치챈 사용자가 또 위조했다.두 번째 시도, 저장하고자 하는 데이터의 이진수를 뒤집어 Base64를 돌렸다. 예를 들어 01100011을 저장한다면 11000110으로 Reverse시켜 Base64를 돌렸다. 그 이후로 구멍이 뚫리는 일은 없었다.
  2. 2. PNG 파일 구조 분석 PNG 파일을 Bitmap Data로 변환하는 것은 용이하다. 하지만 비트맵 데이터를 PNG 파일로 바꾸고 싶지만 당시 오픈소스 개념이 없어 못했다. Byte Array를 다루다 보니 프로그래밍에 새로운 눈이 떴다. 구글에 치면 나오는 PNG File Structure 자료를 보면서 직접 PNG 파일을 보고 이해하고 만든 적이 있다.솔직히 내가 봐도 이건 좀 대단한 경험인 것 같아. 처음 8바이트에 PNG임을 나타내는 시그니처 비트가 심어져 있고, 이후부터 Chunk가 연이어 들어가는데 {size(4바이트), chunk_type(4바이트), payload(0~2^32바이트), crc(4바이트?)}라는 느낌으로 구성되어 있다.플래시로 그림판을 만들었는데 내가 그린 그림을 PNG로 저장할 수 없어서 이걸 직접 만들다니 내가 봐도 이상하다.JPG도 해보려고 했는데 너무 어려워서 그건 어떻게든 구글에서 라이브러리를 가져왔다.
  3. 3. 몰힐 그래픽 랭귀지 사용 플래시로 3D 게임을 만들고 싶었다. 기술적으로 독보적인 능력을 갖는 것에 야망이 컸던 것 같다.아는 사람의 도움을 받았는데 Vertex(꼭지점)를 찍고 Indice(점 3개를 연결하는 삼각형)를 정하고 시계 방향을 전면할지 반시계 방향을 전면할지 예제 코드를 보면서 이해하고 만들어 보곤 했다. AGAL과 Adobe Graphic Assembly Language라는 어셈블리 문법으로 섀더를 작성해 그래픽 카드에 올렸는데 이것도 하다가 사람이 할 일이 아닌가 싶어 3D 엔진을 찾아 쓰기 시작했다.
  4. 4. TCP/UDP 소켓 통신 사용 XML Socket, Datagram Packet이라는 키워드였던 것 같은데 플래시로 온라인 게임을 만들고 싶었다. (쓰다 보니 기술에 매우 미쳤던 것 같다) IP, Port를 합치면 연결된다는 것을 알고 배우다 보니 뭔가 하나를 얻었다. 크레이지 아케이드 같은 게임은 왜 사용자가 서버가 되어 서버리스 시킬 수 없는가? 싶어서 만들어 봤는데 프라이빗 IP 개념을 알고 며칠 동안 한 일이 거짓말임을 깨닫고 그만둔 적이 있다.이걸로 채팅방, 온라인 그림판, 자작 FTP 같은 걸 만들었던 기억이 난다.

이런 거짓말이 나를 성장시켜준 것 같아, 앞으로도 거짓말을 많이 해보자!

error: Content is protected !!