tech/생각
프로그래밍 언어와 패러다임에 대한 짧은 생각
daniel_lab
2023. 10. 14. 16:16
나무위키를 검색해보다 인상적인 부분을 발견해서 적어놓는다.
Java의 예를 들어보자. 처음엔 날코딩에서 시작해 IDE를 쓰게 되고, 서드파티 라이브러리를 사용하다가 스프링 프레임워크라는 것이 있다는 걸 알게 되고, 프레임워크의 유연성에 감동하다가, 그 프레임워크를 만든 근간 기술인 디자인 패턴에 대해 공부하게 되고… 그렇게 차츰 자기도 모르게 고급 프로그래머가 되어 간다. 그러나 학습량은 결코 적지 않다. 위에서 트렌드를 이해해야 한다고 했는데, Java 쪽의 트렌드를 따라가려면 읽어야 할 자료가 엄청나게 많다.[14] 그래서 다른 것에 한눈팔 여유가 없다. 그래도, Java의 인기와 점유율은 여전히 상당하다.
최신 트렌드를 접하다 보면 스프링 프레임워크를 접할 때 즈음엔 함수형 언어에 대해 알게 된다. 일급 객체, 클로저 등에 대해 10분만 검색하면 인터페이스가 불필요할 수도 있다는 걸 알고 멘붕할 것이다. 객체지향이 진리라고 믿었더라도, 메서드 체이닝과 고차 함수 개념을 접하고 나면 객체를 상속하듯이 행동을 확장할 수 있는 함수형 언어의 설계 패러다임을 접하고 다시 멘붕할 것이다. 그리고 멀티 스레드는 금단의 사과 같은 테크닉이라고 믿었더라도 GPGPU를 배우면 스레드가 다다익선일 수도 있음을 알게 된다. 리턴 값을 두 개 세 개 막 넘길 수 있는 Python과 Go를 보고, 숫자에 메소드를 붙이고 문자열 자체를 메소드 명으로 해석해서 실행시키는 괴랄한 테크닉이 가능한 Ruby를 보고[15], 심지어 같은 자바 가상 머신을 사용하는데도 유연성이 훨씬 뛰어난 Scala와 Groovy를 접해보게 된다. 이러한 점 때문에 프로그래밍에 흥미만 붙인다면 여러가지 다양한 개념과 사고를 접할 수 있기 때문에 정말 프로그래밍 공부가 재미있어진다.[16]
scala, javascript, c# 여러 언어를 사용해서 개발을 해왔지만, 이 글을 읽으면서 개념들이 헷갈리는걸 보면.. 아직 확실히 아직 프로그래밍 언어의 여러 기능들을 높은수준에서 이해하고 있는데 부족함이 많은 것 같아 다시 공부가 필요함을 깨닫는다;;