그래서 하고 싶은 말이 뭐냐면
IT 용어는 시간에 따라, 만든 사람에 따라, 상황에 따라 다 다르니까 대충 이해하고 넘어가야 할 때도 있고, 매우 엄밀하게 따져봐야 할 때도 있다는거지. 그런데 언제 그래야 하는지 모르는게 좀 문제이긴 할거야.
순서
그러니까 IT나 코딩을 공부하겠다고 시작하는 사람들을 보면, 너무 따지지 않아도 좋은 곳에서 따지다가 저 멀리 가버리는 경우가 있더라고
예를 들자면 객체라는 단어를 이해할 때는 대략만 알아도 좋아. 특정 언어, 버전에서는 정확히 알아보는게 가능한데 그렇지 않으면 너무 추상적이야
여기서 직접 알아보자고, Java, JavaScript, C++, python, Swift 하나하나 따져보자고
기술이 발전하면서 뜻이 조금씩 바뀌는 경우도 있다고
동시성이란거에 대해서 따져보자고
여기서 그게 그런 뜻이 아니라
IT 용어를 알아가다 보면 좀 이상한 경우가 많지. 여기서 말하는 거랑 저기서 말하는 게 너무 달라. 그러다가 다시 생각해 보면 비슷한 것 같기도 하다가. 다시 보면 또 아니야.
이게 반복되니까 더 미궁으로 빠져들고 그 용어 하나에 빠져 가지고 몇날 며칠 고생만하고 얻는 건 하나도 없어. 이런 일이 하도 흔하니까 일단 코드를 쳐보는 걸로 시작하는거지.
일단 코드를 쳐보고 돌아가는걸 보면 알 것 같거든. 근데 이렇게 일단 쳐보고 알아가려고 해도 순서만 바뀐거지 해결되는 건 없어. 조삼모사 같은거지. 먼저 헷갈릴래? 코드 쳐보고 헷갈릴래?
IT나 코딩 공부를 시작하는 사람들에게
4차 산업 혁명 어쩌고를 맞아서 정말 많이들 공부하더라고. 그런데 한가지 안타까운 걸 자주 봐서 이야기 하고 싶어.
수학적 논리력이 중요하다는 말 때문인지 IT를 수학 공부하듯이 하는 사람이 많더라고. '수학 공부하듯이'라는건 우선 정의를 명백하게 이해하고, 그걸 바탕으로 이해를 넓혀 나가는거지. 정삼각형의 정의는 이거니까 그로부터 유도된 어쩌고...해서 이러한 특징을 갖는다. 이런식인거지.
그런데 IT에 중요한건 논리력이야. '수학적'이 아니라고. 컴퓨터가 일하는 기계일 뿐이니까 정확한 결과물을 얻기 위해선 정확한 논리로 일을 시켜야 해서 나온 말이야.
그러니까 컴퓨터한테 일을 시킬 때가 되어야 논리력이 중요하다는 거지.
공부를 시작하는 단계라면 대부분 컴퓨터한테 일을 시키는게 아니라 컴퓨터 언어가 가지고 있는 개념이라든가, 여러 가지 IT 지식을 공부하잖아? 그래서 수학적 사고력이 필요하지 않아.
꽤 배경 지식이 생긴 다음에 코딩이라는 걸 할 때, 그러니까 코딩 테스트 준비를 한다거나, 포트폴리오용 웹/앱을 만든다건나 할 때 수학적 논리력이 필요하다고.
그러니까 IT를 공부할 때 수학 공부하듯이 정의 찾지 마.
IT는 서로 내가 더 잘났다는 식으로 발전했기 때문에, 개념이 명확하지 않아. 아주 중구난방이라고.
약육강식의 경쟁 속에 살아남은 몇 가지 언어가 가진 개념들이 마치 그 개념의 정의인양 하고 있지만, 잘 따져보면 언어마다 얼추 비슷할 뿐 다를 때가 많아.
가장 흔하게 쓰이는 객체라는 것도 여러 언어를 통해서 등장한 개념인데, 언어마다 다 다르게 작동하고 특징도 비슷한 듯 달라. JAVA의 객체, Javascript의 객체, Python의 객체, C++의 객체... 다 다르다고. 그러니까 객체라는 걸로만 찾다 보면 언어마다 다른 설명 속을 헤매다 저 세상 가는거야.
IT에서 정의를 찾으려면 딱 정해진, 매우 좁은 조건에서만 가능해.
예를 들면 'ECMAScript2015를 통해 정의된 Javascript에서 Class의 정의' 같은거지. Javascript의 객체는 다른 언어처럼 Class를 사용하지 않다가 ECMAScript2015를 통해서야 Class를 만들어 냈거든. 일반적으로 쓰이는 Class와도 다른 언어의 Class와도 다 다르다고.
그러니까 특정 언어의 특정 상황의 용어 몇 가지만 정의가 되고, 대부분 일반적인 용어는 정의가 없다고 보면 돼.
그래서 하고 싶은 말은 공부를 하다가 정의를 알아보는게 정말 중요한게 아니라면 둥글게 의미만 대략 파악하고 넘어가라는 거야.
그러지 않으면 너무 사소한거에 집착해서 시간만 버리고 이상한 안드로메다로 가고 마니까.