C 컴파일러의 첫 번째 버전이 수십 분 동안 실행되었고 스테이지 간 플로피 디스크 교체가 필요하다는 것이 사실입니까?


15

이 질문에서 영감을 얻었습니다 .

개인용 컴퓨터를위한 매우 초기 버전의 C 컴파일러 (1980 년경)는 두세 개의 플로피 디스크에 상주한다는 것을 들었습니다. 따라서 프로그램을 컴파일하려면 먼저 "첫 번째 패스"로 디스크를 삽입해야합니다. "첫 번째 패스"를 선택한 다음 "두 번째 패스"를 사용하여 디스크로 변경하고 실행 한 다음 "세 번째 패스"에 대해 동일한 작업을 수행하십시오. 각 패스는 수십 분 동안 실행되었으므로 오타가 발생하더라도 개발자는 많은 시간을 잃었습니다.

그 주장은 얼마나 현실적입니까? 실제 수치와 세부 사항은 무엇입니까?


2
사실 일 것 같아 60 년대에 프로그램이 구멍을 뚫은 카드 나 종이 테이프에있을 때 프로그래머는 오타가 있는지 알아 내기 위해 하루 이상 기다려야 할 수도 있습니다.
Chris 카드

3
흥미로운 질문입니다. 이것이 사실이라면, 나는 지금 살고 있지만 기쁘지 않다;)
Anto

2
Amstrad 개인용 컴퓨터 에서 파스칼을 컴파일하기 위해 디스크를 여러 번 교체해야한다는 것을 기억 합니다 .
Martin York

글쎄요, 하루를 기다리는 것은 일의 실행 시간이 아니 었습니다. 예전에는 카드 데크를 제출할 곳이 있었으며 흰색 코트를 입은 나치가 그것을 빼앗아 여가 시간에 호퍼에 넣었습니다. 실행 시간은 몇 분 또는 초일 수 있습니다. 인간의 처리 시간은 종종 몇 시간이었습니다.
quick_now

4
완전한 Clean and Rebuild가 수십 분이 걸리는 현대의 C ++ 프로젝트를 보았습니다. 디스크 스왑 대신 OS를 통해 자동으로 가상 메모리 페이지를 수행합니다. 요즘 모두 컴퓨터가 그렇게 발전했다고 말하는 이유는 무엇입니까? =)
Patrick Hughes

답변:


29

물론. 필자는 여러 5.25 "360K 플로피 디스크로 제공되는 80 년대 초 Zenith Z100 컴퓨터 용 Microsoft C (버전 1.0, 제 생각에)를 가지고있었습니다. Z100에는 하드 디스크가 없었기 때문에 전환 할 때 플로피를 자주 교체해야했습니다. 몇 분의 컴파일 및 링크 시간은 드문 일이 아니 었습니다 .2MB (예, 메가 바이트) 메모리 확장 보드에 500 달러를 지불하여 모든 파일을 RAM 디스크 시간을 약 30 초로 줄였습니다 재미 있음 ... 저는 그 시절 재미 있었기 때문에 실제로 프로그래밍을 즐겼습니다.


+1 그러나 나는 반대의 감정을 가지고 있습니다. 당신의 anwser 프로그래밍을 읽은 후에는 오늘 갑자기 재미있게 느껴집니다.
Simon Bergot

Microsoft C 1.0은 실제로 재 포장 된 Lattice C 버전이었습니다. AFIK, Lattice C는 최초의 MS-DOS C 컴파일러였습니다. 별도로 실행되는 두 개의 컴파일러 패스가 필요했습니다.
OldFart

1
우와! 2MB! 그것은 시간 이 거대 했다.
시스템 다운

IBM PC에서 Turbo C 1.0을 사용했는데 (정확하게 기억하면 실제로 AT입니다) 그렇게 나쁘지 않았습니다. 그래도 더 빠른 기계였습니다.
로봇 고트

9

