컴퓨터프로그래밍 입문

  • #312814
    김도기 98.***.227.197 3651

    취미로 컴퓨터 프로그래밍이 배우고 싶어서 여기저기 찾아보고 문의하고 그러다가 최근에 Structure and Implementation of Computer Programs이란 책을 사게 됐습니다. 초보자에게 참 유익한 책으로 느껴집니다. 그런데, 책을 공부하면서 실제로 프로그래밍을 해서 실행을 어떻게 하는지 잘 모르겠네요. Scheme을 다운받았는데 또 모르겠네요. 전문가 계시면 기본적인 것만 설명히 주셔도 감사하겠습니다.

    본인의 프로그래밍 지식은 BASIC이 전부입니다. 메인프레임에서 프로그램을 실행시켰던 기억이 납니다. 프로그램을 만들어서 이름을 명명하고 save를 한 후에 exec filename을 하고 프린터실에가서 180컬럼짜리 프린터용지로 받았던 기억이 납니다. 지금은 이런 구식과는 다를텐데…PC에서 frame을 다운받아서 깔고 어떻게 하는 것인가요? 아니면 전혀 다른 방법인가요?

    • 지나가다 216.***.45.4

      일단 Java for Dummies 같은 책 구하셔서 개발툴 설치라던가 이런 부분들을 한번 살펴보심이 좋을 것 같네요.

      Scheme도 재미있는 언어이긴하지만, 프로그래밍을 처음 접하시는거니 만큼 일반적으로 널리 쓰이는 절차형언어(C, Java)를 먼저 익히신 다음에 이쪽으로 넘어가시는게 좋지 않을까 싶습니다.

      • kln 204.***.3.100

        자바가 절차형언어라니…

        • 큰틀 71.***.150.201

          큰틀에서 보자면, 사실상 파리도 새다.

        • 지나가다 108.***.32.123

          LISP(Scheme) 같은 Functional Language/Declarative programming와 다르게, 프로그램을 line by line으로 따라간다는 뜻에서 “절차형언어”라고 썼는데 용어선택이 좋지 않았나 봅니다. 선언형 프로그래밍(Imperative Programming)라고 썼어야 하려나요.

    • 혼동 98.***.227.197

      중요한 것은 아니지만 혼동이 되네요. JAVA for dummies를 구해서 읽고 있습니다. 그런데, 책에서 FORTRAN, COBAL같은 옛날 랭귀지를 imperative라고하고 JAVA나 C 랭귀지는 는 object-oriented라고 하네요. 두 표현의 의미를 감잡고 있는 중인데 좀 혼동이 되는군요.

    • 71.***.16.60

      VBScript(Visual Basic Script)라는 language가 있는데 compile할 필요 없이 바로 실행이 가능합니다. Web page에서 실행시킬 수도 있고, 아니면 Computer에서 바로 실행시킬 수도 있습니다. notepad나 notepad++를 사용해서 program을 작성하시면 되고 Filename extension만 .vbs로 바꾸어 주시면 됩니다.

    • 진짜프로그래머 70.***.49.163

      OBJECTIVE ORIENTED란 한국말로 객체지향이란뜻이고 PROCEDURAL 이란 절차적 이란 뜻입니다. 두 개념이 현대 프로그래밍 세계의 양대 산맥이라 보시면 됩니다.

      과거의 프로그래밍은 한마디로 프로그래머 개인의 취향과 직관에 크게 좌우되었죠. 즉, 모로 가도 서울만 가면 된다라는 식입니다. 내가 코드를 어떻게 짜든 돌아가기만 하면 된다입니다. 그러다 보니 어떤 특정의 규칙이라든가 룰이 없이 기대하는 출력만 뽑아내기 위해 갖가지 재주를 다 부리는거죠. 그러다 보니 어떤 특정 프로그래머가 짠 코드는 다른 프로그래머가 봐도 이해가 안되는 것입니다. 코드의 실행문이 이리갔다 저리갔다 왔다갔다 앞으로 갔다 뒤로 갔다 정신이 없죠. 이런 코드를 흔히 스파게티 코드라 부르는 경우도 있었죠. 스파게티 국수발처럼 죄다 엉켜있다라는 거죠. 라인이 길어지면 코드를 작성한 본인도 이해가 안되는 코드입니다. 그래서 이런 코드를 절차적 코드라 부릅니다. 즉, 어떤 한 절차를 수행한후 다음 절차로 뛰고 그후에 또 다른 절차로 뛰고..결국 절차와 절차가 모여서 프로그램을 이룹니다.

      반면에 최근에 대세를 이루고 있는 객체지향이란 쉽게 말해서 절차가 중심이 아니라 테이터가 중심인 프로그래밍 기법입니다. 예를 들어 김밥을 만든다라는 프로그램을 짠다고 생각해보죠.

      절차형 코드는

      1. 김준비
      2. 김에다 밥을 올린다.
      3. 밥에다 쏘세지를 올린다.
      4. 밥에다 다꽝을 올린다.
      5. 말아준다
      6. 먹기 좋게 자른다.

      식이죠..즉, 어떤 수행해야될 절차들의 나열이란 거죠.

      히지만 객체지향은 이런 절차가 아니라 데이터 즉, 객체라고 불리는 어떤 데이터 클래스를 만들어가는것으로 프로그래밍이 이루어 집니다.

      예를 들면

      1. 재료 클래스
      – 김
      – 다꽝
      – 쏘세지
      – 김말이
      -밥
      -칼
      -도마

      2. 노가다 클래스
      – 재료를 올려라
      – 김밥을 말다
      – 말은 김을 자르다

      이런식으로 먼저 비슷한 종류의 작업이나 재료를 하나로 묶은 여러개의 클래스를 만들어 놓는거죠. 그리고 그것들을 필요에 따라 불러 쓰는 겁니다.

      재료.김
      재료.밥
      재료.다꽝
      재료.쏘세지
      노가다.재료를올려라
      노가다.김밥을말다
      노가다.김밥을자르다.

      이런겁니다.
      두가지 프로그래밍 기법의 가장큰 차이점은 절차형은 재사용이 불가능하다는거고 객체지향은 얼마든지 재사용이 가능하다는겁니다. 다음번에 누가 이번엔 삼각김밥을 만들어야 될땐 님께서 미리 만들어놓은 재료 클래스와 노가다 클래스에 살짝 몇가지 기능만 더 추가해서 다시 사용할수 있다라는거죠.

      • 윗분님 199.***.243.102

        윗분님께서 멋지게 설명해주셨는데… Object Oriented 를 설명하시는 것에서 데이터 중심이라고 하셔서… 몇가지 첨언을 하자면요…

        객체지향형 프로그램의 핵심은 현실 세계를 모델화하여 문제를 풀어가는 것이 핵심입니다.

        그래서 데이터 중심이라고 하기 보다는 객체(세상의 모든 사물)를 속성과, 행위로 표현을 합니다. object = properties + behaviors 가 되는 거죠.

        거기에 더해 객체의 속성, 행위를 구체화 해가면서 상속이 라는 개념을 도입하기도 하구요..

        절차형 언어는 top down 방식의 접근을 사용하지만, 객체지향형 언어는 bottom up 방식의 접근을 합니다.

        감히 첨언을 해 죄송합니다. 멋지게 설명해주셨는데… ^^

Cancel