목록프로그래밍 (13)
규도자 개발 블로그
여러가지 언어와 프레임워크들을 써오며 느꼈던 단상 현 상태를 말하자면 이렇다. 나는 국비학원에서 프로그래밍을 처음 접했고 교육 커리큘럼은 C와 Java로 시작해서 학원 수행과제로 Java로 네이티브 앱을 만든 다음 PHP를 이용해 웹 프로젝트를 만들고 해당 결과물을 포트폴리오로 하여 PHP와 워드프레스를 주로 사용하는 회사에 취직했다. 개인적으로는 Python과 Django Rest Framework를 백엔드로, React와 Next를 프론트엔드로 사용하는 프로젝트를 진행 중이며 회사에서는 그간 PHP코드로 쌓아왔던 레거시 코드들을 Java Spring으로 컨버전하는 과정을 겪고 있다. 이러한 과정들 속에서 많은 걸 느꼈고 혹시 언어나 도구를 선택하려는 프로그래머, 프로그래밍을 시작하려는 학생 등에게 도..
재밌다. 프로그래머라면 모든 사람이 재미있게 읽을만 한 책이다. 거기에 유용하기까지 하다. 관리자위치에 있는 사람이라면 인력을 관리하는 데에 있어서 커다란 도움이 될 것 같다. 1년된 안드로이드책이 폐지가 될 정도로 변화가 빠른 소프트웨어 업계에서도 변하지 않는 것들이 있는데 바로 "개발자들의 기질"이 아닌가 싶다. 스테디 셀러에는 이유가 있다. 거진 50년된 책이 아직까지도 널리 읽히는 것 보면 프로그래머라는 직업을 선택하는 사람의 어떠한 기질은 불변의 요소가 아닌가 하는 생각이 들었다. 그리고 놀랍게도, 나는 이 책을 보면서 공감하고 웃고 있다. 사용되는 기술과 만드는 물건의 모습들은 조금 달라졌어도 사람들이 모여 소프트웨어를 만든다는 일이라는 요소는 바뀌지 않아서일까. 만약에 내가 이 책을 읽고 공..
개발자들은 코드로 말한다. 라고는 하지만 결국 사람의 최종 아웃풋은 언어라는 도구를 머릿속에서 활용해 추론과 논리 등의 과정을 거쳐 실세계로 나온다. 결국 사람이 생각하는 수단 또한 "언어"이며 코드라는 최종 산출물에는 자연어, 혹은 파편화된 단어나 이미지로 이루어진 고도의 두뇌작용이 수반된다. 유발하라리가 사피엔스에서 인간이 허구를 믿는 능력으로 지구의 지배자가 됐다고 하는데 그것과 궤를 같이 한다고 생각한다. 실세계를 반영한 객체지향 프로그램도 결국에는 반영을 통한 새로운 시스템의 창조이지 복사가 아닌 것 처럼 결국에는 무엇이 대상이 됐든 간에 세상 어떤 것이든 사람의 뇌라는 함수를 통해 최소 한 번은 추상화 과정을 거쳐야만 다른 사람에게 전할 수 있는 수단으로 옮길 수 있다. 심지어 본인이 직접 인..
[백준/1978/파이썬(python3)] 소수 찾기 문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 입출력 예 입력출력 4 1 3 5 73 풀이 def prime_list(n): n = n + 1 #추가된 부분 sieve = [True] * n m = int(n ** 0.5) for i in range(2, m + 1): if sieve[i]: for j in range(i+i, n, i): sieve[j] = False return [i for i in range(2, n) if sieve[..
학원에서 실습위주로 코딩을 배웠던 나에게는 학과나 이론 공부가 부족하여서 항상 그런 쪽으로 학구열이 샘솟는데 그런 욕구를 충족시켜준 좋은 책이다. ~의 정석 시리즈들 이름을 채택했지만 그만큼의 깊이는 없다. 하지만 넓다. 저자 소개에도 나왔듯이 기술서적만 만 권 이상을 독파하신 분이 모아둔 주제들이니 하나하나가 주옥같다. 사실 정보처리기사나 다른 기술서적, 혹은 소프트웨어 공학 서적에서 봤던 내용들이지만 한번에 넓은 스펙트럼을 경험해보고 싶은 사람들에게는 좋은 책이 될 것 같다. 여기에서 넓은 스펙트럼이라는 것은 무엇을 의미하냐. 깊이가 없음을 의미한다. 블로그에서 시시때때로 인용하는 CODE COMPLETE은 장장 그 내용만 1000p에 해당하는 거의 무기나 운동기구에 가까운 책일 뿐더러 다른 책들도 ..
"코딩호러"라는 개발자들 사이에선 아주 유명한 블로그를 운영 중인 제프 앳우드의 저서이다. 그리고 전 세계 프로그래머들의 생산성 향상에 영향을 끼친 사이트인 "스택오버플로우"의 개발자이자 창립자이기도 하다. 코딩호러와 스택오버플로우, 이 두 개의 양대산맥을 끼고 있는 사람의 후광효과 때문인지 모르겠지만 책의 내용도 상당히 구성지고 흥미로운 내용들로 채워져 있다. 사실 목차를 보면 조금 혼란스러울 수 있다. 프로그래머의 권리장전이라느니, 개발환경, 의자얘기, 모니터얘기에서부터 단위 테스트 VS 사용성 테스트 등에 대한 내용까지 책에서 다루는 범주가 굉장히 넓기 때문이다. 하지만 이건 책의 제목으로 이해하면 쉽다. "이펙티브 프로그래밍(Effective programming)", 효과적인 프로그래밍을 위한 ..
항상 vendor, sources, src, images, lib 등 자주 쓰이는 디렉토리 이름에 신경이 쓰였다. 용도도 궁금하고... 종국에는 개인적으로 프로젝트를 하는데 유지보수에 도움이 될까 하는 이유로 많은 사람들이 쓰는 디렉토리 이름들을 찾아봤는데 아무리 해도 위에 썼던 이름들 혹은 내가 작업하며 봤던 만들어져있던 디렉토리 이름 그 이상은 찾을 수가 없었다. 그러던 와중 내가 쓰는 IDE인 Jetbrain사의 IntelliJ Idea에 디렉터리나 파일 아이콘을 atom의 것으로 만들어주는 플러그인을 발견하였다. 이것을 보니 특정 이름의 디렉토리만 atom의 디렉토리 모양으로 바꿔주는 것으로 보아 이 소스코드를 보면 어떤 디렉토리이름을 많이 사용하는지 역추적할 수 있겠다 싶어서 뒤져봤다. 이곳이 ..
정수(Integer가 아닌 Essence). 내가 좋아하는 말이다. 내가 프로그래밍을 처음 배워 c언어로 콘솔창에 "hello world"를 찍었을 때부터 들어왔던 생각이 있다. 경력도 짧은게 혓바닥만 길다고 뭐라 할까봐 떠들진 않았지만 "삼인행필유아사"라고 가끔씩 순수한 어린아이의 말이 어른들의 사상을 꿰뚫는 것처럼 그냥 내가 느낀 바를 써보려 한다. 프로그래밍이라는 건 결국 두 가지 개념으로 함축할 수 있다. 첫번째, 데이터의 정제.두번째, 전송. 정확성과 효율성은 제하였다. 정확하다는 것은 프로그램의 성질에 따라서 때때로 정의가 모호할 뿐더러 효율성은 구현하는 사람의 재량과 하드웨어의 성능, 그리고 특성에 달렸기 때문이다. 세상 수많은 프로그램이 있지만 위 두 개의 범주에서 벗어나는 건 없는 것 같..
유명한 프로그래밍 격언이다. 이미 만들어진 걸 또 만들려고 고생하지 말라는 말이다. 좀 더 구체적으로 파고들자면 예를 들어 C언어가 있는데 C언어가 불신스럽다고 C언어를 다시 만들려 하고, 답변형 게시판 알고리즘이나 로직이 이미 인터넷에 그득그득한데 마음에 안든다고 스스로 알고리즘을 아예 새로 만든다던가 하는 것들 말이다. 이 대상은 언어에서부터 서드파티 라이브러리, 그리고 어떤 특정한 문제해결을 위해 발명된 알고리즘(수많은 정렬 알고리즘, 탐색 알고리즘 등)에까지 아주아주 폭넓다. 부단 IT계열뿐만 아니라 일상생활에도 적용되는 이야기이다. 젓가락이 태초의 모습 그대로 완성된 것이라 그 용도에 따른 변형은 조금조금씩 있지만 구조 자체가 변하지 않는 것처럼 말이다. 이처럼 성능개선이나 특성에 따른 변경은 ..
문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째, 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 따라서 첫 번째 계단을..