아마 사실 일 것입니다.

홈 컴퓨팅 초기에는 (호비스트가 아닌 어린이 / 부모를위한) 컴퓨터에는 하드 드라이브가 없었습니다.

부모님은 OS가 1 개의 플로피에 있었는데 Amstrad를 가지고 있었고 응용 프로그램을 수동으로 전환 해야하는 플로피 디스크 (즉, 프로세서가 다른 디스크에 있음)를 전환해야 할 수도있는 응용 프로그램을 선택할 수있었습니다. 특별한 OS 서비스가 필요했습니다.

나는 암 스트 라드를위한 파스칼 사본을 가지고 있었다. 편집기가 1 디스크에 있다는 것을 기억하지만 컴파일 과정에서 컴파일 프로세스가 계속됨에 따라 disk1과 disk2 사이를 전환하고 전환해야했습니다 (프로세스의 특정 지점에서 OS 디스크로 전환해야 할 수도 있음) ))).

전체 OS가 하나의 3.5 플로피 디스크에 장착 된 좋은 시절입니다.


4
완전 사실입니다. 매킨토시 용으로 "lightspeed C"컴파일러와 MS-DOS PC 용으로 "turbo C"가 나왔을 때 단일 패스로 실행 되었기 때문에 황홀했습니다.
S.Lott

3.5? 우리 가족의 Amstrad는 2.5 "플로피 드라이브를 사용했습니다. 그리고 그렇습니다. CP | M은 4 세트의 디스크 1에, 로고는 디스크 4에있었습니다.
Peter Taylor

@ 피터 테일러 : 당신은 정확할 가능성이 높습니다. 너무 오래 전입니다 (늙은 느낌).
Martin York

1
나에게 문제가되지 않았습니다. C를 배웠을 때, 멋진 21MB 하드 드라이브가있었습니다 :-)
dan04

1
@ dan04-공동 잔디밭에서 내리십시오. 젠장 위퍼 도미과 멋진 shmancy 하드 드라이브 .....)
시스템 다운

6

플로피 디스크는 1971 년 (8 인치 플로피 디스크)에 소개되었지만 70 년대 중반 (5.25 인치 디스크)까지 인기가 없었습니다. C는 1973 년부터 시작되었으므로 대답은 "제 1 버전"이라고하는 것과 컴파일하는 컨텍스트가 무엇인지에 달려 있다고 생각합니다. 다음 변수를 생각해보십시오.

  • 사용 된 라이브러리 . 현재 디스크에없는 라이브러리를 컴파일 할 때 플로피 디스크를 바꿔야합니다.
  • 프로그램의 복잡성 ( "Hello world"는 "Norton Commander"와 동일하지 않음)
  • 하드웨어 (개인적으로는 메인 프레임이나 미니 컴퓨터에서 거의 항상 컴파일이 완료된 것 같습니다)

결국, 요즘 컴파일은 여전히 ​​몇 분이 걸립니다. 하드웨어와 프로그램의 복잡성 사이의 균형을 조정하면됩니다. 플로피 디스크 부분 만 :-)가 아닙니다.

또한 70 년대의 많은 컴퓨팅이 여전히 터미널 메인 프레임 구조에서 수행 되었기 때문에 플로피 디스크를 변경하는 것은 (적어도 비즈니스 프로덕션 환경에서는) 가능하지 않을 수 있습니다. C가 "집으로 사용되었는지 여부는 알 수 없습니다. "언어).


5
"첫 번째"버전은 플로피에서 실행되지 않았습니다. AT & T의 하드 디스크 기반 PDP-11 시스템이었습니다. 그러나 플로피가있는 컴퓨터 (예 : CP / M, MS-DOS 등)의 첫 번째 버전은 관리하기가 매우 어려웠습니다.
S.Lott

