1954-1957년 John Backus에 의해 고안된 최초의 고급 언어
Fortran ll , Fortran lV , Fortran 66 , Fortran 77, Fortran 90
Fortran 컴파일러는 효율적인 기계어 코드 작성 -> 언어의 긴 생명 제공
배열, 반복구조, 분기문, 부프로그램 등 특징이 이후 언어에 큰 영향
비 구조형 언어
컴파일러 언어
컴퓨터 제조회사의 후원으로 성공
실행의 효율성이 설계 목적
그러나, 사용자 편의성 및 범용성이 무시됐음
배열 부분 -> 가변 배열 전달능력, 가변배열 선언 불허
동등 연산자, 배정 연산자 (=, := ) -> 배열, 레코드에 적용 불허
매개변수 전달 방식 -> call by reference 만 허용
상수 -> 상수 이름 부재
,과 . -> , 는 문장 종료로 간주 / . 는 실수 표현으로 간주
초기 고급언어로 분리 컴파일 제공한다. 효율적인 번역이 가능하나 오류 유발 가능성이 있다
알파벳 문자 : 기본 문자 집합 + 13개의 특수문자 (+ + - * / () , . $ ` : 공백)
구문과 프로그램 신뢰성
Do 10 I= 2,6
A(I) = B + C(I)
10 CONTINUE
여기서 ,를 안쓰고 .을 쓰면 2.6이 배정되어버린다
바인딩
정적 바인딩 - 컴파일 시간
: 대부분의 변수형 확정
정적 바인딩 - Linkage edit 시간
: COMMON 문에
주어진 이름의 상대 주소 확정 , 부프로그램 이름에 관한 상대 주소 확정
정적 바인딩 - 적재 시간
: 모든 변수의 기억장소 할당 , DATA 문에서 정의된 값을 변수에 배정
동적 바인딩 - 실행시간 사용 시점
: 배정문 등에 변수값을 배정
디폴트
- Fortran에서 디폴트로 명명하는 규약에 따르면, I에서 N까지 중의 한 문자로 시작되는 이름은 정수형 변수를 나타낸다.
정적형 검사(static type checking)를 사용한다.
배정문 : A = B
혼합형 배정문 : 묵시적 형 변환 규칙을 적용한다.
(표현식)
**
* , /
+ , -
.EQ. .NE. .LT. .LE. .GT. .GE.
.NOT.
.AND.
.OR.
조건 분기문 시 거짓 문장을 없애버리니까 , 깔끔하나 GOTO 같은 새로운 분기문이 생성됐음
조건문
if문 -> goto 역할
ex) if(BCOND) L1, L2 => 참이면 L1, 거짓이면 L2
ex) if(ACOND) L1, L2, L3 => 수식의 결과 -, 0, + 인 경우
Fortran 77에서는 dangling else의 해결로 ENDIF 사용
반복문 : DO문 -> 반복 제어 변수 반복문
FORTRAN || 의 DO문이 최초의 반복문이다.
- DO 문 몸체가 적어도 한 번 수행된다
- 초기값, 증분값, 최종값 : 정수형 상수나 변수
- 반복문 수행 후 반복 변수의 값 무언급
레이블 : 프로그램 내의 위치를 나타내는 식별자
- Fortran에서는 문장 앞에 선행되는 최대 5자리 수로 , 그 문장을 참조하는데 사용 될 수 있다.
- 레이블 -> 기계어 코드의 분기 위치로 번역한다.
<기본 자료형>
INTEGER 정수
REAL 실수
LOGICAL 논리형
CHARACTER 문자
DOUBLE 실수
COMPLEX 복소수
<배열>
- 소괄호를 사용한다 => 컴파일러가 판별
- 배열 첨자 범위의 하한값 => Fortran, Fortran 77 : 1
- 배열 상한/하한값 표현 => 상수
- 가변배열 X
- 배열 원소에 대한 연산만 가능 (배정, 복사 X)
'CS(Computer Science) > 프로그래밍언어' 카테고리의 다른 글
8. 영역과 수명 (0) | 2023.06.03 |
---|---|
2. Algol 60 , Algol 68 (0) | 2023.04.19 |
4. 프로그래밍 언어 구문과 구현 기법 (0) | 2023.04.07 |
3. 프로그래밍 언어 설계 시 주의점 (0) | 2023.04.07 |
2. 언어의 변천 (0) | 2023.04.07 |