3월, 2020의 게시물 표시

[ Essay - Technology, Essay - Intuition ] Chat GTP시대의 도래와 생각하는 방식에 대해

이미지
올해도 드디어 끝이 보이는 듯 싶다. 최근에 회사의 망년회를 끝내고 이래저래 회식이 늘어나는 듯 하다. 지금 시점에서는 개인적인 스케쥴도 마무리 되었기 때문에 이제는 여유롭게 연말을 즐기며 올해를 마무리 하려고 한다. 비교적 최근에 이사한 곳 근처의 스타벅스가 대학 병원 안에 있고 근처에 공원이 있어서 그런지 개를 대리고 산책하는 노인이나  아이를 동반한 가족이 눈에 띄게 보인다. 꽤나 좋은 곳으로 이사한듯 하다. 개인적으로는 올해 드디어 미루고 미루었던 이직을 하였고  그 이후에 비약적인 성장을 이루었으니  분명 안좋은 일도 있었지만 만족할 수 있는 해를 보내지 않았나 싶다. 내가 도달하려고 하는 곳으로 가려면 아직 갈길이 멀지만  궤도에 오른 것만으로도 큰 성과라면 큰 성과 일 것 이다. 어쨋든 이직하고 많은 일들을 맡게 되었는데 그 과정에서 나는 의도적으로 Chat GTP를 활용하고자 하였고 몇 가지 직감을 얻게 되었는데  이 중 한 가지를 글로 작성하려고 한다. 따라서 올해의 마무리 글은 Chat GTP에 대한 이야기로 마무리 하려고 한다. 서론 불과 약 10년전 IT업계는 원하던 원치 않던간에  한번의 큰 패러다임의 변화를 맞이해야만 했다 바로 아이폰의 등장에 따른 스마트폰의 시대의 도래와  이에 따른 IT업계의 패러다임 변화가 그것이다. 내 기억으로는 아주 격변의 시대였던 걸로 기억하는데 왜냐하면 게임은 물론이고 웹과 백신을 비롯한 모든 솔루션의 변화가 이루어졌다. 이 뿐만 아니라 가볍고 한손의 들어오는 이 디바이스는  그 당시에는 조금 비싸다는 인식이 있었지만  감추려고 해도 감출 수 없는 뛰어난 유용성으로 회의론을 금세 종식시켰고 이에 대한 결과로 어린아이 부터 노인 까지 작은 컴퓨터를 가지게 되었고 이는 당연하게도 IT업계의 전체적인 호황을 가져다주었다.  그리고 질서는 다시 한번 재정렬되었다. 이러한 패러다임의 변화의 증거로 언어 또한 변하게 되었는데...

[ Essay - Human ] 툰베리가 주목 받고 있는다는 사실은 사회에 무엇을 외치고 있는가( What does it mean that Greta Thunberg attracts attention in society : 1) : 1

이미지
이제 에세이를 쓰는 것도  어느정도 정립되었기 때문에 자유롭게 쓰는 '생각'과  조금은 형식을 갖춘 '에세이'로 나누어서 작성하려고 한다. 그리고 카테고리 '생각'의 경우는 수정이 거의 없지만, 카테고리 '에세이'의 경우 최하단에  간단한 이력을 명시해 놓을 예정이며, 에세이의 수정시 계속해서 업데이트 될 예정이다. 따라서 이후의 글의 카테고리 또한  그렇게 나뉘어질 예정이다. 그리고 이에 따른 대망의 첫번째 에세이로 나는 툰베리가 주목 받는 것이  사회에 어떤 것을 시사하는가에 대해 이야기하고 싶다. 왜냐하면, 사람들이 행동하고 선택하는 것에는  그 나름의 이유가 있기 때문이고 그런 이유에는 내가 인지하지 못하는 어떤 이유가 있음에 틀림없다고 생각하기 때문이다. 어떤 사람들은 툰베리와 그의 지지자들을 보고 '멍청하다'느니 '세상물정을 모른다'느니 '저런 멍청한 꼬맹이가 노벨 평화상의 후보라니!' 라며 마치 세상이 곧 멸망할 것 처럼 이야기하면서 치를 떨지는 모르겠다. 하지만, 위에서도 살짝 언급했듯이  나는 모든 행동에 이유가 있다고 생각하는 사람이다. 그것이 정당한 이유이던 정당하지 않던간에 많은 사람들이 툰베리를 지지하는 이유는  아마 어떤 이유가 있으리라 생각한다. 또한 밀의 '자유'라는 이름하에 그들이 가지는 생각은 정당하다. 물론 그들을 비판하는 것 또한  정당한것은 말할것도 없다. 하지만, 이런것들을 다 떠나서 그 이유에 대해서는 지금의 내가 알 방법이 없다. 그들과 대화를 할 수 있을 수가 없으며, 그들의 이야기는 현재진행형이다. 따라서 그들에 대해 평가를 하는 것은 옳지 못하며, 평가는 후손들의 몫이지 나의 몫이 아니다. ...

