문제

기본으로 무언가를 쓰면 줄 번호를 사용해야합니다. 처럼:

10 PRINT "HOME"
20 PRINT "SWEET"
30 GOTO 10

그러나 나는 궁금합니다 : 누가 라인 번호를 전혀 사용하려는 아이디어를 생각해 냈습니까? 그것은 그처럼 귀찮은 일이며, 개발 도상국의 세계에서 상당히 "에코"를 남겼습니다!

도움이 되었습니까?

해결책

그 당시 아이디어는 적절한 줄 번호를 사용하여 프로그램의 어느 곳에서나 쉽게 코드를 추가 할 수 있다는 것입니다. 그렇기 때문에 모든 사람이 줄 번호 10, 20, 30을 사용하는 이유입니다. 그래서 남은 공간이 있습니다.

10 PRINT "HOME"
20 PRINT "SWEET"
30 GOTO 10
25 PRINT "HOME"

첫 번째 인터페이스에는 기본을 사용할 수 있었으며 VI 또는 EMACS (또는 DOS Edit, HEH)와 같은 반짝이는 편집기가 없었습니다. 콘솔에서만 프로그램을 인쇄 한 다음 적절한 줄 번호를 먼저 제공하여 새 라인을 추가하거나 교체 할 수 있습니다. "파일"(프로그램은 메모리에 보관되었지만 디스크에 사본을 저장할 수 있음)을 탐색 할 수 없었습니다. 요즘에는 커서가 사용됩니다.

따라서 라인 번호는 악명 높은 goto의 레이블로만 필요하지 않았지만 실제로 편집 할 프로그램 흐름의 위치에 통역사를 알려야했습니다.

다른 팁

그것은 더 많은 역사를 가지고 있습니다.

라인 번호는 실제로 기본 프로그래밍 언어의 원래 버전 인 Dartmouth Basic에서 제공되며 소위 Dartmouth Time Sharing System의 필수 부분이었습니다. DTSS에는 기초적인 IDE가 있었는데, 이는 대화식 명령 줄에 지나지 않았습니다.

따라서이 "IDE"내부에 타이핑하고 라인 번호로 시작하는 모든 라인은 프로그램에 추가되어 이전에 저장된 라인을 동일한 번호로 대체했습니다. 다른 모든 것은 DTSS 명령으로 여겨지고 즉시 실행되었습니다.

VDT (Video Display Terminal)와 같은 것이 있기 전에, 우리는 구식 시간을 펀치 카드로 프로그래밍했습니다. 시퀀스 번호의 경우 펀치 카드 예약 열 72-80 - 카드 데크를 떨어 뜨렸고 모두 주문을 중단하면 데크를 시퀀스 번호를 기준으로 카드를 주문할 수있는 카드 분류기에 데크를 넣을 수 있습니다. 여러면에서 기본 라인 번호는 이들 시퀀스 번호와 유사했습니다.

기본 세계에서 또 다른 장점은 기존 날에 기본이 실행 된대로 해석되었다는 것입니다. 분기에 순차적 인 줄 번호가 아닌 라벨을 사용하려면 모든 레이블과 해당 위치를 선택하는 첫 번째 패스가 필요합니다. 여기서 라인 번호를 사용하는 것처럼 통역사는 대상에 대해 앞으로 또는 뒤로 스캔 해야하는지 여부를 알고 있습니다.

그 날에는 EMACS 또는 VI와 같은 2 차원 편집기가 없었습니다. 당신이 가진 것은 명령 줄뿐입니다.

귀하의 프로그램은 메모리에 저장되었으며 단일 라인을 편집하기 위해 단일 라인 명령을 입력합니다.

당신이 유닉스 신이라면, 당신은 에드 나 무언가로 그것을 할 수 있지만, C-64, VIC-20 또는 TRS-80의 기본을 위해서는 줄을 덮어 씁니다.

따라서 세션은 다음과 같습니다.

$10 PRINT "Hellow World"
$20 GOTO 10
$10 PRINT "Hello World"

이제 프로그램이 올바르게 작동합니다.

일부 오래된 메인 프레임에는 화면이없는 라인 터미널이있었습니다. 전체 세션이 인쇄되었습니다 종이 안에 잉크!

WHO?" 발명가 인 Kemeney와 Kurtz가 될 것입니다.

