Coding/Tip2023. 3. 2. 09:56

요즘 핫 한 ChatGPT를 유료 결제 하고, 이것 저것 질문을 해보았습니다.

Q: 코딩 잘 하는 법

A: 코딩을 잘 하기 위해서는 다음과 같은 방법들이 도움이 될 수 있습니다.

  1. 기본기 탄탄하게 다지기: 코딩을 잘 하기 위해서는 프로그래밍 언어의 기본 문법과 알고리즘, 자료구조 등의 기본 개념을 잘 이해하고 있어야 합니다. 이를 위해서는 기초적인 학습과 지속적인 실습이 필요합니다.
  2. 문제 해결 능력 향상: 좋은 프로그래머는 문제 해결 능력이 뛰어납니다. 프로그램 개발 과정에서 생기는 문제들을 차분히 분석하고 해결하는 능력이 필요합니다. 이를 위해 문제를 여러 각도에서 바라보고, 참조 자료와 예제들을 활용하여 문제 해결 능력을 향상시키세요.
  3. 지속적인 학습과 성장: 코딩은 끊임없는 학습과 성장이 필요한 분야입니다. 새로운 기술과 프로그래밍 언어에 대한 지식을 학습하며, 개발 프로세스를 개선하고 최신 트렌드를 따라가도록 노력해야 합니다.
  4. 협업 능력 강화: 대부분의 프로그래밍 프로젝트는 팀으로 수행됩니다. 따라서 협업 능력이 중요합니다. 다른 사람들의 코드를 이해하고, 이를 기반으로 자신의 코드를 작성하는 능력이 필요합니다.
  5. 자료와 도구 활용: 코딩을 잘 하기 위해서는 자료와 도구를 적극적으로 활용해야 합니다. 각 언어나 기술에 적합한 자료와 도구들을 찾아서 활용하는 것이 중요합니다. 여기에는 다양한 에디터, IDE, 디버깅 도구, 라이브러리 등이 포함됩니다.
  6. 문서화 작성: 프로그램 개발 과정에서는 많은 코드가 작성됩니다. 그 중에서도 문서화 작성은 매우 중요한 작업 중 하나입니다. 코드의 가독성과 유지 보수성을 높이기 위해, 주석 작성 및 문서화를 통해 코드를 설명하는 것이 좋습니다.
  7. 문제 해결 경험 쌓기: 코딩을 잘 하려면 많은 문제를 해결하는 경험이 필요합니다. 여러 가지 프로젝트를 진행하거나 온라인 코딩 대회 등을

-> 한글의 경우, 너무 길면 결과가 짤립니다.

 

A: 영문 버전

To become good at coding, here are some ways you can improve:

  1. Build a strong foundation: To become good at coding, it's important to have a strong foundation in programming languages, algorithms, and data structures. This can be achieved through basic learning and continuous practice.
  2. Improve problem-solving skills: Good programmers have excellent problem-solving skills. To develop these skills, you need to analyze problems carefully and develop logical approaches to solve them. Practice by trying to solve coding challenges and puzzles.
  3. Continuous learning and growth: Coding is a constantly evolving field, and to stay on top of it, you need to keep learning and growing. Stay up to date with the latest trends and technologies, and learn new programming languages.
  4. Develop teamwork skills: Most coding projects are done in teams, so it's essential to have teamwork skills. Be open to feedback, communicate effectively with others, and learn to work collaboratively.
  5. Use resources and tools: To become good at coding, you need to use resources and tools effectively. Find the right tools and resources for the programming language and technology you're working with.
  6. Write documentation: When you're coding, it's important to write documentation to make your code readable and understandable for others. Commenting your code and writing documentation will help you and others maintain and understand the code in the future.
  7. Gain experience in problem-solving: To become good at coding, it's important to gain experience in solving a variety of problems. You can do this by working on multiple projects, participating in online coding challenges, and learning from experienced developers.

Overall, becoming good at coding takes time and practice, but it's possible with dedication and hard work.

 

 

 

'Coding > Tip' 카테고리의 다른 글

[ChatGPT에게 묻다] 자료 정리 방법  (0) 2023.03.02
[ChatGPT에게 묻다] 문서화 잘 하는 방법  (0) 2023.03.02
[DOSBOX] 창 크기 조절 방법  (0) 2023.01.27
Posted by chobocho
Coding/Tip2023. 3. 2. 09:53

