- 질문 게시판입니다.
Date 15/06/07 15:52:08
Name   ArcanumToss
Subject   버그없는 프로그래밍이 가능할까요?
만일 인공지능에게 프로그래밍을 학습시켜서 논리적 오류가 없는 프로그래밍을 하는 것이 가능해진다면 어떨까 하는 생각을 하다가 갑자기 궁금해지는 게 있네요.
프로그래밍을 하다 보면 항상 버그는 그림자처럼 따라다닙니다.
그런데 가만 생각해 보니 버그가 꼭 실수를 했기 때문에 발생하는 문제일까 하는 생각이 들더군요.
프로그래밍 기법 자체에 뭔가 빈틈이 있을 수도 있고 컴파일러 자체에 문제가 있을 수도 있지 않을까 하는 생각인데 제가 전공자가 아니다 보니 판단할 수가 없어 질문을 올려봅니다.
프로그래밍을 할 때 프로그래머가 논리적 오류가 없이 프로그래밍을 한다고 가정할 때 운영체제급 프로젝트를 진행하면서 버그가 없는 결과물이 나올 수 있나요?
뭐... 워즈니악이 OS를 만들 때 버그 하나도 없이 쭉쭉 써내려갔다는 말을 듣고 경악하긴 했지만...



0


프로그래밍 자체에 기술적 의미의 버그가 없을수는 있겠지만 소위 얘기하는 로직 버그까지 피해갈지는 잘 모르겠습니다.
ArcanumToss
로직 버그라는 게 뭔가요?
마루하
의도대로 짜여진 코드가 스펙에 맞는 동작을 하지 못하는 것을 로직 버그라고 할 겁니다
안티에이징
사실 모든 버그는 논리적 오류 때문에 발생하는 것이라 봅니다.
큰 프로그램에서 A 부분을 A\'로 고쳤는데 B에서 갑자기 버그가 발생한다던지,
특정 조건을 만족했을 때 생기는 버그라던지..
이런 것들 모두 논리적 오류에 해당하는 것 이기 때문에..

가정 자체가 너무 ideal 하지만
프로그래머가 몇천줄, 몇만줄을 코딩 하던지 논리적 오류 없이 코딩이 가능하다면.
아무리 큰 프로젝트라도 버그 없이 코딩이 가능할 것이라 봅니다.
ArcanumToss
음... 논리적 오류가 아니라면 버그가 발생할 수 없다는 견해로군요.
고맙습니다.
damianhwang
버그가 없는게 버그일듯 합니다 ;-)
ArcanumToss
프로그래밍 기법 자체와 컴파일러 자체에 논리적 오류가 있다는 뜻이군요.
답변 고맙습니다.
사람이 완벽한 존재라면 가능할 것 같습니다.
ArcanumToss
인공지능이라면 어떨까요?
NightBAya
그 인공지능도 결국 사람이 만드는 것이니 중간에 한 단계가 더 들어가는 차이밖에는 없지 않을까 싶습니다.
버그 이전에 인공지능이 자발적으로 프로그래밍을 하게 하는 것 부터가 어려울거 같네요.
모르모트
가능은 하지만 실현은 할 수 없다...그리 생각해야 하지 않을까요.
ArcanumToss
결론은 버그는 피할 수 없다는 게 중론인가보네요.
워즈니악 자신도 어떻게 그럴 수 있었는지 모르겠다던데 천재는 천잰가봅니다.
안티에이징
아니요. 정확하게는 버그가 아직 발견되지 않았다입니다.
프로그램의 모든 부분 + 모든 가능성에 대한 테스트 없이는 버그가 없다고 단정지을 수 없습니다.
버그라는게 코드를 만드는 사람 혼자 통제할 수 있는 영역이 아닙니다.

