Skip to content
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

타입으로 견고하게 다형성으로 유연하게 5주차 - 하업서 #490

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

hemil0102
Copy link
Contributor

@hemil0102 hemil0102 commented Mar 6, 2025

흐우... 내용이 눈에 잘 안들어와서 5장은 한번 읽는 것으로 마무리합니다.
책의 내용은 기존에 알지 못했던 새로운 접근으로 분명 잘 활용한다면 도움될 부분도 있을거라 생각하고,
타입 검사기를 중점으로 소개되었지만, 어떤 타입을 감추거나 상황에 따라서 유리한 스킬?들도 소개되었고...
만화 내용은 약간 내용을 설명하기 위해 인위적이기는 했으나,
개발을 하다보면 비슷한 경우가 있을지 ... 의식적으로 이런 부분들을 활용해보려는 생각을 계속 해야 내것이 될 것 같습니다.
이 책을 아무 생각 없이 읽던 지인에게 경의를 표하며...
책은 아무래도 틈틈히 시간 날때마다 코드로 작성하지 못했던 부분을 다시 쳐보면서 2회차, 3회차까지는 정독해야 어느정도 마스터가 될 느낌이 듭니다.

마무리가 좀 미흡하지만, 미흡한대로 마무리를 합니다.
같이 5주 동안 고생하셨습니다.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @hemil0102, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

Summary of Changes

This pull request contains the author's notes and reflections on the 5th chapter of the book '타입으로 견고하게 다형성으로 유연하게' (Robust with Type, Flexible with Polymorphism). The author shares their understanding of the chapter, challenges faced while reading, and personal thoughts on the concepts discussed. The PR also removes the author's notes on Chapter 1 of the same book.

Highlights

  • Chapter 5 Summary: The author summarizes their understanding of Chapter 5, noting difficulties in grasping concepts like type classes and kinds without practical coding experience. They also reflect on the differences between Swift (their primary language) and other languages in terms of type system features.
  • Personal Reflections: The author shares personal thoughts on the book's content, including the value of understanding type checkers and the trade-offs between language simplicity and feature richness. They also pose questions about the practical application of advanced type-related skills in real-world projects.
  • Chapter 1 Removal: The pull request removes the author's notes and reflections on Chapter 1 of the book.

Changelog

  • 2025/RobustWithTypeFlexibleWithPolymorphism/hemil0102/5장.md
    • Added a summary and reflections on Chapter 5 of the book '타입으로 견고하게 다형성으로 유연하게'.
    • Included personal thoughts on the chapter's content and questions about practical applications of the concepts.
  • 2025/RobustWithTypeFlexibleWithPolymorphism/hemil0102/Chatepr1.md
    • Removed the author's notes and reflections on Chapter 1 of the book '타입으로 견고하게 다형성으로 유연하게'.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.


In realms of code, where types reside,
A book's wisdom, a helpful guide.
From chapters read and lessons learned,
A coder's journey, knowledge earned.
Though challenges rise and doubts may loom,
The quest for understanding will bloom.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

The pull request includes notes on Chapter 5 of the book, reflecting on the challenges and insights gained. The author also poses some thought-provoking questions related to language features and type systems. Overall, the notes provide a good summary of the chapter's content and the author's reflections.

Merge Readiness

The changes are primarily notes and reflections on the book chapter. There are no specific code changes or issues that would block merging. I am unable to directly approve the pull request, and users should have others review and approve this code before merging.

Copy link

github-actions bot commented Mar 6, 2025

우측에 있는 Projects, Milestone, Development를 확인 후 할당 해주세요~! 🙇

Copy link
Member

@jongfeel jongfeel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

다른 언어의 이런 다양한 스킬들이 없어도 개발이 되는거보면 굳이 이렇게 까지 해야하나 싶기도한데, 그래서 논제는....

# 논제 #
지금까지 개발을 하면서 책에서 소개한 다양한 타입과 연관된 스킬을 활용해서 프로젝트를 일부러 만들어본 경험이 있는가? 또는 이 책에서 소개한 스킬들을 실제로 정말 잘 사용하는 개발자나 그렇게 만들어진 프로젝트를 접해본 적이 있는가? 책에 소개된 내용 중에서 가장 마음에 들었던 부분을 한가지씩 이야기해보기!
Copy link
Member

@jongfeel jongfeel Mar 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋은 기법이라고 여겨지거나 알려진 코드는 잘 작성하는 개발자는 여럿 봐왔지만
이런 기법을 써야 하는 이유에 대해서 (특히 가독성 부분에서) 설명이 잘 안되는 부분도 많이 봐 왔습니다.

그래서 스킬적인 부분에 대해 잘 쓰냐 못 쓰냐는 중요한 기준은 아닌 듯 하고
이해를 할 수 있는 만큼의 타당성 있는 설명이 가능한 코드, 가독성 있는 코드를 작성하는게 더 좋다고 봅니다.

