프로그래밍을 수련하는 법은 음악을 공부하는 것과 비슷합니다.
이론을 배우고 연습하고, 이론을 배우고 연습하는 것을 반복하는 겁니다.
 
훌륭한 선생님이 있다면 더 빨리 배울 수 있다는 것도 비슷합니다.
다행히 프로그래밍은 선생님을 구하는 데 아주 적은 돈이 필요합니다.
책과 인터넷만 있으면 되니까요.
 
현재 프로그래밍에 입문하시는 단계이므로 서적을 처음부터 차근차근 읽으시고
실습도 성실하게 따라하시기 바랍니다. 특히 책에 연습 문제가 있다면
그것을 풀어보세요. 답은 절대 보지도 말고, 책에 정답이 없다면 다른 곳에서 구하지 마십시오.
혼자서 답을 구하는 과정이 바로 실력이 느는 시간입니다. 
 
프로그래밍 언어는 C#이 적절할 것입니다. 가장 쉬운 언어 중의 하나입니다. C나 C++은 미리
공부할 필요가 없고, 나중에 관심이 가면 따로 보더라도 지금은 C#만 하는 것이 좋습니다.
 
단숨에 능숙하게 프로그램을 만들 수 잇는 방법은 없습니다. 지름길은 없으며, 차근 차근 단계를
성실하게 밟아 나가세요. 피아노를 배우는 학생이 음계를 외우고 왼손 오른손을 연습한 다음에
바이엘을 배우고, 체르니를 배워 나가는 것처럼 말입니다. 꾸준히, 성실하게 하시면 1년 후에는
난이도가 아주 높지 않다면 프로그램을 잘 작성할 수 있을 겁니다.
 
공부하다가 어려운 내용이 나올 때 생기는 좌절감이나 두려움은 정면돌파를
하시길 바랍니다. 누구나 다 겪는 것이며, 몇 번 극복하고 나면 자신감도 생기고 재미도 붙습니다.
이것은 비단 프로그래밍 뿐 아니라 어느 분야에서나 마찬가지이니 이미 잘 알고 계실거라 생각합니다.
 
한 가지 더, 프로그래밍은 재미있습니다. 즐거운 취미라는 마음으로 재미있게 해보세요.
 
- 박상현 드림.
저작자 표시 비영리 변경 금지
Posted by seanlab

Trackback Address :: http://www.seanlab.net/trackback/51 관련글 쓰기

댓글을 달아 주세요

원작자가 누구신지 너무 궁금합니다. 이렇게 센스 있는 시를 쓰시다니. ^^


 

그대를 O(n!) 동안 기다려 왔습니다.

그대를 만나기 전 나의 인생은 const 였습니다.
매일 매일이 무의미한 Ctrl+C Ctrl+V 였습니다.

그대를 처음 보았을 때
나는 인텔리센스를 처음 접한 프로그래머마냥 기뻤습니다.
나의 FPS는 60.0을 넘었습니다.
<그대의 미소, 그대의 몸짓, 그대의 눈길, 그대의 해맑음> 이라는 쿼터니언으로
나는 π/2 가량 회전했습니다.

그리고 나의 메인 루프는 while(1) Love(You) 로 덮어 씌워졌습니다.



하지만 그대를 만나고 난 이후
내 속은 스파게티 코드가 되어 갔습니다.

섣부른 접근이 Unhandled Exception이 되진 않을까 싶어
언제나 그대 주변 4byte 경계에서 맴돌기만 하였고,
혹여나 올 그 날을 위해 그대를 즐겁게 해 줄 유스 케이스 디자인에
몇날 몇일을 고민했습니다.

마음 속으로 수없이 그대를 불러봐도
결국 나에 대한 재귀호출일 뿐이었습니다.

나의 갈등은 delete 없는 new 였습니다.


이런 제가 그대를 참조하려 합니다.

그대가 나를 private 멤버로 삼아 준다면
나는 다른 누구에게도 인스턴스를 생성하지 않는
그대만의 싱글턴이 되겠습니다.

나의 행복을 memcpy() 해 드리겠습니다.
그대의 나날을 리팩토링해 드리겠습니다.

그대의 map에 나를 넣어 주세요.
나의 key를 "연인" 으로 잡아 주세요.

