태그 보관물: IT 공부법

IT 기술을 배울때 채택하면 좋은 방법 – 연역과 귀납의 경험적 운용

IT 기술은 그 역사의 흐름과 기술 발전의 흐름에 맞추어 오래전의 기술도 배워야 하고 이후에 바뀐 기술도 배워야 합니다. 이는 기술 이해가 체계적이라 기존의 기술도 알아두면 이후의 기술에 대한 이해가 깊어지기 때문이구요. 기술을 실재 상황에 적용할때 기지를 더 발현하기가 좋게 되서네요.

흔히들 일상언어로 말할때 “다 안다고 자만하지 말고 겸손하게 임해”라는 말도 흡사한 전제인데요. 기초를 배웠을때 다 안다고 생각하는 경우도 있게 되고, 자만하지 않더라도, 기초를 기술하는 개념 몇개만 알고 멈출때보다 더 많이 알려고 하는 의지를 가지게 해주는 말일 것입니다.

물론 해킹이나 과학기술 계통에서 있는 고수가 하수를 대하는 특수한 방법들(흔히 맨스플레인이라고 하는 방법들)을 상기시키는 말이기도 한데, 원칙은 위에서 언급한 공부 태도를 길러주는 방법입니다. 위의 말이 이렇게도 쓰이는 것은 IT도 사람이 하는 분야라, 한 표현에 결부되어 부착된 문화라서이고, 이 이해도 기존의 기술과 이후의 기술을 잘 알아두는 태도에 의해 더 잘 이해가 될 수 있습니다.

이 체현을 위해 생각해볼만한 한가지 정보가 되는 IT 기술 공부법의 노하우를 어떻게 채택하면 좋을지 말해보겠습니다.

어떤 경우, IT도 과학이기에 체계적이기도 하고 논리적인 판단이 일정 부분 적용되는 분야가 IT라, 스키마를 잘 짜두면 판단의 체계에 의해 잘하는 인식으로 안착하기도 합니다. 연역이 가능한 부분이구요. 귀납적인 것을 추가한다면, 실시간으로 작동흐름을 살펴서 판단하는 방법도 있습니다. 그런데 이 경우에 연역이 가능한 부분과 귀납이 가능한 부분을 잘 구별해야 합니다. IT가 수학적이라 연역이 되더라도, 사용이나 경험에 의해 부가되는 분야라, 사용자의 동기나 맥락 등의 영향을 받아 같은 알고리즘도 다른 방식으로 인식될때가 있어서네요.

예를 들면 사이트 지표 측정 도구에서 실재로는 연결이 안느린데, 사이트 속도 지표 점수가 확 낮게 나오는 경우가 있습니다. 이 경우 여러 추측이 가능하지만, 제작 의도에 따라서는 지금 당장은 안느리더라도 사용자가 많아질 것을 예측해서 점검해보게 하려는 일괄적인 권고이기도 하구요. 지켜두면 좋아서 권고하는 경우가 많습니다. 하지만, 실재로는 안느린 조건에서 보면 SEO 적용에 부담이 가기도 해서 스트레스 유발 요인이 되기도 합니다. 다시 말해 제작 의도와 사용 경험이 서로 어긋나는 경우도 상당히 많다는 것이죠. 이는 원칙 하나만 알아서는 안되는 경우입니다. 때로는 제작 의도가 더 말이 되는 경우도 있으나, 둘다 맞는 경우도 있죠. 이는 연역과 귀납의 조화로운 운용이 필요한 경우입니다.

연역은 보통 논리라고 인식됩니다. 전제가 옳으면 결론이 틀릴 수가 없습니다. 이는 프로그래밍 방법론에서 특히 잘 통용되죠. 그런데 귀납적이어야 할때도 있습니다. 하나의 지식만 알고 여러 소프트웨어를 작동시키다보면 체계적이고 논리적이라고 생각했던 판단이 적용이 안될때가 있습니다. 이 경우는 IT 기술은 경험에도 의존하고 있는 체제이고, 고도화된 기술들이라 제작자가 만든대로 작동하기에 단일한 작동방법으로는 작동이 안될때가 상당히 많죠. 다시 말해 작동방법의 경우의 수를 다 알면 좋구요. 소프트웨어마다 다르다는 것을 전제해두어야 당황스러움을 줄일 수 있습니다. 여기서 작동방법의 경우의 수를 다 알아두는 것은 위에 말한 “다 안다고 자만하지 말고 겸손하게 임하는 것”에 의해 가능해집니다.

단순하지만 초심자 시절에는 혼동되는 것은 어떤 경우는 마우스 한번클릭으로 작동하고 다른 경우는 두번클릭으로 작동할때가 있고, 휠을 돌리면 스크롤되는 깊이를 조정한다든지, 맥에서는 휠을 올리면 스크롤이 내려가는 등등의 구별점도 관련 현상이구요. 대부분의 경우 이를 미리 안말해줘도 고려하는 능력들이 다 있는데, 특수한 경우 단일한 경우만 상정하는 경우도 있어서 당황하기도 하네요. 경험이 중요하구요. 어떤 경우 타과학하신 분들 중에서는 과학의 일양성에 대한 인식을 IT에다가도 적용하시고 어려운 것부터 보시기도 하는데, 활용법은 쉽게 알 수 있어도 기술적인 것이나 원리는 기초부터 배워야 합니다. (부끄러우시면 집에서 몰래 보면 됩니다 (?)) 고도화되어 기술들이 겹쳐지고 발전하면 이해도 꽤 어려워지구요. 논리나 체계도 중요한데, 문제 해결에 있어서는 경험이 중요하죠.

UEFI 펌웨어의 경우에도 BIOS 시절의 지식을 알면 시스템 고장의 원인을 알게 되는 진입로가 되는데요. 이 경우에도 기존의 지식과 새로운 지식을 융합해서 이해하려는게 중요합니다. 시스템 리저브드 파티션이나 NVRAM 등에 대한 인식이 가능했다면 잘하는 것입니다. 이에 대해서는 직접 살펴보세요. 이 기술들은 PC 고장과도 관련이 있어서 하나만 알아도 아주 기분이 확 살아나는 지식인데, 이 경우에도 정말 많은 것이 더 배움을 기다리고 있는 경우입니다.

그래서 초심자 시절에는 개념을 확실하게 잡기 위해 이미 정해진 표준 언어로 사태를 기술한 표현으로 배우되, 표현의 의미보다는 표현의 연관을 살피는게 요령입니다. 프로그래밍을 할때 IDE가 표시한 오류에 의미만을 생각하면 문제가 있는 라인으로 가봐도 문법적인 오류가 없는 경우가 있구요. 이 경우에는 오류 메시지의 표현의 의미보다는 표현이 지시하는 연합된 원리를 떠올려보려고 노력하면 좋습니다. 이것을 초심자 시절에는 어렵다고 하는 것은 실력이나 자격 문제라기보다 경험이 없어서인데, 요즘은 비전공자분들에게도 친절하게 원리를 알려주는 문헌과 인터넷 자료가 많으니 보시길요.

한 현상에 대해 잘 알려진 규칙만이 정답이 아님을 아는 것도 좋습니다. 보통 이상 현상은 잘 알려진 규칙을 비틀고 얽히게 해서 일어나니까요.

인터넷이 안된다고 하면 보통 네트워크 장치 리셋이나 라우터를 보라고 하는데 이 경우에도 경험이 많아지면 그이상도 보게 될 수 있습니다. 라우터 펌웨어가 변조되었다든지, 운영체제의 ARP 문제라든지, 네트워크 구동 소프트웨어에 유저권한이 바뀌었다든지, 파일이 리패키징된 등등의 가능성을 알려고 하는 진입점도 이 글에서 말하는 태도를 잘 알면 가능하구요. 전공이 아닌 분야더라도 문제 원인만큼은 잘 알게 되어 질문이나 수리 요청도 아주 잘하는 실력 향상으로 이어질 수 있습니다.

