[리뷰] 백엔드 프로그래밍을 위한 PHP & MySQL



제이펍 출판사의 "백엔드 프로그래밍을 위한 PHP & MySQL(존 두켓 저/황반석 역)"를 읽고 작성한 리뷰입니다.

표지


프로그래밍의 복잡한 개념을 입체적으로 편하게 읽으며 효율적으로 학습할 수 있게 구성된 책으로 기술서는 예쁠 수 없다는 편견을 박살나게 해주었다.

기술서가 예뻐서 단숨에 읽어보기는 또 처음인 것 같다. 책 겉면 띠지에 “세상에서 가장 아름답고”라는 쓰여진 글귀가 신기했다. “기술 서적이 어떻게 아름다울 수가 있지?”. 이상하다 느껴졌는데 책을 읽고나니 무엇을 의미하는지 이해가 간다.

이 책은 참 이쁘다. 그래서 공부할 맛이 나는 것 같다. 아름다운 것을 보고 즐거워지는 것은 인생에서 느끼는 행복 중 하나일텐데 공부를 하면서 이쁜 것을 보고 행복한 마음을 담는다는 것 그것도 기술서나 전문서에서 그런 감정을 느낄 수 있다는 구성이 독특했다.

감정은 이성의 원동력이라고 확실히 감정이 충만하니 공부가 잘되었다. 다른 기술서적도 그동안의 편견에서 벗어나 이런 예쁜 책을 추구하는 것도 괜찮아 보인다.

예쁘다고 표현한 이유는 책에 포함된 디자인이나 그래픽적인 요소가 정말 예쁜 것도 있지만 책을 읽으며 얻는 개념을 입체적으로 시각화했다는 것을 의미한다. 시각화

같은 글이라도 별다른 설명없이 색상이나 디자인을 통해 저절로 구조화되고 입체화되니 학습 능률이 오르고 읽기 편해지고 그래서 더 집중하게 되는 연속적인 선순환이 인상적이다. 글만 빽빽한 책보다는 잡지류가 더 잘 읽히고 더 잘 손이 가는 것 처럼 말이다. 구성

제목으로 유추할 수 있듯 이 책에서는 PHP 언어와 MySQL이라는 데이터베이스를 익힐 수 있다. 하지만 그 외에도 얻을 수 있는 것이 더 있다.

파트1은 PHP라기 보다는 프로그래밍 언어론에 가깝다. PHP뿐만 아니라 Python, C, Java 등 타 언어에서 공통적으로 내포하는 개념들이 입체적인 시각화로 적절히 설명되어있는데 PHP를 넘어서 프로그래밍을 처음으로 접하는 이들에게 추천하고 싶은 구성이다.

실제로 나의 경우 2000년 초반에 PHP를 처음 접했다. 역자의 서문을 보니 역자의 나이와 나와 비슷하다는 생각이 들었다. PHP3가 4 버전으로 넘어가는 시점에 나 역시 PHP를 접했기 때문이다.

PHP의 강력함은 역자가 서문에서 잘 소개하고 있지만 그 중 개인적으로 마음에 드는 것은 많은 부분을 가려줘 프로그래머가 핵심 기능 구현에 집중할 수 있게 돕는다는 점이다.

같은 시기에 C언어로 웹 게시판을 구현한 경험이 있다. 책의 본문에도 등장하지만 인코딩 처리에 애를 먹었다. 인코딩 스킴이라고도 표현하는 규칙을 알지 못하면 다른 언어로는 웹 기능을 구현하기 힘들다.

여담으로 C언어로 무슨 웹을 개발하냐는 분들이 계실지 모르겠지만 실제로 90년대 말에는 CGI라는 C언어로 웹 개발을 가능하게 해주는 기술과 시도가 있었다. 물론 역사속으로 금방 사라졌지만…

어쨌든 웹 애플리케이션 계층에 집중하여 웹 프로토콜을 느끼고 간단한 CRUD를 기반으로 빠르게 웹의 숨결을 느끼는 데 있어 생각보다 방해요소가 많은데 PHP를 사용하면 그 밑단의 기술들을 알아서 라이브러리 및 함수들이 감춰주니 웹의 숨결을 느끼기 참 좋은 언어라는 생각이 들었다.

