-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RobustWithTypeFlexibleWithPolymorphism 1주차 #439
Conversation
우측에 있는 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제가 아직 책을 읽는 중이긴 하지만 해당 논의 내용에 대해 책을 빠르게 보면서 리뷰를 해 봤습니다.
|
||
# 논의 내용 | ||
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
동적 언어
장점: 자바스크립트 위주로 썼고 파이썬도 조금 사용 했었습니다. 언어 특징으로 우선 빠르게 작성하고 결과를 런타임 상에서 확인해 볼 수 있었다는 점이고, 익숙해지면 나름 일반적인 비즈니스 로직 처리 정도는 어렵지 않다는 걸 느낄 수도 있었습니다.
단점: 작고 빠른 프로젝트의 반대인 크고 느려지는 프로젝트의 경우 폴더 구조에 따른 스크립트 계층과 export를 잘 해줘야 한다는 것 부터 시작해 느린걸 느리지 않게 하려면 작은 컴포넌트 구조를 잘 생각해야 하는 게 그 다음 넘어야 할 단점인 것 같습니다. 정적 타임 언어는 여기 얘기한 단점이 모두 컴파일 타임에 해결 되므로 동적 언어에서는 단점이라고 보여집니다.
정적 언어
단점: 실행 하기 전 컴파일이라는 단계를 거쳐야 하고 실행 할 때는 또 런타임이라는 시간을 버텨야 하는 게 동적 언어에서는 있을 수 없는 시간 낭비라고 생각할 수 있을 것 같습니다.
장점: 문법 오류는 사전에 컴파일 타임에서 체크가 가능해지는게 장점인데 익숙해지면 장점인지 잘 모르는 것도 있는 것 같습니다. 또 다른 장점으로 무거운 프로그램도 런타임 시에는 어느 정도의 성능을 기대해 볼 수 있는 것도 장점입니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
동적 언어의 장점
약 1년 전까지는 Python으로 코딩 테스트를 준비했었고, 최근에는 Javascript, Node.js로 작은 과제 프로젝트를 진행해 보았던 경험이 있습니다. 이때 로직을 짜면서 일일이 타입을 맞춰줄 필요가 없기 때문에 비즈니스 로직에 집중하여 빠르게 작성할 수 있었던 기억이 있습니다.
동적 언어의 단점
런타임으로 가는 것은 빠르지만, 런타임 도중에 에러가 생각보다 많이 잡히는 단점이 있었습니다. 또한 제가 정적 언어를 주로 써서 그런지 모르겠지만, 특히 처음 보는 코드를 보면 각 변수들이 정확히 어떤 타입인지 직접 기억해야 한다는 것이 불편했습니다. 요즘 IDE는 옆에 글씨로 추론해서 보여줄 때도 있지만 코드가 아닌 무언가가 옆에 있는 것 자체도 저에게는 불편한 편입니다.
정적 언어의 장점
타입 오류에 대한 버그가 온전히 사라진다는 보장이 정말 크다고 생각합니다. 이것으로 로직에 더 집중할 수 있어 초반부터 더욱 견고한 서비스를 만들수 있는 기회가 생기는 것 같습니다.
정적 언어의 단점
가끔 타입 추론에서 나오는 warning들이 생각보다 귀찮고 시간을 잡아먹는 상황이 생기는 것 같습니다(Java).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
동적 언어
이직을 준비하면서 코딩테스트 준비를 한 적이 있었습니다. 이 때 주 사용 언어인 C#으로 할까 하다가
Python으로 준비해보자 하여 해당 언어를 사용하였습니다.
장점: 동적언어로 코딩테스트 문제들을 해결해 나갈때 느꼈던 점은 빠르게 문제해결에 집중할 수 있다는 점이 좋았습니다. 타입을 꼼꼼히 맞춰 줄 필요가 없다는 점이 큰 장점으로 느껴졌습니다.
단점: 런타임 시 타입을 정해준 다는 것은 그만큼 작성자가 해당 타입에 대한 꼼꼼한 책임을 져야 한다고 생각이 들었습니다.
정적언어
장점: 컴파일 시점의 타입검사가 되기 때문에 런타임에 발생할 에러를 줄여줍니다.
단점: 확실히 동적언어인 Python과 비교했을때 코드 작성 시간이 더 걸립니다. 타입 작성을 명시적으로 해 주어야 하기 때문에 반복적인 코드 작성도 많아질 수 있습니다. 원래는 타입추론을 사용하지 않았는데 정적언어를 지속적으로 사용하다 보니 반복된 타입 작성을 줄일 수 있는 var를 사용하는 경우가 최근에 늘었습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
동적 언어
장점: 동적 언어를 사용해 본 경험으로는 학부생 때 파이썬을 사용해봤습니다. 확실히 타입 표시가 생략되어 있어 사용하기에도 유연했고 빠르게 구현에 집중할 수 있었습니다.
단점: 타입표시가 생략되어 있어 이것이 다시 불편하게 작용할 때가 있습니다. 어떤 타입으로 사용되는지 확인하고 싶은 경우 직접 확인해보거나 유추를 거쳐야 하는 것이 불편하게 느껴지기도 했습니다.
정적 언어
장점: 프로그램의 모든 타입오류를 찾을 수 있어 타입 안전성을 보장할 수 있다는 점이 가장 큰 장점이라고 생각합니다.
단점: 지속적인 타입 표시로 인하여 코드가 장황해질 수 있다는 점이 단점이라고 생각됩니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
정적 타입 언어는 Java, C++를 사용해 봤는데, 컴파일 시 타입 체크를 통해 퍼포먼스와 가독성을 높이지만, 컴파일 과정이 복잡하고 개발 속도가 느릴 수 있습니다.
동적 타입 언어로는 Python을 주로 사용했습니다. 빠른 프로토타이핑에 유리하지만, 대규모 프로젝트나 협업 시 코드 유지보수가 어렵습니다.
# 논의 내용 | ||
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 | ||
2. 정적 타입 언어를 현업에서 사용한다면, 타입 추론을 어떻게 활용하고 있는지, 어떻게 생각하는지 얘기해보아요 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
정적 타입 언어라고 해도 reflection 기능이 이미 있는 자바나 C# 같은 언어는 IDE에 reflectiion 기능이 탑재되서
개발할 때 거의 타입에 대해 헷갈리게 작성하거나 모르는 타입으로 캐스팅을 하는 일은 거의 없다고 보는게 맞을 것 같습니다.
오히려 IDE가 정확한 타입을 쓰라고 하기 보다는 var와 같은 타입 추론형을 쓰도록 추천해 주기도 합니다. (JetBrain Rider 툴의 경우가 그래서 그 추천 기능을 빼고 씁니다)
만약 IDE 없이 한다고 하면, 개발자의 타입에 대한 체크 및 캐스팅 시 컴파일 오류에 대해 확인하기 위해 매우 높은 집중력 혹은 귀찮음을 요구하게 될 것 같네요.
그리고 중요한 문제로 타입 추론 문법을 쓴다면 코드 작성할 때는 좋지만 결국 가독성, 유지 보수성으로 이어지는 미래를 예측해 봤을 때는 타입 추론형 보다는 본래의 타입으로 쓰는 것도 좋다는 생각입니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저는 자바를 사용하면서 var
키워드는 쓰지 않는 편입니다.
아직은 제 기준에서 해당 키워드가 크게 도움이 되는지 와닿지는 않아서인 것 같습니다.
그래도 이외에도 제네릭 등에서 사용되는 것은 꽤나 편하기 때문에 모든 타입 추론이 나쁘다고 생각하지는 않습니다.
This comment was marked as duplicate.
This comment was marked as duplicate.
Sorry, something went wrong.
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 | ||
2. 정적 타입 언어를 현업에서 사용한다면, 타입 추론을 어떻게 활용하고 있는지, 어떻게 생각하는지 얘기해보아요 | ||
3. 책 내용(57page) 중에, `널을 자유롭게 사용하고 싶다면 코틀린 대신 자바를 선택하는 게 나을 수 있다` 라는 말에 공감하면서 읽었는지 그렇지 않았는지 궁금하네요 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저는 언어의 발전에 따라 문법적으로 지원해 주는 방향은 좋다고 보는 입장이라
하지만 널 문제 때문에 언어를 선택적으로 바꾸기 보다는
언어의 문법적 지원 범위와 특징에 맞게 회사의 팀에서 code style을 맞춰 나가는 게 더 좋다고 봅니다.
그래서 많이 공감하지는 못했는데, java 언어도 openjdk 스펙에 null 체크가 최근에 논의되었던 걸 봐서는
문법적으로 사용하고 싶은 사람이 있다는 추측을 해볼 수 있을 것 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코틀린을 사용해 본 적은 없어서 아직 비교해보기는 어려운 것 같습니다.
저에게는 아직은 null을 자유롭게, 잘 사용하는 것이 어떤 것인지 명확하게 느껴지지 않습니다.
안녕하세요! 독후감 잘 읽었습니다.
처음에 문법을 배울 때는 이미 데이터가 있는걸 알고 있는데도 불구하고 굳이 nil 체크를 위해 옵셔너를 사용해야하나 싶었지만, |
|
||
# 논의 내용 | ||
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-
동적언어
저는 대학생 때 과제로 파이썬을 배우고 영상처리 과제를 제출했었습니다. 당시 자바와 파이썬을 동시에 배웠던 시기라 확연하게 동적, 정적 언어의 차이를 경험했습니다. 저에게는 파이썬은 타입 선언 없이 값에 따라 변화되는 점이 이상하게도 불편했습니다. 반대로 이런 특징이 어떤 값을 넣는지에 따라 선언 없이 사용하는 것을 장점으로 생각하는 분들도 계실 것 같습니다.ㅎㅎ -
정적언어
정적 언어는 실행 전에 타입에 대해 안정성을 확인 하고 실행할 수 있다는 점이 큰 장점인 것 같습니다.
하지만 코드를 조금이라도 바꾸면 한번 더 타입 검사가 들어가기 때문에 프로젝트가 큰 단위로 되어있고 개발환경이 좋지 않다면 컴파일 시간이 정말 오래걸릴 수 있다는 점이 단점이라고 생각합니다.
# 논의 내용 | ||
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 | ||
2. 정적 타입 언어를 현업에서 사용한다면, 타입 추론을 어떻게 활용하고 있는지, 어떻게 생각하는지 얘기해보아요 |
This comment was marked as duplicate.
This comment was marked as duplicate.
Sorry, something went wrong.
|
||
# 논의 내용 | ||
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
동적 언어
이직을 준비하면서 코딩테스트 준비를 한 적이 있었습니다. 이 때 주 사용 언어인 C#으로 할까 하다가
Python으로 준비해보자 하여 해당 언어를 사용하였습니다.
장점: 동적언어로 코딩테스트 문제들을 해결해 나갈때 느꼈던 점은 빠르게 문제해결에 집중할 수 있다는 점이 좋았습니다. 타입을 꼼꼼히 맞춰 줄 필요가 없다는 점이 큰 장점으로 느껴졌습니다.
단점: 런타임 시 타입을 정해준 다는 것은 그만큼 작성자가 해당 타입에 대한 꼼꼼한 책임을 져야 한다고 생각이 들었습니다.
정적언어
장점: 컴파일 시점의 타입검사가 되기 때문에 런타임에 발생할 에러를 줄여줍니다.
단점: 확실히 동적언어인 Python과 비교했을때 코드 작성 시간이 더 걸립니다. 타입 작성을 명시적으로 해 주어야 하기 때문에 반복적인 코드 작성도 많아질 수 있습니다. 원래는 타입추론을 사용하지 않았는데 정적언어를 지속적으로 사용하다 보니 반복된 타입 작성을 줄일 수 있는 var를 사용하는 경우가 최근에 늘었습니다.
|
||
# 논의 내용 | ||
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저는 한 가지 언어만 계속 사용해와서 사실 장단점을 이야기하기 어려운 것 같습니다. 명확하게 장단점을 이야기하려면 비교가 되어야 하는데, 동적 언어를 그만큼 오래 사용해본 경험이 없어서 장단점을 말하기 어렵네요.. 장점이라 생각한 것이 단점일 수 있겠다는 생각은 듭니다
|
||
# 논의 내용 | ||
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
동적 언어
장점: 동적 언어를 사용해 본 경험으로는 학부생 때 파이썬을 사용해봤습니다. 확실히 타입 표시가 생략되어 있어 사용하기에도 유연했고 빠르게 구현에 집중할 수 있었습니다.
단점: 타입표시가 생략되어 있어 이것이 다시 불편하게 작용할 때가 있습니다. 어떤 타입으로 사용되는지 확인하고 싶은 경우 직접 확인해보거나 유추를 거쳐야 하는 것이 불편하게 느껴지기도 했습니다.
정적 언어
장점: 프로그램의 모든 타입오류를 찾을 수 있어 타입 안전성을 보장할 수 있다는 점이 가장 큰 장점이라고 생각합니다.
단점: 지속적인 타입 표시로 인하여 코드가 장황해질 수 있다는 점이 단점이라고 생각됩니다.
|
||
# 논의 내용 | ||
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
정적 타입 언어는 Java, C++를 사용해 봤는데, 컴파일 시 타입 체크를 통해 퍼포먼스와 가독성을 높이지만, 컴파일 과정이 복잡하고 개발 속도가 느릴 수 있습니다.
동적 타입 언어로는 Python을 주로 사용했습니다. 빠른 프로토타이핑에 유리하지만, 대규모 프로젝트나 협업 시 코드 유지보수가 어렵습니다.
# 논의 내용 | ||
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 | ||
2. 정적 타입 언어를 현업에서 사용한다면, 타입 추론을 어떻게 활용하고 있는지, 어떻게 생각하는지 얘기해보아요 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
정적 타입 언어에서 null safety 기능은 변수에 null 값이 할당되는 것을 방지하여 프로그램의 안정성을 크게 향상시킵니다. 컴파일러가 null 값에 대한 오류를 사전에 검출하여 개발자가 미처 파악하지 못한 문제를 해결해 주는데 저는 이게 가장 기본적이지만 유용한 기능이라 생각합니다.
|
||
1. 동적 타입 언어와 정적 타입 언어를 사용해본 경험이 있다면, 어떤 장단점이 있었는지 얘기해보아요 | ||
2. 정적 타입 언어를 현업에서 사용한다면, 타입 추론을 어떻게 활용하고 있는지, 어떻게 생각하는지 얘기해보아요 | ||
3. 책 내용(57page) 중에, `널을 자유롭게 사용하고 싶다면 코틀린 대신 자바를 선택하는 게 나을 수 있다` 라는 말에 공감하면서 읽었는지 그렇지 않았는지 궁금하네요 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저는 공감이 되지 않았습니다. 널을 자유롭게 사용하고 싶다면 Python 같은 동적 언어가 낫지 않을까 생각이 듭니다. 소수의 performance와 관련된 코드라던가 reflection 같이 low-level 기술을 이용해 코드를 간결하게 하거나, 추가로 해택을 주는 게 아니면, 오류로 프로그램에서 문제가 발생하거나, null을 따로 처리해야 하는 데에서 오는 overhead가 더 클 거라 예상합니다.
RobustWithTypeFlexibleWithPolymorphism 1주차 챕터 1 읽고, 정리 하였습니다