우연히 예전 번역했던 잘못된 문제 글 의 링크가 잘못된 덕분에 찾게된 글이다.

이젠 직접 번역하지 않고 DeepL을 이용해서 읽는데... 품질이 좋으니 그냥 공개한다.(AI시대 번역의 역할은 무엇일까?) 원문 링크는 저 아래에 있다.굵게 표시된 부분은 내가 읽으면서 중요하다고 생각한 포인트이니, 저자의 생각과 다를 수 있는 부분이다.

ChatGPT가 등장한 이후 문제  해결이라는 과업에서 인간의 역할과 컴퓨팅 파워의 역할에서 R&R 조정이 있다. 나는 문제의 정의와 인식은 AI가 해결하지 못하는, 인간만의 공유 영역이라 생각한다.  아직은 AI의 파라미터 갯수보다 인간이 가진 뇌의 시냅스가 훨씬 더 많고, 그 사이의 유기적 결합에 대해서는 현대 기술이 파악을 못하고 있으니, 우리는 잘하는걸 더 잘하는게 맞겠다.(적어도 우리 세대에서는..)

 


잘못된 문제를 해결하고 있습니다.

문제 해결은 비디오 라이브러리 정리부터 자동차 구매 여부 결정에 이르기까지 일상 생활에서 중요한 부분입니다. 학교 과제에서 수학 방정식을 푸는 것과 같은 사소한 문제부터 미래의 진로 계획과 같은 중요한 문제까지.
인지 심리학에서 문제 해결은 사람들이 문제를 발견하고, 분석하고, 해결하는 정신적 과정과 밀접한 관련이 있습니다.

 

문제 해결 과정에서 따라야 할 단계

문제 해결 상황에서 따라야 할 주요 단계는 다음과 같습니다.

문제 식별

문제를 효과적으로 처리하기 위해서는 먼저 문제를 식별하고 특성을 파악하는 것이 필요합니다. 많은 문제가 복잡하고 다차원적이기 때문에 이는 어려운 과정이 될 수 있습니다. 그러나 문제를 더 잘 이해하기 위해 따를 수 있는 몇 가지 기본 단계가 있습니다. 먼저 문제에 대한 정보를 수집하는 것이 중요합니다. 여기에는 문제를 직접 관찰하고, 영향을 받은 사람들과 이야기하고, 뉴스나 기타 출처에서 해당 문제에 대해 읽는 것이 포함될 수 있습니다. 정보를 수집한 후에는 패턴이나 공통 주제를 파악하기 위해 정보를 분석하는 것이 중요합니다. 마지막으로, 문제의 원인과 이를 해결하기 위해 무엇을 할 수 있는지에 대한 가설을 세우는 것이 필요합니다. 이러한 단계를 거치면 아무리 복잡한 문제라도 더 잘 이해할 수 있습니다.

문제 해결을 위한 결정

문제를 해결하기 위한 결정이 항상 쉬운 것은 아닙니다. 한편으로는 문제를 정면으로 마주하는 것이 어려울 수 있습니다. 특히 문제가 민감한 문제이거나 오랫동안 고민해 온 문제인 경우에는 더욱 그렇습니다. 반면에 문제를 무시하는 것은 종종 문제를 악화시킬 수 있습니다. 부정적인 생각과 행동의 소용돌이에 빠져들 수 있으며, 문제를 해결하기 위해 더 오래 기다릴수록 문제에서 벗어나기가 더 어려워질 수 있습니다. 핵심은 이 두 극단 사이에서 균형을 찾는 것입니다. 문제에 대해 스스로에게 솔직해지는 것도 중요하지만, 자신의 감정 상태와 능력도 염두에 두어야 합니다. 감당하기 힘들거나 수렁에 빠졌다고 느껴진다면 전문가의 도움을 받는 것이 최선일 수 있습니다. 이러한 요소를 고려해야만 자신과 정신 건강을 위한 최선의 결정을 내릴 수 있습니다.

 

문제 이해하기