잘 해설받은 루트가 중요합니다. 요즘은 큰 업체에서는 자기들 사이트에 문서들을 공유하는데 이를 참고하시구요. IT적인 글은 개념을 떠올려야 하는 부분과, 써본 경험에 의해 사용과정을 떠올려보는 부분을 잘 구별할줄 알면 잘하시는 것입니다.

보통 신계급 또는 위자드리라는 칭찬도 받는 분들이 계시는데 그분들도 이글에서 말한 연역과 귀납을 잘 운용해서일 것입니다. 일단 이렇게 해설해둡니다.

코드 암기시 그냥 외어야 할 것과 서술적으로 외어야 할 것의 차이에 대한 해설

워드프레스도 테마 제작을 할때나 플러그인 제작을 할때, 워드프레스 코어를 바꿔야 할때 PHP나 자바스크립트, JSON 등의 지식이 필요합니다. 이 경우에 대면하면 비전공이신 경우 기호적인 것을 접하면 압도되기도 합니다. 이런 경우 압도되지 마시고 임하시면 되는데요. 보통 암기한다고 하는 기능을 잘 분별하는게 노하우인데, 많은 경우 기술자분들이 이를 잘 짚어주실 것 같아도 글의 구심점이나 여러 조건에 의해 잘 설명이 안되기도 해서 맞춤해설이 아니게 되어 불만도 있는데요. 기술자분들의 잘못이 일차적인 것은 아니구요. 철학적으로 통용되는 개념에 의해 말씀드려보겠습니다. (현상적으로 외어야 하나 서술적으로 외어야 하나의 구별법)

프로그래밍 언어의 구성 요소를 우선 봅시다. 보통 코드들은 아래와 같은 구조를 프로그래밍 언어마다 공유합니다.

이 틀인데요. 이 경우에 암기를 해야 한다면 현상적으로 외어야 하는 부분과 서술적으로 외어야 하는 부분이 갈립니다. 주석의 경우 그자체로 이해가 되니 현상적으로 외우면 되구요. 함수명이나 매개변수, 함수코드들은 서술적(서술지식)으로 외어야 할 부분입니다.

이 말의 의미가 무엇이냐면요. 눈으로 봤을때 즉시 이해가 되는 부분은 현상적으로 그 형태를 통채로 외워서 이후에 조금씩 변형을 가하는 정도로만 외어도 좋은 것이 현상적으로 외우라는 것이구요. 서술적으로 외어야 할 것은 인지과학에서도 말하는 서술지식으로 외어야 한다는 것입니다. 즉 구문의 의미를 일단 서술화해서 시각화하고 이를 외우라는 것입니다.

PHP의 for 루프문의 예를 들면요.

이 코드에서 현상적으로 암기할 것은 주석이구요. 그외 부분은 서술적으로 암기해야 합니다.

서술적으로 암기한다는 것은 문법적으로 정의된 것을 잘 세분화해서 말로 표현해보고 외우라는 것인데요. for 루프는 일단 for 구문 다음에 오는 조건들의 의미를 파악해서 서술해두고 외우면 됩니다.

$i = 0는 $i 변수를 0으로 초기화한다는 의미
$i < sizeof($var)는 $var의 크기보다 $i가 작은 동안 루프를 돌라는 의미
$i++는 $i를 1씩 증가시킨다는 의미

이렇게 표현해두고 암기하시라는 것이네요.

그리고나서 현상적으로 외웠든 서술적으로 외웠든 응용할때 조금씩 변경해보기도 하고 조합해보는 것을 터득하면 됩니다.

이 요령을 실재로 하나라도 체현하면 체현 확장이 되서 빠르게 판단이 될 것입니다.

해설이 짧아도 이해가 되시죠? 그렇다면 워드프레스도 쉽게 배우는 전거가 될 것입니다.

컴퓨터 개념잡기에 대한 상념

컴퓨터는 활용적인 지식이 있고 이론적인 지식이 있습니다. 전자는 후자에 비해 직관적이고 실천적이라 잘 이해하는 것은 쉬운 편이고 행동으로 옮길 수만 있으면 배울 수 있구요. 후자는 조금 도전적입니다. 누구나 맞춤설명을 들으면 할 수 있는 도전적인 유형이지만 때로는 어려움에 봉착합니다. 이유를 들어보면요.

(1) 누구나 익숙한 언어도 수능 레벨까지 되면 어려워지듯이 이론적이라서 그렇습니다. 정확하게 뉘앙스 구별도 해야 하고 이론을 배경으로 삼아 메타적으로 적용해야 하기에 어렵습니다.
(2) 기초부터 차근차근 하더라도 그 배경 지식의 범위와 심도가 넓고 깊어서 지식 정도에 따라 성패가 갈리는게 이론적 지식이라, 사람마다 다른 경험 상태에 있으니 어려울 수 있습니다.

이 두가지가 제일 중요한 이유구요. 공부의 왕도를 지금 설명하기는 애매하지만 일단은 이 두가지의 해결 방법을 노하우로 알면 좋습니다. 요령 위주로 해설해봅니다.

(1)은 일정 정도는 언어에 기반하므로 국영수 공부를 잘 해두면 좋습니다. 국어의 경우 어문학적 수련보다는 과학철학적인 수련을 추천하네요. 어문학은 문법적 접근을 주로 하기에 화용론이나 논리적 접근에 약합니다. 과학철학은 인공지능처럼 전산학 개념을 논의하기도 하고 수학이나 과학의 방법론적인 것을 논의하는 분야라 전산학적인 또는 인지과학적인 것도 원리적으로 접근하기에 컴퓨터 이론 공부에도 수련 방법이 되죠. 과학철학에서 전산학을 다루는 관련 해설을 자주 접하고 메타인지를 장착하면 언어로 표현이 더 잘 되서 실기만 아는 것보다 발전이 더 잘 됩니다. 전산학 교수님처럼도 될 수 있네요.

영어를 배우는 것도 필수입니다. 교과서가 원서로 된 것을 읽어야 할때가 많으니까요. 이 경우 구사하는 영어는 원서와 개발자들의 블로그 등을 통해 배우시구요. 토익이나 토플은 문법 정도만 아는 용도로 활용하세요. ESL과 같은 실용영어에서는 강제하지 않지만, 전산학에서 통용되는 문체와 어문학 특정적인 문체는 조금 다릅니다. 실용적으로 전산학에서 통하는 영어 기술법은 어문학보다 전산학 자체의 기술자들의 문장을 주로 봐야 합니다. 때로는 어문학적으로만 통하는 영어를 주로 구사하다보니 원어권에서 엄밀히 보면 실격이 된 문체를 구사하기도 하네요. 이를 배우는 초기 단계부터 잘 챙겨서 전산학다운 영어를 하는게 좋습니다.

저의 경우 본래 문체가 어느 분야에나 통용되는 문체였는데요. 이 문체는 지식이 없더라도 잘 구사된 타인의 언어를 보면서 문체를 체현하면 누구나 가능합니다. 그런데 이 문체가 철학적으로 멋이 있게 하려고 하다보니 변형이 되어 원어권에서 말하는 아시아 학생의 문체라고 하는 해독이 어려운 형태가 되었었네요. 이런 경험을 하다보니 전산학 분야에서 통용되는 문체에 대한 준수를 더 신경써서 하시라고 전해드립니다. 겉멋보다는 전산학에서 통용되는 문체가 존재하구요. 이 문체들은 영어권 개발자가 저술한 전산학 원서를 보면 쉽게 배울 수 있구요. 이분들의 블로그가 책에 소개되어 있으면 가셔서 보시면 개발자들이 일상적으로 쓰는 표현도 알게 되어 배움에 보탬이 됩니다. 많은 경우 외국에서 영어를 배울때 쓰면 되는 방법이네요. (사실 “저의 경우” “겉멋”이라고 했지만 그 연원을 아시면 놀라실 것입니다)

국어 실력과 프로그래밍 실력은 있는데 영어 문체 차이로 인해 실격되면 그것만큼 더 실망인게 없습니다. 이것도 챙겨주시면 좋아서 언급합니다.

일단 문체가 통용되는 문체로 체현이 되면 설명해두고 만족도도 높아지고, 누가 읽더라도 이해가 잘 되서 소통도 잘 되니 이것도 자존감을 높히는 방법이 됩니다. 협업할때도 채용이 더 잘 될 것입니다.