60 년대에 플로피 (이동식 디스크)를 본 것을 기억합니다. 가로 질러 4 피트이었다. 그들은 합판에 장착되어 실험실 주위를 굴릴 수있었습니다. 내가 기억하는대로 약 5K를 개최했습니다.
Martin York

각 컴파일러 실행마다 하나씩 바꾸고 싶지 않습니다! 그 사진을보고 싶어 :-).
vstrien

6

C를 배우기위한 첫 번째 길은 80 년대 후반에 Commodore 64 (예, 컴파일러가 있음)에 관한 것이었다. 올바르게 기억한다면 컴파일러 / 편집기 / 링커는 한 디스크에 있고 소스는 다른 디스크에 있었고 컴파일 단계에서 적어도 한 번은 교체해야했습니다. 물론 C-64에서는 항상 교체가 가능합니다.

가치있는 것에 대해서는 여전히 해당 컴파일러에 대한 상자와 문서가 있습니다. 몇 년마다 향수를 불러옵니다.


2
나는 또한 1984 년에 Commodore 64에서 C를 배웠습니다. 컴파일 과정에서 플로피를 교환하는 것이 아주 명확하게 기억됩니다. Abacus의 컴파일러를 사용하고 있다고 말하고 싶지만 올바르게 기억하지 못할 수도 있습니다.
클린트 밀러

@ 클린트, 당신이 맞다고 확신합니다. 그것이 상자의 이름입니다.
DevSolo

@Clint : 동일한 컴파일러가있었습니다. Commodore 64는 프로그래밍을 배우는 훌륭한 컴퓨터였습니다. 정말 멋진 작업을 수행 할 수있을만큼 충분히 발전했지만 상호 작용하는 데 필요한 모든 하드웨어를 이해할 수있을 정도로 간단했습니다. 이는 당시에는 높은 수준의 추상화 계층이 없었기 때문에 필요했습니다.
덩크

6

첫 번째 C 컴파일러는 CP / M을 실행하는 TRS-80 모델 4 (메모리에 낮은 메모리 위치가 영구적으로 ROM에 매핑되지 않은 첫 번째 모델)였습니다. 첫 번째 드라이브의 디스크에 CP / M이 있어야했습니다.

일단 내가 사용하고있는 편집기를 사용하고 나면 프로그램을 실행하기 전에 컴파일, 어셈블 및 링크해야했습니다. 각각은 자체 프로세스였으며 명령 행에서 시작되었습니다. 컴파일러, 어셈블러 및 링커는 모두 하나의 플로피에 맞지 않을 것입니다. (IIRC, 어셈블러 및 링커는 함께 사용할 수 있습니다.)

따라서 CP / M 시스템 디스크에 프로그램과 편집기가 있고 컴파일러와 어셈블러 / 링커 디스크를 교체했습니다.

시스템 디스크 없이도 실행할 수있는 프로그램을 찾고 있었고, 작은 배치 파일을 만들고 명령 줄 호출을 자동화 할 수 있도록 계획을 세웠습니다. 그러나 나는 결코 따라하지 않았다.

나는 그 시스템을 사용하려고 시도한 후 C를 거의 포기하고 몇 년 동안 파스칼로 돌아갔다.


아마도 UCSD P- 시스템 파스칼?
quick_now

2
@quickly_now : p 코드로 컴파일되었지만 UCSD로 청구되지 않았습니다. 당연히 저는 수십 년 전에 그것을 없애고 그것에 대해 거의 기억하지 않습니다. 터보 파스칼을 받았을 때, 나는 그것에 대해 거의 잊어 버렸습니다.
David Thornley

5

내가 고등학교에있을 때 (1989-1990) 우리는 사과 II에서 파스칼을하고 있었고 그것은 느 렸습니다 . 100 줄의 프로그램을 작성할 수 있으므로 컴파일 할 때 몇 분이 걸렸습니다. 프로그램이 실행되기 전에 컴파일하는 동안 mens 방에 갈 시간이 있었음을 기억합니다.