해결책을 찾기 전에 문제를 이해하는 것이 중요합니다. 무엇이 잘못되었는지 모른 채 문제를 해결하려고 시도하는 것은 어려울 수 있으며 때로는 문제를 악화시킬 수 있습니다. 예를 들어 퍼즐을 맞추려고 하는데 퍼즐 조각 중 하나를 찾을 수 없다고 가정해 보세요. 사방을 둘러보지만 도저히 찾을 수 없습니다. 그래서 맞지 않는 조각을 억지로 끼워 맞추기 시작하고, 그 중 하나가 마법처럼 잃어버린 조각으로 변하기를 바랄 것입니다. 하지만 물론 그런 방법은 효과가 없고 결국 좌절하게 되죠. 문제도 마찬가지입니다. 문제가 무엇인지 이해하지 못하면 문제를 해결하기가 매우 어렵습니다. 그리고 때때로 사람들은 고장나지도 않은 것을 고치려고 하기도 합니다. 따라서 해결책을 찾기 전에 문제를 제대로 이해해야 합니다. 그래야만 효과적인 해결책을 찾을 수 있습니다.

 

다양한 옵션 조사하기

의사 결정을 내릴 때는 다양한 옵션을 조사하는 것이 도움이 될 수 있습니다. 이를 통해 다양한 선택지를 비교하고 대조하여 궁극적으로 정보에 입각한 결정을 내릴 수 있습니다. 하지만 이 접근법의 잠재적인 함정을 인식하는 것이 중요합니다. 첫째, 너무 많은 옵션을 조사하면 분석이 마비되어 의사 결정에 도달하기 어려울 수 있습니다. 둘째, 세부 사항에 얽매여 큰 그림을 놓칠 수 있습니다. 마지막으로, 특정 옵션에 집착하게 되어 최선의 선택이 아닌 것으로 판명될 경우 이를 포기하는 데 어려움을 겪을 수 있습니다. 하지만 이러한 어려움을 극복할 수 있다면 다양한 옵션을 검토하는 것이 의사 결정에 도움이 될 수 있습니다.

 

목표 달성을 위한 조치 취하기

우리는 문제를 파악하고 훌륭한 해결책이라고 생각되는 것을 생각해낸 다음 이를 실행했지만 문제가 지속되거나 더 악화되었다는 것을 알게 됩니다. 왜 이런 일이 발생할까요? 답은 간단합니다. 문제에 대한 분석에 결함이 있었기 때문입니다. 문제의 근본 원인을 명확하게 이해하지 못하면 효과적인 해결책을 개발할 수 없습니다. 그렇기 때문에 어떤 조치를 취하기 전에 시간을 들여 문제를 신중하게 분석하는 것이 매우 중요합니다. 이렇게 함으로써 상황을 악화시키는 것을 피하고 실제 해결책을 찾을 가능성을 높일 수 있습니다.

 

문제 해결의 정신적 과정

문제를 해결하는 동안 몇 가지 정신적 과정이 작동합니다. 다음은 몇 가지 예입니다:

 

인지적으로 문제 파악하기

인지적 왜곡은 종종 편향되고 감정적 요인에 영향을 받는 잘못된 사고 방식입니다. 이러한 왜곡은 관계의 어려움, 업무 관련 스트레스, 낮은 자존감 등 우리 삶에 문제를 일으킬 수 있습니다. 다행히도 이러한 왜곡된 사고 패턴을 식별하고 수정할 수 있는 방법이 있습니다. 한 가지 일반적인 왜곡은 "항상" 또는 "절대로"와 같은 절대적인 관점에서 사물을 볼 때 발생하는 흑백 사고입니다. 이러한 유형의 사고는 성급한 결정을 내리거나 작은 실수에 대해 지나치게 스트레스를 받도록 만들 수 있습니다. 또 다른 일반적인 왜곡은 다른 사람의 생각을 알고 있거나 미래를 예측할 수 있다고 가정할 때 발생하는 성급한 결론입니다. 이는 편집증이나 불안감으로 이어질 수 있습니다. 이러한 유형의 사고 패턴에 빠지고 있다면 이를 식별하고 수정하는 방법을 배울 수 있는 심리학자나 기타 정신 건강 전문가와 상담하는 것이 도움이 될 수 있습니다.

 

상황을 정신적으로 표현하기