(2)는 한 단계를 이수했어도 꾸준히 설명을 단계별로 접하고, 아는 단계도 해설의 유형을 늘 살피는 전략으로 쉬운 해설도 항상 접하는 것을 추천합니다. 해설력이 길러지니까요. 쉬운 설명도 무시하지 마시고 글쓴 분들이 채택한 서술의 방법이나 양태를 잘 봐두고 어떻게 자신의 해설에 적용할지 생각해두면 좋습니다. 해설력을 기르는 방법입니다. 그리고 해설력 외에도 난이도를 조금씩 높히는 것도 단계별로 뭘 해야 할지 결정하는 능력에 해당됩니다. 이 경우 제가 설명했던 카테고리적인 사고방식이 기초가 되구요.

단계별로 다음 단계로 넘어갈지 아는 쉬운 방법은 자격증 공부를 하는 방법입니다. 자격증 수험서를 구해서 읽다보면 초심자 시절에 경험이 없어도 잘 가이드를 해주니 도움이 됩니다. 수험서를 볼때는 해설된 개념이나 기법에 집중하는 것 말고도 개념이 해설된 순서를 여러 수험서를 비교해가면서 보면서, 개념의 지도를 생각해두는 것도 좋습니다. 분야별로 연관된 큰그림이 그려지면 무엇을 더 공부해야 할지를 생각해볼 수 있으니까요.

살펴볼 수 있는 한 최대한의 자원과 노력을 들여 늘 공부하는 자세로 임하면 좋습니다. 공부를 할때 접하는 분야별로 서로 연관분야가 있을 수 있습니다. 한 나라의 역사를 배울때 지리학 개념인 지도를 보고 지명부터 살피는 것처럼 전산학도 분야에 따라 보조가 되는 분야가 있네요.

특히 프로그래밍이라면, 개별 언어에 대한 지식 말고도 소프트웨어 공학을 깊이 있게 파고들어 각각의 언어로 구현할때 API 이해를 심도있게 하는 것도 추천됩니다. 교과서에 나온 예제들은 개념잡는 용도라, 객체지향이나 API 개념들을 적용하지 않은 형태인데요. 이러한 예제들만으로도 프로그램이 작동하지만, 의존성 주입과 같은 기본 개념부터, 디자인 패턴, 애자일 방법론 같은 프로그래밍 방법론을 심도 있게 살펴두면 한단계 높은 경지로 이어갈 수 있으니 참고하시길요. 웹프로그래밍 또한 스크립트적이라 이를 안챙기는 경우가 있는데요. 소프트웨어 공학을 기본으로 삼아 프로그래밍 언어를 배우면 방법론이 녹아든 코드 작성이 가능하게 됩니다. 같은 언어로 만든 코드도 차이가 크죠.

흔히 리눅스에 비해 윈도우는 쉽다고 하는 속설이 있는데 관리 수준이 되면 다 만만치 않습니다. 명령어로 주로 운용한다는 이미지에 의해 있는 속설인데 윈도우도 명령어로 처리하는 모드가 있고, 파워쉘만 해도 알아야 하는 주제가 정말 많습니다. 그러니 자만하지 마시고 실력을 차츰 확장해간다는 마음가짐으로 임하면 좋습니다. 이 경우에도 분야별로 필요한 개념을 알게 되는데 현 수준에 만족하지 마시고 늘 지식을 확장한다고 하는 마음가짐이 필요하네요.

그리고 또 하나 정보를 드리자면 이렇습니다. HTML이나 프로그래밍 언어 API 함수들처럼 이해하면 외어야 하는 것은 외우면 됩니다. 이 경우 그냥 외우면 되는 부분은 그냥 외우시구요. 자연언어처럼 의미를 분별하지 않고 기호라고 생각하고 기호의 의미를 살펴서 흐름을 빠르게 훑는 연습도 좋고, 문자열 처리처럼 글자가 뚫어지게 주시하면서 패턴적으로 쪼개는 것과 같은 능력도 중요합니다. 영화 뷰티풀 마인드에서 광고를 패턴화해서 보는 주인공이 결국 남들이 못보는 방법으로 세상을 바라보고 경제학에 공헌한 게임이론을 만들었듯이, 패턴적으로 보는 것도 전산학에서도 중요한 기능 중의 하나네요.

외우는 것만 하다보면 스스로 생각하는 능력이 쇠퇴하기도 합니다. HTML을 예로 더 들면요. HTML도 외우고나면 활용을 해야 하는데요. 태그를 외웠어도 복잡한 형태의 레이아웃을 만들때는 여러 분기의 코드가 가능해서 교재에서 나온 코드를 응용해서 실험을 토대로 하는게 추천됩니다. 일단 교재를 보고 응용해보시구요. 이 응용하는 노하우를 고유한 형태로 만들어보는 것도 연습하면 좋습니다. 사이트를 다니다가 뭔가 신박한 레이아웃이 발견되면 소스보기를 해서 대응되는 코드를 살피는 것도 좋구요. 때로는 WYSIWYG 방식의 웹에디터가 생성한 코드를 살펴서 직접 코딩할때 활용해도 좋습니다. 응용례는 무궁무진합니다. HTML 태그들이 한정된 것 같아두요. 물론 HTML은 코드 형태가 비슷하게 나오는 경우가 많긴 한데요. 교재에서 나온 코드나 남들이 만든 코드도 이렇게 저렇게 바꿔보면서 배우면 예제나 참고한 사이트 코드가 해결못한 것을 해결하는 코드가 고안되기도 합니다. 이를 늘 열심히 해두면 신박한 기술자가 되죠.

조금 두서없이 써놨는데요. 이 글에서 해설한 컴퓨터 공부에 필요한 덕목을 요약하면 아래와 같습니다.

(1) 누구나 익숙한 언어도 수능 레벨까지 되면 어려워지듯이 이론적이라서 그렇습니다. 정확하게 뉘앙스 구별도 해야 하고 이론을 배경으로 삼아 메타적으로 적용해야 하기에 어렵습니다.
(2) 기초부터 차근차근 하더라도 그 배경 지식의 범위와 심도가 넓고 깊어서 지식 정도에 따라 성패가 갈리는게 이론적 지식이라, 사람마다 다른 경험 상태에 있으니 어려울 수 있습니다.

이정도로 요점을 말씀드려봅니다. 이 덕목들을 실현하기 위해 노력하면 다들 이론도 잘하게 될 것입니다.

프로그래밍 기초 – 코드 이해 진입에 난국이 있다면 참고해보세요

보통 프로그램은 프로그래밍 언어에 의해 만들어집니다. 프로그래밍 언어로 소스코드를 만들고 실행하게 처리하면 프로그램이 실행됩니다. 소스코드가 중요한 개념인데요. 프로그램의 설계도면이라고 비유할 수 있는 일련의 텍스트 파일을 의미합니다. 소스코드에는 프로그램 실행에 관여하는 코드가 기재되어 있구요. 프로그래밍 언어에 따라 컴파일을 거치거나, 인터프리터가 해석해서 실행이 됩니다. 즉 프로그래밍을 잘 하려면 소스코드를 이해하고 응용하는 능력이 전제가 되죠.

프로그래밍 언어는 한국어나 일본어와 구별되는 인공언어라고 합니다. 자연언어에 대비되는 개념인데요. 인공언어와 자연언어는 공통점도 있고 다른 점도 있습니다.

공통점은

(1) 정보를 담고 있는 기호체계
(2) 언어마다 각기 다른 규칙을 따름
(3) 규칙을 숙지해서 응용이 가능함

이구요. 다른 점은

(1) 자연언어에 비해 인공언어가 이해가 어려울 수 있음
(2) 자연언어에 비해 기술적으로 조합되는 테크니컬한 개념이 많음 (전문적 지식필요)

보통 (1)이나 (2)의 특성으로 인해 임하기전부터 압도당하기도 합니다. 이 경우 해법은 기호를 보고 압도당하지 마시고 공부에 임하시라는 것인데요. 이는 누구나 알지만, 그 요령을 비전공이시면 알기가 어려우니 이 글에서 요령을 해설해보겠습니다.