약 절반 정도가 그 용어를 던져서 훨씬 더 빠른 Mac SE를 얻었습니다! 파스칼이 훨씬 나아 졌다고 생각하십시오.


2
Mac SE를 언급 한 경우 +1 Mac SE 용 20MB 외장 하드 드라이브를 구입 한 것을 기억합니다. 전체 Mac이 그 위에 앉을 정도로 너무 컸습니다.
철학자

나는 내부를 가지고 있었지만 그 중 하나도 가지고 있었을 것입니다. 정말 멋진 디자인.
Zachary K

5

내 친구의 아버지는 그 당시 유명한 프로그래머였습니다. 그는 컴파일 결과, 며칠, 때로는 일주일을 기다리는 데 지쳤다. 대부분 집에서 일하고, 프로그램을 작성하고, 카드를 펀칭하고, 운전하고, 운영자에게 상자를주고, 다른 코드보다 코드가 더 중요하다는 것을 주장하고 잠시 기다립니다.

때로는 코드가 컴퓨터에 도달하지 못했지만 친구가 아버지가 실제로 이야기 한 시간을 이야기했습니다. 정말로 그에게 화를 냈습니다. 그는 왜 인생에서 훨씬 나중에까지 이해하지 못했지만 소년은 단단한 종이로 가득 찬이 상자가 재미있어 보였습니다 ...

어느 날 그는 경영진에게 주장을했고, 미니 컴퓨터를 집에 배달 한 좋은 사례를 만든 것 같습니다. 그때까지 컴퓨터는 거실의 대부분을 차지했지만 물론 한계를 벗어났습니다.

그렇습니다. 컴파일의 단계간에 디스크를 교환하는 것은 확실한 가능성이며 이전에 사용 가능한 것보다 VAST가 개선되었다고 말할 때 저를 믿으십시오 !!!

20 년 정도 기다리면 누군가 다음과 같은 질문을하는 것을 상상할 수 있습니다.

이전에는 키보드를 사용하여 코드 문자를 문자로 입력해야한다는 것이 사실입니까?


3

나는 C에 대해 모른다. 그러나 그 기간 동안 나는 두 번의 통과를 거친 Microsoft Fortran 컴파일러를 가지고 있었다. 뿐만 아니라 페이지 길이가 긴 프로그램이 잘못 실행되어 (소스 코드가 옳았다 고 확신합니다), 그래서 PC에 대한 컴파일을 포기했습니다. 이것은 인터넷 이전의 날이었고 PC는 내 고용주의 소유였습니다. 여전히 PC를 가지고있는 것이 좋았습니다. 플로피 작업을하고 집으로 가져 가서 편집 할 수있었습니다. 다음 날 일을하려고했을 때 이미 필기 한 노트 대신 편집 된 프로그램이있었습니다.

초창기에도 (프로그래밍 스프링 70을 시작) 컴파일러는 일괄 처리 메인 프레임 OS에서 단일 JCL 명령이었습니다. 위에서 설명한 것과 같습니다. 당신은 키펀치를 기다리며 홀리리스 카드를 펀칭했습니다. 그런 다음 창을 통해 작업자에게 전달했습니다. PNC의 색상 (기본적으로 계좌 번호 / 암호가 들어있는 펀치 카드)에 따라 1 시간에서 24 시간 후에 결과를 다시 얻을 수 있습니다. 저급 학생들은 나중에 처리 시간을 가졌습니다. "Hello World"과제를 2 주 안에 완료하는 것은 정말 어려운 일이었습니다. 몇 년 후 나는 파트 타임 프로그래밍 직업을 얻었고 밤에 컴퓨터 센터에서 놀 수 있었다. 우리 중 일부는 카드 리더에게 직접 먹이를 줄 수도 있습니다. 그런 다음 몇 분만 소요됩니다 / 그러나 늦은 밤에만 할 수 있습니다.

