Skip to content

Latest commit

 

History

History
14 lines (13 loc) · 2.53 KB

2023-09-11-mon.md

File metadata and controls

14 lines (13 loc) · 2.53 KB

TIL

  • 파이썬
    • 일급함수의 조건 중 "런타임 중 생성 및 수정 가능" 이 무슨 말이지? 파이썬은 인터프리터 언어고, 함수는 당연히 런타임 중 생성 및 수정 가능한 것 아닌가? 하는 생각을 했다. -> 어떤 함수 def hello() : return "hello"new_hello = hello 처럼 생성하는 것이 런타임 중 함수를 생성하는 것이고, 이어서 new_hello = lambda a : a+1 과 같이 같은 변수명에 새로운 함수를 할당하는 것이 수정하는 것이다. 일급함수 개념을 지원하지 않는다면, 두 작업 모두 불가능하다. 컴파일 언어라면 컴파일에 실패하고 인터프리터 언어라면 런타임 에러를 만날 것이다.(파이썬이 일급함수 개념을 지원하기 전에도 당연 불가능했다.)
    • 큰 시퀀스 데이터를 다룰 때 이터레이터를 사용하면, 메모리 효율을 높일 수 있다. 한 번에 모든 데이터를 메모리에 올려두지 않고 필요할 때마다 불러쓰기 때문이다.
    • 고차함수를 쓰면 좋은 점? : 적은 코드로 더 많은 일을 할 수 있다. 함수의 인자로 함수를 받으면, 조건에 따라 다른 함수를 받아 동작하는 일을 간단하게 할 수 있다.
  • 프로그래밍 이야기
    • 함수형 프로그래밍을 하다보니, 데이터 상태를 저장할 수 있는 방법이 없었다. 상태값을 유지하고 싶다면 매번 다음 함수의 인자로 넘겨줘야했다. 그래서 "클로저"라는 개념이 나왔다.
    • 나는 객체지향 패러다임이 먼저 나오고, 이를 보완하기 위해 함수형 프로그래밍이 뜬 줄 알았다. 하지만 함수형 프로그래밍과 객체지향 프로그래밍 개념은 비슷한 시기에 나왔다. 우리가 많이 쓰는 언어들이 객체지향 패러다임을 채택해왔기 때문에 객체지향이 더 익숙하고 먼저나왔다고 생각되는 것이었다. 원래 함수형 프로그램은 연구쪽에 많이 쓰였음.

오늘 한 생각 & 즐거웠던 순간

  • 그냥 나오는 개념은 없다. "사람이 이해하기 쉬운 코드", "더 효율적으로(적은 줄로..) 코드를 짜기 위한 방법", "cpu, 메모리 등 컴퓨터 자원을 더 효율적으로 쓸 방법"을 찾아 프로그래밍의 세계는 발전되고 있다.
  • 서로의 코드를 더 잘 이해하고, 협업과 확장에 용이한 코드를 만들어내기 위해 절차지향, 객체지향, 함수형 프로그래밍 등 여러 패러다임이 나왔다.
  • 멘토링 재밌다.