우선 기호체계인 것이 프로그래밍 언어라 아래와 같은 특성을 지니고 있습니다.

(1) 고유 문법이 존재
(2) 초기 접근이 쉬운 편인 언어가 있음
(3) 문법 요소가 합해져 구문을 이룸
(4) 유지보수와 가독성을 위한 방법론적인 것
(5) 이미 여러번 해결된 기능을 효율화하기 위한 알고리즘이 연구되어 있음

이 특성들 중에서 초심자 시절에 필요한 숙련 사항은 (1), (2), (3)을 잘 알아두는 것입니다. (4)와 (5)는 숙련이 된 단계에서 해야 합니다. 풀어쓰자면요.

여러 프로그래밍 언어에 공통된 특성을 전제로 해서 배우기 편한 언어부터 하면 진입점에서 수월한데요. 예를 들면 C++로 윈도우 앱을 만드는 것보다 파이썬으로 간단한 계산기를 만드는게 편합니다. 이는 프로그래밍 언어의 소스코드 구성요소가 간결하게 첫인상을 주는지의 차이이기도 하고 이미 개발되어 언어에 포함된 기존의 라이브러리들의 강력한 정도가 언어마다 차이가 있어서입니다. 그래서 중요한 것은 어느 언어부터 배움을 시작하느냐인데요. 요즘은 파이썬을 주로 추천하는 것 같애요. 코드가 군더더기없이 작성이 가능하고 난이도가 높은 구현들인 머신러닝과 같은 구현을 돕는 모듈들이 많이 제공되서 초심자 시절에 (4)와 (5)를 신경안써도 (1), (2), (3)을 집중하는데 보탬이 되서입니다.

우선 언어를 골랐다면, 문법부터 들여다봐야 합니다. 예를 들면 C++에서 사칙연산을 구현할때 PHP에서는 어떻게 하는지의 차이가 머리속에서 정리되면 딱 좋습니다.

사칙연산에는 여러 문법 요소와 구문이 관여하는데요. 아래식을 계산할때도

1+2=3

언어마다 다른 문법과 구문으로 해결할 수 있습니다.

C++는

라고 쓰구요. PHP는

라고 씁니다. 우선 형태적으로 유사한 것은 변수들을 선언해서 사칙연산 작업을 수행하라고 지시하는 구문 형태죠.

초심자 시절에는 우선 각 구문을 구성하는 문법 요소가 무엇인지 종류부터 식별 연습하면 좋습니다. int는 뭐고 a는 뭐고 =는 뭐고 ;는 무엇인지 떠올려보고 구별이 되면 됩니다. 기왕이면 말이나 글로 설명을 할 수 있으면 더 좋구요.

int는 정수를 메모리에 저장하는 변수의 타입이고
a와 b와 c는 int 형으로 선언된 변수로 메모리에 정수값을 저장하기 위해 쓰였다
+와 =는 수학적인 것을 차용한 언어들 고유의 문법이다 (차이가 있을 수 있다)

이런 이해가 가능해지면 됩니다.

우선 눈썰미가 발현되면 쉽게 알 수 있을 것입니다.

이 문법 요소는 매우 많은 가지수라, 첫대면하면 압도가 될 수 있지만, 다들 학교에서 경험해보신 것처럼 수학 문제를 풀때 그냥 확 임해서 순서대로 배우면 배워지듯이요. 프로그래밍 언어도 그냥 확 임해서 순서대로 배우면 다들 할 수 있습니다.

이 코드는 PHP 문법에 따라 1부터 100까지 더하는 반복작업을 위한 루프문입니다. 중요한 핵심은 for 루프라는 문법 요소로 1부터 100까지 더하는 구문을 작성한 것입니다. 구문은 특정 기능이 구현된 문장들이 모인 코드의 형태구요. 각 문장별로 담당하는 기능을 모아서 최종적인 기능을 수행하게 합니다. for 루프를 예로 들면 고유의 문법 형태가 있어서 이를 준수하면서 코드를 작성하게 됩니다.

for ( ) 안에 들어간 ;로 구분된 부분을 각개격파로 보세요.

$i = 1 은 $i를 1로 설정한다는 의미입니다
$i <= 100 은 1에서 100까지 $i가 도달하는 동안 for 루프를 실행하라는 의미구요
$i++는 $i <= 100일 동안 1씩 $i를 증가시킨다는 것입니다.

이 순차적인 인식이 되면 구문에 대한 이해가 된 것이구요 { } 블락에 들어간 코드가 100번 실행된다고 이어서 이해하면 됩니다.

이런 문법과 구문을 이해하고나서 일정 부분 외어서 이후에 스스로 작성할때 변형도 해보는 능력을 갖추어야 언어를 잘 운용할 수 있게 됩니다.

설명이 어렵게 느껴지신다면 구문 형태가 최대한 가독성이 큰 언어로 하셔도 좋구요. 파이썬이 추천되는 이유입니다. 워드프레스는 PHP로 작성된 프로그램이라 PHP도 들여다봐야 하니 선택해보세요.

프로그래밍 언어들은 문법 차이에도 불구하고 공통 개념을 공유하기도 합니다. 변수, 상수, 함수, 연산자, 전처리, 컴파일, 인터프리터, 자료형, 클래스, 절차형, 객체지향형, 라이브러리, API 등등 일단 잘 알아두면 좋은 개념이 체계화되어 있으니, 잘 숙지해두면 좋습니다.

위의 구문에서 변수와 사칙연산은 컴퓨터의 메모리를 제어하는 과정이구요. 오랜 옛날에 통용되던 기계어에 가까운 언어를 비교적 이해하기 쉽게 만든 것입니다. 메모리를 알면 좋은데 잘 모르더라도 순서대로 작업 구현에 필요한 지식을 소스코드 작성시나 타인의 소스코드를 보면서 떠올려봐야 합니다.

처음 시작한다면 구문 형태에 익숙해지려고 하시면 좋습니다. 너무 어렵게 생각하지 마시구요. 위에 for 루프처럼 각 부분을 보고 어떻게 결과가 나올지 예측을 해보시면서 보시면 좋습니다.

각각의 언어별 차이를 알고
각각의 언어 문법 규칙을 이해할 줄 알고
문법 요소가 모인 구문이 어떻게 작동하는지 알고
여러 요소를 합해서 응용하는 순발력

이 필수구요. 처음 시작할때는 위 네가지가 자유롭게 된다는 전제 하에 타프로그래머들이 작성한 소스코드를 보면서 실무가 어떻게 되는지 보면서 배우는게 효율적입니다. 수학도 친구들끼리 풀이집을 빌려주면서 풀듯이요. 다만 암기만 하는게 아닌 스스로 이해하는 과정은 늘 실천해야 하구요.

글쓰기도 잘하는 분들 글을 읽어두면 영감이 떠오르듯 프로그래밍 언어도 잘하는 분들의 소스코드를 보면서 배우세요.

워드프레스의 경우 워드프레스 공홈에서 소스코드를 다운로드받을 수 있구요. 깃헙 같은 곳에서도 PHP, 자바스크립트 소스코드를 볼 수 있습니다.

그런데 물론 비전공이시면 시간을 워드프레스 외적인데 쓰는게 현실적으로 시간낭비가 되니 큰 의지가 안일으켜질 수도 있는데요. 이 경우 PHP로 해설된 교재를 우선 분위기를 알고 어떤 식으로 전개되는지 정도로 가볍게 보시고 워드프레스 공부로 오셔서 번갈아가면서 교차참조하셔도 됩니다. 처음부터 끝까지 일차독 하시고 실재 작업을 하시다가 이차독 하시고, 삼차독 하시면 됩니다. 이는 초견상 안되면 여러번 읽기가 싫어지기도 하셔서 드리는 요령입니다. 전공자들도 처음 접하면 교재를 여러번 읽구요. 의지를 강하게 붙들고 깊은 집중력으로 하는 것이 전공자들이라 할 수 있는 차이가 만들어집니다. 초심자이신 분들도 할 수 있습니다.

