
Python
파이썬은 C에 비해 고수준 언어이다.
고수준 언어란 프로그램 밑단에서 실행되는 일들에 대해 덜 신경써도 되는 언어로
저수준 언어는 사람의 시간을 써서 컴퓨터의 시간 (성능)을 확보하고
고수준 언어는 컴퓨터의 시간 (성능)을 써서 사람의 시간을 아낀다.
시간이 지남에 따라 하드웨어는 점점 발전하고
C가 처음 나왔을 때와는 비교도 안될 만큼의 CPU성능과 메모리 크기를 가지고 있다.
그렇기에 고수준 언어의 영역이 더 확대되고 있다.
미래에는 더 높은 수준의 언어들이 시장을 지배할 것이라 생각한다.
물론 C는 임베디드와 같은 분야에서 쓰이고 있고
화성에 보내는 로봇은 오로지 C로만 쓰여있다고 한다. (하드웨어가 제한적인 경우 저수준 언어를 사용하는 것은 당연하다)
*이번 챕터에선 주로 파이썬의 문법적인 요소를 주로 다룬다
실제 코드를 통해 파이썬이 시간을 얼마나 절약해주는지 보면,
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
}
hello, world 를 출력하는 기존 C언어 코드
print("hello, world")
같은 기능을 하는 파이썬 코드
실제 쓰는 코드가 굉장히 줄었을 뿐만 아니라 가독성도 더 좋아졌다.
Variables, Types
변수를 선언할 때 더 이상 앞에 타입을 명시해주지 않아도
파이썬이 알아서 타입을 처리해준다.
counter++; 이런 형식은 지원하지 않고 counter += 1 이렇게 써야한다.
파이썬에는 range, list, tuple, dict, set 과 같은 자료구조를 지원한다.
Conditionals
x = 1
y = 2
if x < y:
print("x is less than y")
elif x > y:
print("x is greater than y")
else:
print("x is equal to y")
몇가지 변경 사항을 살펴보면 else if 대신 elif 로 축약하여 사용하고
() 대신 : 를 통해 조건을 나타내며 들여쓰기만으로 조건문의 범위를 지정한다.
또한 && 는 and 로 | | 는 or 로 쓸 수 있다.
Object-Oriented Programming
프로그래밍 방법에는 크게 절차형, 객체지향, 함수형이 있다.
절차형은 단어 그대로 순차적으로 코드를 쓰고 실행된다.
C에서 작성한 코드들은 모두 절차형 프로그래밍을 했다고 표현한다.
파이썬과 자바, C에 객체지향 개념을 추가한 C++ 등은 객체지향 개념을 채택하고 있다.
언어 자체가 객체지향 프로그래밍을 염두해두고 설계된 것이지 절차형으로 못쓰는 것이 아니다.
절차형 프로그래밍을 못쓰는 것이 아니고 절차형이냐 객체지향형이냐는 코드를 쓰는 방식에 가깝다.
그리고 객체지향을 잘뜯어보면 절차형 코드들을 기본으로 하고 있다.
함수형에 대해선 지금의 내가 정리하기는 많이 까다롭다고 느낀다.
그 이유는 함수형 자체가 설명하기 난해한 특성을 가진 것과 더불어
내가 함수형으로 프로그래밍 해본 경험이 없다.
최소한 이번 CS50을 마치고 SICP는 수강한 다음에야 함수형 프로그래밍이 뭔지에 대해 적을 수 있을 것 같다.
하지만 함수형 프로그래밍에 많은 관심을 갖고 있고 Elixir 같은 언어도 꼭 사용해보고 싶다.
# Logical operators, using lists
from cs50 import get_string
# Prompt user to agree
s = get_string("Do you agree? ").lower()
# Check whether agreed
if s.lower() in ["y", "yes"]:
print("Agreed.")
elif s.lower() in ["n", "no"]:
print("Not agreed.")
C에서 lower(s) 이런식으로 썼다면 s.lower() 이렇게 쓸 수 있다.
파이썬은 s가 문자열인 것을 인지하고 있고 문자열이 쓸 수 있는 여러 기능들이
하나의 캡슐처럼 내부에 가지고 있다.
Loops
반복문은 C랑 비슷한데 간단히 for 문 예시만 남기고 넘어가겠다.
for i in range(3):
print("meow"
이외에도 파이썬은 여러 기능들이 이미 구현되어 있다. 그래서 코딩테스트에서 상당히 편하다고 한다.
강의에서 다룬 파이썬 내용은 극히 일부이며 깊은 내용은 공식문서를 참고하는 것이 좋다.
3.12.2 Documentation
Python 3.12.2 documentation Welcome! This is the official documentation for Python 3.12.2. Parts of the documentation: What's new in Python 3.12? or all "What's new" documents since 2.0 Tutorial start here Library Reference keep this under your pillow Lang
docs.python.org
'입문 > CS50X' 카테고리의 다른 글
[CS50X] 2024 Week6 Python Problem Set 6 (DNA) (0) | 2024.03.16 |
---|---|
[CS50X] 2024 Week5 Data Structures Problem Set 5 (Inheritance, Speller) (0) | 2024.03.10 |
[CS50X] 2024 Week5 Data Structures (1) | 2024.03.07 |
[CS50X] Week3 번외편(Sort 구현 - Selection, Bubble, Merge, 비트연산자 ) (0) | 2024.03.05 |
[CS50X] 2024 Week4 Memory Problem Set 4 (Volume, Filter, Recover) (0) | 2024.02.29 |