참고문서 : https://ko.wikipedia.org/wiki/%EC%8B%A4%ED%96%89
주의! 혹시나, 보는 분이 계시다면 이 게시글은 상당한 문과적 감성 + 추억팔이가 포함된 글이오니! 관심이 없으신 분께서는 다음의 요약문만 보고 다음 게시글로 넘어가시길 강력히! 권장드립니다.
자바스크립트를 MDN과 구글링을 통해 학습하다보면, 자꾸 인터프리터 / 스크립트 / 런타임 / 컴파일과 같은 용어가 등장한다.
각각의 용어를 찾아보면 운영체제 런타임 환경 등의 더 어려운 단어들로 해당 용어를 설명하고 있었다.
이에 절망하고 있다가
https://velog.io/@jhur98/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%ACcompiler%EC%99%80-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0interpreter%EC%9D%98-%EC%B0%A8%EC%9D%B4
이 게시글을 읽고, 힌트를 얻어 위키백과에 검색하여 내가 원하는 정보를 원하는 방식대로 설명하는 본문을 찾을 수 있었다.
글을 찬찬히 읽어가다보니, 이상한 문과감성에 젖어들어 "프로그래밍 실행"이라는 말에 대한 소고를 작성하게 되었다.
정작 궁금했던, 인터프리터와 컴파일의 차이 + 스크립트 언어의 의미는 youtube / chat gpt / blog를 통해 1시간 안에 해결했다는 점은 안 비밀;;; 해당 내용은 다음 게시글에서 다루기로 하고...
요약 : 프로그래밍은 어떤 문제를 해결하기 위한 명령어들의 집합이며, 해당 명령어는 사용자 인터페이스에 의해 호출되고, 메모리에 적재되어 실행된다. 즉, 프로그래밍은 "서비스"의 개념이 없으면 필요하지 않는 개념이다.
🧐 부트캠프에서 프로그래밍에 대해 배우다보면, "왜 필요한가?"라는 질문을 하라는 강요를 받는다.
근데 for문, 배열 메서드, 컴포넌트, state와 같은 개념들을 공부하다보면 그런거 생각하기 쉽지 않다.
그렇게 땜질하듯이 공부하다보니, 이제는 도저히 이해하지 않고서는 넘어갈 수 없는 뭔가에 부딪치는 느낌을 받았다.
그래서 잠시 문법 연습을 내려놓고 궁금한 것들을 찾아가면서 미친듯이 삼천포로 빠져보기로 했다.
위에서 요약했듯 그렇게 열심히 삼천포로 빠져들었고, 위키백과를 만난 뒤에 프로그램 실행 > 코드 > 그 아래의 하위 집합으로 인터프리터 / 컴파일이 있기에 차근차근 읽어가보기로 했다.
(어차피 외울거 아니면, 그냥 맘 편히 읽는 것도 하나의 방법이라 생각했다.)
💻 코드는?
컴퓨터 프로그램은 컴퓨터에서 실행될 때 특정 작업(specific task)을 수행하는 일련의 명령어들의 모음(집합)이다.
특정 문제를 해결하기 위해 처리 방법과 순서를 기술하여 컴퓨터에 입력되는 일련의 명령문 집합체이며 대부분의 프로그램은 실행 중(즉, 명령어를 '불러들일' 때)에 사용자의 입력에 반응하도록 구현된 일련의 명령어들로 구성되어 있다.
출처 : https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8
코드는 명령어이다. 인간이 컴퓨터에게 명령을 내리는 이유는, 어떤 문제에 직면했고 그 문제를 해결하기 위한 가장 효율적인 방법이 컴퓨터라 판단했으며 컴퓨터에게 명령을 내리기 위해 일련의 규칙으로 만들어진 명령어가 나열된 것을 코드라고 부른다.
만약, 코딩 === 프로그래밍으로 동치시킨다면 프로그래밍은 문제 해결을 위해 코드를 나열하는 과정이다.
❓그럼 문제는?
문제는 코드를 작성해야 할 원인이다.
서비스에서 문제를 생각해보면, 사용자가 느끼는 답답함 혹은 불쾌감, 사용자 정보의 유출 등을 생각해볼 수 있다.
사용자는 왜 답답함을 느낄까?
브라우저에 보여지는 속도가 문제일 수도 있고 (최적화),
뭔가 오류가 떴는데 이 오류를 사용자 스스로 해결할 수 있는 방법을 몰라서일수도 있고 (alert/prompt 등),
페이지에 원하는 정보가 즉시 노출되지 않거나 안내가 불친절한 경우도 있고(UX),
제3자 정보동의를 하지 않았는데 제3자에게 정보가 공유되는 상황일 수도 있고(보안)...
이 모든 것이 코드를 작성해야 하는 이유이다.
더 나아가, 사용자에게 필요한데 or 사업상 돈이 될만한데 or 누군가한테 잘 보이기 위해 소프트웨어를 만들어야 하는 것도 코드를 작성해야 하는 이유이다.
🤔 나는 그걸 체감하고 있나?
언제나 중요한 것은, "그게 내 이야기인가?" 이다.
사용자가 체감하는 것을 내가 체감하지 못하고, 올바르게 문제를 정의하지 못한다면 훌륭한 개발자가 되기 어렵다는 막연한 상상에서 출발한다.
부트캠프에서 코드를 배우면서, 한 가지 분명한 것은 나는 그걸 체감하지 못한 채 열심히 문법을 배우고 있다.
"더 정확하게는 문법조차 숙지하지 못한 채 라이브러리와 상용 서비스를 위한 스킬을 배우고 있다"
뭐 취업을 해야하는 상황이니, 이 또한 문제의 해결방안이라면 방안일 수 있겠으나 Long Run을 고려해야 하는 신입으로서 이 부분에 멈춰있으면 안된다는 생각이 문득 들게 된다.
결론은 아직까지는 나의 이야기가 아니었는데, 이제 내 이야기로 만들고 싶다.
사용자들은 "왜 자꾸 페이지가 팅기는거야?"라는 불편감을 제기한다면,
나는 "렌더링? > 어디서 렌더링이 막히고 있지? > 구조?, 혹시 이벤트가 선언되어있나?"라는 질문으로 접근하고 싶다.
애초에 이 문제가 발생하지 않도록 여러 테스트도 하고 싶고, 이에 필요한 코드를 편하게 작성하고도 싶다. (개발스킬)
💭 아이폰 6 plus
여기까지 오니, 대학교에 입학하면서 처음 구입한 아이폰이 생각난다.
당시에는 애플 개발팀이 어떤 문제를 해결했었는지 생각도 하지 않은 채 최신 스마트폰을 구입했다. (나름 대학입학 선물이기도 했고,,)
지금 생각해보면, 애플은 굳이 손 안에 인터넷이 필요하지 않았던 시기 + 굳이 고음질 음악플레이어가 필요하지 않았던 시기에 이를 통합하여 사람들이 몰랐던 불편함을 해소했고 나아가 새로운 시장을 개척했던 사건이었던 것 같다.
그저, 당장 인터넷이 안되면 집에 가서 데스크탑이나 노트북으로 랜선을 연결해서 해야지~라는 불편감을 스마트폰이라는 도구를 통해서 그보다 훨씬 나은 경험으로 개선한 것이다.
나 또한 코드라는 도구를 통해서 불편감과 문제를 해결하는 직업을 목표로 공부하고 있다.
애플처럼 될 생각도 욕심도 없지만, 적어도 내가 맡은 분야에서만큼은, 그리고 지금은 아닐지라도 어느 날 어느 순간에 사람들의 불편감에서 컴퓨터 프로그래밍만이 해결할 수 있는 문제를 찾아내고 해결하는 개발자가 되고 싶다.
'일상' 카테고리의 다른 글
메인 프로젝트 전, 자가점검 : 나는 내가 원하는 기능이 무엇인지 모른다. (1) | 2023.04.29 |
---|---|
컴퓨팅 사고 : 분해, 패턴인식, 추상화, 알고리즘 (0) | 2023.03.11 |
6-7개월 뒤 금융권/교육분야에서 3000이상의 초봉을 시작으로 커리어를 시작하는 나 (0) | 2022.12.15 |