더 나아가면 API와 알고리즘도 배우면 좋습니다. 압도당하지 마시고 순서대로 배우시면 됩니다.

요즘은 비전공자분들도 프로그래밍을 할 수 있게 책들도 잘 나와있으니 찾아서 읽어보셔도 좋구요.

해설이 잘 된지 모르지만 일단 이해는 되셨을 것입니다.

컴퓨터 프로그램 작성시 안될 경우 점검해볼만한 사항들

요즘은 20년전과 다르게 비전공자분들에게도 프로그래밍을 가르치는 체제가 잘 자리잡혀 있습니다. 엑셀에서 VBA를 쓴다든지, 오래전에 어도비 플래시에서도 프로그래밍 개념이 있었던 것처럼, 필요가 있으면 전산학 이외의 분야에서도 프로그래밍을 할 수 있고 해야 하는 경우가 있었네요.

20년전의 제로보드 시절이나 지금의 워드프레스 시절이나 프로그래밍에 대한 수요가 늘었습니다. 물론 기본적인 것도 잘 못하는 경우의 수요자가 지닌 의도가 다른 무엇을 위한 불순함이라는 악용 목적도 있어서 수요자를 밀어내는 경우 있는데요. 쇼핑몰 구축과 같이 순수하게 워드프레스를 이용하는 이유가 있고 실천을 해왔다면 일단은 프로그래밍에 대한 의지를 이어가셔도 되는 것 같애요.

우선 CSS, HTML 자바스크립트, PHP를 필수로 알아야 하고, 이미지 제작을 위한 포토샵을 하면 좋은데, 전자는 반드시 알아야 하지만 후자는 인공지능 이미지 생성 서비스를 이용해도 될 것입니다.

문제는 CSS나 HTML, 자바스크립트, PHP는 소스코드를 이해하고 암기가 안되면 진행이 안되는 주제라, 이에 대해 조금 해보다 안되면 포기하기도 하네요.

우선 눈썰미가 강해야 배움이 진행되구요. 설명이 맞춤이 아니라서 이해가 안되더라도 요령은 일단 소스코드의 각 라인별 문법 요소 식별이나 소스코드 전체가 하는 일이 이해가 되었다면 일정 부분 소스코드를 암기해버리는 것도 필요합니다. 보통 한국어나 일본어처럼 자연언어에만 경험이 많으시면 소스코드도 같은 습관으로 이해하기에 진행이 안되는 것입니다.

https://it.shutterpress.site/?s=%EA%B3%A0%EC%88%98

https://it.shutterpress.site/?s=%EA%B5%AC%EB%AC%B8

이 문서들을 참조하시면 요령 위주로 말씀드린 것이라 배움에 물꼬가 트일 것입니다.

참고로 너무 외우는 것만 단련하시다보면 개별 상황에서 기지를 발휘해서 새롭게 코드를 작성하는 능력이 쇠퇴합니다. 다들 학교에서 경험해보셨듯이 수학도 암기와 이해, 응용이 중요하듯이 프로그래밍도 그렇습니다. 소스코드 작성에 성공하시면 이를 해설하는 것도 병행으로 해보시고 응용 능력도 중요하니 판단을 잘 하시고 하세요.

표현의 의미를 너무 정확하게 안보고 반대로 너무 엉뚱하게 안보는 중용에 대한 생각

개념을 잡으려면 표현을 정확하게 보고 포괄적인 표현으로 입론해두는게 과학적으로 추천되는 방법입니다. 그런데 때로는 여러 조건이 겹쳐서 글 표현을 너무 정확하게 보다보면 판단에 무리가 오는 경우가 있습니다. 이는 과학은 정확해야 한다는 조건의 구심점이 언어 이해에 겹치는 조건에서 있게 되는 현상인데요. 일반화된 공통감을 위해 개념어에 하나의 원리를 사상시켜야 하는 것을 너무 철저하게 지키다보면 글의 표현에 갇히게 되어 판단이 그르쳐지는 경우가 있습니다.

예를 들면 HTTPS가 보안이 강화된 기술이라고 하는 기술을 너무 정확하게 보면 오해가 생성되기도 하네요. 보통 기술을 설명할때 해킹에 관한 기술 설명이면 때로는 군더더기없이 기술 장점만 해설한다든지, 모방 범죄를 막기 위해 보안이 뚫리는 기술이 있음을 언급하지 않고 넘어갑니다. 그러면 초심자 단계에 있어서 기술의 경험이 당연히 적었을때, 설명에 안나온 문제 소지나 설명된 표현에 너무 정확하게 보게 되어 이런 결과로 이어집니다. 보안이 강하다는 표현만 나온 경우, 누군가 해킹을 당했을때 이런 대화도 됩니다. “보안이 뚫렸어요.” “HTTPS인데 왜 뚫려?” 소통의 하나로도 기능하는 대화인데요. 이 경우에 큰 문제는 없을 수 있으나, HTTPS도 뚫린다는 표현이 없으면 무조건 보안이 강화되어 안전하다는 판단으로 이어진 경우, 혼자서 판단하다보면 논리적으로 배제한 그 조건이 문제의 원인인데도 인식에서 비껴나가게 되네요. 그러면 대처력에도 무리가 오기도 합니다.

그래서 요령은 일단 특정 카테고리에 해당하는 기술들의 종합적인 측면을 늘 전제해야 함을 알아두고 들어가면 좋습니다. 보안을 배울때는 “모든 보안 기술은 뚫리게 마련이다”라는 전제를 하는 것과 같은 전제세우기입니다. 이 전제를 세워두고 해설을 접하면서 전제에 의해 가능성들을 살피다보면 철두철미해지고 조금씩 다른 해설을 접할때도 의미의 간극이나 행간 의미도 잘 살펴보게 되는 노하우가 있습니다.

이러한 전제를 잘 세워두면 좋게 되는 예로, HTTPS에서 암호화를 담당하는 기술의 암호화 기술이 일반 PC로 몇천년을 연산해야 깨트려진다는 언급이 나와도 일단 깨트려짐을 배제하면 안됩니다. 양자컴퓨터를 쓰면 몇십분 안에 깨트려진다는 결과도 있고, 레인보우 테이블 공격과 같은 예상외로 허무한 해킹도 가능하고, SALT를 추가해도 계정이 탈취되어 SALT와 암호화키가 탈취되면 뚫립니다.

초심자 시절에도 설명이 최고로 잘 되어 있으면 다들 잘하시는데요. 설명의 특성상 구심점도 저자마다 다르고 늘 정확하게 해설하는 것은 아니므로 읽는 분들이 잘 읽는게 중요하네요. 전산학 문서를 읽을때 너무 정확하게 해설에 갇히지 않으면서도, 반대로 너무 자의적으로 읽는 것이 아니게 되는 노하우가 되는 이해 방식이 있네요.

위에 말씀드린 요령처럼 분야별로 제일 우선시해야 하는 전제를 세워두면 좋다고 생각합니다. 지금은 그저 위에 보인 예시만으로 언급하지만요. 문헌에서 설명한 것이 아니게 될 경우의 가능성이나, 뭔가 문제 소지가 있는지 확인해볼 감각도 꾸준히 판단하면서 공부하는 것도 좋구요. 이는 표현으로 매개가 되기에, 표현이 같아도 다를 수 있음이나 표현이 달라도 같을 수 있음을 판단하는게 되면 더욱 잘하는 것이라고 생각합니다.

그렇다고 너무 엉뚱하게 표현에서 비껴가는 것도 오류를 만들지만요 ^^

이 감각을 기르는 실천적인 방법은 (1) 개념적으로 읽는 대목 (2) 현상적으로 읽는 대목 (3) 인과적으로 읽는 대목을 잘 구별하는 것입니다. 우선 초심자 단계에서는 (1)에 의해 (2)가 되구요. 경험이 있게 되면 (3)도 완성이 됩니다. (3)이 되는 시기를 앞당길수 있다면 (본문에서 말씀드린 전제하는 노하우) 글 표현이 달라져도 이해력이 강해지는 것 같애요. 흔히 “써본만큼 안다” “많이 써보고 많이 읽으라”고도 하는데 이 인식적 실천 방법에 대해서도 살펴본 글을 https://shutterpress.site/category/it-%ec%bb%ac%eb%9f%bc/ 에 여러편 올렸네요. 개념적으로만 접근하지 않고 (2)와 (3)을 조화롭게 운용하는 노하우입니다.

