- 질문 게시판입니다.
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는 가능합니다. 그러나 이것이 버그가 없는 소프트웨어를 항상 만들 수 있는가? 로 질문이 변하면 복잡합니다. 기본적으로 소프트웨어 버그는 시간과의 트레이드 오프라고 보면 됩니다. 무한대의 시간이 있으면 버그 없는 소프트웨어를 만들 수 있겠지만 시간도 비용이기에 그렇게 하지 않는 것이죠.
버그가 없도록 만드는것이 불가능하다고 생각하는 쪽입니다.
모든 경우의수를 따져야 하지만 그 경우의 수가 유한하지 않을것이기 때문이죠.
그래서 돈과 시간이 허용하는 만큼의 경우의 수를 잡아내고 이후에 발생하는 건들에 대해 실시간으로 처리하는게 훨씬 용이합니다.

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

인간이 인간을 무에서 창조할 수 있다면 가능할듯 싶네요.
가능성이 아예 없다고는 생각되지는 않지만..
버그가 있음으로서...
조금도 개선되고 좋은 방향으로 흘러가지 않을까요..
목록
번호 제목 이름 날짜 조회 추천
6 기타유머게시판 조회수가 이상합니다 3 레지엔 15/05/29 7082 0
7 기타질문합니다 16 녹차넷 15/05/30 8686 0
10 기타'불판 게시판'의 이름을 대체할 아이디어가 없을까요? 혹은 바꿀 필요가 있을까요? 16 KaBam 15/05/30 8708 0
12 기타이곳의 배너광고는 어찌되는건가요?? 9 Yato_Kagura 15/05/30 8424 0
15 기타이거 뭐죠? 판매용 블로그 만드는건가요? 1 루키즈 15/06/01 6561 0
16 기타관리 코드..? 2 15/06/01 6896 0
54 IT/컴퓨터버그없는 프로그래밍이 가능할까요? 28 ArcanumToss 15/06/07 10359 0
20 기타혹시 경제학에 밝은 분 있을까요? (2국가모형 문제) 1 15/06/01 7962 0
18 의료/건강이것도 PTSD 증세인가요? 2 민트밀크라떼 15/06/01 7647 0
37 의료/건강짝눈문제 4 Yato_Kagura 15/06/03 6046 0
38 의료/건강어머니가 편찮으십니다. 7 솔구름 15/06/03 6449 0
35 게임프로포커플레이어 임요환의 근황 아시는 분 있나요? 6 Jungpolar 15/06/03 8792 0
24 기타결혼식장에 여자하객이 흰옷입는게 무례한일인가요? 29 아저씨 15/06/01 34757 0
32 기타이게 도대체 무슨 뜻인가요?(내용삭제) 10 탑망하면정글책임 15/06/02 8202 0
33 IT/컴퓨터외장하드 추천해주세요. 3 카리 15/06/02 6182 0
39 게임[하스스톤] 유행타는덱, 돌냥&위니 맞춤덱 6 Somethinglikethat 15/06/03 7826 0
40 기타다같이 죽기 vs 영겁의 고독 14 가하마 15/06/04 6826 0
41 IT/컴퓨터윈도 10 업그레에드에 대해. 9 아케르나르 15/06/04 6897 0
45 기타이 노래가 뭔지 궁금합니다. 2 콩차 15/06/05 5798 0
49 게임[하스스톤] 투기장 12승 보상 9 구라 15/06/05 10904 0
50 기타창의력 강의를 했던 TV 프로를 찾습니다. 2 ArcanumToss 15/06/05 5838 0
51 게임[하스스톤] 도적 탈진덱 조언 부탁드립니다. 2 오즈 15/06/06 13416 0
56 기타13일 서울시에서 시행하는 공무원시험 어떻게해야 잘한 결정일까요? 20 콩차 15/06/07 6075 0
57 게임[히어로즈] 카펫 얻으셨나요? 2 Cogito 15/06/08 5891 0
58 기타자취하시는분들 집에서 해먹고싶은 음식이 뭐가있으신가요? 11 bella luna 15/06/08 6372 0
목록

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

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