OOP 진영으로 다시 돌아왔다... ㅠㅠ

카테고리 없음 2023. 4. 28. 22:26

2015년에 C#과  WPF와 관련된 글을 처음 썼었는데, 완전히 잊고 지냈다. Java는 몰라도 C#은 다시 할 일은 없겠구나 생각했는데, 드디어 기회가 왔다 ㅠㅠ...

하... 드디어 객체 지향의 진영으로 돌아왔구나...물론 모바일과 웹도 OOP를 쓰긴 하지만, 생각보다도 OOP의 필요와 중요성을 간과하는 개발자들이 많다는 것에 크게 놀랐다. 지방에서 근무를 하면서 이 쪽 지역의 사람들과 개발을 해보니 OOP를 부르짖는 자신이 오히려 부끄럽기까지 하더라;;

아, 물론 OOP는 만능이 절대 아니다. 규모가 작다면 OOP는 벼룩 잡는데 초가삼간 태우는 격이지만, 현업에서 발생하는 개발의 규모는 거의 열에 아홉은 OOP가 있어야 그나마 프로그램 구조를 파악하기가 용이하다. 달리 말하면, OOP를 적용하지 않는다면 프로그램에 구조 따윈 그냥 없다고 보면 된다...

Java와 C#의 느낌(?) 뉘앙스(?)의 차이를 얘기해보라고 한다면, 뭔진 몰라도 Java 보다는 C#이 더 신사다운 느낌이다.  Java가 웹이나 모바일 뿐만 아니라, 유틸 프로그램 만드는 데 까지 범용성과 활용성이 높아 마치 보급형 스마트폰 같은 느낌이라면, C#은 Windows 운영체제라는 제한적 환경에서 고급스러운 프로그램을 만들어내는 프리미엄 스마트폰 같은 느낌이다. (그러고보니 C++도 있었는데, C++은 뭔가 앞의 두 언어에 비하면 뭔가 설익은 느낌이다. 근데 이 녀석은 OOP 보다는 성능에 몰빵된 느낌이니까 이 글에서는 열외!)

뭐 어쨌든 난 이 두 언어가 참 좋다. 그 동안 Javascript나 Python 등의 인터프리터 언어로 현업에서 근무를 했는데, 그 언어들을 쓰는 내내 인터페이스(Interface)와 명시적 타입이 너무 너무 그립더라... 그리고 맨날 디버깅을 print, console.log 등으로 메세지 찍어가며 하는 개발은 여간 불편한 게 아니고 개발 속도도 엄청나게 떨어지더라... 물론 디버깅 기능이 지원되기도 하지만 컴파일 언어에 비해선 성능이 떨어짐.. ㅠㅠ 무엇보다 묵시적 타입 탓에 데이터가 숫자인지 문자열인지, 실수형인지 정수형인지 이런 걸 명확하게 알 수 없으니 코딩할 때 마다 이런 걸 신경 써야 하는게 진짜 스트레스더라;; (별거 아닌것 같다고? 한 두 개야 별거 아니겠지만, 코딩하다보면 변수 선언만 적어도 수 천 번을 하지 않는가..;;;)

그래서 앞으로는 Javascript는 Typescript로 사용하고, Python은 데이터 분석 용도로만 사용하되 시스템 운용 자동화에는 Go 언어를 사용하려고 한다. 그러니까 앞으로는 인터프리터 언어의 사용을 줄일 수 있는 만큼 줄이고 컴파일 언어 위주로 사용하려고 한다 ... ㅠㅠ.. 미안해요 인터프리터 언어... 이제야 알겠어요. 왜 메이저 회사들 대부분이 컴파일 언어와 컴파일 언어 기반의 프레임워크를 사용하는지를...

그래도 굳이 인터프리터 언어의 장점을 얘기하라고 한다면, 규모가 커졌을 때 컴파일 언어처럼 빌드 시간 필요하지 않다는 것. 그치만... 요즘 컴퓨터 성능이 엄청 좋은 걸... ㅠㅠ 이번에 개발했던 웹 서비스의 서버는 CPU 코어만 20개였단 말야...

결론을 말하자면...

인터프리터 언어는 사실상 가독성과 해석의 난이도 따윈 상대적으로 아웃 오브 안중이기 때문에 하이 퀄리티의 소프트웨어를 만들고 싶다면 추천하기 어렵다는 것... 

웹 개발을 하고 인터프리터 언어를 써왔지만, 요것들의 무궁무진한 자유분방함에 혀를 좌우 위, 아래로 낼름 내두르곤 다행히 기회가 생겨 부리나케 도망쳐 나왔다..ㄷㄷ;; 웹 프론트 엔드 만들 일 있으면 이제 딴거 안 쓰고 Vue.js와 Typescrpt만 쓸꺼야...ㅠㅠ

admin