IT 기술 문서 찾을때의 참고 사항 1

IT 기술 문서는 아는 한도가 크면 클수록 잘 찾아집니다. 요즘의 검색엔진은 구글이나 빙처럼 규모가 큰 검색엔진일때 포괄적인 개념어만 입력해도 입문 단계의 문서는 잘 찾아줍니다.

워드프레스 블록에디터에 대해 찾아본다면

워드프레스 블록에디터

라고 입력해도 되죠

그런데 세부적인 개념을 심도있게 찾으려면 배경 지식이 필요합니다. 이 글에서는 실기 위주로 IT 기술 문서 찾을 때 보탬이 되는 지식을 소개해보겠습니다.

IT 기술 문서는 영어권 문서가 좋은 경우가 많습니다. 워드프레스처럼 한국에서도 사용자가 많은 편인 프로그램은 한국어 자료도 좋은데요. 워드프레스 플러그인이나 테마를 만드는 업체가 외국에 집중되어 있다보니 제작사 공홈으로 가보면 영어로 된 자료가 주를 이루죠.

요즘은 번역기가 발달해서 번역이 안어려운 구조의 문서는 기술 문서도 잘 번역을 해줍니다. 이 경우 검색할때만큼은 영어 검색어로 찾아야 하는데요. 이런 식으로 찾아보면 좋습니다.

wordpress block editor usage tutorial
wordpress block editor usage cookbook
wordpress block editor

세번째 라인은 이 글 서두 한국어로 검색한 것을 영어로 옮긴 것입니다.
두번째 라인은 cookbook이라고 해서 문서의 특징을 한정해본 것입니다.
첫번째 라인은 tutorial로 한정한 것이구요.

중요한 구심점은 cookbook과 tutorial인데요. 둘다 IT 업계에서 쓰이는 용어인데 찾는 문서의 특징을 한정할때 좋은 것 같습니다. cookbook과 tutorial은 일단은 빠릿하게 구분되는 용어지만 경우에 따라 상호교환적인 용어로, 세번째 라인처럼 포괄적인 검색어로 안찾아질때 입력해보면 해당 단어의 특성에 맞는 문서가 잘 찾아지기도 해서 주목해야 합니다.

tutorial은 관련 배경 지식이 이미 있는 경우에 튜터가 가르쳐주듯 작은 단위의 프로젝트를 진행해서 보여주는 설명 방식이구요. 웹프로그래밍 지식이 있으나, 워드프레스 블록 에디터를 모를때 실재로 진행해보고 따라오다보면 체현이 확장되도록 할 수 있는 교육 방식을 의미하는게 tutorial이죠. 잘 모르는 경우에도 무작정 따라하기와 같은 용도로도 쓰입니다. 일단 해보면 해당 실기를 서술하는 설명을 보고 잘 이해되서입니다.

cookbook은 경험많은 개발자들이 참고하는 실무 기술을 모아둔 책을 의미합니다. 예를 들면 자바스크립트는 아는데 워드프레스 블록 에디터에서 고를 수 있는 블록을 만드는 방법이 궁금할때 cookbook을 찾아보면 실기를 쉽게 찾을 수 있어서 찾아보면 좋네요. cookbook이나 tutorial은 IT 해설들이 분류된 범주라, 검색어에 포함시키면 이해가 잘 되는 특정 주제의 문서가 찾아질 가능성이 높아지죠.

그리고 보통 격식을 차린 문서들은 PDF 형식으로 제공되는데요. 격식을 차렸다는 것은 배경 지식을 더 잘 설명한다는 의미도 됩니다. 그래서 위의 검색어에 추가해서

wordpress block editor cookbook pdf

처럼 입력하면 발표자료 PDF 문서나 개발자가 저술하고 무료로 푼 단행본 PDF 들이 검색되어 활용해볼만 합니다. 보통 PDF로 만든 자료는 공식 문건인 경우가 많아서 잘 분별해서 구하면 해설이 믿을만해서 좋습니다.

일단 이번 해설에서는 검색 요령을 해설했는데요. 워드프레스 왕초보분들이 해볼만한 검색어에 대응되는 용어 설명을 해보았습니다. 일단 영어권 문서라고 해도 번역 서비스를 잘 받으면 이해가 쉽게 되게 번역되는 세상이라 영어에만 국한된 해설은 아닙니다.

문서가 찾아지면 텍스트만 붙여넣기가 된다면 https://translate.google.com/ 같은 서비스를 이용하거나, https://www.systran.net/en/plans-pricing/ 처럼 문서로 입력해서 번역해주는 유료 서비스도 이용해볼만 하네요. 위에서 찾은 문서를 번역해서 보면 전문 IT 용어에 경험이 없어도 이해가 될 것입니다.

이해가 잘 되게 해설한지는 모르는데 이해하실 것 같아 올립니다.

참고로 위의 검색어는 일반적인 검색어를 비틀려고 한 검색어인데 이를 안쓰고 아래처럼 입력해도 됩니다.

how to use wordpress block editor

검색어 의미가 같아도 검색어 표현이 달라지면 검색결과가 안나오는게 나오기도 해서 다른 표현으로 비틀어서 찾는 것도 요령이네요.

글감 찾을때 영감을 주는 저자들 소개 2

블로그 글감을 찾을때 필요한 카테고리 가지치는 기법 체현은 원활한 자료 수집에도 좋은 기법이지만 무엇보다도 자기주도적인 학습을 할때 제일 필요한 덕목입니다. 다른 글에서 이를 해설했는데 참조하시구요.

https://shutterpress.site/%ea%b8%80%ea%b0%90-%ec%b0%be%ec%9d%84%eb%95%8c-%ec%98%81%ea%b0%90%ec%9d%84-%ec%a3%bc%eb%8a%94-%ec%a0%80%ec%9e%90%eb%93%a4-%ec%86%8c%ea%b0%9c-1/

자료 수집시 공신력있고 체계적인 글을 읽는 방법으로 중요한 것이 잘하는 저자를 찾아내어 늘 가까이 두고 그분의 글을 탐구하는 노하우입니다.

우선 저자 이름에 대한 정보가 없을때는 다른 글에서 해설했듯이 각 분야의 포함관계를 살펴서 저자들의 직종이나 분야를 추출해두구요. 이 분야 정보를 최대한 활용해서 정보를 얻는 루트를 개척해야 합니다.

저편에서 예를 든 “영화 평론”을 예로 들면 표준적인 예는 아래와 같습니다.

대중문화 → 예술 → 엔터테인먼트 → 영화

조금더 학구적으로 가면

인문학 → 철학 → 예술철학 → 영화 평론
예술학 → 예술론 → 영화 평론

처럼 되는데 이를 지칭한 표현에 갇히면 판단이 정체되게 됩니다.

이 경우 자유연상법을 활용해서 여러 가지치는 카테고리를 발상하면 좋습니다.

대중문화 → 예술 → 엔터테인먼트 → 예능인 → 배우 → 아이돌 팬클럽
예술학 → 예술론 → 영화의 역사
예술학 → 예술론 → 영화 제작
인문학 → 역사 → 예술사 → 영화의 역사
사회학 → 인류학 → 사회와 문화

여기서 주안점은 같은 주제에 대해 서로 다른 분야처럼 보이는 분야들에서 주제화된 대상이 같은 대상인데, 분야에 따라 다르게 딕션됨을 알아채는 노하우네요.

위의 예에서는 인문학(철학, 문학, 역사학)의 특색으로 영화평론가가 해당 카테고리에 맞는 논의를 했을테구요. 사회학(사회학, 경제학, 정치학 등등)의 특색으로 사회현상을 해설하는 사회학 전공자가 있을 것입니다. 이들 정보는 사소해보여도 철저하게 체현하면 좋은데요.

https://riss.kr