요즘 핫 한 ChatGPT를 유료 결제 하고, 이것 저것 질문을 해보았습니다.

Q: 문서화 잘 하는 방법

A: 

코드 문서화는 코드를 이해하고 유지보수하는 데 매우 중요합니다. 이를 위해 문서화는 자세하게 작성하는 것이 좋습니다. 다음은 코드 문서화를 잘하는 방법입니다.

주석 사용: 코드의 각 섹션마다 주석을 사용해 설명을 추가하세요. 주석은 코드를 이해하는 데 큰 도움이 됩니다. 변수의 용도, 코드의 목적, 함수의 입력과 출력 등을 설명하세요.

함수 및 클래스 문서화: 함수나 클래스는 문서화가 특히 중요합니다. 함수나 클래스의 기능, 인수, 반환 값 등을 자세하게 문서화하세요. 이를 위해서는 함수 또는 클래스 정의 바로 아래에 docstring을 작성하는 것이 좋습니다.

코드의 가독성 높이기: 코드의 가독성을 높이는 것이 문서화를 하는 데 중요합니다. 변수, 함수, 클래스의 이름은 의미가 명확하도록 짓고, 들여쓰기와 줄 간격을 일관성 있게 유지하세요.

라이브러리 문서 참조: 라이브러리에서 제공하는 문서를 참조하여 코드를 작성하세요. 라이브러리의 기능과 사용 방법을 잘 이해하면, 코드를 더 쉽게 문서화할 수 있습니다.

예제 코드 추가: 코드 문서화에 예제 코드를 추가하면, 사용자가 코드를 이해하는 데 더 도움이 됩니다. 예제 코드를 통해 코드의 사용법과 기능을 쉽게 이해할 수 있습니다.

문서화 도구 사용: 문서화 도구를 사용하면 자동으로 문서화를 생성할 수 있습니다. 대표적인 도구로는 Sphinx, Doxygen, Javadoc 등이 있습니다. 이러한 도구를 사용하면 문서화의 일관성과 완성도를 높일 수 있습니다.

코드를 작성하면서 함께 문서화를 작성하는 것이 좋습니다. 문서화를 작성할 때는, 코드를 작성하는 것만큼이나 신중하고, 자세하게 작성하는 것이 좋습니다.

'Coding > Tip' 카테고리의 다른 글

[ChatGPT에게 묻다] 코딩 잘 하는 법  (0) 2023.03.02
[DOSBOX] 창 크기 조절 방법  (0) 2023.01.27
[Sheet] 구글 스프레드 시트 단축키  (0) 2021.10.16
Posted by chobocho
Coding/CPP 삽질기2023. 2. 26. 20:08

요즘 핫 한 ChatGPT를 유료 결제 하고, 이것 저것 질문을 해보았습니다.

Q) please explain about the John Carmack's q_sqrt function as Korean

A) 존 카맥의 q_sqrt 함수는 양의 부동 소수점 수에 대한 빠른 제곱근 근사치 함수입니다. 이 함수는 제한된 범위의 입력에 대해 빠르고 정확하게 작동하도록 설계되었습니다.

다음은 q_sqrt 함수의 C 코드입니다:

float q_sqrt(float x) {
    int i = *(int *)&x;
    i = 0x1fbd1df5 + (i >> 1);
    return *(float *)&i;
}

q_sqrt 함수는 x라는 하나의 인자를 취합니다. 이 인자는 우리가 제곱근을 계산하려는 양의 부동 소수점 수입니다. 함수는 x의 근삿값인 제곱근을 반환합니다.

함수는 먼저 포인터 캐스트를 사용하여 float 인자를 int로 변환합니다. 그런 다음 부동 소수점 수의 정수 표현은 하나의 비트만큼 오른쪽으로 시프트됩니다.

그 다음 0x1fbd1df5라는 정수 값이 오른쪽으로 시프트된 정수 값에 더해집니다. 이 값은 제곱근 함수의 근사치를 제한된 범위의 입력에 대해 얻기 위해 선택된 매직 상수입니다. 덧셈의 결과는 포인터 캐스트를 사용하여 다시 float로 변환되고 반환됩니다.

