이 글과 HN 댓글들도 Big O Notation을 설명하고 실제 활용과 기술적 세부사항에 대해 논쟁하는 전통을 계속 이어가는 중임. 참고할 만한 예시로 이 해설글과 전문가 태도에 관한 글이 있음
저번 글 댓글을 보면 Pyon이라는 유저가 독설적이고 융통성 없는 태도를 보였음. 하지만 Ned의 반박도 썩 훌륭하진 않음. 기술적 세부내용을 정확히 설명하지 않고, 그냥 “특정 세부사항”이라고만 반복해서 돌려 말하는 느낌임. 왜 그의 비판이 단순한 딴지였는지도, 왜 굳이 내용 자체도 배척하는지도 아쉬움. Ned가 온라인에서의 소통과 공감 자체엔 옳은 방향성을 보여주긴 함. 그래도 교육자라면 왜 그 기술적 논점이 너무 세세하거나 딴지인지 한번은 짚어줬으면 좋겠음. Ned 스스로 “수십 년간 몰랐다“고만 하니, 그게 충분하지 않은 느낌임. 그리고 원 댓글 스레드를 다시 보니 실제로 Ned는 꽤 외교적이고 진지하게 논쟁을 했음. 그런데 왜 블로그 글에선 그 분석이 누락됐는지 의문임. 개인적으로 기술적 세부사항이 뭔지는 잘 모르겠는데, 한 번은 간단하게 요약 설명해줬으면 하는 마음임
나는 비판적 전문가에 가까움. 블로그에서 복잡한 주제를 가르치려는 시도를 보면 항상 실망하는 이유는, 대개 비전문가가 설명하면서 정확성을 놓친다는 점임. 그 결과 1) 부정확한 내용이 인터넷 여기저기로 복붙되고, 2) 독자들은 블로그 수준만 보고 더 안 배우려 하면서 무지를 강화하게 됨. 그리고 추가로, 페이지 레이아웃도 마음에 안 들었음. ADHD와 기억력이 떨어지는 내 경험상, 적절한 형식(소제목/굵게/구분색/불릿 등)으로 끊어줘야 따라갈 수 있는데, 이 글은 그냥 텍스트 벽처럼 느껴졌음. 요점 파악에 시간이 더 걸릴수록 집중을 잃게 됨. Simple Wikipedia Big O 설명이 훨씬 직설적임. 반면 정식 위키피디아 페이지는 수학이 갑자기 나와서, 직접 보면 Big O가 생각보다 훨씬 복잡한 주제임을 알게 되고 “단순화하는 건 오히려 안 좋을 수도 있겠다”는 결론에 이름
두 번째 링크는 Big-O에 관한 이야기가 아니고, 저런 태도를 본받을 필요는 없음
Ned가 며칠 전에 내게 이메일을 보내줬는데, 기분 좋게 나도 이런 논의에 기여하고 있음
이런 글들을 보면 진짜 교훈은 “틀리거나 오해의 소지가 있는 설명이 있으면 교정을 멈추라는 게 아니라, 온라인에서는 일부 ‘전문가’들이 단순히 논쟁에서 이기고자만 한다”는 점임. Pyon의 태도를 보면 상당히 공격적이고 인터넷 트롤 같았음. “그러니까 기술적 세부사항은 중요하지 않고 부정확해도 괜찮다”는 결론을 내려선 절대 안 됨
O(1)이 실제로는 해싱 함수를 이용하는데, 이는 단순하진 않지만 일정한 연산 소요가 발생함. 데이터가 아주 적으면 O(n^2)와 같은 최악의 알고리즘이 오히려 실제 시간 면에서 더 빠를 수 있음
맞는 말이지만 너무 크게 떠들진 않는 게 좋음. 실무에서 n^2면 컴퓨터가 멈춘다고 이해시키는 것만도 힘든 법임. 게다가 경우에 따라선 mod처럼 완벽한 해시함수도 쓸 수 있음
Big-O의 현대적 중요성이 예전만 못하다고 느낌. 요즘 하드웨어는 멀티스레드, 파이프라인, NUMA, 복잡한 캐싱 등으로 언제는 한 사이클 미만에도 끝나고 반대로 수백~수천 사이클이 걸리는 연산도 있음. innermost loop 횟수만으로 알고리즘을 설명하려 들면 오히려 현실을 왜곡하게 됨. 그리고 Big-O를 논할 땐 Big-Omega와 같은 다른 표기도 반드시 언급해야 함. (참고로 Big-O를 소재로 한 애니메이션도 재밌게 봤음)
Big-O 이론은 저런 장치 종속적 요소와 상관없이 연산량을 정의하려고 탄생한 개념임. 그런 의미에서 시대를 타지 않는 도구임. (괜찮은 발표자라면 대개 “C 같은 상수는 N이 작을 땐 매우 중요한 요소가 된다”고 반드시 언급해주기도 함)
진짜 흥미로운 건 양자계산에서 어떤 연산은 원자 수에 대해 O(n^7)로 증가하지만, 과학자들이 실제로 이 계산을 실행하는 걸 두려워하지 않는다는 점임. 왜냐면 N이 충분히 작고, 컴퓨터와 메모리는 계속 빨라지며, 결과값은 엄청난 가치가 있기 때문임. (내가 컴퓨터과학 전문가는 아니라 O() 표기법을 잘못 썼으면 양해 바람)
그냥 “n^7에 비례해 증가“라고 하면 됨. O(n^7)라고 하면 대부분 이해는 하는데, O는 수학적으로는 ‘상한’만 나타내므로 엄밀히 정확하진 않음. 정말 정확히 말하려면 Ω(n^7)처럼 쓰는 게 맞음
시각화가 정말 마음에 듦. 예전에 알고리즘 배웠던 입장에서도 시각적으로 보는 경험이 여전히 큰 도움이 됨
전기공학을 수강해서 그런지 Big O Notation이 언제나 뭔가 대충 건너뛰는 개념처럼 다뤄져 왔다고 느낌. 항상 당연히 아는 내용인 것처럼 취급되어서 정말 친절하게 설명하는 경우를 못 본 것 같음. 어느 정도 수준의 수학이나 컴공 과정에서 이 개념이 처음 소개되는지 궁금함
전산 전공 코스의 Discrete Math 시간에서 가장 체계적으로 Big-O를 배웠음
내 학교에선 Algorithm Analysis(필수과목)에서 Big-O와 여러 증명법을 가르쳤음. 다만 이 과목은 거의 3~4학년때 듣는 코스였고, 실제로는 이미 1학년 정도면 어느 정도 개념을 흡수했을 거라는 암묵적 전제가 있었음(아마도 주변에서 자연스럽게 배운다는 느낌)
수학적으로 함수 f(x)가 O(g(x))라는 건 f(x)/g(x)가 어떤 상수 C에 대해 “모든 x에 대해서 f(x)/g(x) < C”를 만족한다는 뜻임. 컴과에서는 f(x)가 특정 알고리즘의 연산 횟수와 같은 복잡성을 뜻하는 경우가 많음
Big-O Notation 설계는 여러 해석이 가능함. 예를 들어 어떤 알고리즘을 Turing Machine의 동작 스텝수로 정의하면, log 시간 알고리즘이란 게 있을 수 없고 O(log n)는 O(1)로 취급됨
전산 1학년 필수 과목에서 배웠음. 별거 없고, 입력 데이터가 많아질 때 연산량이 어떻게 늘어나는가만 서술하는 개념임. 겉보기엔 어려운데 실제론 아주 간단하고 명쾌함
동적 시각화가 이해에 엄청난 도움이 되었음. 이처럼 더 많은 레슨/자료를 만들어주길 바람
그 반응이 참 고맙고 기쁨
Big-O Notation 관련 스레드가 올라올 때마다 혹시 누가 이 개념이 애니메이션 The Big O와 어떻게 연결되는지 설명해주길 기대하게 됨. 아직도 그 애니 내용이 뭔지 잘 모르겠음
(맥주 4캔 벌컥벌컥)<p>좋아 들어봐. 그 애니는 Pacific Rim, Dark City, The Matrix 세 가지를 차례로 섞어놓은 것 같은 내용임
개인적으로 Big O Notation을 가장 효과적으로 이해하는 방법은 일상을 빗대어 연결해보는 것임
아름다운 자료라 생각함. 신호를 보내봤는데 잘 전달됐길 바라며, 괜히 도파민 한 스푼 얻은 느낌임
Hacker News 의견
이 글과 HN 댓글들도 Big O Notation을 설명하고 실제 활용과 기술적 세부사항에 대해 논쟁하는 전통을 계속 이어가는 중임. 참고할 만한 예시로 이 해설글과 전문가 태도에 관한 글이 있음
O(1)이 실제로는 해싱 함수를 이용하는데, 이는 단순하진 않지만 일정한 연산 소요가 발생함. 데이터가 아주 적으면 O(n^2)와 같은 최악의 알고리즘이 오히려 실제 시간 면에서 더 빠를 수 있음
Big-O의 현대적 중요성이 예전만 못하다고 느낌. 요즘 하드웨어는 멀티스레드, 파이프라인, NUMA, 복잡한 캐싱 등으로 언제는 한 사이클 미만에도 끝나고 반대로 수백~수천 사이클이 걸리는 연산도 있음. innermost loop 횟수만으로 알고리즘을 설명하려 들면 오히려 현실을 왜곡하게 됨. 그리고 Big-O를 논할 땐 Big-Omega와 같은 다른 표기도 반드시 언급해야 함. (참고로 Big-O를 소재로 한 애니메이션도 재밌게 봤음)
진짜 흥미로운 건 양자계산에서 어떤 연산은 원자 수에 대해 O(n^7)로 증가하지만, 과학자들이 실제로 이 계산을 실행하는 걸 두려워하지 않는다는 점임. 왜냐면 N이 충분히 작고, 컴퓨터와 메모리는 계속 빨라지며, 결과값은 엄청난 가치가 있기 때문임. (내가 컴퓨터과학 전문가는 아니라 O() 표기법을 잘못 썼으면 양해 바람)
시각화가 정말 마음에 듦. 예전에 알고리즘 배웠던 입장에서도 시각적으로 보는 경험이 여전히 큰 도움이 됨
전기공학을 수강해서 그런지 Big O Notation이 언제나 뭔가 대충 건너뛰는 개념처럼 다뤄져 왔다고 느낌. 항상 당연히 아는 내용인 것처럼 취급되어서 정말 친절하게 설명하는 경우를 못 본 것 같음. 어느 정도 수준의 수학이나 컴공 과정에서 이 개념이 처음 소개되는지 궁금함
동적 시각화가 이해에 엄청난 도움이 되었음. 이처럼 더 많은 레슨/자료를 만들어주길 바람
Big-O Notation 관련 스레드가 올라올 때마다 혹시 누가 이 개념이 애니메이션 The Big O와 어떻게 연결되는지 설명해주길 기대하게 됨. 아직도 그 애니 내용이 뭔지 잘 모르겠음
개인적으로 Big O Notation을 가장 효과적으로 이해하는 방법은 일상을 빗대어 연결해보는 것임
아름다운 자료라 생각함. 신호를 보내봤는데 잘 전달됐길 바라며, 괜히 도파민 한 스푼 얻은 느낌임