분류 전체보기 70

[남독] 헤드퍼스트 디자인패턴 (개정판)

"한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다." 디자인 패턴의 중요성 유능한 개발자가 되는 길은 멀고도 험난한 것 같다. 뭐가 되었든지 간에 그 어렵다던 프로그래밍 언어에 간신히 익숙해지고 나니 자료 구조와 알고리즘이라는 험난한 벽에 가로막혀 한참을 헤매야한다. 이 벽을 돌파해 취업에 성공한다면, 본격적으로 수많은 개발자와 소통하고 대규모 프로젝트에 일원으로 포함되기 위해 또 다른 벽을 마주하게 된다. 특히 이번에 마주하는 벽들은 대게 모호해 보이는 해결책이나, 복잡해 보이는 도식으로 인해 도전하기가 쉽지 않아 보인다. 수많은 사람들과 협력하고, 거대한 프로젝트를 효율적으로 개발하기 위해 필요한 기술이 무엇일까? 물론 소프트웨어 엔지니어링에서 파생된 수많은 패러다임이 있지만 협업을 위해 알..

서평 2022.04.24

[남독] 나에게 문학이 필요한 진짜 이유

지금까지 갖고 있던 문학 작품에 대한 생각 최근 인터넷에서 본 충격적인 글이 있다. 이 글의 주인공은 무슨 책 읽냐는 질문에 를 읽고 있다고 대답하였다. 이때 상대방의 답장이 충격적인데, 지식과 정보가 담긴 비문학 지문을 읽어야지 허구의 소설을 왜 읽냐는 답변을 한 것이다. 특히 충격적인 부분은 "비문학 지문"이라 말하면서 책을 좋아한다고 말하는 상대방의 태도이다. 단언하기는 힘들지만, 책을 좋아하는 사람이라면 "사회 과학 서적", "자기 계발 서적" 등과 같이 구체적인 분야를 이야기할 것 같은데, 엉뚱한 "비문학 지문"이라는 표현을 사용했다는 부분이다. 그동안 적은 리뷰글을 보면 부끄럽게도 나 역시 문학작품보단 비문학에 더 심취해 있었다. 물론 문학 작품이 가져다주는 수많은 효용을 무시하지는 않았지만,..

서평 2022.04.13

[남독] 이제 프로그래밍 문법 좀 할 줄 아는 것 같은데, 뭘 해야 하나?

처음 개발자는 어떻게 될 수 있을까를 생각해본다면, 당연히 프로그래밍 언어를 익히는 것이 1순위 일 것이다. 기본적인 변수의 타입을 시작으로 수많은 프로그래밍의 기본적인 지식을 익혔다면 과연 다음 단계는 무엇일까? 우리가 외국어를 배울 때를 생각해보면, 프로그래밍 언어에서의 문법은 외국어의 문법과 기능적으로는 비슷하다고 볼 수 있다. 사람과 의사소통을 위해선 공통된 약속인 알파벳으로 시작해서 의미를 제대로 표현할 수 있도록 단어를 나열하는 법 등등을 알아야지만 하나의 언어를 활용할 준비가 되었다고 볼 수 있다(물론 사람이라는 인터프리터, 해석가, 는 매우 유능하기에 적당히 틀려도 잘 알아듣기 때문에 완벽할 필요는 없다.) 문법만 다 익히면 과연 언어를 유창하게 활용할 수 있을까? 구글에서 "영어 공부"라..

서평 2022.04.02

[남독] 무던한 개발자를 위한 모던한 자바스크립트

"한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다." 개발 관련 서적들 중 프로그래밍 언어에 관한 책들은 다양한 난이도가 존재한다. 철저히 초보자의 시선에서 쓴 책들이 있는가 하면, 해당 분야의 전문가를 위한 책들 또한 존재한다. 이 책은 제목에 걸맞게 "무던한" 개발자를 위해 만들어 졌다. 특히, c++, java, python 등 과 같이 자바스크립트를 제외한 언어들 중 가장 범용적으로 사용 중인 언어를 먼저 익힌 개발자를 위해 쓰여진 책 처럼 느껴진다. 책의 구성은 각 챕터 별로 주제에 맞는 이야기들을 순차적으로 설명해 준다. 가장 기본이 되는 내용부터 꽤 어렵게 느껴지는 내용까지 다루고 있다. 특히 중간중간 자바스크립트에서만 발생 할 수 있는 요소들이나 특이 케이스들에 대해서는 "Warn..

서평 2022.02.23

왜 학교 공부를 해야 하는가?

왜 학교 공부를 해야 하는가? 카페에서 혼자 앉아 이런 저런 생각을 하는 도중에 뒷자리 어딘가에서 초등학생쯤으로 보이는 아이가 어떤 선생님과 함께 역사 공부를 하고 있는 것을 보았다. 고구려, 백제, 신라 같은 어린 친구가 배우기엔 너무 빠른가 싶은 내용을 얼핏 들으며 과연 학교 공부라는 것이 진짜 필요한 것인가에 대해 생각이 들었다. 초, 중, 고등학교를 다니던 학창 시절 친구들끼리 이야기를 하던 수 많은 주제중 단연코 기억에 남는 것은 “지금 하고 있는 공부가 인생에 정말 필요할까?”이다. 모든 친구들은 저마다의 약점 과목이 있었고(대부분은 수학과 물리이다.) 해당 과목 수업이 끝나거나 선생님에게 질책을 들을때마다 앞으로 남은 인생에 이런 공부가 필요할 까 하는 주제에 대해 푸념에 가까운 토론을 종종..