q_sqrt 함수는 [0, 2^30] 범위의 입력에 대해 빠르고 정확합니다. 그러나 입력이 커질수록 정확도가 낮아집니다. 이 함수는 표준 라이브러리의 sqrt 함수보다 정확도가 떨어지지만 더 빠르며 근사 오차는 여전히 많은 응용 프로그램에 충분히 작습니다.


  ChatGPT 가 알려준 코드는 매우 잘 돌아가는데, 코드가 이해가 가지 않아서, 이리 저리 구글링을 해보았다.

 먼저 그 유명한, 존 카맥의 고속 역 제곱근을 코드를 보고,  

https://ko.wikipedia.org/wiki/%EA%B3%A0%EC%86%8D_%EC%97%AD_%EC%A0%9C%EA%B3%B1%EA%B7%BC

 

고속 역 제곱근 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 고속 역 제곱근(高速逆-根, fast inverse square root)은 때때로 Fast InvSqrt()나 16진수 0x5f3759df라고도 하는, IEEE 754 부동소수점 체계의 32비트 실수에 대한 제곱근의 역

ko.wikipedia.org

아래와 같은 방식으로  sqrt(x)를 구할 수 있다는 것을 알 수 있다.

그래서 아래와 같은 코드가 나오게 됩니다.

 i = 0x1fbd1df5 + (i >> 1);

그럼 이 코드를 실행 보면,

#include <iostream>

float q_sqrt(float x) {
    int i = *(int *)&x;
    i = 0x1fbd1df5 + (i >> 1);
    return *(float *)&i;
}

float q_sqrt_new_magic_number(float x) {
    int i = *(int *)&x;
    i = 0x1fbd3ee7 + (i >> 1);
    return *(float *)&i;
}


int main(int argc, char **argv) {
    std::cout << q_sqrt(9) << std::endl;
    std::cout << q_sqrt_new_magic_number(9) << std::endl;
    return 0;
}

존 카맥 형님의 매직 넘버를 사용한게 오차률이 낮습니다. ㅠㅜ

결론:   ChatGPT가 똑똑 합니다.


 

 

'Coding > CPP 삽질기' 카테고리의 다른 글

프로그래머스 사이트 기초 문제 풀기  (0) 2023.06.07
별 그리기  (0) 2021.06.08
Stack과 Heap  (0) 2021.02.25
Posted by chobocho
My Life/version 23 (2023)2023. 2. 20. 01:11

요즘 핫 한 ChatGPT를 유료 결제 하고, 이것 저것 질문을 해보았다.


현명한 사람들은 다음과 같은 특징이 있습니다.

  1. 자기 관리: 현명한 사람들은 자신의 감정과 행동을 잘 관리합니다. 자신의 감정을 조절하고 행동을 제어하여 불필요한 문제를 방지합니다.
  2. 학습 능력: 현명한 사람들은 지속적으로 학습하고 성장합니다. 새로운 지식을 습득하고, 경험에서 배운 교훈을 활용하여 문제를 해결합니다.
  3. 윤리적 행동: 현명한 사람들은 윤리적인 행동을 지향합니다. 다른 사람을 존중하고, 솔직하고 정직한 태도를 유지합니다.
  4. 전략적 사고: 현명한 사람들은 전략적으로 사고합니다. 어떤 문제를 해결하거나 목표를 달성하기 위해 체계적인 계획과 방법을 사용합니다.
  5. 자기 조절력: 현명한 사람들은 자기 조절력이 뛰어납니다. 충동적인 결정을 하지 않으며, 감정에 휩쓸리지 않고 논리적인 판단을 합니다.
  6. 문제 해결 능력: 현명한 사람들은 문제 해결 능력이 뛰어납니다. 문제를 깊이 분석하고, 다양한 해결 방안을 모색하며, 상황에 맞는 적절한 대응을 합니다.
  7. 타인에 대한 배려: 현명한 사람들은 타인에 대한 배려가 있습니다. 다른 사람의 입장을 이해하고 공감하며, 대인관계에서 상호 존중과 소통을 중요시합니다.
  8. 유연한 태도: 현명한 사람들은 유연한 태도를 갖습니다. 새로운 아이디어와 관점을 받아들이며, 적극적으로 변화를 추구합니다.

이러한 특징을 갖춘 현명한 사람들은 다양한 상황에서 성공적인 인생을 살아갈 수 있으며, 다른 사람들의 존경을 받기도 합니다.

 

Posted by chobocho