제 소감에도 적었지만 이 책은 프로그래밍 언어의 학문적인 접근이므로 실용적인 측면에서는 쓸 수 있는게 없다 라고 생각할 수도 있습니다.
다만 저는 너무 실용적인 부분만 따라가다 보면 동작 원리, 개념, 타당성 있는 근거 제시 부분에서 취약하다고 보기 떄문에
학문적인 접근을 하는 책에서 너무 실용적인걸 가져가려고 하는 건 조심해야 할 필요가 느껴집니다.
(극단적인 예로, 컴퓨터 공학과에서는 컴퓨터 사용하다 생기는 문제 해결 혹은 코딩 잘하는 방법 배우는거 아니냐? 정도의 질문이 있을 것 같습니다.)
반대로 실용적인 책에서는 Github repository link를 알려주면 되는데 종이에 인쇄된 수십 페이지에 달하는 코드가 낭비라고 여겨질 수도 있다고 봅니다.

프로젝트에서는 기술적인 걸 지향하는 건 오히려 오버엔지니어링 혹은 불필요한 코드 생산일 수도 있기 때문에
요구사항에 부합하는 가독성 있는 간결한 코드가 낫지, 일부러? 스킬과 기교를 부린 코드 작성은 하면 안될 것 같습니다.

저는 저자의 마지막 감사의 글이 제일 마음에 들었는데
책을 쓰게 된 이유와 그 과정을 설명해 주는게 납득이 되었고 (프로그래밍 언어에 대한 학문적인 접근)
상대적으로 매번 같은 내용의 책을 매년 업데이트된 내용만 추가해서 비싸게 파는 책 보다는 훨씬 낫다는 생각도 들었습니다.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

지금까지 개발을 하면서 책에서 소개한 다양한 타입과 연관된 스킬을 활용해서 프로젝트를 일부러 만들어본 경험이 있는가?

일부 있는 것들도 있고, 아닌 것들도 있네요 저 개인적으로는 필요에 의한 학습을 추구하다보니, 필요할 것 같다라고 판단된 부분에 한해서, 코드도 직접 작성해보고 테스트 해봤습니다

또는 이 책에서 소개한 스킬들을 실제로 정말 잘 사용하는 개발자나 그렇게 만들어진 프로젝트를 접해본 적이 있는가?

책에 나온 모든 것을 다 잘 사용하는 개발자는 저자처럼 연구실에서 타입과 다형성을 연구하는 사람 아니면, 거의 없지 않을까 생각되네요. 잘 사용한다는게 많이 알고 사용하다라는 관점에서보자면, 제 개인적으로, 개발자의 역량이 얼마나 아느냐가 중요하다기보다, 얼마나 문제해결을 잘하느냐 에 초점이 맞춰져있다보니, 많이 아는게 그렇게 중요한 것 같진 않습니다 그걸 어떻게 문제 해결에 활용하느냐가 더 중요한거 같구요


다른 언어의 이런 다양한 스킬들이 없어도 개발이 되는거보면 굳이 이렇게 까지 해야하나 싶기도한데, 그래서 논제는....

# 논제 #
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 책에서 주어지는 언어마다의 예제말고는 접하기 어려운 것 같습니다. (4장 5장) 이해하기 어려웠던 부분인 카인드같은 개념은 처음보고 사용되는 코드 자체가 어색했던 것 같습니다.

다만 논의 내용이 책 전반에 대해 말한다면 서브타입이나 제네릭은 충분히 활용할만한 내용같다고 생각됩니다. 아마 제가 정적타입 언어만 사용해서 익숙한 부분도 있었던게 아닌가? 라는 생각도 듭니다.

반대로 말씀해주신대로 제네릭과 서브타입을 섞어서 쓰거나 함수형 언어의 특성들은 다른 이해하기 어렵고 사용하기도 어려울 것 같습니다.

아마 그 이유는 지금 가진 기술과 도구만으로 충분히 애플리케이션을 제작할 수 있기 때문이라고 생각됩니다.

저는 타입클래스가 가장 신기했고 유용하다고 생각했습니다. 약간 인터페이스 같이 사용가능하지만 제약이 없어서 매우 유연한 느낌을 받았습니다.

다른 언어의 이런 다양한 스킬들이 없어도 개발이 되는거보면 굳이 이렇게 까지 해야하나 싶기도한데, 그래서 논제는....

# 논제 #
지금까지 개발을 하면서 책에서 소개한 다양한 타입과 연관된 스킬을 활용해서 프로젝트를 일부러 만들어본 경험이 있는가? 또는 이 책에서 소개한 스킬들을 실제로 정말 잘 사용하는 개발자나 그렇게 만들어진 프로젝트를 접해본 적이 있는가? 책에 소개된 내용 중에서 가장 마음에 들었던 부분을 한가지씩 이야기해보기!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

책에서 가장 마음에 들었던 부분은 다양한 언어를 이용해서 설명해준다는 점이 좋았습니다. 글로만 이해하기 어려웠다가 예시 코드가 있어서 끝까지 책을 읽을 수 있었습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2025 타입으로 견고하게 다형성으로 유연하게 탄탄한 개발을 위한 씨줄과 날줄
Projects
Status: In review
5 participants