[ 프로젝트 BEP, Essay - Developer ] 제 2장 : 개발 방법론 - 왜 개발자는 개발 방법론을 배워야 하는가?

이미지
이번에는 개발 방법론에 이야기 하려고 한다. 이에 해당하는 학문으로서의 이름은 Software Engineering, 한국어로는 소프트웨어 공학이라는 학문일 것 이다. 그 안에 이번에 이야기 하고자하는 개발 방법론이 포함되어 있다. 여기서 이야기하는 것들은 프로젝트 관점에서 이야기를 한다. 프로젝트의 프로세스는 어떻게 할 것인가? 프로젝트의 비용에 대해서는 어떻게 정할 것인가? 또는 구성원은 어느정도로 하는 것이 좋은가 등등에 대한 학문이다. 아마 건축의 공학적 개념을 소프트웨어에도 적용한것이 아닌가 싶다. 물론 건축의 설계는 실질적인데에 비해 소프트웨어의 설계는 굉장히 추상적이기 때문에 동일 시 할 수는 없을 것이다. 이 Software Engineering이라는 학문안에는 여러가지 개념이 있겠지만, 개발자로서 중요한 곳은 개발 방법론이 아마 가장 중요하다고 생각한다. 그렇다면, 왜 소프트웨어 개발자는 이런 개발 방법론을 알아야할까? 이에 대해서는 '컴퓨터 개론'에 비해서는 비교적 명쾌하다고 할 수 있다. 왜냐하면, 실제 프로젝트는 이런 개발 방법론을 기반으로 개발 프로세스를 가지기 때문이다. 1장에서 이야기 했던 것은 어쩌면 개발 방법론 보다 실무에서 떨어져 있을 수도 있다. 하지만 개발 방법론은 다르다. 소프트웨어 개발자들은 프로젝트의 한 구성원으로서 일을 한다. 그리고 프로젝트의 책임자들은 이런 개발 방법론을 기반으로 실제 개발 프로세스(일정)를 작성한다. 따라서 우리는 이런 개발 방법론을 학문적으로는 자세히는 알 필요는 없지만, 어떤 것이 있고, 어떤 장점과 단점을 가지고 있는지 알 필요가 있며, 이에 대한 직관을 가질 필요가 있다. 이를 통해 실제 프로젝트를 진행하며, 어떨때는 이 개발 프로세스가, 어떨때는 다른 프로세스가 더 어울리는지 개발자로서 직감적으로 느끼고 있어야 한다. 왜냐하면 우리가 그 프로젝트에 직접 참여하게 ...

[ 프로젝트 BEP ] 제 1장 : 컴퓨터 개론 - 폰 노이만 병목 현상(Von Neumann bottleneck)과 메모리 누수(Memory Leak) 현상에 대해

이미지
폰 노이만 병목 현상(Von Neumann Bottlenect) 우리는 살다보면  병목 현상(Bottleneck) 이라는 말은 한번쯤 들어봤을 것이다. 폰 노이만 구조에도 이런 병목 현상이 발생한다. 폰 노이만 구조 병목 현상 위에서 언급한 분류를 다시 한번 언급하겠다. 제어 장치, 산술장치  → CPU(중앙처리장치) 메모리  → RAM, Cache 등 그외의 디바이스(저장 장치 등)  → HDD, SSD , USB Drive ,CD Drive 등   폰 노이만 구조에서는  메모리 와  그외의 디바이스 를 메모리 라는 이름으로 하나로 묶었던 것을 기억할 것이다. 하지만 현재 컴퓨터 아키텍처는 이를 분리하였는데, 이는 CPU의 처리속도는 빠른것에 비해, 메모리에서 CPU까지 전달 속도가 느림에 따라 메모리(저장 장치등을 말함)에서 CPU까지 아직 데이터가 도달하지 않았는데, CPU는 이미 그 전에 전달 받은 처리를 끝내 대기하는 상태 즉,  병목 현상 이 나타남에 따라 자주 쓰는 데이터들을  메모리(Ram, Cache 등) 에 올려놓는 것 으로 이 구조를 개선한 것이 현재의 컴퓨터 구조이다. 하지만, 이것은 개선한 것에 불과하며, 여전히  병목 현상 은 나타난다. 이렇게 분리함에 따라 SSD나 HDD와 같은 저장장치를 비휘발성 메모리, RAM과 Cache를 휘발성 메모리라고 학문으로서 분류되어 있지만 사실 크게 중요하지는 않다. 중요한 사실은 CPU처리 속도가 너무 빠른 것에 비해, 다른 장치들에서 CPU까지의 전달 속도가 매우 느리다는 것 만 기억하면 된다. 특히, 소프트웨어로서 이야기 되어지는 것은 SSD나 HDD와 같은 즉,  저장 장치의 전달 속도가 비교적 매우 느리다는 것 을 기억하기 바란다. RAM이 컴퓨터 시스템에서 필요한 이유 RAM 이라고 불리우는 메모리가 필...