좋은 예시로는 닌텐도 64용 게임으로 출시된 007 골든 아이 게임의 버그가 있죠.
캐릭터나 비행기등을 포함한 많은 오브젝트들이 팔다리를 파닥거리며 몸을 접었다 펴면서 이상한 회전을 하는 버그가 있었는데 일본 온라인상에서 이 장면을 찍은 영상이 흥해서 통칭 \'겟단\'으로 일종의 준필수요소?가 되기도 했는데요.
발생원인은 하드웨어적인 원인으로 롬팩이 제대로 안꽂히면 생기는 버그라고 합니다.
DEICIDE
사실 그것도 \'롬팩을 제대로 꽂아주세요\' 라고 출력할수 있었어야 하는 버그.... 아 아닙니다
DEICIDE
뭐 사실 그래서 테스트 주도 개발이 개발의 끝판왕인 것처럼 이야기되기도 하고 그러는 것이겠지만
저는 엄밀한 의미의 버그 없는 프로그래밍은 불가능하다고 보고, 사실 그럴 필요가 있을까 싶기도 합니다.
함수형 언어도 타입 빡세게 해서 짜면 버그 앵간하면 안납니다. 실제로 버그나면 x되는 증권이나 은행쪽에서는 함수형 언어 쓴다고 하더군요(물론 미국 이야기). 문제는 함수형으로 짜면 퍼포먼스가 존내 안나와서 문제입니다. 이건 컴퓨터 구조적인 문제인데 재귀적으로 프로그램을 짜면 레지스터 점프가 필연적으로 존재하고 흔히 쓰는 cpu는 레지스터 점프가 쥐약입니다. 퍼포먼스가 상당히 많이 떨어져요. 찾기 어려운 버그들이 나는 과정이 보통 약한 타입 때문에 나는 경우가 대부분입니다. C도 타입이 없는 언어이고 요즘 유행하는 파이썬도 동적 타입... 더 보기
함수형 언어도 타입 빡세게 해서 짜면 버그 앵간하면 안납니다. 실제로 버그나면 x되는 증권이나 은행쪽에서는 함수형 언어 쓴다고 하더군요(물론 미국 이야기). 문제는 함수형으로 짜면 퍼포먼스가 존내 안나와서 문제입니다. 이건 컴퓨터 구조적인 문제인데 재귀적으로 프로그램을 짜면 레지스터 점프가 필연적으로 존재하고 흔히 쓰는 cpu는 레지스터 점프가 쥐약입니다. 퍼포먼스가 상당히 많이 떨어져요. 찾기 어려운 버그들이 나는 과정이 보통 약한 타입 때문에 나는 경우가 대부분입니다. C도 타입이 없는 언어이고 요즘 유행하는 파이썬도 동적 타입언어죠. 타입이 약할 경우 찾기 어려운 런타임 버그가 생길 확률이 높아집니다. 반면에 함수형 언어는 강한 타입 언어라서 타입 안맞으면 컴파일 단계에서 에러가 나니까 일단 컴파일만 어떻게든 해내면 버그가 있을 확률이 엄청 줄어들죠. 버그가 있다고 해도 프로그래머의 멍청함으로 빚어진 찾기가 쉬운 버그입니다.
PL분야에서 프로그램 검증학이라고 프로그래머가 의도한 대로 프로그램이 돌아가는지 검증하는 분야가 있긴한데 여기도 진전이 더뎌서.. 뭐 미래에 완성되면 버그없는 프로그램을 만들 수 있겠죠?
그리고 컴파일러는 죄가 없습니다. 프로그래머가 문제죠.
Azurespace
컴파일러 자체의 버그 때문에 이론적으로 문제 없는 소스 코드에 버그가 생기는 경우도 얼마든지 있습니다... 함수형 언어 컴파일러들에서도 자주 그래요.
예를 들어 어떤 사례가 있나요? 컴파일러 때문에 버그가 났다는건 금시초문이네요
Azurespace
http://en.wikipedia.org/wiki/Compilation_error#Internal_Compiler_Errors
위키페디아에도 항목이 있습니다.

https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AI-ICE
이 링크는 최근 1.0 버전이 나온 Rust 프로그래밍 언어의 내부 컴파일러 오류 이슈들을 다루고 있습니다. 보통 재현할 수 있는 minimal case를 찾아서 함께 올라와 있는데, 이것만 봐도 의외의 버그가 제법 된다는 것을 알 수 있습니다. 아직 활발하게 새 코드가 추가되는 젊은 언어이기 때문에 다른 언어보다 많은 것이라고 볼 수는 있습니다만, GCC라던지 OCaml 컴파일러 등도 이슈 트래커를 찾아보면 틀림없이 ICE 관련 이슈가 계속 등장하고 있을 겁니다.