칼럼 2022.02.13

[남독] 어떻게 말해줘야 할까? 진짜 어른스러워지는 방법

자녀의 탄생은 인생에서 손에 꼽는 경이로운 순간 중 하나일 것이다. 나와 생물학적 유전자를 공유하는 새로운 생명의 탄생은 보살핌을 받던 내가 누군가를 보살피기 시작해야 하는 순간이다. 새로운 생명에 대한 경이로움과 나와 유전자를 공유하는 인류의 탄생에서 나오는 행복만이 존재할 것 같은 이 순간은 생명에 대한 책임이라는 막중한 의무가 뒤따르는 것 또한 사실이다. 아이가 태어난 순간부터 이후는 새로운 생명에 대한 책임을 지기 위해 나로서의 삶은 상당 부분 잃게 된다. 개인의 즐거움을 포기하며 아이의 안전을 책임져야 한다. 나의 수면권을 포기해가며 아이의 잠자리를 보살펴야만 한다. 작은 생명은 스스로 살아갈 수 있는 순간이 올 때까지 작은 행동 하나하나를 관심 있게 지켜보며 매시간을 온전히 아이에게만 쏟아야만..

서평 2022.01.29

[남독] 우리의 뇌는 어떻게 배우는가, 뇌의 입장에서 바라본 학습

배움 세상에는 무수히 많은 삶의 종류가 있고, 대부분은 끊임없는 학습을 강요한다. 요즘 핫한 직종인 개발자도 무수히 많이 쏟아지는 최신 기술들과 프로그래밍 언어등을 착실히 따라가기 위해서, 또는 도태되지 않기 위해서 수 많은 문서를 끊임없이 읽어가며 학습을 해야 한다. 개발자뿐만 아니라 돈이 많건 적건, 학력이 높던 낮던 어떠한 형태로든지의 학습은 필수적이다. 스타니슬라스 드앤의 에서는 좀 더 생물학적인 관점에서 사람을 이루는 DNA의 정보보다 더 많은 양의 정보를 담을 수 있는 뇌의 용량을 지적하며 배움이 가능하도록 진화해 왔다고 한다. DNA를 적자생존의 법칙에 따라 서서히 바꾸어 가며 적응해나가는 과정은 아주 오랜 시간에 걸쳐 발생하지만, 학습을 통해 뇌의 구조를 바꿔 배워 나가는 과정은 그보다 훨..

서평 2022.01.15

[남독] 소크라테스 익스프레스, 철학을 요람부터 무덤까지

오늘날 대부분의 학교에서는 철학을 가르치지 않는다. 철학에 대해 가르친다. 학생들에게 철학적으로 사색하는 법을 가르치지 않는다. 철학은 다른 과목과 다르다. 철학은 지식 체계가 아니라 하나의 사고방식, 이 세상이 존재하는 방식이다. ‘무엇을’이나 ‘왜’가 아니라 ‘어떻게’ 이다 나이가 점차 들어가며 관심이 가는 책들이 많이 달라지고 있다. 어렸을 적에는 만화나 판타지, 무협같은 가볍거나 상상력이 넘치는 공상 소설을 좋아하였다. 대학에 진학하면서 책과 잠시 멀어졌다가, 취업하면서 나름의 삶을 챙길 시간이 생기기 시작하니 조금 더 본질적인(?) 책들을 찾아 읽기 시작하였다. 특히 철학에 대한 막연한 동경심이 생겼다. 어렸을 적에는 철학이라 하면 ‘골치아픈 역사’, ‘단순한 말장난’, ‘겉멋’ 같은 부정적인 ..

서평 2022.01.02

[남독] 개발자에서 아키텍트로

"한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다." 왜 아키텍트가 되어야 하는가? 현재의 나는 소위 말하는 임베디드 개발자로서 근무를 하고 있다. 제조업 기반의 회사 제품에 들어가는 소프트웨어를 개발하는 것을 보면, 모든 회사가 그런지는 모르지만 개발 과정이 상당히 직선적이다. 소프트웨어의 근간이 되는 요구사항은 막막하고, 뼈대가 되는 아키텍처는 막연하다. 부품이나 제조 공정에 대해선 명확한 용어가 정의되어 있고 프로세스도 철저하지만, 소프트웨어에 대해선 모듈, 기능, 알고리즘, 로직 같은 용어들이 산발적으로 나오며 개발 프로세스는 "밑바닥부터 시작하는 딥러닝" 시리즈처럼 백지에서 출발해 최종 기능까지 단숨에 도달하고자 한다. 또한 개발 문화가 상당히 폐쇄적이라 오픈 소스에 대해 상당히 비관적..

서평 2021.12.25

[C/C++] 연결 리스트(Linked List)의 순환 구조 찾기, 토끼와 거북이

이번 포스팅에서 알아볼 것은 연결 리스트(linked list)의 순환 구조 찾기입니다. 이를 알아보기 위해선 먼저 연결 리스트의 간단한 형태에 대해 정의하고자 합니다. struct LinkedList { struct LinkedList* next; int item; }; struct LinkedList* new_linked_list(int item) { struct LinkedList* res = new LinkedList; res->next = NULL; res->item = item; return res; } 연결 리스트의 구조는 위와 같이 자기 자신의 포인터를 포함한 구조체입니다. 가장 먼저 선언된 구조체가 머리(head)라고 불리며, 이후에 생성되는 구조체들은 이전에 나온 연결 리스트의 next..

프로그래밍 2021.12.11
728x90
반응형