[ 프로젝트 BEP ] 제 1장 : 컴퓨터 개론 - 결론

이미지
이렇게 해서 내가 이야기 하고 싶었던 컴퓨터 아키텍처에 대한 이야기를 여기까지 해서 끝내도록 하겠다. 이에 따라 우리는 이야기 하기 앞서서 폰 노이만에 대한 찬사를 했고, 폰 노이만 구조에 대해 알아보며 이를 현실의 디바이스들과 매칭시켜, 확장 및 최근에 컴퓨터 아키텍처를 살펴보고 마지막으로 소프트웨어 개발자로서 왜 병목 현상을 주목해야하는 이야기 까지 내가 하고 싶은 이야기는 한 것 같다. 이것으로 비전공자 주니어로서 컴퓨터 개론에서 컴퓨터 아키텍처에 대한 기본은 가졌다고 생각된다. 물론 마음만 같았으면, 졸업장 같은 증명서를 주고 싶지만, 나는 그렇게 사회적 지위가 높은 사람이 아니다. 따라서 나의 컴퓨터 아키텍처에 대한 '부분적 진리' 를 씹고 뜻어보며 음미한 다음 좀 더 확장시키길 바란다. 물론 어떤 사람들은 '최근에 들어서 하드웨어가  비약적으로 발전함에 따라  메모리 관리는 필요 없다.' 라고 주장할지는 모르겠다. 난 그 의견에 대해 동의하기도 하고, 동의하지 않기도 하다. 왜냐하면 단순하게  메모리 관리는 필요 없다 고 생각하기에는 조금 거부감이 들기 때문이다. IT의 분야는 생각보다 엄청 넓다. 현재의 하드웨어 기반이 충분해 메모리 관리가 필요 없는 분야가 있는 반면, 현재의 하드웨어 기반이 충분치 못해 메모리 관리가 필요한 분야도 있다. 따라서 우리가 스스로 Software Developer 라고 자칭하고 다니는 이상, 그리고 그 위를 목표로 잡고 있는 나는 이런 메모리 관리의 방법은 잘 모를지 언정, 메모리 관리의 필요성 정도는 개발자로서 반드시 알 필요가 있다고 생각한다. 또한 가까운 과거에도 그랬듯이 IT분야에서 계속 일하고 싶다면, 유연한 사고를 가져야 한다. 왜냐하면, 프로그래밍과 같은 코딩은 대게 어린 사람들이 빠르게 잘하기 때문이다. 물론 나이가 들어서 빠르게 잘하는 사람도 있다. 하지만 그런 ...

[ 프로젝트 BEP ] 제 1장 : 컴퓨터 개론 - 컴퓨터 아키텍처에 대해

