티스토리 뷰
1. 아무리 생각해도 객체지향은 프로그램의 복잡성을 증가시키는 것 같다.
2. 복잡성 보다 더 큰 문제는 객체지향설계를 그대로 구현할 수가 없다는 점이다. 설계현실과 코딩현실의 불일치이다.
2-1 객체 지향설계를 해놓아도 사실 웹에 적용할 경우에는 그대로 사용할 수가 없다. MVC나 DDD가 훨씬 실용적이다.
2-2 웹만 그런 것이 아니라 데스크톱 프로그램도 마찬가지이다.
2-3 결국 의미가 있으려면 UI가 없는 네트워크 프로그램 같은 것에나 적용가능하다. 이게 사실 의미가 없다.
2-4 글로벌 기업의 객체지향 면접(System Design)은 그다지 큰 의미가 없어 보인다. 일반적으로 설계한대로 만들게 되면 보통 단일 스레드의 콘솔프로그램이 되고 만다. 그냥 데이터 기반 설계가 훨씬 낫다.
3. 재활용이니 관심사의 분리니 해도 현업에서는 이런 거 별로 의미가 없다.
4. 결국은 이해하기 쉬운 것이 가장 좋다. 심플하고 확장하기 좋은 구조를 목표로 하는 것이 좀 더 실용적이다.
5. 자바 스크립트와 자바는 소스 구조를 파악하는 데 너무 힘이 든다.
5-1 자바스크립트는 워낙 언어의 자유도가 높아서 이해하기가 쉽지 않고(자바 라이브러리 보다는 이해하기가 수월하다.)
5-2 자바는 오버엔지니어링으로 인해 구조를 파악하기가 너무 어렵다. 구조를 파악을 하기 위한 기본자료가 많지 않다.
6. 결국은 GO와 Scala인데 이런 객체 기반 함수형 언어가 가장 이해하기 쉽다는 결론에 도달했다.
6-1 GO는 언어가 존나 간단해서 소스를 보면 보통 이해가 된다. 네트워크에서 웹까지 거의 그렇다. 물론 인터페이스가 명시적으로 구현되지 않기 때문에 구조를 이해하는데 어느 정도의 노력이 필요하긴 하다.
6-1-1 게다가 컴파일언어라서 굉장히 빠르다.
6-2 Scala 역시 자바와는 달리 구조파악이 용이하고 빠른 개발이 가능하다.
7. 자바스크립트나 파이썬 같이 자유도가 높은 언어는 개인적으로 잘 안 맞는 것 같다. 물론 타입이 없다는 점이 때때로는 엄청난 개발시간 단축을 가져온다는 걸 알고 있다. 언어는 필요에 따른 선택의 문제다. 나에게는 C언어가 아직도 젤 편하다.
8. 한가지 더 남기자면 JSON vs Protocol Buffer
8-1 Protocol Buffer는 수많은 장점에도 불구하고 쓰레기라고 생각한다. 복잡하면 아무도 안쓴다.
8-1-0 바이트 기반이라 개발자가 디버깅하기가 어렵다는 점이 치명적이다. 개발자 비용이 네트워크 속도보다 중요하다.
8-1-1 성능 떨어져도 JSON이 최고다. gRPC를 쓰려고 ProtoBuf을 쓰는 건 오버라는 생각이다.
8-1-2 장담하는데 JSON 유사한 형식을 기반의 사용하는 HTTP2, HTTP3를 사용한 서비스 구현이 분명히 나올 거다.
8-1-3 GO에는 gRPC라는 공식이 존재하는 듯한데, REST를 대체하는 무언가가 필요하지만 gRPC는 아닌 것 같다.
8-1-4 gRPC는 protocol buffer 때문에 CORBA와 유사한 길을 걸을 것이라고 확신한다.
'기록' 카테고리의 다른 글
Operating System - 사용 중인 포트 확인 (0) | 2022.01.11 |
---|---|
Database : Database locking (0) | 2022.01.04 |
C++ : *argc[] 를 vector<string>으로 변경하기 (0) | 2021.08.13 |
윈도우 11 : 조건을 만족하지 못하는 PC의 황당한 강제 업데이트 (1) | 2021.07.02 |
무엇을 바라보고 있는가 (0) | 2020.10.29 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- crud
- 로그인
- spring boot
- Spring
- Angular
- 매핑
- Security
- 설정하기
- 하이버네이트
- jsp
- 설정
- WebMvc
- hibernate
- Validation
- one-to-many
- Spring Security
- 스프링부트
- MYSQL
- 스프링
- 외부파일
- RestTemplate
- form
- 자바
- Many-To-Many
- login
- 상속
- Rest
- one-to-one
- XML
- mapping