에서 논문 찾을때 찾는 범위를 좁히는 옵션 하나라도 위의 이해방식으로 알아채서 범위 좁히기가 됩니다.

이렇게 하다보면 각 분야의 특색이 머리속에서 정리가 되어 저자의 연구 방침에 대한 이해도도 깊어지죠.

보통 인문학과 자연과학은 서로 다른 분야지만 아래와 같은 책을 보면 뭔가 느낌이 팍 오게 됩니다.

이 책은 식품영양학자가 저술한 책으로 한국인의 주식인 밥에 대해 여러 각도에서 접근해서 설명한 책인데요. 밥의 역사, 한국인의 밥상에서 밥이 차지하는 의미, 영양학적인 소개, 레시피 소개 등으로 구성한 책입니다. 이분을 잘 모르다가도 위에서 카테고리가 잘 성립되었다면 이질적인 것 같은 인문학과 자연과학의 접점을 둔 것에 대해 그냥 제목이구나 하는 것보다 책 내용 예측력이 더 늡니다. 그리고 실재로 읽어보고 감명깊으면 이 저자를 주목해서 다른 책도 찾아보고 논문도 찾아보는 것이죠. 인터넷 서점에서도 이들 저자 이름으로 찾아보구요.

위 책을 저술한 저자분은 정혜경 교수님이시구요. 밥의 인문학, 채소의 인문학, 고기의 인문학도 출간하셨는데요. 교수님이시라 글이 정련되시면서도 서술을 따라가는 재미가 품위있으시고 좋습니다. 식품영양학자시지만 역사와 같은 서술도 잘하시구요. 논문 또한 특유의 글을 쓰시는 능력이 탁월하셔서 아닌 경우에 비해 신뢰감도 크고 의미 확장도 영감이 확확 전수받게 해주시는 것 같애요.

학문 → 자연과학 → 식품영양학
학문 → 인문학 → 역사학
학문 → 사회와 문화 → 사회학
학문 → 요리학 → 한국 요리

이런 구분처럼 된 토대에서 서로 다를 것 같은 분야의 융합이 어떻게 이루어지는지의 인상도 받을 수 있고 분야를 넘나드는 글쓰기도 알게 되는 대단하신 저자시라 소개해봅니다.

카테고리에 대한 언급을 많은 글에서 강조했는데 이번 글도 그랬습니다. 카테고리 구분법으로 여러 응용이 되어 자료 수급과 공부할 주제와 분야도 정하고 해당 분야 소속 저자도 알 수 있어서네요.

일단 글이 해설력이 얻어진 것 같아 공개해봅니다.

IT 고수되는 비결 중의 하나 5

IT는 과학이지만 표현적으로 서로 호환되는 의미망에 있음을 알면 더욱 더 상세하게 잘 하는 실무 감각을 지니게 됩니다. 과학은 일반적으로 표현이 서로 다르면 외연뿐아니라 지시 대상도 다르다고 하기에 표현 이해시 서로 연관된 의미망을 캐치하려면 경험이 필요합니다. 경험이 중요한 이유는 문제 기술시 늘 같은 균일한 표현을 쓸 수가 없어서도 그렇구요. 체계적인 이해를 할때 휴리스틱한 판단이 이루어져야 하기 때문입니다.

예를 들면 500 에러가 나면 “서버 설정 문제이거나 스크립트 오류”라고 하면 경험 많은 분들은 아래처럼 판단을 해낼 수 있습니다.

DB 문제라는 것은

(1) DB가 실행된 프로세스가 멈춤
(2) 방화벽이 DB에 접속하는 포트를 막음
(3) DB서버가 분리된 서버라 localhost가 아님
(4) 소켓 연결이 안됨
(5) DB 데이터가 저장된 파일이 슈퍼유저도 변경할 수 없는 비트가 설정됨
(6) 워프 설정 파일 wp-config.php 에 변조된 이상한 깨진 문자열이 섞임

등등의 상세한 경우를 생각할 수 있으면 좋구요.

서버사이드 스크립트의 경우

(1) PHP나 Flask와 같은 웹페이지를 처리하는 스크립트에 문법적인 문제
(2) 스크립트에 입력된 오타

이는 표현이 지시하는 것을 연관적으로 살피는 경험에 의해, 즉 많이 다루어보고 생각해본 경험에 의해 알 수 있게 됩니다. 흡사한 다른 예는 이렇습니다.

프로그래밍 언어마다 문자열을 지정할때 쓰는 문법 규정이 조금씩 다릅니다. PHP는 C의 영향을 많이 받았기에 C의 문법을 준수하기도 하지만 아래처럼 쓰이기도 합니다.

(1) C와 같은 문법을 준수하는 언어는 문자열 변수를 큰따옴표로 감싼다
(2) PHP는 이 규칙에서 조금 더 완화된 기준으로 문자열을 선언할 수 있다
(3) PHP로는 문자열 내부에 들어간 문자열에서 큰따옴표를 써야할때가 있다
(4) 문자열을 큰따옴표로 감싸면 문자열 내부에 이스케이프를 해야 해서 식별이 어려워진다
(5) 그러니 문자열은 보통 큰따옴표로 감싸지만, 작은 따옴표로 감싸는 것이 더 널리 쓰인다

위의 판단 과정을 하나로 표현하면 PHP에서 문자열 변수에 들어갈 정보를 감쌀때는 작은 따옴표로 감싸는게 추천이 된다고 요약할 수 있습니다. 이유는 문자열 변수 안에 들어가는 문자열에서 큰 따옴표를 써야할때 이스케이프를 안해도 되서 그렇습니다. 예를 들면 이렇습니다.

여기서 중요한 부분은 문자열 안에 HTML 태그가 들어갔다는 것입니다. 이 태그가 들어가는 것은 PHP 실무에서 자주 있는 일인데요. “PHP에서 문자열을 지정할때 작은 따옴표로 감싸는 이유는 문자열에 들어가는 변수 내용이 큰따옴표를 이스케이프안해도 됨”이라는 표현은 곧 “HTML 태그에 속성을 기재할때 큰따옴표를 쓰는게 자연스러우므로 PHP로 문자열에 HTML 태그를 저장하려면 작은 따옴표로 문자열 전체를 감싸야 함”과 같은 서로 달라보이는 표현과 의미망으로 통한다고 판단해볼 수 있을 것입니다.

달리 말하면,

PHP로 문자열을 작은 따옴표로 감쌀때의 이점은:

문자열에 들어가는 변수 내용이 큰따옴표일때 이스케이프안해도 됨
HTML 태그에 속성을 기재할때 큰따옴표를 쓰는게 자연스러움

이 두 문장이 창출하는 의미는 조금 다르지만 실무에서는 이둘이 중첩되어 같은 의미를 가리킨다고 생각할 수 있으면 좋습니다. 물론 후자는 HTML 태그를 기준으로 기술한 문장이고 전자는 이스케이핑 개념으로 기술한 문장인데, 서로 구별될때도 있고 같은 의미를 지칭하는 때도 있으니 이를 경험으로 판단이 잘 되면 고수가 됩니다.

휴리스틱한 판단도 이런 감각적인 것에 의해 일으켜지죠.

이를 어느 인식 모드인지로 접근하면, 개념체계로 접근할 것인가, 지칭하는 실무적인 현상으로 접근할 것인가의 차이 같습니다.

다시 말하면

1080p24 표시를 개선했습니다

라는 버그패치 문구를 보고

1080p60도 영향받는다

라고 느끼는 것도 같은 언어 이해죠.

약간 거칠은 해설인데 이해는 되시죠?

물론 위와 같은 이해를 너무 전면화하면 구사하는 표현이 너무 중구난방이 될수는 있는데요. 판단 만큼은 위와 같은 덕목으로 하는게 추천됩니다.

다시 정리하자면 위에 예를 들은 PHP 문자열에 대한 판단은 아래 조건에 의해 결정됩니다.

