ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 프로그래밍 언어
    IT의 이해 2019. 11. 19. 10:47

     

    프로그램의 방식


    당신에게 컴퓨터 과학자처럼 생각하도록 가르치는 것이다. 이러한 사고방식은 수학, 공학, 자연과학의 가장 좋은 특징들을 결합한 것이다. 수학자들과 마찬가지로 컴퓨터 과학자들은 생각을 나타내기 위해 형식적인 언어를 사용한다. 엔지니어와 마찬가지로, 그들은 무언가를 설계하고, 구성품을 시스템에 조립하며, 대안들 간의 절충을 평가한다. 과학자들과 마찬가지로 그들은 복잡한 시스템의 행동을 관찰하고, 가설을 형성하며, 예측을 시험한다. 컴퓨터 과학자에게 가장 중요한 한 가지 기술은 문제 해결이다. 문제 해결이란 문제를 공식화하고, 해결책을 창의적으로 생각하고, 해결책을 명확하고 정확하게 표현할 수 있는 능력을 말한다. 알고 보니 프로그램 학습 과정은 문제해결 기술을 연습할 수 있는 절호의 기회다. 그래서 이 장을 '프로그램의 길'이라고 한다. 한 단계에서는, 당신은 스스로 유용한 기술인 프로그래밍을 배울 것이다. 또 다른 수준에서, 당신은 프로그래밍을 목적을 위한 수단으로 사용할 것이다. 우리가 나아가면, 그 끝은 더욱 분명해질 것이다.


    파이썬 프로그래밍 언어
    당신이 배울 프로그래밍 언어는 파이썬이다. 파이톤은 고급 언어의 한 예다; 여러분이 들었을 수 있는 다른 고급언어는 C, C++, Perl, 그리고 자바 이다. 낮은 수준의 언어도 있는데, 때로는 "기계 언어" 또는 "조립 언어"라고도 한다. 쉽게 말해서, 컴퓨터는 낮은 수준의 언어로 쓰여진 프로그램만 실행할 수 있다. 그래서 고급 언어로 작성된 프로그램은 실행되기 전에 처리되어야 한다. 이 추가 처리는 시간이 좀 걸리는데, 이것은 고급 언어의 작은 단점이다. 이점은 엄청나다. 첫째, 높은 수준의 언어로 프로그래밍하는 것이 훨씬 쉽다. 높은 수준의 언어로 작성된 프로그램은 쓰는 데 시간이 덜 걸리고, 더 짧고 읽기 쉬우며, 정확할 가능성이 더 높다. 둘째로, 고급 언어는 휴대성이 있으며, 이는 그들이 거의 또는 전혀 수정하지 않고 다른 종류의 컴퓨터에서 실행할 수 있다는 것을 의미한다. 낮은 수준의 프로그램은 한 종류의 컴퓨터에서만 실행될 수 있으며 다른 컴퓨터에서 실행하기 위해 다시 작성되어야 한다.

     

    프로그램이란 무엇인가?
    프로그램은 계산을 수행하는 방법을 지정하는 일련의 명령이다. 계산은 방정식의 시스템을 풀거나 다항식의 뿌리를 찾는 것과 같은 수학적인 것일 수도 있지만, 문서에서 텍스트를 검색하고 대체하거나 (이상적으로 충분히) 프로그램을 컴파일하는 것과 같은 상징적인 연산일 수도 있다. 세부 사항은 다른 언어로 다르게 보이지만, 몇 가지 기본적인 지침은 모든 언어로 나타난다: 입력: 키보드, 파일 또는 다른 장치에서 데이터를 가져오십시오. 출력: 화면에 데이터를 표시하거나 파일이나 다른 장치에 데이터를 보낸다. 수학: 덧셈과 곱셈과 같은 기본적인 수학 연산을 수행한다. 조건부 실행: 특정 조건을 확인하고 적절한 코드를 실행하십시오. 반복: 보통 몇 가지 변화를 가지고 몇 가지 동작을 반복해서 실행한다. 믿거나 말거나, 그것밖에 없다. 당신이 사용한 모든 프로그램은, 아무리 복잡하더라도, 이것들과 거의 비슷하게 생긴 명령들로 이루어져 있다. 따라서 프로그래밍을 이러한 기본 지침 중 하나로 수행할 수 있을 정도로 간단한 하위 작업이 될 때까지 크고 복잡한 작업을 점점 더 작은 하위 작업으로 분할하는 과정이라고 생각할 수 있다. 그건 좀 애매할 수도 있지만, 알고리즘에 대해 이야기할 때 다시 이 주제로 돌아오겠다.

    디버깅이란?
    프로그래밍은 오류가 발생하기 쉽다. 이상한 이유 때문에 프로그래밍 오류를 버그라고 하며 이를 추적하는 과정을 디버깅이라고 한다. 프로그램에서 세 가지 종류의 오류가 발생할 수 있다. 구문 오류, 런타임 오류, 의미 오류. 그들을 좀 더 빨리 추적하기 위해서 그들을 구별하는 것이 유용하다. 구문 오류 Python은 구문이 정확할 경우에만 프로그램을 실행할 수 있으며, 그렇지 않으면 해석자는 오류 메시지를 표시한다. Python은 구문이 정확할 경우에만 프로그램을 실행할 수 있다. 그렇지 않으면, 해석자는 오류 메시지를 표시한다. 구문은 프로그램의 구조와 그 구조에 관한 규칙을 말한다. 예를 들어 괄호는 짝이 맞는 쌍으로 와야 하므로 합법적이지만 구문 오류다. 영어에서 독자들은 대부분의 구문 오류를 용인할 수 있고, 그래서 우리는 오류 메시지를 철자하지 않고 e. 적들의 시를 읽을 수 있다. Python은 그렇게 관대하지 않다. 만약 당신의 프로그램에 단일 구문 오류가 있다면, Python은 오류 메시지를 표시하고 그만두게 될 것이고, 당신은 당신의 프로그램을 실행할 수 없을 것이다. 당신의 프로그래밍 경력 첫 몇 주 동안, 당신은 아마도 구문 오류를 추적하는데 많은 시간을 소비할 것이다. 경험을 쌓으면 오류를 줄이고 더 빨리 찾을 수 있을 것이다.

     

    런타임 오류
    두 번째 유형의 오류는 런타임 오류로, 프로그램 실행을 시작한 후에야 오류가 나타나기 때문에 호출된다. 이러한 오류는 대개 예외적인(그리고 나쁜) 일이 일어났음을 나타내기 때문에 예외라고도 불린다. 런타임 오류는 처음 몇 장에서 볼 수 있는 간단한 프로그램에서는 드물기 때문에, 여러분이 런타임 오류와 마주치기까지는 시간이 좀 걸릴 수 있다.
    의미 오류 세 번째 유형의 오류는 의미적 오류다. 프로그램에 의미적 오류가 있으면 컴퓨터가 오류 메시지를 생성하지 않지만 올바른 작업을 수행하지 못한다는 점에서 성공적으로 실행될 것이다. 그것은 다른 일을 할 것이다. 구체적으로 말하면, 그것은 당신이 하라는 대로 할 것이다. 문제는 당신이 쓴 프로그램이 당신이 쓰고 싶었던 프로그램이 아니라는 것이다. 그 프로그램의 의미는 잘못되었다. 의미적 오류를 식별하는 것은 프로그램의 출력을 보고 그것이 무엇을 하고 있는지 알아내려고 노력함으로써 뒤로 일해야 하기 때문에 까다로울 수 있다.


    실험 디버깅
    당신이 습득하게 될 가장 중요한 기술 중 하나는 디버깅이다. 비록 그것이 좌절될 수 있지만, 디버깅은 프로그래밍에서 가장 지적으로 풍부하고, 도전적이며, 흥미로운 부분들 중 하나이다. 어떤 면에서 디버깅은 탐정 작업과 같다. 당신은 단서들에 직면하고, 당신이 보는 결과를 초래한 과정과 사건들을 유추해야 한다. 디버깅도 실험과학과 같다. 무엇이 잘못되고 있는지 일단 알게 되면, 프로그램을 수정하고 다시 시도하게 된다. 만약 당신의 가설이 맞다면, 당신은 수정의 결과를 예측할 수 있고, 당신은 작업 프로그램에 한 걸음 더 다가갈 수 있다. 만약 당신의 가설이 틀렸다면, 당신은 새로운 가설을 고안해야 한다. 셜록 홈즈가 지적했듯이, "불가능함을 없앴을 때, 아무리 그럴 것 같지 않은 것이라도 진실이어야 한다." (A. 코난 도일, The Sign of 4) 어떤 사람들에게는 프로그래밍과 디버깅이 같은 것이다. 즉, 프로그래밍은 당신이 원하는 것을 할 때까지 점진적으로 프로그램을 디버깅하는 과정이다. 어떤 일을 하고 작은 수정을 하는 프로그램부터 시작해서 가는 대로 디버깅을 해서 항상 작업하는 프로그램이 있어야 한다는 생각이다. 예를 들어 리눅스는 수천 줄의 코드가 들어 있는 운영체제지만 인텔 80386 칩을 탐사하는 데 사용되는 단순한 프로그램인 리누스 토발즈로 출발했다. 래리 그린필드에 따르면, "리누스의 초기 프로젝트 중 하나는 AAAA와 BBBB를 인쇄하는 프로그램이었다. 이것은 나중에 리눅스로 발전했다. 이후 장에서는 디버깅과 다른 프로그래밍 관행에 대해 더 많은 제안을 할 것이다.

    'IT의 이해' 카테고리의 다른 글

    전통적 경제이론  (0) 2019.11.23
    디버깅 실행흐름  (0) 2019.11.19
    Python Visualization Tool 생태계  (0) 2019.11.14
    DataFrame 시리즈 Permering  (0) 2019.11.12
    오버랩과 데이터 결합  (0) 2019.11.12

    댓글

Designed by Tistory.