휴대전화 사용시 전자파가 인체에 미치는 영향에 대한 현재까지 연구 내용을 간단히 정리하면,
전자파의 유해 가능성의 평가에 있어 전자파 노출로 인한 인간의 ‘건강 영향’과 ‘생체 영향’이 있다.
'건강 영향’이란 의학적인 관점에서 말하는 것으로써, 두통, 감기, 암과 같은 병에 영향을 준다는 의미
‘생체 영향’ 이란 생물학적인 관점에서 DNA, 호르몬, 생체 내 물질들의 변화에 영향을 준다는 의미
현재까지 전자파의 인체 유해성 여부는 결론을 내리지 못하고 있다. 그 이유는 인체 유해 가능성과 무해 가능성이 서로 상반돼 보고되고 있기 때문이다. 과학적 연구 결과가 이와 같이 상반되게 보고되고 있는 이유는 인체 건강 영향의 평가 방법에 어려움이 있기 때문이다.
세계보건기구 등에서는 우리의 생활환경에서 노출될 수 있는 통신 설비에서 발생되는 전자파의 경우 생체 영향 가능성이 인정되고 있으나, 그러한 변화가 인간의 건강에까지 영향을 미친다는 연구 결과까지는 인정하지 않고 있다.
전자파 유해에 대한 국제기준은 짧은 시간에 노출되는 전자파양에 대한 기준이지 장기간 노출되었을 때의 기준은 아직 없는 실정이다. 동전, 선인장 등의 전자파 차폐 효과는 없는 것으로 드러났다. 전자레인지 사용의 경우, 먼 거리를 유지 하는 것이 중요하다.
2011년 부터 시행되고 있는 석면피해보상법은 석면 노출로 악성중피종, 폐암 등이 발생한 피해자에 대한 보상을 규정하고 있는데, 이 법도 석면을 지난 수십 년간 사용하다가 국내에서 석면의 위험성에 대한 보도가 나온 2007년 이후 사회적 이슈가 돼 제정됐다. 석면에 장기간 노출된 후유증이 20∼30년 후 나타난 건강 영향에 대한 피해라는 점을 고려하면 전 세계적으로 논란이 되고 있는 휴대전화가 과연 안전하다고 할 수 있을지는 아무도 장담할 수 없다.
!모듈 프로시저(반드시 주프로그램 앞에 위치해야) module variablegroup implicit none integer :: i, j real(kind=16) :: a, b end module variablegroup
! 주 프로시저(모든 연산과정을 제어하는 기능) program mainprocedure use variablegroup implicit none integer :: k real(kind=16) :: c i=1; j=2; a=3; b=4 call internalprocedure(c) call externalprocedure(k) write(*, "(' a+b = ', f10.2)") c write(*, "(' +j=', i10)") k contains !이하 프로그램이 내부 프로시저임을 나타내는 명령어
! 내부 프로시저(주 프로시저의 일부분에 해당하는 프로시저) subroutine internalprocedure(d) use variablegroup !주 프로시저와 공유하므로 생략 가능 implicit none !주 프로시저와 공유하므로 생략 가능 real(kind=16) :: d d=a+b end subroutineinternalprocedure end programmainprocedure
! 외부 프로시저 subroutine externalprocedure(p) use variablegroup implicit none integer :: p p=i+j end subroutine externalprocedure
작성한 코드는 정확하고 읽고 이해하기 쉬워야 한다. 이를 위하여, 아래와 같은 원칙들을 지키길 권고한다.
1. 단순성과 명확성을 추구한다.
2. 읽기 쉬운 스타일로 구성
의미있는 지정자 사용하기
항목 사이에 공백 사용
문단과 블럭 구분이 필요한 모든 곳에 빈 줄을 삽입하라
부분 사이의 관계를 강조하기 위해서 들여쓰기 하라
긴 표현식 보다 짧고 단순한 부분 표현식으로 나누라.
3. 주석을 잘 활용하여 코딩 단위별로 문서화 한다.
프로그램 목적, 실행 방법, 알고리즘, 가정들, 프로그래머 이름, 코딩 날짜 및 수정일, 추가적인 정보 및 references
4. 구조화가 잘 구성되어야 한다.복잡한 문제는 top-down(하향식) 방식으로 코딩한다.
5. 출력에 대해서는 이해하기 쉽도록 표시하라.
print *, time 보다 print *, ' Time = ', time
6. 코딩 작성 이후 test 데이터를 사용하여 반드시 검증해야 한다.
프로그래밍 과정
문제 분석
처리방법 결정
처리 순서 선택
프로그램 작성
프로그램 실행
계산 결과 분석
1. 문제분석
처리해야 하는 문제의 의미를 정확히 이해하고 여러 각도에서 분석해야 됨.
문제 처리 목적이 무엇인가?
입력/출력자료는 어떤 것인가?
결과의 정확도 등은 어떠해야 하는가?
2. 처리방법 결정
간단한 공식에 의한 계산은 쉽지만
복잡한 수학식을 요구하는 해석모델은 수치적인 오류를 최소화할 수 있는 수학적 기법들을 결정해야 한다.
3. 처리순서 선택
수치연산은 수많은 반복 연산을 요구하기에, 처리순서의 선택이 계산량을 축소하고 결과의 신뢰도를 좌우한다.
따라서 논리적인 처리순서를 선택해야 하고
의사코드(pseudo codoe)나 순서도(flow chart)를 사용한 원시코딩이나, 컴퓨터에서 바로 코드를 작성한다.
4. 프로그램 작성
문제 처리순서가 결정되면 업무에 가장 적합한 프로그래밍 언어를 선택하고 코딩을 시작한다.
이공학 (특히, 대기, 지질, 천문, 토목, 해양 등) 분야는 수치연산을 표현하기에 쉬운 포트란을 많이 사용한다.
5. 프로그램 실행
프로그램은 작성부터 실행까지 과정에서 오류를 포함할 수 있는데, 이는 디버깅(debugging) 작업을 통해 수정한다.
코딩은 90%는 디버깅 작업이고, 이 경험이 풍부해야 수준 높은 프로그래머가 될 수 있다.
1)Syntax Error(문법 오류) - compile 과정에서 발생
작성한 원시 프로그램은 컴파일러를 사용하여 기계어로 번역(compile)하는 과정을 거친다. 이때 발생하는 오류를 문법적 오류 (syntax error)라고 한다.
문법 오류가 없으면 compile을 통해 목적파일(object file)이 만들어진다.
2)Link Error(연결 오류) - link 과정에서 발생
obj 파일을 라이브러리 등과 연결(link)하여 실행파일(executive file)이 만들게 되는데, 이 과정에서도 발생하는 오류를 연계/연결 오류(link error)라고 한다.
연결 오류가 없으면, 실행파일이 생성된다.
3)Run-time Error(실행 오류) - running 과정에서 발생
실행파일을 수행(run)하면 계산이 실행/완료 된다. 그러나, 문법/연결 오류가 전혀 없더라도 프로그램 자체의 논리적/기술적 모순이 발견되면 실행과정에서도 오류가 나타나는데 이를 실행오류(run time error)라고 한다. 주로 입력자료를 잘 못 다루거나 자료 자체에 오류가 있을 경우 발생할 수 있고, 대부분은 논리적 모순에 의해서 발생한다. 실행 오류는 오류 수정작업 주에 가장 어려운 오류이며, 이 오류가 발생하면 처리방법 및 처리 순서를 (전면) 재검토 해야 한다.
위 1)~3) 전 과정에서 오류가 없는 프로그램이면, 계산은 완료되고 결과는 외부 파일/출력기 등을 통해서 출력된다.
6. 수행결과 분석
Logic Error(논리 오류) - 계산 결과에서 발생
위 1)~3) 전 과정에서 오류가 없는 프로그램이라고 할지라도, 예상하지 못한 결과값을 생산할 수 있다. 이러한 오류를 논리오류(logic error)라고 한다. 이는 잘못된 문제 분석이나 해석방법의 부적절한 선택에 의해서 주로 발생한다. 컴퓨터에 의한 계산이 반드시 올바른 결과가 아니라는 점을 명심해야하고, 계산결과의 옳고 그름을 판단하는 검증은 반드시 프로그래머의 지식 문제이다.