이미지
이번 글에서는 컴퓨터 아키텍처에 대해 이야기 할 것이다. 현재에 와서는 여러가지의 컴퓨터 아키텍처가 언급될 수 있으나, 소프트웨어 개발자로서, 그 중 비전공자 주니어에게 알아야 하는 것은 폰 노이만 구조 만 알면 된다고 생각한다. 왜냐하면, 지금 존재하고 있는 컴퓨터 기기들은 모두 이런 폰 노이만 구조에 크게 벗어나지 않았다고 봐도 무방하기 때문이다. 따라서 일단 폰 노이만 구조에 대해 대략적으로 이해하기만 한다면, 다른 컴퓨터 아키텍처에 대한 것은 필요할때 마다 공부하면 된다. 이는 사실 Programmer라던가 Developer등의 다음 레벨의 개발자들에게도 마찬가지라 나는 생각하고 있다. 따라서 이번 글에서 이야기하고자 하는 것은 폰 노이만 구조 단 하나의 컴퓨터 아키텍처만 설명할 것이다. 그럼 이에 대한 이야기를 시작해보자. 폰 노이만에 대해 소프트웨어던 하드웨어던, 우리가 개발자로서 일을 할수 있는 것은 사실 이런 폰 노이만 구조와 같은 이론을 제시한 사람들이 있기 때문이다. 따라서 우리는 개발자로서 초기 컴퓨터 구조를 제시해준 폰 노이만과 그의 동료들에게 머가리를 천번 박아도 모자를 지도 모르겠다. 어쨋든 폰 노이만은 천재로서 세상에 알려져 있다. 그의 업적을 보면, 그 누구도 이에 동의하지 않는 사람은 없을 것이다. 폰 노이만은 아래와 같이 생겼다. 폰 노이만 하지만 이런 의문이 든다. 폰 노이만이 분명 천재이고, 그가 위대한 업적을 남긴것에 깊이 공감하며, 그 업적에 대해서는 찬사를 보내는 바이지만, 소프트웨어 개발자로서 그를 자세히 알 필요가 있을까? 나는 없다고 생각하기 때문에 딱히 언급하지는 않겠다. 하지만, 컴퓨터를 제외하고도 수학 등의 업적을 남긴 사람이기 때문에 어떻게 생긴 사람인지는 알아야 되며, 폰 노이만은 충분히 그럴 자격이 있는 사람이다. 혹시 알고 싶은 사람을 위해서 아래 위키백과의 링크를 남긴다. ( https://en...

[ 프로젝트 BEP, Essay - Developer ] 제 1장 : 컴퓨터 개론 - 왜 개발자는 컴퓨터 개론을 배워야 하는가?

이미지
드디어 본론으로 넘어갈 차례다. 앞서 우리는 몇 가지 개발자에 대한 논의를 해보았고, 이런 나의 논의가 교육을 받는 자로 하여금 그리고 이 글을 보고 있을 당신에게 도움이 되었기를 바란다. 또한 나의 논지에 동의하지 않더라도, 그에 대한 논의를 스스로 꼭 해보길 바란다. 왜냐하면, 이런 고찰을 해봐야 개발자가 하는일이 무엇이고, 어떻게 나아가야할지가 즉, 개발자로서 큰그림이 그려지기 때문에 이는 당신의 커리어에도 많은 도움이 될 것이다. 어쨋든 본론으로 다시 돌아가서 먼저 왜 개발자가 컴퓨터 개론을 배워야 하는지 논의부터 하고 넘어가야 된다. 이에 대해 또 논의야?라며 질색을 하는 사람이 있을지는 모르겠지만, 이런 논의들 그러니깐 철학적인 생각은 커리어 뿐만아니라 인생에서도 꼭 필요한 것들이다. 현대 교육에서는 이런 철학적 생각들 보다 지식을 머리에 쑤셔넣는 것을 우선시 하기 때문에 이것이 인생에 있어서, 더 나아가 커리어에 있어서 가장 중요함에도 불구하고 외면시 받고 있는 것이 현실이다. 이런 현실에 대해 밀은 고대 그리스(로마)이 교육을 비교하며, 인간에 대한 근본적인 철학적 생각들을 하지않는 것에 매우 유감스럽다는 표현을 한다. 나 또한 이에 동의한다. 어떤 학문을 받아들일때 왜 이 학문을 배워야하는가에 대해 진지한 고찰이 없다면, 그 학문의 '부분적 진리'라는 원석은 얻을 수 없고, '단순한 지식'이라는 껍데기 밖에 얻을 수 없을 것이다. 심지어 그런 '단순한 지식'은 대개 '진리'는 아니며, 학자들이 논의와 실험을 통해 '이럴 가능성이 높겠다'라는 의견이다. (그들을 비난하는 것이 아니다. 단지 '진리'가 아님을 이야기 하고 싶을 뿐이다.) 따라서 우리는 이런 학문조차 의심할 필요가 있다. 다시 말해서, 흔히 말하는 비판적 사고(Critical Thinking)를 통...

[ 프로젝트 BEP, Essay - Developer ] 논의③ : 개발자는 무엇인가?(What is Developer?)

이미지
아마 마지막 논의가 될 것이라 생각된다. 앞서 우리는 개발자에게 학위가 필요한지, 그리고 수학이 필요한지에 대해 조금 논의해봤다. 그럼 마지막으로 개발자(Developer)라는 것이 무엇인지 그리고 어떻게 분류되어지는지, 마지막으로 각각 하는일은 무엇인지에 대해 논의해보자. 개발자란 무엇인가? 사실 한마디로 딱 정의 내리기가 어렵긴하다. 왜냐하면 이 개발자라는 개념 자체가 명쾌하지 않기 때문이다. 따라서 사람들마다 말하는 개발자가 다를 수가 있다. 또한 다른 사람들과의 논의 없이 개발자에 대해 정의내리는 것이 매우 꺼려진다. 그럼에도, 교육을 위해서 하고 넘어가야 하기 때문에 내 스스로 감히 정의 내려보겠다. 사람들이 흔히 말하는 개발자는 다소 다를 수 있지만, 비교적 명쾌하다고는 할 수 있다. 왜냐하면, 개발자가 ' 프로그래밍을 하는 사람' 이라는 직업이라는 것은 비교적 명쾌하기 때문이다. 하지만 정확히 어떤 일을 하는지에 대해서는 위와 같이 명쾌하지 않기 때문에 사람마다 이야기가 다를 수 있지만, 개발자가  '프로그래밍을 하는 사람' 임에는 틀림없다. 하지만 정확히 개발자가 무엇을 하는지에 대해 논의하려면 좀 더 큰 틀에서 봐야할 필요가 있다. 왜냐하면 개발자로서 직업을 가질 수 있는 이유는 큰 틀의 사회에서 필요로 하기 때문이다. 그래서 큰 틀의 사회가 개발자들에게 어떤 것을 요구하는지 알 필요가 있다. 큰 틀에서 보면 개발자는 '사회에서 해결하지 못한 문제를 IT기술을 통해 해결해주는 사람' 이다. 여기서 몇가지 단어를 추출해 줄여본다면 '사회의 문제를 해결해주는 사람' 이다. 따라서 개발자는 크게 보면, 위와 같이 ' 사회의 문제를 해결해주는 사람 '이다. 이런 개발자들이 두각을 나타내기 전의 근대의 사람들은 기록을 남길 때, 남들과 의사소통을 할 때 모두 '종이'라는 매체를 ...

[ 프로젝트 BEP, Essay - Developer ] 논의② : 개발자에게 수학은 필요한가?(Developer need math?)

이미지
오늘은 그 두 번째 논의로 「개발자에게 수학은 필요한가?」 에 대한 논의다. 이 논의는 사실 개발자가 아니더라도 알고 있는 사실인듯 하다. 왜냐하면, 내가 이전에 어떤 한 커뮤니티에 글을 몇개 쓴적이 있는데, 개발자가 아닌 사람들도 개발자에게 수학이 필요하다는 사실은 알고 있음을 확인했었다. 그리고 IT회사가 아니더라도, 잘 모르는 사람이더라도, 개발자에게 '수학' 이 필요하다는 것은 부정하지 않는 사실인듯 하다. 나 또한 필요하다고 생각하는 입장이다. 따라서 오늘은 필요하다는 입장으로 이야기를 하도록 하겠다. 분명 개발자에게 수학이 필요하다는 것은 대부분의 사람이 그렇게 느끼고 있지만, 여기서 '수학' 이라는 것이 ' 어떤 수학' 인지를 확실히 대답하는 사람은 매우 드물다. 따라서 ' 수학이 필요해 '라고 말하는 사람은 많지만, ' 어떤 수학이 필요해 '라고 정확하게 말해주는 사람은 거의 없다고 봐도 무방하다. 그렇기에 개발자에게 필요한 '수학' 이 도대체 ' 어떤 수학' 인지를 먼저 명확히 정의하고, 분류하여 정확히 개발자에게 필요한 '수학' 이라는 것을 명쾌하지 못할지라도 추출할 필요가 있다. 개발자에게 필요한 수학에 대한 정의 먼저 사람들이 가장 먼저 접하게되는 ' 수학 '에 대해 이야기 해보자. 우선 다른 사람들에게 '수학이 뭔지 알아?'라고 물어보면, 대부분의 사람들은 , 덧셈, 뺄셈, 나눗셈 과 같은 즉, 사칙 연산, 미분, 적분, 로그 등과 같은, 어떤 수를 표현하기 위한 규칙 그리고 수식과 그 답에 도달하기 위한 것들을 ' 수학 '이라 말할 것이다. 왜냐하면, 현대 교육시스템에 의해 배워진 수학은 그런 ' 수학 '밖에 없기 때문이다. 하지만 개발자에게 필요한 ' 수학 ...