(1) C와 같은 문법을 준수하는 언어는 문자열 변수를 큰따옴표로 감싼다
(2) PHP는 이 규칙에서 조금 더 완화된 기준으로 문자열을 선언할 수 있다
(3) PHP로는 문자열 내부에 들어간 문자열에서 큰따옴표를 써야할때가 있다
(4) 문자열을 큰따옴표로 감싸면 문자열 내부에 이스케이프를 해야 해서 식별이 어려워진다
(5) 그러니 문자열은 보통 큰따옴표로 감싸지만, 작은 따옴표로 감싸는 것이 더 널리 쓰인다

이런 식의 판단이 위 두 표현에서 공유되는 것이고 의미 구심점이 서로 중첩되거나 연쇄적이 되면서 의미망이 호환되는 정도를 결정하는 것 같애요.

잘 쓴 글인지는 모르지만 일단 이해는 될 것 같아 올립니다.

컴퓨터 기술들끼리의 차이점을 살펴볼때의 한 요령

컴퓨터 기술을 배울때 과제로 주어지는 공부 방법은 기술들끼리의 차이점을 살펴보라는 과제입니다. 이 차이점을 살펴보는 경우에 이점은 개념 구분이 빠릿해진다는 것이죠. 그런데 때로는 차이점을 아주 명확하게 구별할 수 없는 기술들도 존재하게 됩니다. 예를 들면 “게시판과 블로그의 차이”와 같은 기술이 해당됩니다.

초견상으로 보면 블로그는 일인칭 매체이고 게시판은 다수의 사용자가 이용하는 기술이다라고 하는데 이 말도 옳습니다. 실재로 블로그가 태동하던 시절에는 게시판보다 개인이 한사람이 주로 포스팅하는 기술이었기 때문이죠. 이게 차이라고 할 수 있습니다. 그런데 학습자에 따라서는 차이를 주는 것에 집중하는 경우가 있습니다. 이 차이점에 주목하다보면 블로그도 팀블로그가 있고 게시판도 블로그처럼 기능하는 것을 알게 되면 블로그는 일인칭 매체라는 정의를 잘못처럼 여기기도 하네요.

이 경우에도 해법이 있습니다. PC는 고도화된 기술이라 기술의 발전에 의해 전통적인 작동 방식에 확장이 자주 일어나고 복잡한 얽힘이 있어서 차이가 불분명할 수 있다는 것을 우선 인식해두면 해결의 실마리가 얻어집니다. 이 경우 전통적인 작동 방식을 우선 알아두고 새롭게 추가된 기능도 알아두면 문제가 해결됩니다. 즉 “차이점을 알아보라”라는 말의 의미를 유연하게 생각해서 차이점도 있고 공통점도 있으나 기술 발전으로 인해 서로의 경계가 허물어질 수도 있고 강화될 수도 있다고 대전제를 잡아두고 판단하면 됩니다. 이 경우 기술들끼리의 각각의 특징을 각각 구체화해두는 것으로 충분합니다. 그 구체화해두는 설명이 실재 기능과 대응되고 맞으면 그 차이점과 공통점을 나열해서 보여주는 것으로도 목표가 달성되죠. 차이점을 어떻게든 알아두려는 것보다 기술 각각의 명세를 집중하면 좋다고 생각합니다. 물론 기술마다 기반하고 있는 공통토대는 존재합니다. 블로그도 게시물 저장하는 기술이 있고 게시판도 게시물 저장하는 기술이 있구요. 입력폼과 같은 기술도 공통됩니다. 이러한 공통점, 차이점이 분별되는 것은 판단 목적에 따라 달라지는데 이 목적에 따라 달라지는 관점을 잘 실천하는 토대가 각각의 기술의 특징을 각각 살펴보는 것으로 각자의 목표에 따라 구별할 수가 있게 된다는 것입니다.

이는 PC가 고도화된 체제라, 전자렌지나 전화기처럼 비교적 단순한 작동 양식을 보이는 기술보다 발전이 빠르고, 추가되는 새로운 기술이 공통점과 차이점의 차이를 매우 빠르게 허물어트리는 체제라 그렇습니다. 그래서 중요한 것은 “말이 되느냐”인 것 같애요. 블로그를 게시판과 비교할때 아닌 사례가 존재해도, 그반대로 대응되는 사례가 있으면 이해하면 되죠. 이는 기술이 확장되고 겹치다보면 포괄적인 것을 지키기가 매우 어렵게 되기도 한 것이고, 기술이 개발되던 초기의 특징이 늘 지속되는게 아니라는 점에서 하나의 해법이 됩니다. 말이 되느냐의 전제는 그 말이 대응하는 실제 구현 사례가 있으냐에 초점을 두면 이해가 편해집니다.

그래서 IT 업계에서 통용되는 교수법중에서는 “전통적인 정의도 알아두면 좋다”라고 합니다. 이 경우 경험이 없어서 언어적으로 판단할 수밖에 없을때 표현이 다르면 틀린 것처럼 보이는 경우도 이 글의 주제와 만나는 지점이 있네요. 예를들면 ROM은 쓰기만 가능한 메모리지만, 기술의 발전에 의해 ROM이라고 불러도 쓰기가 가능한 기술이 있으니, 이를 정의내리는 방식에 따라서는 대응되는 사태가 있어서 받아들여집니다.

이를 잘 판단하려면 순서상으로 차이점을 강조해서 배우기보다, 각각의 개별 기술들의 각각의 특징을 살펴보는 것이 우선되어야 하고 이로부터도 개념 구별이 가능하다는데서 옳은 것 같습니다. 이렇게 하다보면 정해진 것을 넘어서는 발견도 이루어지죠. 물론 고수분들도 늘 적중하는 판단만 하는 것은 아니지만, 초심자분들이 정해진대로만 사고하는 경우가 있는데 이는 차이점을 절대화한 것에 기반하기도 하는 것 같구요. 이를 극복하려면 차이점을 우선 찾기보다 각각의 명세를 특징적으로 살펴보고 판단하면 극복된다고 생각합니다.

즉 컴퓨터 기술 공부의 요령으로

(1) 컴퓨터 기술들은 고도화되면 차이점과 공통점의 경계가 흐려지는 경우가 존재한다
(2) 전통적으로 차이가 있던 기술들이 기술 발전에 의해 공통점을 갖기도 하고 그 반대 사례도 존재한다
(3) 전통적인 기술 정의에 해당되지 않는 경우 기술의 발전에 의한 것일 가능성이 늘 있다
(4) 전통적인 기술도 알아두고 새롭게 바뀐 기술도 알아두면 좋다
(5) 이는 목적의 구심점에 따라 바뀐다
(6) 이를 해두려면 차이점에 우선 주목하기보다 각각의 기술의 특징을 각각 살펴보는게 순서다

이렇게 정리가 되는 것 같습니다.

때로는 이런 경우도 있는 것 같애요. 컴퓨터가 해킹당하거나 고수분들이 가끔 시전하는 방해 조건에 주목하면 기술들이 주는 불편함이 연관되는 경우가 있습니다. 예를 들면 ROM과 RAM을 빠릿하게 구별하게 하는데, 해킹당한 문제 상황에서 위기감을 느낄때 이 구분을 빠릿하게 가르친 분에게 반감이 들죠. ROM이라고만 인식하면 판단시 ROM이니까 BIOS 문제가 아닐거야라고 느끼기도 하고 이 경우 차이점을 살펴보라는 교수법이 맞물리네요. 이 경우 전통적인 정의가 기술하는 표현에 회의감이 듭니다. 이렇게 되면 전통적인 것보다 더 포괄적이면서도 유연한 정의 표현을 찾게 되는데 이경우에도 전통적인 것은 그것대로 알아두여야 합니다. 그리고 기술들 각각의 특징을 그것대로 살펴보는게 가능하다면 이 기반에서 차이점과 공통점을 목적에 따라 유연하게 말할 수 있게 됩니다.

이 글에서 전해드린게 이해가 되실지 모르지만 기술들의 차이를 논할때 차이를 너무 강조하기보다 각각의 기술 그자체를 각각 살펴보는게 더 나을 수도 있다는 것을 설명해보았습니다. 물론 기술이나 개념끼리의 구별은 중요한 과정이고 권장되는데 정보통신 기술의 경우 (1)부터 (6)까지가 하나의 공부 요령이기도 하네요.