세월이 흘러 웹 프로그래밍은 Java기반의 JSP가 대세가 되었다. 특히 국내는 더욱 그런것 같다. 죽어가는 줄 알았던 PHP는 라라벨이라는 Java진영의 스프링 만큼의 강렬한 인상을 주는 프레임워크가 등장했고 더욱이 Facebook에서 PHP를 주력 언어로 선택하면서 계속 발전해 왔다.

잠시 사담이 길어졌지만 어쨌든 PHP는 그만큼 프로그래밍 언어론의 기초를 습득하기에 매우 좋은 언어이다. Python의 뱀 같은 유연함이 살짝 부족하고 Java의 객체지향에 담긴 철학이 조금 부족한 느낌이 드는 것은 사실이지만 대신 언어를 처음 익히는 데 있어 원톱 언어라 칭해도 과언이 아닐 것이라 개인적으로 확신하고 있다.

그런 PHP의 간결함과 난이도가 이 책과 함께 시너지를 낸다면 프로그래밍을 처음 익히는 독자 입장에서는 그보다 좋은 환경은 찾기 어려울 듯 하다. 입문자

물론 스크래치 등 더 쉬운 언어로 더 빨리 프로그래밍을 배우게 해주는 책들도 있지만 그런 책들은 너무 쉬움을 강조한 나머지 프로그래밍에서 느낄 수 있는 묘한 맥락과 개념을 충분히 이해하는데 무리가 있다 생각하기 때문이다.

이 책의 또 다른 장점으로는 사전식 구성을 들 수 있겠다. 곁에 두고 필요할 때마다 찾는 레퍼런스로 활용하기 좋다. 구체적으로 PHP의 함수나 라이브러리 혹은 패턴 같은 것이 떠오르지 않는다면 바로 해당하는 페이지를 찾아보면 된다. 레퍼런스

단순히 라이브러리의 구체적인 레퍼런스 목적 외에도 늘상 자주 활용되는 패턴이나 디자인을 참고하기에도 좋다. 예를 들어 아래 그림과 같이 CRUD를 객체지향을 활용하여 잘 구조화 해 놓으면 매우 적은 소스코드로도 다양한 서비스 구현이 가능해진다. 이 책의 예제는 가장 자주 활용되는 80%의 요약본이라고 봐도 무방할 정도이다. 구조화

더불어 파트3에 등장하는 Mysql은 적은 페이지로 쉽고 빠르게 RDBMS의 기본적인 활용을 가능하게 해준다. 파레토의 법칙이 세상 거의 모든 곳에 적용되듯 DB는 결국 CRUD가 자주 활용되는 80%이고 나머지가 20%라는 생각이 든다.

빠르게 CRUD 개념을 익히고 이를 눈으로 확인할 수 있는 웹사이트 제작에 활용해 본다면 DB라는 것의 정체를 제대로 바라볼 수 있을 것이다. 순간 머리속에서 내가 자주 활용하는 SNS는 내부적으로 이런 구성을 띄고 있었구나 내지는 당장 무엇을 만들어봐야겠다라는 영감이 떠오를 것이다. MySQL

책의 구성상의 특징도 마음에 든다. 보통 왼쪽 페이지에 개념이 등장하고, 우측에 구현된 소스코드가 등장한다. 왔다갔다 하지않고 한 눈에 엮어 볼 수 있어 편하고 가독성에 도움이 된다. 왼쪽개념
오른쪽구현

JSP나 Python 같은 타 웹 언어를 활용한 경험이 있는 독자라면 파트4부터 읽기를 권하고 싶다. 이미 하나의 언어에 정통한 프로그래머는 소스코드의 패턴과 그 안의 차이점만 살펴봐도 대충 그 언어의 특징이 잘 보이기 때문이다.

이 책의 파트4는 PHP 개발 시 자주 활용하는 80%를 적은 양의 코드로 담고 있어 빠르게 이해할 수 있고 당장 PHP 기반의 웹사이트 구현을 가능하게 해준다.