답장을 읽은 후, 나는 확인했다 Wikipedia 항목 "Dartmouth Basic"의 경우, 배우는 것에 놀랐습니다.

첫 번째 컴파일러는 시간 공유 시스템이 준비되기 전에 생성되었습니다. Cardbasic으로 알려진이 제품은 표준 카드 리더 기반 배치 처리 시스템을위한 것입니다.

따라서 Paul Tomblin이 "광장을 얻는다"는 것처럼 보입니다.

그들은 Fortran에서 시작되었으며, 그로부터 Basic이 파생되었습니다. 그러나 Fortran에서는 다른 줄 (Goto Targets와 같은)에 의해 참조 된 라인 만 필요 숫자로 만 있습니다. 기본적으로 그들은 2 차 사용을 가졌으며, 이는 특정 라인을 편집 할 수 있도록하는 것이 었습니다.

Paul Tomblin의 답변은 가장 포괄적이지만 기본 프로젝트의 초기 목표의 큰 부분이 초보자 친화적 시분할을 사용한 대화식 환경. (Kurtz와 Kemeny의 "모든 학생들을위한 보편적 접근"에 대한 비전은 이와 관련하여 그 시대보다 훨씬 앞서있었습니다.)

이 목표를 달성하기 위해 개발 된 기본 시스템에는 Teletype ASR-33 (및 기타) 인쇄 터미널이 특징입니다. 시분할 가능 OS에 연결하면 대화식 모드에서 기본 프로그램을 편집하고 실행하는 것이 펀치 카드로 작업하는 것과 달리 허용되지만 커서를 제출할 수는 없습니다. 라인 번호는 초보자 친화적 인 방법으로 프로그램 명령문의 순서를 지정하고 화면 편집기가 없을 때 명확하지 않은 편집을 허용합니다. "Line Editor"의 Wikipedia 항목은 더 설명하며, Line Editor (예 : Un*X 'Ed)를 사용하려고 시도한 사람은 Cryptic을 배우는 데 초보자에게 초보자에게 감사 해야하는 이유를 이해할 수 있습니다. 이러한 방식으로 텍스트를 편집하는 데 필요한 명령 시퀀스.

50 년대에, 높은 프로그래밍 언어가 초기에 시작되었을 때, 터미널, 편집자, 모니터 (예, 모니터 없음), 카드 펀치 및 독자 (카드의 내용을 작성하고 읽기 위해 컴퓨터) 및 프린터 (자연스럽게 인쇄 결과). 나중에 테이프가 소개되었지만 또 다른 이야기입니다.

각 펀치 카드에는 자체 번호가있었습니다. 그 이유는 몇 가지있었습니다. 순전히 순서대로 유지하는 것부터 실행 순서를 결정하는 것까지. 각 카드는 한 줄의 코드였습니다 (오늘의 용어로). 그 당시에는 If..Then .. else 또는 그와 같은 변형과 같은 구성이 없었으므로 실행 순서는 어떻게 든 결정되어야했습니다. 그래서 Goto 진술이 소개되었습니다. 그들은 루프의 기초였습니다. "스파게티 코드"라는 용어는 그 시점에서 나온다.

나는 그것이 어셈블러에서 나온 것 같아요. 각 명령어에는 다른 지시에 의해 주소가 뛰어들 수 있습니다.

또한 첫 번째 컴퓨터에는 메모리가 많지 않았으며 줄 번호를 저장하는 데는 2 바이트 만 필요합니다 (올바르게 수행하면). 레이블을 작성하면 먼저 위치에서 해당 레이블이 정의 된 다음 점프 명령에 더 많은 메모리가 필요합니다.

마침내 좋은 옛날에는 멋진 편집자가 없었습니다. 유일한 "편집기"는 간단한 명령 줄 인터페이스로, 프로그램의 일부로 시작하는 모든 것을 취급하고 다른 모든 것을 즉시 실행할 명령으로 취급했습니다. 가장 두드러진 예는 Commodore 64입니다.

기본의 최신 방언에는 더 이상 줄 번호가 필요하지 않습니다.

기본적으로 라인 번호가 없다면 어떻게

GOTO 10 

그것은 20 년 전에 발견 된 좋은 방법이었습니다.

오늘,이 라인은 디버그 엔진이 XXX 라인에서 예외가 있다는 메시지로 우리를 보내도록 오류/예외를 포착하는 데 도움이됩니다.

줄 번호가없는 세상을 상상해보십시오 ... 라인없이 기자에게 어떻게 지불 할 수 있습니까?

"이제 소설을 알고 있으므로 50 줄을 넘지 않는 요약을 작성해야합니다."

이것을 기억? 학교에서도 우리는 줄 번호에 대해 배웁니다!

그것이 발명되지 않았다면, 누군가가 이미 다시 발명하여 우리는 그것을 멋지게 사용할 수 있습니다 :)