우리의 마음이 강력한 도구라는 것은 잘 알려진 사실입니다. 우리는 종종 우리가 처한 상황을 정신적으로 표현하여 우리에게 유리하게 사용합니다. 이는 문제를 해결하거나 어려운 상황을 파악할 때 도움이 될 수 있습니다. 한 걸음 물러나서 문제나 상황을 머릿속에 그려보면 해결책을 찾는 데 도움이 되는 새로운 관점을 얻을 수 있습니다. 또한, 상황을 머릿속으로 그려보는 것은 잊어버릴 수 있는 중요한 세부 사항을 기억하는 데에도 도움이 될 수 있습니다. 그러니 다음에 막막한 일이 생기면 잠시 시간을 내어 상황을 머릿속으로 그려보세요. 생각지도 못한 상황에 놀라실 수도 있습니다.

 

현재 도전과제와 관련된 중요한 정보 고려하기

문제에 직면했을 때 관련 정보를 고려하는 것이 중요합니다. 즉, 모든 관련 사실을 고려하고 그것이 당면한 상황과 어떻게 연관되는지 파악해야 합니다. 예를 들어 체중 감량을 시도하는 경우 현재 체중, 감량하고자 하는 체중, 식단, 운동 루틴을 고려해야 합니다. 이렇게 하면 목표에 도달하기 위해 무엇을 바꿔야 하는지 더 잘 알 수 있습니다. 또한 목표 달성을 방해할 수 있는 잠재적인 장애물을 파악하는 것도 중요합니다. 체중 감량의 경우, 여기에는 유혹, 감정적 폭식, 동기 부여 부족 등이 포함될 수 있습니다. 이 모든 것을 고려하면 어떤 어려움도 극복하고 원하는 결과를 얻을 수 있는 더 나은 위치에 있을 것입니다.

 

상황의 여러 부분 파악하기

무슨 일이 일어나고 있는지 명확하게 파악하려면 한 발 물러서서 상황을 전체적으로 살펴보는 것이 중요합니다. 즉, 상황의 여러 부분과 그 부분들이 어떻게 연결되어 있는지 살펴봐야 합니다. 예를 들어, 다가오는 시험으로 인해 스트레스를 받고 있다면 시험 자체, 시험 준비, 시험을 잘 볼 수 있다는 자신의 믿음, 시험을 잘 보지 못했을 때의 결과 등 상황의 여러 부분을 살펴볼 수 있습니다. 상황의 여러 부분을 모두 파악한 후에는 각 상황에 대처하는 방법을 알아내기 시작할 수 있습니다. 예를 들어, 시험을 잘 보지 못할까 봐 걱정된다면 공부를 더 하거나 모의고사를 보는 데 집중할 수 있습니다. 상황을 전체적으로 살펴보면 스트레스의 원인이 무엇인지, 스트레스를 관리하기 위해 무엇을 할 수 있는지 더 잘 이해할 수 있습니다.

 

문제 식별 및 특성 파악

문제를 효과적으로 처리하기 위해서는 먼저 문제를 식별하고 특성화해야 합니다. 많은 문제가 복잡하고 다차원적이기 때문에 이는 어려운 과정이 될 수 있습니다. 하지만 문제를 더 잘 이해하기 위해 따를 수 있는 몇 가지 기본 단계가 있습니다. 먼저 문제에 대한 정보를 수집하는 것이 중요합니다. 여기에는 문제를 직접 관찰하고, 영향을 받은 사람들과 이야기하고, 뉴스나 기타 출처에서 해당 문제에 대해 읽는 것이 포함될 수 있습니다. 정보를 수집한 후에는 패턴이나 공통 주제를 파악하기 위해 정보를 분석하는 것이 중요합니다. 마지막으로, 문제의 원인과 이를 해결하기 위해 무엇을 할 수 있는지에 대한 가설을 세우는 것이 필요합니다. 이러한 단계를 거치면 아무리 복잡한 문제라도 더 잘 이해할 수 있습니다.

 

문제 해결 전략

사람들이 문제를 해결하기 위해 취할 수 있는 접근 방식에는 여러 가지가 있습니다. 이러한 전략 중 일부는 단독으로 활용될 수도 있지만, 사람들은 문제를 파악하고 해결하기 위해 다양한 접근 방식을 사용할 수 있습니다.

 