금시초문이신 것은 첫째로는 관심이 없으시기 때문일 것이고, 둘째로는 자주 쓰는 형태의 코드에서는 이런 버그가 잘 발생하지 않기 때문이겠죠. C/C++같은 오랫동안 쓴 언어들은 어느 정도 안정화가 되어 있기도 하겠고요. 그러나 컴파일러도 소프트웨어이고 verification 과정을 거쳐가며 만든 것이 아니기 때문에 이런 버그는 생각보다 많습니다.
생각해보니까 저도 컴파일러 버그를 경험한 적이 있긴 하네요. sml 로 컴파일러를 만들었는데 이게 웃긴게 제대로 돌아갈때가 있고 안돌아갈때가 있었네요
간단하게 생각하자면 컴파일러도 결국 사람이 만든 프로그램인데 버그가 없을리가요.. ㅠㅠ
Finding and understanding bugs in C compilers(http://dl.acm.org/citation.cfm?id=1993532)라는 논문에 실린 내용들 중 하나를 인용하자면

int foo (void) ~{
signed char x = 1;
unsigned char y = 255;
return x > y;
}

라는 함수가 우분투 8.04.1 x86버전의 GCC에서 최적화 옵션을 걸었을 때 0이 아니라 1이 리턴되게 프로그램을 컴파일하는 버그가 있었다고 합니다.
가능합니다. 경우의 수가 너무 많아서 검증을 다 못하고 내 보내서 문제가 됩니다. (보통은 검증 자체를 안하고..)
MS나 구글은 가능한한 많은 부분을 검증해서 내어 보냅니다.
제 연구분야가 이쪽이예요.

검증하려면 하는데 cost가 너무 높아서 그냥 버그 있도록 놔 두는게 쌉니다(...)
Azurespace
하드웨어나 소프트웨어에 논리 버그가 전혀 없어도 오동작은 일어납니다. 방사선 등의 물리적 원인에 의해 메모리나 레지스터의 값이 바뀔 수 있거든요(...)


다만 이상적인 하드웨어와 버그 없는 컴파일러를 가정하고, 소프트웨어의 특정한 기능 부분이 정해진 specification에 항상 맞게 동작한다는 formal proof는 가능합니다. 그러나 이것이 버그가 없는 소프트웨어를 항상 만들 수 있는가? 로 질문이 변하면 복잡합니다. 기본적으로 소프트웨어 버그는 시간과의 트레이드 오프라고 보면 됩니다. 무한대의 시간이 있으면 버그 없는 소프트웨어를 만들 수 있겠지만 시간도 비용이기에 그렇게 하지 않는 것이죠.
버그가 없도록 만드는것이 불가능하다고 생각하는 쪽입니다.
모든 경우의수를 따져야 하지만 그 경우의 수가 유한하지 않을것이기 때문이죠.
그래서 돈과 시간이 허용하는 만큼의 경우의 수를 잡아내고 이후에 발생하는 건들에 대해 실시간으로 처리하는게 훨씬 용이합니다.

절대 제가 테스트 시나리오를 짜고 디버깅을 하기 싫어서 이렇게 말하는게 아닙니다.
동네형
신이 있다는 존재하에. 인간은 신의 프로그램입니다.
신은 인간을 신처럼 못만들었죠.(의도였건) 인간도 못만듭니다.

인간이 인간을 무에서 창조할 수 있다면 가능할듯 싶네요.
가능성이 아예 없다고는 생각되지는 않지만..
버그가 있음으로서...
조금도 개선되고 좋은 방향으로 흘러가지 않을까요..
목록
번호 제목 이름 날짜 조회 추천
공지 질문 게시판 이용 규정 11 토비 15/06/19 24527 4
16689 의료/건강하소연 겸 질문입니다. 편찮으신 어머니 문제 8 + [익명] 25/04/20 447 0
16688 기타거울로 반사된 빛으로 곰팡이를 퇴치할 수 있나요? 1 2025 25/04/20 294 0
16687 기타이런 영상은 어떤 장비로 찍은 것일까요? 6 홍당무 25/04/19 426 0
16686 게임급 슈퍼패미컴 미니 클래식이 끌리는데 2 퍼그 25/04/19 254 0
16684 진로IB 업무 중 진로 고민 8 움직여 25/04/19 492 0
16683 진로아이 진로에 관한 고민 7 단비아빠 25/04/18 389 0
16682 문화/예술관광으로 중국 도시를 택할 메리트가 있을까요 10 열한시육분 25/04/18 485 0
16681 기타강력접착된거 떼는방법이 있을까요..? 14 + even&odds 25/04/18 367 0
16680 기타차량 폐차 관련 질문입니다. 26 메존일각 25/04/17 528 0
16679 법률부동산 복비 관련 문의드립니다. 6 [익명] 25/04/17 325 0
16678 IT/컴퓨터24인치 듀얼 모니터 vs 27인치 울트라와이드모니터1대 9 Picard 25/04/17 334 0
16677 체육/스포츠첫 런닝 관련 초보 질문 사항 4 아재 25/04/16 323 0
16676 기타차단기 문제 7 왕킹멍 25/04/15 367 0
16675 체육/스포츠초 6 여아 극기체험용 등산가방추천부탁드립니다. 6 FTHR컨설팅 25/04/15 345 0
16674 의료/건강왼쪽 오른쪽 시력차이가 엄청 크네요 5 OneV 25/04/15 421 0
16672 기타소형차 중고 가격및 유지비 질문드립니다 8 셀레네 25/04/14 375 0
16671 IT/컴퓨터중국산 로봇청소기 사생활 위험 어떻게 보시나요 8 당근매니아 25/04/14 519 0
16670 가정/육아매트리스 추천을 부탁드립니다 :) 10 Broccoli 25/04/14 318 0
16669 법률양도세 계산 관련하여 질문 있습니다. 8 [익명] 25/04/14 349 0
16668 기타서울 남쪽에 아버지 모시고 식사할 곳 찾는 중입니다. 4 퍼그 25/04/14 322 0
16667 기타인터넷 질문입니다 5 김치찌개 25/04/14 239 0
16666 의료/건강건강보험 3자행위 신고 질문입니다. 2 [익명] 25/04/13 402 0
16665 기타1500 이하로 살 수 있는 중고 suv 추천해주십시오 11 개백정 25/04/13 683 0
16664 IT/컴퓨터컴퓨터 정리 프로그램 추천부탁드립니다. 홍차넷 선생님들!! 13 Mandarin 25/04/11 553 0
목록

+ : 최근 2시간내에 달린 댓글
+ : 최근 4시간내에 달린 댓글

댓글
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기