함수형 프로그래밍이란?

최근에 함수형 프로그래밍에 관심을 갖게 되었습니다. 사고방식과 다른 코딩 스타일이 필요한 복잡한 주제입니다. 따라서 이 시리즈의 다른 게시물을 설정하기 위해 기본 사항에 중점을 두겠습니다.

함수형 프로그래밍은 자체 데이터(상태) 및 메서드에 대해 알고 있는 클래스 인스턴스와 같은 개체를 갖는 것이 아니라 함수 간에 데이터를 전달하는 것입니다.

다음은 함수형 프로그래밍에 대한 몇 가지 주요 아이디어입니다.

수업을 사용하지 않음



기능만.
C 또는 일부 최신 기능 언어와 같은 일부 언어에는 class 키워드가 없습니다.

객체 지향 프로그래밍의 "문제"는 클래스로서의 "객체"가 아닙니다. 문제는 "지향성"입니다.
  • 다른 모듈의 객체를 수정하기 위한 함수를 객체를 나타내는 것과 분리하고 다른 모듈에 두는 것이 아니라 실제 아이디어와 그에 대해 할 수 있는 모든 것을 표현하기 위해 많은 메소드로 클래스를 작성하는 것과 같습니다.
  • 또는 메서드가 있는 경우 해당 개체 유형에 대해서만 개체의 인스턴스에서만 사용할 수 있습니다. 다양한 유형의 객체를 허용할 수 있는 보다 일반적인 함수를 만들 수 있을 때.

  • 객체는 변경할 수 없습니다.



    개체를 제자리에서 수정하는 대신 수정되는 새 개체를 만듭니다. 그런 다음 초기 개체 위에 씁니다.

    문자열과 정수는 대부분의 언어에서 변경할 수 없습니다(이로 인해 해시 가능하므로 사전 키로 사용하기에 안전합니다). 따라서 값을 수정하려면 새 값을 만듭니다.

    우리는 쓴다:

    x = 0
    x = x + 1
    


    따라서 목록의 경우 다음과 같이 작성합니다.

    x = [1, 2, 3]
    x = append(x, 4)
    x = sort(x)
    
    increment = (i) => i + 1
    
    x = map(increment, x)
    


    코드는 절차적이기보다는 선언적입니다.



    이렇게 하면 코드가 더 합리적이고 더 짧아지는 경우가 많습니다. 원하는 방식보다 원하는 방식으로 작성하기 때문입니다.
    for 또는 while 루프가 없습니다.
    대신 재귀를 사용하십시오.

    또는 다음과 같은 맵 변환:

    # Ruby
    myList.each
    
    // JS
    myList.map
    
    # Python
    map(fn, myList)
    [x + 1 for x in myList] # Python list comprehension
    


    적어도 Python에서는 for 루프를 사용할 때 도달할 수 없는 최적화된 C 코드를 사용하므로 해당 접근 방식을 사용하면 속도 이점을 얻을 수 있습니다.

    기능은 순수하다



    함수에는 다른 객체의 상태를 수정하는 부작용이 없습니다.

    데이터베이스, 디스크의 파일, API 또는 인쇄와 상호 작용하는 것과 같은 유용한 작업을 수행하려면 예외를 만들어야 합니다.

    구성



    코드를 재사용할 수 있습니다.

    기능은 전문화되어 있으며 범위가 더 좁습니다.

    기능을 함께 연결할 수도 있습니다.

    코드는 단위 테스트를 작성하기 더 쉬워집니다. 함수는 사용자가 제공한 입력에만 기반하여 예측 가능한 출력을 제공합니다.

    파일이나 데이터베이스 또는 API의 데이터와 상태가 없을 때 의존하지 않습니다. 이것은 일반적으로 car.start() 와 같은 OOP의 메소드에 의해 수정됩니다.

    연결



    JavaScript의 함수형 프로그래밍에 대한 YouTube 동영상을 시청하세요. 처음 몇 개의 비디오는 내가 이미 알고 있었고 코드베이스에서 매일 찾을 수 있는 내용을 다룹니다. Reduced Advanced 및 Currying 비디오에서 상황이 정말 흥미로워지기 시작합니다.

    Wikipedia의 Functional Programming 페이지를 참조하십시오.

    튜토리얼 포인트Functional Programming도 참조하십시오.

    좋은 웹페이지 즐겨찾기