그대가 어디에서든 "연인"을 부르면
나는 O(1)로 달려갈 것입니다.










그대를 사랑합니다.


감동적이지 않습니까?
저작자 표시 비영리 변경 금지
Posted by seanlab

Trackback Address :: http://www.seanlab.net/trackback/50 관련글 쓰기

댓글을 달아 주세요

  1. 행인 2011/06/11 20:46 Address Modify/Delete Reply

    감동적이네요 ㅎ while(1)

프로그래밍을 공부하다 보면 평소에는사용하지 않던 말들이 튀어나오거나, 평소에 사용하던 단어이지만 문맥상 늘 사용하던 그 뜻이 아닌 것 같은 경우가 종종 있습니다. 이렇게 프로그래밍을 공부하는 학생들을 괴롭히는 용어 중의 하나가 "추상화(Abstraction)"가 아닌가 합니다.

국어 사전에서 "추상"을 다음과 같이 정의합니다.
추상 [, abstraction]  : 대상으로서의 소여() 전체로부터 특정성질이나 공통징표()를 분리하고, 골라내는 정신작용.
좀 어려운 말들이 사용되긴 했지만 무슨 뜻인지는 알 수 있습니다. 추상이란, '생각'을 이용하여 어느 대상의 특징을 분리하고 골라내는 과정입니다. 따라서 추상화(抽象畫가 아니라 抽象化) 란 어떤 대상을 그것이 가진 특징만을 골라내는 생각하는 과정이라 할 수 있습니다.

이런 국어 사전의 정의에 근거하여 제가 프로그래밍에서의 추상화를 설명해 보겠습니다.
 똑같은 사람을 그리더라도  사실주의 화가는 있는 그대로를 표현합니다. 반면에 추상주의 화가는 표현 대상을 분석해서 그 표현 대상이 갖고 있는 주요한 특징 외에는 모두 버리고, 자기가 갖고 있는 표현 도구 몇 가지(예를 들어 점, 선, 색)만을 이용해서 화폭안에 인물을 재창조합니다. 이렇게 추상주의 화가가 그린 인물은 실제 모델과는 아주 다른 모습이 됩니다.

 프로그래머들은 모두 추상주의 예술가입니다. 우리는 코드로 사람을 표현해야 하고, 코드로 자동차를 그려야 하며, 코드로 보험 업무를 그려야 합니다. 이 세상을 코드로 표현해야 합니다. 실제 세계의 것을 분석해서 주요한 특징을 제외한 나머지는 버리고 코드로 다시 그려내는 것, 이것을 추상화라고 합니다.


즐거운 주말 되세요. :)
저작자 표시 비영리 변경 금지
Posted by seanlab
TAG 추상화

Trackback Address :: http://www.seanlab.net/trackback/49 관련글 쓰기

댓글을 달아 주세요

  1. Favicon of http://lazygyu.tistory.com BlogIcon LazyGyu 2010/06/24 01:58 Address Modify/Delete Reply

    추상화라는건 결국 "잘 몰라도 쓸 수 있게" 만들어준다는 이야기인거 같애염 ㅋ

안녕하세요? 박상현입니다.

무료 To-Do List 프로그램, Finish It의 0.75a 버전을 배포합니다. 이번 버전에서 바뀐 사항은 다음과 같습니다.

  • 윈도우 시작시 Finish It 자동 실행 기능(더드미님의 제안)
  • Always On Top 속성 해지시 다이얼로그들이 여전히 최상위 창으로 남는 버그 수정- (맥스폐인님의 버그 레포트)
  • 속성 영구 저장 기능(지금은 Always On Top, Run At Windows Startup  2개뿐이지만 ^^;)

다음은 Finish It 0.75a에서 속성을 변경하는 화면을 캡쳐한 것입니다. 속성이 2개뿐이라 좀 썰렁합니다. 앞으로도 이정도 수준으로 간결하게 유지될 것 같습니다. ^^;

설치 파일은 아래의 링크에서 다운받으시면 됩니다. 프로그램에 대한 개선 희망 사항이나 버그 레포트, 언제나 감사히 받겠습니다. :)

 

 

저작자 표시 비영리 변경 금지
Posted by seanlab

Trackback Address :: http://www.seanlab.net/trackback/47 관련글 쓰기

