[프로그래밍 패러다임] Java, JavaScript, C++, Python의 패러다임별 문법 지원 정리

kite·2025년 7월 28일

Java

  • 객체지향: 클래스, 상속, 인터페이스, 캡슐화, 다형성
    class Animal { void speak() {} }  
    class Dog extends Animal { void speak() { System.out.println("멍멍!"); } }
  • 함수형: 람다식 (x) -> x+1, 메서드 레퍼런스 String::length, 생성자 레퍼런스 ArrayList::new
    List<Integer> nums = Arrays.asList(1, 2, 3);  
    nums.stream().map(x -> x + 1).forEach(System.out::println);
  • 선언형: Stream API (map, filter, reduce 등)
    int sum = nums.stream().filter(x -> x > 1).reduce(0, Integer::sum);

JavaScript

  • 객체지향: 클래스(class), 상속(extends), 캡슐화(ES6 private 필드)
    class Animal { speak() {} }  
    class Dog extends Animal { speak() { console.log("멍멍!"); } }
  • 함수형: 화살표 함수 x => x+1, 고차 함수(map, filter, reduce)
    [1, 2, 3].map(x => x + 1);
  • 선언형: Array 메서드(map, filter, reduce), Promise, async/await
    const sum = [1, 2, 3].reduce((a, b) => a + b, 0);

C++

  • 객체지향: 클래스, 상속, 다형성, 추상 클래스
    class Animal { public: virtual void speak() = 0; };  
    class Dog : public Animal { public: void speak() override { std::cout << "멍멍!"; } };
  • 함수형: 람다식 [&](int x){ return x + 1; }, 함수 객체(functor)
    std::vector<int> v{1, 2, 3};  
    std::for_each(v.begin(), v.end(), [](int x) { std::cout << x + 1; });
  • 선언형: STL 알고리즘(std::for_each, std::transform, std::accumulate)
    int sum = std::accumulate(v.begin(), v.end(), 0);

Python

  • 객체지향: 클래스, 상속, 다형성

    class Animal:  
        def speak(self):  
            pass  
    
    class Dog(Animal):  
        def speak(self):  
            print("멍멍!")
  • 함수형: 람다식 lambda x: x+1, 고차 함수(map, filter, reduce)

    list(map(lambda x: x + 1, [1, 2, 3]))
  • 선언형: 리스트 컴프리헨션, 제너레이터

    sum([x for x in [1, 2, 3] if x > 1])
profile
성장하는 중 🌱

0개의 댓글