그래서 오랫동안 컴파일러는 주로 메인 프레임 (대규모 조직이 소유 한 수백만 달러 급 기계)을위한 것이 었습니다. 그리고 몇몇 미니 컴퓨터는 종종 이상하고 까다로운 방법으로 프로그래밍해야했습니다. 하나의 미니 컴퓨터를 사용하여 지진계를 디지털화했습니다. OS를 부팅하기 위해 종이 테이프를 안내하는 데 약 10-15 분이 걸렸으며 디지타이저 테이블에서 작업을 수행했습니다.


2

확실합니다. 오래된 CP / M 머신에서는 C를 사용하지 않았고 CB-80을 사용했습니다. 컴파일 된 기본. (그렇습니다. 꽤 끔찍했습니다). 각각 89K를 유지하는 2 개의 플로피 드라이브가있는 Heath / Zenith Z-89에서.

단일 디스크 컴파일은 너무 끔찍해서 잊어 버린 경우였습니다. 디스크 스와핑이 너무 많습니다. 플로피 드라이브 2 개는 럭셔리했습니다! 하나는 소스이고 다른 하나는 컴파일러입니다. 플로피가 맞 물리고 풀리고 머리가 부딪히면서 기계가 "clang clang clang"을 갔을 때 컴파일을 설정하고 차 한 잔을 마시 러 걸어 가십시오.

보스는 약 18x18x8 인치 크기의 5MB 하드 드라이브를 별도로 전원으로 구매했으며 약 4 피트 길이의 리본 케이블을 사용하여 H89의 뒷면에 부착했습니다.

오 속도! 그리고 용량! 5MB의 스토리지


1

C (내 첫 번째 C 컴파일러는 하드 드라이브에서 실행되었고 빠르지 않았습니다)에 대해 알지 못했지만 처음 사용한 매크로 어셈블러 (C64)에는 플로피 디스크 전환이 필요했습니다 (하나는 어셈블러를로드하고 다른 하나는 코드), 시스템을 구축하는 데 20 분 이상이 걸렸으며, 몇 달의 개발 후에 플로피 디스크 드라이브와 마더 보드가 모두 과열되어 죽었습니다.


1

1988 년 대학 = PC의 포트란, 8088 512K (K), 단일 플로피 드라이브 컴파일에는 20-30 분이 걸렸습니다. 새로운 720K 버전 중 하나를 사용했기 때문에 플로피를 교체 할 필요가 없었습니다.

전체 클래스를위한 Sun3 (68030 1Mb 램) 및 24 vt100 터미널.


1

내 시간 전에 나는 가정한다. 내 첫 "실제"프로그래밍 (PC의 어쨌든)은 COBOL이었습니다. 당시 우리는 IBM PC를 사용했습니다. 그들은 2 개의 360k 플로피 드라이브를 가지고있었습니다; 하나는 컴파일러를, 다른 하나는 소스 코드를 가졌습니다.

나는 간단한 대학 프로젝트조차도 그 플로피에서 달리기를 컴파일하는 데 문자 그대로 15 분이 걸렸다는 것을 알고 있습니다. 그런 다음 최종 프로젝트를 위해 친구 집에서 작업했습니다. 그는 방금 10 메가 바이트의 하드 드라이브라는 새로운 기계를 얻었습니다! 우리 프로젝트는 1 분 안에 작성되었습니다. 그것은 내 마음을 완전히 불었다.


디스크 버퍼가 설정되지 않았을 가능성이 큽니다. 몇 가지만 놀랍습니다.

1

다양한 응용 프로그램을 위해 이전 128K Mac에서 플로피 댄스를 수행해야 했으므로 세부 사항을 말할 수는 없었지만 1 분 동안 의심하지 않습니다. BASIC 인터프리터가 초기 개인용 컴퓨터에서 그렇게 보편적으로 사용 된 이유 (여러 패스, 기호 테이블 등이 필요하지 않은)의 일부가 아니더라도 놀라지 않을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.