댓글을 달아 주세요

  1. Favicon of http://evergrinday.pe.kr BlogIcon Evergrin 2009/09/05 10:43 Address Modify/Delete Reply

    오늘도 잘 받아갑니다~

  2. 파예 2009/09/05 15:05 Address Modify/Delete Reply

    잘쓰겠습니다~
    그리고 뇌자알도 서점에 깔리면 꼭 살거에요~ㅎㅎ

  3. 학생 2009/09/06 15:18 Address Modify/Delete Reply

    숙제가 넘치는 학생이라 그런지 이 프로그램이 더욱더 유용한 것 같습니다 ^^ 이런 좋은 프로그램 배포해주셔서 정말 감사합니다.

    • Favicon of http://www.seanlab.net BlogIcon seanlab 2009/09/06 17:52 Address Modify/Delete

      아하, 숙제 관리에도 사용할 수 있겠군요 ^^;
      도움이 된다니 기쁩니다. :)

  4. 학생 2009/09/08 22:31 Address Modify/Delete Reply

    바로 위에 글 올렸던 학생입니다^^ 잘쓰고 있습니다^^
    그런데 한가지 제안이 있는데 학생들이 숙제같은것을 하다보면 상활의 진행도를 퍼센테이지로 나타낸 것 에다가 추가적으로 몇시간 걸릴지에 대한 정보도 메인(?)에 넣을 수 있으면 매우 편리할 것 같습니다.
    그러니까 요약하자면 일정 만들기 하는중에 옵션에다가 진행도 (퍼센테이지) 랑 소요 시간 둘중 0~2개를 선택할 수 있도록 해서 원하는 옵션을 사용할 수 있게 하면 좋을 것 같습니다.
    예를들면 9월 10일 - 수학 숙제 - 소요시간 2시간 - 진행도 30% 이런거죠.
    허접한 제안인데 도움이 되었으면 좋겠습니다. 항상 감사합니다 ^^

    • Favicon of http://www.seanlab.net BlogIcon seanlab 2009/09/09 08:52 Address Modify/Delete

      우선 좋은 제안 감사드립니다.

      다른 To-Do List 프로그램이 많음에도 불구하고 제가 Finish It을 만든 이유는 간단하게 사용할 수 있는 프로그램이 없어서입니다. 아무 고민 없이 할일을 기록하고, 간단히 진행 상황을 기록하고, 더 이상 그 일을 관리할 필요가 없으면 삭제할 수 있는 프로그램 말입니다.

      어떤 일을 계획할 때 소요 시간을 측정한다는 것은 굉장한 에너지가 필요한 일입니다. 수학 숙제 몇 문제 풀기 정도는 비교적 예상치와 실제 소요 시간이 비슷하지만, 직장인의 업무- 예를 들어 제가 하고 있는 소프트웨어 개발- 는 예상치와 실체 소요 시간에는 굉장한 차이가 발생합니다. 이 차이를 줄이려면 굉장히 세심한 작업 측정이 필요해요.

      Finish It에 예상 소요시간 기능을 넣는다면 다른 분들도 그 기능을 사용하고 싶어질 거고, 그러다 보면 금새 Finish It 사용에 피로를 느끼게 될 겁니다. 제안해주신 내용은 아쉽지만 Finish It을 Finish It답게 유지하기 위해서는 접어둬야 할 것 같습니다.

      양해 부탁드려요 :) 감사합니다.

  5. 맥스폐인 2009/09/10 15:11 Address Modify/Delete Reply

    안녕하세요. 오래간만에 인사드립니다.
    휴가는 잘 다녀오셨는지요.


    버그 리포트입니다.

    마우스 우클릭으로 생성되는 팝업 메뉴창이 불특정하게 메인페이지 뒤로 숨어버립니다.
    처음 0.75 버젼을 설치했을 때는 문제가 없었는데 한 반나절 쓰다 보니까 이런 현상이 생겼습니다.
    심지어 달력 팝업도 뒤로 숨습니다.

    더블 클릭시에 생성되는 에디트 창은 문제가 없는 것 같습니다.

    크리티컬한 버그이므로 빠른 확인 부탁드립니다.

    그리고 건의사항입니다.
    혹시 옵션으로 작업표시줄에 표시/미표시 옵션 항목을 만들어주실 수 있나요?
    작업표시줄이나 트레이나 둘 중 하나에만 표시하거나, 둘 다 표시하거나, 둘 다 표시하지 않거나
    선택할 수 있게 하는 것도 좋을 것 같습니다.

    사실 항상 맨 위에 떠있다면 작업표시줄을 괜히 한 칸 차지하고 있을 필요가 없거든요.


    마지막으로
    서브 카테고리를 추가해주실 수 있나요?
    현재 카테고리처럼 탭은 아니더라도
    탭 안에서 굵은 글씨로 카테고라이즈 할 수 있었으면 좋겠습니다.

    아무래도 작업을 정리하다 보면 카테고리 안에 다른 카테고리가 잡힐 수 밖에 없는데
    이 때마다 카테고리 탭을 생성하면 탭이 너무 많아져서 어지러워지는 것 같습니다.



    감사합니다.
    수고하세요!

    • Favicon of http://www.seanlab.net BlogIcon seanlab 2009/09/12 10:35 Address Modify/Delete

      작업표시줄에 표시/미표시 기능은 괜찮은 아이디어인 것 같습니다. 서브 카테고리 문제는 예전에도 말씀드린 적이 있는 것 같은데 고민을 좀 해봐야겠습니다. Finish It이 필요 이상으로 복잡해지지 않는다면 넣도록 해보겠습니다.

  6. 맥스폐인 2009/09/11 13:55 Address Modify/Delete Reply

    안녕하세요.

    이번엔 버그 리포트는 아니고
    Finish it을 사용하다가 문득 이런 기능이 있으면 좋겠다 싶어서 제안을 드립니다.

    각각의 task에 ID를 부여할 수 있었으면 합니다.
    이름 옆에 가령 Urgent task라면 U1, U2 이런 식으로 자동으로 혹은 사용자가 직접 부여할 수 있게 만들고
    due date 순으로 task ID를 list up 하는 기능이 있으면 좋을 것 같습니다.

    그래서 task 관련 디테일들은 Finish it에 적어놓고 탁상용 캘린더 같은 곳에 ID만 딱 적어놓으면
    아, 내일 처리해야 할 task가 있구나, remind가 되면서 디테일한 것은 프로그램에서 확인을 하면 되니까요.

    카테고리가 많아지고 작업이 많아지다 보니까 일일이 카테고리를 순회하면서 확인하기가 번거롭고 또 놓치는 경우도 생길 것 같아서요.

    검토 부탁드립니다.




    아, 그리고 중복 실행 문제가 수정이 되지 않았네요. :)



    감사합니다.
    수고하세요!

    • Favicon of http://www.seanlab.net BlogIcon seanlab 2009/09/12 10:33 Address Modify/Delete

      카테고리가 많아지고 작업이 많아지는 경우라... 충분히 고민스러운 상황이 되겠군요. 검토를 많이 해보겠습니다. 감사합니다. :)

  7. 뿟쮸 2009/09/17 01:02 Address Modify/Delete Reply

    안녕하세요?
    정말 좋은 프로그램 감사히 사용하고 있습니다.
    한 두 가지 추가되었으면 하는 부분이 있어서요...
    일단 Default 그룹의 그룹명을 변경할 수 있었으면 합니다.
    저의 경우 삭제도 안되고 변경도 안되는 맨 앞의 Default 그룹을 'today'정도의 의미로 쓰고 있는데,
    다들 나름의 용도를 따로 정해서 사용하실 텐데 Default의 이름도 바꿀 수 있었으면 합니다.

    두 번째로 그룹들간의 순서 변경이 가능했으면 좋겠습니다.
    이전에 올려주신 가이드글에서도 볼 수 있듯이 (저도 그 글을 보고 활용법을 배웠습니다만)
    today(default)/this week/project/someday/beforeDie
    이런식으로 정리해서 쓰고 있는데요

    이 상황에서 today를 세분화 (home/office라든지)한다든지... 하는 식으로 중간에 카테고리를 추가하고 싶을 때가 한두번이 아닙니다 ㅠㅠ
    카테고리간의 순서 변경이나, 카테고리 사이에 카테고리를 생성하는 기능이 있었으면 합니다.

    좋은 프로그램 만들어주셔서 감사합니다. 항상 복 많이 받으세요.
    그럼 안녕히...

    • Favicon of http://www.seanlab.net BlogIcon seanlab 2009/09/17 11:10 Address Modify/Delete

      고민을 해보겠습니다. 여러 사용자 분들이 요청을 하시니 프로그램이 그렇게 가는 게 맞을 것도 같습니다. :) 감사합니다.

  8. dodo 2009/09/27 15:27 Address Modify/Delete Reply

    아직 설치해보진 않았지만 'to do 프로그램'으로 네이버 서핑중에 우연히 발견하고 들어오게 되었습니다.
    얼른 깔아서 사용해봐야겠습니다. 정말 감사합니다^^

  9. choonguri 2009/10/07 10:12 Address Modify/Delete Reply

    잘 쓰겠습니다.^^

  10. 오두석 2009/10/22 09:09 Address Modify/Delete Reply

    Task 업무 관리 프로그램을 찾다가 멋진 프로그램을 찾았습니다.
    정말 감사합니다.
    그런데 0.75 버전 설치 후 실행 시 오류가 나네요...ㅠ.ㅠ
    0.74 버전은 잘 돌아가는데...그래서 지금은 0.74 쓰고 있습니다..ㅋㅋ ^-^

    다름이 아니라 제안할 것이 있어서 이렇게 글을 씁니다.

    완료된 항목을 지우기 전에 저장 기능이 있었으면 합니다.
    Task 관리에 잇어서도 Category 항목 별로 저장 되면 좋을 듯 합니다.

    검토해 주세요~

    그럼 환절기 감기 조심하시고 멋진 하루 보내시기 바랍니다.

    • Favicon of http://www.seanlab.net BlogIcon seanlab 2009/10/27 05:40 Address Modify/Delete

      저도 그 부분에 아이디어가 딱히 없었는데 좋은 제안 주셔서 감사합니다.

      Finish It의 개선 항목에 추가시켜야겠습니다. ^^

      좋은 하루 되세요~

  11. 최재영 2009/11/04 16:19 Address Modify/Delete Reply

    다른 분들은 잘 사용하고 계시네요.. 저도 사용을 해보려고 하는데요...... ㅠ_ㅠ 설치 했는데 실행하면 오류가 생기면서 ms에 보고를 하네요....

    오류 내용은 다음과 같습니다.

    EventType : clr20r3 P1 : finishit.exe P2 : 1.0.0.0 P3 : 4aa1a538
    P4 : presentationframework P5 : 3.0.0.0 P6 : 45398c20 P7 : 6496
    P8 : be P9 : system.windows.markup.xamlparse

    아직 실행시켜 보지 못하고 있습니다. 윗분 처럼 0.74 버전으로 사용해야 할지.....
    0.74a로 하니 잘 됩니다. 얼른 고쳐 주세요....

  12. gene 2009/12/08 13:33 Address Modify/Delete Reply

    오늘 처음 이곳에 와서 다운로드 받고 프로그램을 실행해 봤습니다.
    제가 정확히 사용법을 알고 있는 지 모르겠습니다만 할일을 기록하고 나면 오늘 날짜로 자동적으로 생성이 되는 거 같습니다.
    그런데 내일 할일을 기록하고자 하면 일일이 날짜를 바꿔야 하는 거 같습니다.
    혹시 오늘 할일과 내일 할일 목록이 있을때 오늘 날짜로 할일이 기록되는데 이것을 드래그로 내일 할일이나 그 다음에 할일 등으로 드래그로 해서 할일을 옮길 수가 있을까요?

    • Favicon of http://www.seanlab.net BlogIcon seanlab 2010/01/01 17:33 Address Modify/Delete

      좋은 제안이십니다. 추후 개발 기능 목록에 추가해놓도록 하겠습니다 :)

  13. 이상호 2010/03/25 10:30 Address Modify/Delete Reply

    필요한 기능만 딱 가지고 있는 심플한 프로그램을 찾고 있었는데 여기 있었네요.
    잘 쓰겠습니다.

이제 곧 뇌를 자극하는 알고리즘이 출간됩니다. 인쇄소에서 한참 책을 만들고 있다는군요. ^^

http://hanb.co.kr/look.php?isbn=978-89-7914-687-5

 

저작자 표시 비영리 변경 금지
Posted by seanlab

Trackback Address :: http://www.seanlab.net/trackback/46 관련글 쓰기

댓글을 달아 주세요