알고리즘

알고리즘은 항상 적절한 결과를 도출하는 다단계 기법입니다. 수학 방정식은 문제 해결 알고리즘의 훌륭한 예시입니다.

알고리즘이 올바른 응답을 보장하지만, 이것이 항상 문제 해결에 적합한 전략은 아닙니다.

시간이 많이 소요될 수 있으므로 이 방법은 많은 상황에 적합하지 않습니다. 예를 들어, 알고리즘을 사용하여 자물쇠에 가능한 거의 모든 조합을 결정하려면 시간이 꽤 오래 걸릴 수 있습니다.

 

휴리스틱

휴리스틱은 특정 상황에서 작동할 수도 있고 작동하지 않을 수도 있는 개념적 지침 방법입니다. 휴리스틱은 알고리즘과 달리 항상 정답을 보장하지 않을 수 있습니다.

반면에 이 문제 해결 방법을 통해 사람들은 어려운 문제를 단순화하고 가능한 답변의 총 다양성을 보다 실행 가능한 범위로 줄일 수 있습니다.

 

시행착오

시행착오를 통해 문제를 푸는 방법은 다양한 옵션을 시도해보고 효과가 없는 옵션은 버리는 것입니다. 가능성의 수가 상대적으로 제한되어 있는 경우 이 전략이 적합한 선택일 수 있습니다.

옵션이 많을 때는 시행착오를 시도하기 전에 다른 문제 해결 전략을 사용하여 옵션을 제한하는 것이 좋습니다.

 

인사이트 활용하기

어떤 상황에서는 문제에 대한 해답이 예상치 못한 깨달음으로 나타나기도 합니다. 이는 문제가 수년 동안 알고 있던 문제와 비슷하다는 것을 인식할 때 발생할 수 있습니다. 하지만 인사이트에 기여하는 근본적인 사고 패턴은 의식 밖에서 발생합니다.

 

문제 해결의 장애물

물론 문제 해결이 정확한 과학은 아닙니다. 문제를 신속하고 효율적으로 해결할 수 있는 잠재력을 방해하는 수많은 장애물이 존재합니다. 연구자들은 기능적 고정관념, 관련 없는 지식, 가정 등 몇 가지 정신적 장애를 확인했습니다.

 

가정

문제를 다룰 때 사람들은 종종 특정 솔루션의 구현을 방해하는 한계와 장애물에 대해 가정합니다.

 

기능적 불변성

이 단어는 문제를 일반적인 맥락에서만 보는 경향을 설명합니다.

기능적 고정성은 개인이 해결책을 찾기 위한 수많은 선택지를 모두 제대로 인식하지 못하게 합니다.

 

관련성이 없거나 기만적인 정보

문제를 풀려고 할 때, 잘못된 해결책으로 이어질 수 있는 관련성 있는 사실과 관련 없는 사실을 구분하는 것이 중요합니다. 주제가 매우 복잡한 경우 부정확하거나 관련 없는 정보에 집중하기가 훨씬 쉽습니다.

 

정신적 준비

인지 세트는 새로운 가능성을 탐색하기보다는 이전에 효과가 있었던 솔루션만을 채택하려는 인간의 경향을 말합니다.

멘탈 세트는 종종 휴리스틱으로 기능할 수 있으므로 효과적인 문제 해결 도구가 될 수 있습니다. 반면에 멘탈 세트는 경직성을 유발하여 효과적인 해답을 개발하는 것을 더욱 어렵게 만들 수 있습니다.

 

원문: https://www.azarask.in/blog/post/the-wrong-problem/