기본 필수 줄 번호의 모든 버전. 예를 들어 QBASIC은 지원 된 레이블입니다. 그런 다음 GOTO를 가진 사람들에게 뛰어들 수 있습니다 (현재 Dijkstra의 "Having to"In Hartful "을 무시합니다).

대답은 이미 위에 있습니다. Paul Tomblin 은이 글을 썼습니다 (Zabzonk에게 경고).

실제로, 나는 "펀치 카드"를 언급하지 않는 모든 대답이 불완전하다고 주장합니다. 펀치 카드 나 Fortran을 언급하지 않으면 잘못되었습니다. 부모님이 정기적으로 펀치 카드를 사용했기 때문에 (Fortran 66 및 77로 시작) 80 년대에 Basic 및 Cobol로 마이그레이션했기 때문에 이것이 확실히 옳다고 말할 수 있습니다.

초기에는 대부분의 프로그램이 펀치 카드와 함께 입력되었습니다. 펀치 카드는 일반적으로 순서대로 입력되었으며, 일반적으로 카드 당 하나의 명령어가 있으며 레이블 (JMP/JSR 대상)은 별도의 명령 카드입니다.

프로그램을 편집하기 위해 카드를 교체했습니다.

나중에 구현은 라인의 오른쪽 끝에 선택적 시퀀스 번호를 추가하여 순서 부부가 발생하면 자동화 된 판독기가 재개 할 수 있도록합니다.

Fortran은 왼쪽 (Col 1-5)의 숫자 대상 레이블을 모두 사용하고 시퀀스 또는 댓글을 위해 오른쪽 (73-80)의 예약 블록을 사용했습니다.

기본이 처음 작성되었을 때, 시퀀스 번호를 왼쪽으로, Fortran의 레이블 필드로 이동하고, 편집 모드로서 사전 카드의 메모리 풋 프린트를 덮어 쓰기로 결정했습니다. 이것은 대화식 DEV 환경을위한 것이지만 카드와도 잘 작동했습니다. 그리고 카드는 여러 가지 이유로 일부 초기 구현에서 사용되었습니다.

명심하십시오 : 많은 컴퓨터는 1970 년대 후반까지 카드 리더 및 프린터 인터페이스였습니다. 대화식 모드 기본 사항을 사용할 수 있었으며 카드 펀치 기본 프로그램이 자주 사용되었습니다. 많은 사람들이 단순히 IDE에 먹이를 주었기 때문에 그들은 정확히 같은 방식으로 일했습니다. 마지막에 "실행"카드가 필요합니다. 그러한 경우, 단순히 수정 카드와 다른 런 카드를 일부 변수의 변형으로 다시 실행할 수 있습니다. 마찬가지로, 복잡한 프로그램에서는 실행하기 전에 수정 된 카드 라인을 추가하는 것이 오류 카드 자체를 찾는 데 소중한 시간을 소비하지 않고 문제를 해결하기에 적합했습니다.

나는 Futurama의 로봇 교회를 좋아합니다. 벽에

10 SIN
20 GOTO HELL

Speccy에서는 줄 번호없이 줄을 편집 할 수 없었습니다.

나는 페어링 할 때 매우 도움이된다고 생각합니다. 내 쌍이 키보드를 가지고있을 때 줄을 가리킬 필요는 없습니다. "74 행에서는 실제로 getmorebeer ()가되어서는 안됩니까?"

DOS의 원래 편집자는 훌륭한 유틸리티였습니다. 에드린. 한 줄만 편집 할 수 있습니다. 여러 버전의 기본에서 인생을 더욱 흥미롭게하기 위해 순서대로 줄을 타고 줄을 입력 할 수 있습니다. 10, 20, 30, 25, 5 행은 실행은 외관 순서가 아닌 라인 라인 번호에 의한 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top