파트3는 파트4 예제의 베이스 라인이라고 보면 된다. 가장 기본적인 CRUD를 응용한 예제이며 MySQL을 PHP와 연동하여 활용하는데 주 목적을 담고 있기에 온전한 형태의 웹 사이트가 구현된 것은 아니라고 보면 된다.

파트2는 기본적인 웹 페이지를 구현하는 기법이 담겨있다. PHP는 태생부터 함수 언어라 불렸을 만큼 다양한 기능을 제공하는 함수가 많은 것이 특징인데 그런 함수들이 일목요연하게 정리되어 인상적이었다.

파트1은 앞서 언급했듯 프로그래밍의 기초 개념이다. 그렇기에 반대로 프로그래밍을 처음으로 익히는 독자들은 이 책을 순서대로 읽을 것을 권장한다.

프로그래밍 언어를 처음 배우는 사람, RDBMS를 처음 배우는 사람, 웹 기술을 처음 활용하는 사람 들이 이 책을 통해 가장 큰 효과를 볼 수 있는 사람이며 타 언어에 정통하나 PHP를 처음으로 접하고 싶은 독자에게도 추천하고 싶은 책이다.

그럼에도 아쉬운 점은 몇가지 있는데 앞서 언급한 사전식 구성 때문에 목차가 보다 세부적으로 보완되었으면 어떘을까 싶다. 필요 시 빠르게 바로 찾아볼 수 있으려면 주제별로 주로 1~2페이지 정도를 할당한 구성이기에 목차의 위력이 필요한 책이라 생각한다.

또한 입문자에게 훌륭한 책인만큼 PHP나 Mysql를 설치하는 방법이 상세히 소개되지 않은 점은 아쉬운 점이다. 둘다 워낙 설치하기가 쉽고 설치에 참조할 레퍼런스는 인터넷에 흔히 널려있기에 큰 문제는 아니지만 그래도 설치 과정이 담겼다면 입문자는 이 책만으로도 거의 모든 것을 해결할 수 있을 것이다.

마지막으로 단점이라기 보다는 이 책의 부제로 “백엔드 프로그래밍을 위한”라는 표현에 유의할 필요가 있다. Ajax와 웹2.0의 돌풍은 꽤 오래전 역사속에 잠들어있지만 제법 신선한 충격이었다.

책의 후반부에 Twig 템플릿 엔진이 소개되는데 웹 프로그래밍의 고질적인 병폐 중 하나가 HTML, JavaScript, PHP 등의 언어가 복잡하게 섞여 있다는 점이다.

이를 효율적으로 분리하고 유지보수 및 설계의 편의성을 제공하는 수단 중 하나가 이런 템플릿 엔진의 활용인데 Ajax도 그런 목적을 달성하게 해주는 훌륭한 기술이다. 물론 Ajax에는 그보다 더 중요한 동기, 비동기 개념이 숨어있지만 어쨌든 저자가 JavaScript 도서를 집필했던 경험에 비추어 볼 때 이 개념이 빠진 것은 다소 아쉽다.

다만 Ajax는 프런트엔드 기술이고 모두 담아내기엔 책의 지면도 부족하고 산만하니 책의 부제와 같이 저자 소기의 목적을 이루는 데 있어 적절한 선택이었다고 본다.

아무튼 이 몇가지 아쉬운 점은 책이 워낙 마음에 들다보니 1% 내외의 옥의 티를 보완하여 완벽한 책이 되었으면 하는 바램으로 적은 것 뿐 크리티컬한 부분이 아님을 밝혀둔다.

아무튼 간만에 참 정겹고 반갑고 마음에 드는 책을 만났다. 앞서 언급한 바와 같이 프로그래밍 언어를 처음 배우는 사람, RDBMS를 처음 배우는 사람, 웹 기술을 처음 활용하는 사람, 타 언어에 정통하나 PHP를 처음으로 접하고 싶은 독자라면 이 책으로 시작해 보는 것을 강력히 권하고 싶다.







© 2019.04. by theorydb

Powered by theorydb