[You Are Solving The Wrong Problem - AzarAsk

Problem-solving is an important part of everyday life, from organizing your video library to deciding whether to buy a car. Small problems (like trying to

www.azarask.in](https://www.azarask.in/blog/post/the-wrong-problem/)

반응형

 2023년에 C언어가 가지는 의미는 무엇일까? C언어는 절차적 프로그래밍 언어의 맹주인 1972년생 프로그래밍 언어이지만, 객체지향을 넘어 함수형 프로그래밍이라는 패러다임이 몰아치는 현 시기에 C언어는 어떤 가치와 지향을 가지고 개발자들에게 다가설 수 있을까? 물론 나야 C/C++계열의 언어를 가장 좋아하고 있지만, 이제는 다른 신생 모던(Modern) 언어들이 제공하는 문제인식 개념이나 편의성을 C언어는 어떻게 풀어내려고 접근하고 있을까? 하는 궁금점을 가지고 모던 C언어를 살펴보기 위해 이 책을 골랐다.

 이 책의 제목은 '전문가를 위한C'라고 번역되었고, 두께가 무려 900여 페이지에 달할 만큼 위압감을 주는 책이다.  원서의 제목은 "Extream C"이다.  C언어 역시 짝꿍 C++와 함께 발전을 거듭해왔다. C언어는 1989년 ANSI C 스펙이 확정된 이후에도 C95, 99, 11, 18을 넘어 23까지 발전을 해오고 있지만, 그닥 개발자 그룹의 많은 관심을 받지는 못했다.  전문가들이 보아야할 책으로 생각할수도 있겠지만, 이 책을 80% 정도 읽은 시점에서 나는 초급을 벗어난, 고급 개발자가 되고 싶은 컴파일러 방식의 언어 중급 개발자들에게 큰 도움이 될 수 있는 책이라 본다. 단순히 C언어 문법을 익히고자 한다면 이 책은 그 답이 아닐 가능성이 높다.

 

이 책은 크게 7부로 나뉘어진다.

1부와 2부는 컴파일러 언어인 C를 중심으로 어떻게 컴파일러가 실행파일을 만들어 가는지, 실행파일은 기본적으로 어떻게 동작하는지를 설명한다. 특히 4장 에서는 C코드가 목적파일을 거쳐 실행파일까지 변환되는 과정속에서 메모리/데이터가 어떤 식으로 펼쳐지는지를 소개한다.왜 스택과 힙이 있는지를 잘 설명하고 있고, 각 메모리 세그먼트의 역할과 분석 방법을 통해 C코드의 동작원리를 설명한다. 윈도우가 아니라 맥/리눅스를 중심으로 소개하는데에서 한때 윈도우 프로그래밍하면 C였던 시대가 아련하게 느껴졌다.

3부에서는 재미있게도 C언어이지만 객체지향이라는 개념을 다룬다. 사실 C언어에서도 객체지향이 가능하다. 다만 조금 불편할 뿐이지.. 저자는 OOP를 언어의 특징이 아니라 "문제를 생각하고 분석하는 방식"(P.254)으로 설명하면서 C와 C++의 관계까지 소개하고 있다.

4부에서는 유닉스를 소개하면서 커널와 사용자 모드에 대해 설명한다. 다시한번 윈도우에서 길을 잃은 C언어의 모습이 느껴져 시대의 변화가 느껴지기도 한다. 하지만 C가 여전히 임베디드 시장이나 게임엔진, 하드코어 영역에서 중요한 역할을 맡고 있구나 하는 생각도 든다.

5부와 6부는 모든 언어에서 화두가 되는 동시성/병렬성과 프로세스간 통신의 방법을 소개한다. 꽤 많은 분량을 할애하여 쓰레드 동기화 및 IPC, 소켓 통신을 다룬다. 다만 언어 설명서와 같이 아주 상세하게 다루지는 않는다.

7부는 테스트와 빌드시스템 이야기인데, 소프트웨어의 유지 보수 이야기라면 모듈 패키지 관리 솔루션인  vcpkgconan에 대한 설명까지 곁들여졌으면 더 좋을 것 같다.

 

이 책은 전체적으로 초/중급 개발자(초년~5년차) 정도의 개발자들이 개발의 경험을 바탕으로 지식을 좀 더 깊게 만들때 도움이 될만한 책이라 생각한다. 단순히 C언어 책으로 인식되기엔 아깝고, 컴파일러 언어를 사용하는 개발자라면 한번씩 읽으면서 C가 만들어내는 방식을 이해해 보는 것도 유용하리라 생각한다. 윈도우 프로그래밍과 관련해서는 다른 책을 더 읽어야 한다. 이 책은 그런 내용을 다루지는 않는다.

일본에서 만들어진 C언어 캐릭터

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

반응형

+ Recent posts