Có đúng là các phiên bản đầu tiên của trình biên dịch C đã chạy trong hàng chục phút và yêu cầu trao đổi đĩa mềm giữa các giai đoạn không?


15

Lấy cảm hứng từ câu hỏi này .

Tôi nghe nói rằng một số phiên bản rất sớm của trình biên dịch C cho máy tính cá nhân (tôi đoán là vào khoảng năm 1980) đã nằm trên hai hoặc ba đĩa mềm và vì vậy để biên dịch một chương trình, trước tiên phải đưa đĩa vào "lần đầu tiên", chạy "vượt qua đầu tiên", sau đó thay đổi sang đĩa với "vượt qua thứ hai", chạy đó, sau đó làm tương tự cho "vượt qua thứ ba". Mỗi lượt chạy trong hàng chục phút để nhà phát triển mất rất nhiều thời gian trong trường hợp thậm chí là một lỗi đánh máy.

Làm thế nào thực tế là tuyên bố đó? Con số thực tế và chi tiết là gì?


2
Nghe có vẻ đúng. Vào những năm 60, khi các chương trình trên thẻ đục lỗ hoặc băng giấy, một lập trình viên có thể phải chờ hơn một ngày để tìm hiểu về một lỗi đánh máy.
Thẻ Chris

3
Câu hỏi thú vị. Nếu điều này là sự thật, tôi rất vui vì tôi sống bây giờ và không sau đó;)
Anto

2
Tôi nhớ phải trao đổi đĩa nhiều lần để biên dịch pascal trên máy tính cá nhân Amstrad .
Martin York

Vâng, điều chờ đợi một ngày không phải là quá nhiều thời gian của công việc, đó là hàng đợi các công cụ ở phía trước. Đã từng có những nơi bạn sẽ đến để gửi bộ bài của bạn và một số nazi trong một chiếc áo khoác trắng sẽ mang nó đi và đặt các thẻ vào phễu khi rảnh rỗi. Thời gian chạy có thể chỉ vài phút hoặc vài giây. Thời gian xử lý của con người thường tính bằng giờ.
quick_now

4
Tôi đã thấy các dự án C ++ hiện đại rằng việc dọn dẹp và xây dựng lại hoàn toàn mất hàng chục phút và thay vì đổi đĩa, nó sẽ tự động thực hiện các trang bộ nhớ ảo thông qua HĐH. Tại sao mọi người cứ nói máy tính ngày nay rất tiên tiến? =)
Patrick Hughes

Câu trả lời:


29

Chắc chắn rồi. Tôi đã có Microsoft C (phiên bản 1.0, tôi nghĩ) cho một máy tính Zenith Z100 vào đầu những năm 80 được phân phối trên một số đĩa mềm 5,25 "360K. Z100 không có đĩa cứng nên tôi phải thường xuyên trao đổi đĩa mềm khi tôi chuyển đổi giữa trình soạn thảo, trình biên dịch và trình liên kết. Thời gian biên dịch và liên kết trong vài phút không phải là bất thường. Thật khó chịu khi tôi đã trả 500 đô la cho bảng mở rộng bộ nhớ 2 MB (vâng, megabyte) để tôi có thể tải tất cả các tệp vào Đĩa RAM. Điều đó đã giảm thời gian xuống còn khoảng 30 giây. Hài hước ... Tôi thực sự rất thích lập trình trở lại trong những ngày đó vì nó rất vui. Hôm nay nó hoạt động.


+1 tuy nhiên tôi có cảm giác ngược lại. Sau khi đọc chương trình anwser của bạn cảm thấy đột nhiên buồn cười hơn ngày hôm nay.
Simon Bergot

Microsoft C 1.0 thực sự là phiên bản đóng gói lại của Lattice C. AFIK, Lattice C là trình biên dịch MS-DOS C đầu tiên. Nó đã yêu cầu hai trình biên dịch chạy riêng biệt.
OldFart

1
Ái chà! 2 MB! Đó là rất lớn cho thời gian.
Hệ thống xuống

Tôi đã sử dụng Turbo C 1.0 trên các PC của IBM (tốt, thực sự là AT nếu tôi nhớ chính xác) và nó không tệ đến thế. Đó là những máy nhanh hơn, mặc dù.
Gort Robot

9

Có lẽ đúng.

Trong những ngày đầu của máy tính gia đình (đối với trẻ em / cha mẹ không phải là người máy tính nhất), máy thậm chí không có ổ cứng.

Bố mẹ tôi có Amstrad , HĐH đã có trên 1 đĩa mềm và nó cho phép bạn chọn ứng dụng để chạy, có thể phải chuyển đổi đĩa mềm (tức là bộ xử lý văn bản nằm trên đĩa khác) yêu cầu chuyển thủ công trở lại đĩa OS nếu ứng dụng cần một số dịch vụ hệ điều hành chuyên biệt.

Tôi đã có một bản sao của pascal cho amstrad. Tôi nhớ trình soạn thảo nằm trên 1 đĩa nhưng trong quá trình biên dịch, nó yêu cầu chuyển đổi qua lại giữa đĩa1 và đĩa2 khi quá trình biên dịch tiếp tục (thậm chí có thể yêu cầu chuyển sang đĩa hệ điều hành tại một số điểm nhất định trong quy trình (nhưng tôi không nên chắc chắn tắt)).

Một ngày xưa tốt đẹp khi toàn bộ hệ điều hành được trang bị trên một đĩa mềm 3.5 (nhưng không nhiều thứ khác).


4
Hoàn toàn đúng. Khi trình biên dịch "lightpeed C" xuất hiện cho macffy và "turbo C" cho PC MS-DOS, chúng tôi đã ngây ngất vì nó chạy trong một lần chạy.
S.Lott

3.5? Amstrad của gia đình tôi có ổ đĩa mềm 2,5 ". Và vâng, CP | M nằm trên đĩa 1 của bộ 4 và Logo nằm trên đĩa 4. Tôi không nhớ những gì khác ở đó.
Peter Taylor

@Peter Taylor: Bạn có nhiều khả năng là chính xác. Đó là một thời gian dài trước đây (tôi cảm thấy cũ).
Martin York

1
Không phải là một vấn đề đối với tôi. Khi tôi học C, tôi có một ổ cứng lớn 21 MB :-)
dan04

1
@ dan04 - Thoát khỏi bãi cỏ tập thể của chúng tôi. Những kẻ bắn tỉa chết tiệt và ổ cứng shmancy ưa thích của họ .....;)
Hệ thống xuống

6

Đĩa mềm được giới thiệu vào năm 1971 - (tức là đĩa mềm 8 inch), nhưng không phổ biến cho đến giữa những năm 70 (với các đĩa 5,25 inch). C là từ năm 1973, vì vậy tôi nghĩ rằng câu trả lời chủ yếu phụ thuộc vào những gì bạn gọi là "phiên bản đầu tiên" và bối cảnh biên dịch là gì. Hãy nghĩ về các biến này:

  • Thư viện đã qua sử dụng . Khi biên dịch thư viện không có trên đĩa hiện tại, bạn sẽ phải thay đổi đĩa mềm ở giữa.
  • Độ phức tạp của chương trình ("Hello world" không giống với "Chỉ huy Norton")
  • Phần cứng (cá nhân, tôi nghĩ rằng việc biên dịch nghiêm túc hầu như luôn được thực hiện trên máy tính lớn hoặc máy tính mini)

Sau tất cả - những ngày này, việc biên dịch vẫn mất vài phút - chỉ cần điều chỉnh sự cân bằng giữa phần cứng của bạn và độ phức tạp của chương trình. Chỉ phần đĩa mềm không phải là :-).

Cũng tính đến việc nhiều máy tính trong thập niên 70 vẫn được thực hiện trên cấu trúc máy tính lớn, vì vậy việc thay đổi đĩa mềm có thể khó xảy ra (ít nhất là trong bối cảnh sản xuất kinh doanh. Tôi không biết liệu C có được sử dụng như một "ngôi nhà không "Ngôn ngữ).


5
Phiên bản "đầu tiên" không chạy trên đĩa mềm. Đó là một hệ thống PDP-11 dựa trên đĩa cứng tại AT & T. Tuy nhiên, phiên bản đầu tiên cho máy tính có đĩa mềm (ví dụ CP / M, MS-DOS, v.v.) khá khó quản lý.
S.Lott

Tôi nhớ đã nhìn thấy một đĩa mềm (đĩa di động) từ những năm 60. Nó dài 4 feet. Chúng được gắn trên ván ép để chúng có thể được cuộn quanh phòng thí nghiệm. Tổ chức khoảng 5K như tôi nhớ.
Martin York

Bạn không muốn thay thế THAT cho mỗi lần chạy trình biên dịch! Rất thích nhìn thấy một hình ảnh của nó :-).
vstrien

6

Bước đột phá đầu tiên của tôi vào việc học C là vào chương trình Commodore 64 (vâng, có một trình biên dịch cho nó), vào cuối những năm 80. Nếu tôi nhớ lại một cách chính xác, trình biên dịch / trình soạn thảo / trình liên kết nằm trên một đĩa và nguồn của bạn nằm trên một đĩa khác và bạn phải trao đổi ít nhất một lần trong giai đoạn biên dịch. Tất nhiên, trên C-64, bạn luôn đổi chỗ.

Đối với những gì nó có giá trị, tôi vẫn có hộp và tài liệu cho trình biên dịch đó. Làm cho một số đọc hoài cổ mỗi vài năm.


2
Tôi cũng đã học C trên Commodore 64 vào năm 1984. Tôi nhớ việc trao đổi đĩa mềm trong quá trình biên dịch khá rõ ràng. Tôi muốn nói rằng tôi đã sử dụng một trình biên dịch bởi Abacus, nhưng tôi có thể không nhớ chính xác điều đó.
Clint Miller

@Clint, tôi chắc chắn bạn đã đúng. Đó là tên trên hộp.
DevSolo

@Clint: Tôi đã có trình biên dịch tương tự. Commodore 64 là một máy tính tuyệt vời để học lập trình. Nó đủ tiên tiến để làm một số thứ thực sự tuyệt vời nhưng đủ đơn giản để bạn có thể hiểu tất cả phần cứng bạn cần để tương tác, điều này là bắt buộc vì chúng không có các lớp trừu tượng cao cấp mà ngày nay chúng có.
Dunk

6

Trình biên dịch C đầu tiên của tôi là trên TRS-80 Model 4 đang chạy CP / M (mô hình đầu tiên sẽ hoạt động đúng, không có vị trí bộ nhớ thấp được ánh xạ vĩnh viễn vào ROM). Nó yêu cầu đĩa trong ổ đĩa đầu tiên phải có CP / M trên đó.

Khi tôi đã sử dụng bất kỳ trình soạn thảo nào tôi đang sử dụng, tôi phải biên dịch, lắp ráp và liên kết chương trình trước khi tôi có thể chạy nó. Mỗi cái là quá trình riêng của nó, khởi động tại dòng lệnh. Trình biên dịch, trình biên dịch và trình liên kết sẽ không phù hợp với một đĩa mềm. (IIRC, trình biên dịch và trình liên kết có thể khớp với nhau.)

Do đó, tôi có chương trình và trình soạn thảo trên đĩa hệ thống CP / M và trao đổi trong các trình biên dịch và trình biên dịch / trình liên kết.

Tôi đang xem một chương trình cho phép tôi chạy mà không cần đĩa hệ thống và tôi có một kế hoạch (mà tôi không còn nhớ nữa) để thiết lập mọi thứ để tôi có thể tạo một tệp bó nhỏ và tự động hóa các cuộc gọi dòng lệnh, nhưng tôi không bao giờ đi theo

Tôi đã từ bỏ C rất nhiều sau khi thử sử dụng hệ thống đó và quay lại Pascal trong vài năm.


Có lẽ Pascal hệ thống PSD?
quick_now

2
@quickly_now: Một cái gì đó được biên dịch thành mã p, nhưng nó không được lập hóa đơn là UCSD. Tự nhiên, tôi đã thoát khỏi nó hàng thập kỷ trước, và nhớ rất ít về nó. Khi tôi có Turbo Pascal, tôi đã quên rất nhiều về nó.
David Thornley

5

Khi tôi còn học trung học (1989-1990) Chúng tôi đã làm pascal trên một quả táo II và đó là SLOW . bạn có thể viết một chương trình gồm 100 dòng hoặc lâu hơn khi bạn nhấn biên dịch mất vài phút. Tôi nhớ rằng bạn đã có thời gian để đi vào phòng nam trong khi nó đang biên dịch trước khi chương trình chạy.

Khoảng một nửa đã ném thuật ngữ đó tôi đã nhận được một chiếc Mac SE nhanh hơn rất nhiều! Hãy nghĩ rằng Pascal đã tốt hơn rất nhiều.


2
+1 để đề cập đến Mac SE. Tôi nhớ nhận được một ổ cứng ngoài 20 MB cho Mac SE của tôi. Nó lớn đến mức toàn bộ máy Mac nằm trên nó.
philosodad

Tôi đã có một nội bộ, nhưng tôi có thể đã có một trong những người đó là tốt. Thiết kế rất đẹp thực sự.
Zachary K

5

Cha của một người bạn của tôi là một lập trình viên cao cấp ngày trước. Anh ta mệt mỏi chờ đợi kết quả biên dịch, ngày, đôi khi cả tuần. Làm việc chủ yếu ở nhà, viết chương trình, đấm thẻ, lái xe, đưa hộp cho người điều hành và tranh luận một lúc, mã của anh ta quan trọng hơn tất cả những người khác và chờ đợi.

Đôi khi mã không bao giờ đến được máy tính, bạn tôi kể cho tôi nghe câu chuyện về thời gian cha anh thực sự, ý tôi là THỰC SỰ nổi giận với anh ta. Anh ta không bao giờ thực sự hiểu tại sao cho đến tận sau này trong cuộc đời, nhưng cậu bé này lại đầy những tờ giấy cứng nhắc trông rất vui ... này cũng đầy lỗ hổng của họ !!!

Một ngày nọ, anh ta đưa ra lập luận cho quản lý và tôi đoán Anh ta đã đưa ra một trường hợp tốt vì họ đã giao một chiếc máy tính mini đến nhà anh ta. Tôi nên đề cập rằng, vào lúc đó, máy tính đã chiếm phần lớn phòng khách, tất nhiên, đã trở thành giới hạn.

Vì vậy, có, trao đổi đĩa giữa các giai đoạn trong một quá trình biên dịch là một khả năng rõ ràng và tin tưởng tôi khi tôi nói rằng đó là một cải tiến VAST từ những gì có sẵn trước đó !!!

Chỉ cần đợi 20 năm hoặc lâu hơn, tôi có thể tưởng tượng ai đó hỏi một câu hỏi nào đó như:

Có đúng là trước đây, họ phải sử dụng bàn phím để gõ ký tự mã của họ bằng chữ cái?


3

Tôi không biết về C, nhưng trong khung thời gian đó tôi đã có một trình biên dịch microsran Fortran mất hai lần. Không chỉ vậy, nhưng tôi đã có một chương trình dài mà nó chạy sai (tôi chắc chắn mã nguồn là đúng), vì vậy, tôi đã từ bỏ việc biên dịch cho PC hoàn toàn. Đây là những ngày trước khi có internet và PC thuộc về chủ nhân của tôi. Nó vẫn rất tuyệt khi có PC, tôi có thể đưa công việc vào đĩa mềm và mang nó về nhà và chỉnh sửa nó. Vì vậy, khi tôi phải làm việc vào ngày hôm sau, tôi đã có một chương trình được chỉnh sửa, thay vào đó là các ghi chú viết tay.

Ngay cả trong những ngày trước đó, (tôi bắt đầu lập trình vào mùa xuân năm 70), trình biên dịch là một lệnh JCL duy nhất trên một hệ điều hành máy tính lớn xử lý hàng loạt. Nó giống như mô tả ở trên. Bạn đã xếp hàng chờ đợi một keypunch và đấm thẻ holerith của bạn. Sau đó, bạn đưa chúng cho một nhà điều hành thông qua một cửa sổ. Tùy thuộc vào màu sắc của PNC của bạn (về cơ bản là thẻ đục lỗ có chứa số tài khoản / mật khẩu), bạn có thể lấy lại kết quả của mình từ 1 đến 24 giờ sau. Học sinh cấp thấp đã có sự quay vòng sau đó. Đó thực sự là một thử thách để hoàn thành nhiệm vụ "xin chào thế giới" trong hai tuần quy định cho nó! Vài năm sau tôi có một công việc lập trình bán thời gian và có thể đi chơi ở trung tâm máy tính vào ban đêm. Một số người trong chúng ta thậm chí có thể tự cho người đọc thẻ. Sau đó quay vòng chỉ vài phút / Nhưng bạn chỉ có thể làm điều này vào đêm khuya.

Vì vậy, trong một thời gian dài, trình biên dịch chủ yếu là một thứ cho máy tính lớn (máy móc triệu đô thuộc sở hữu của các tổ chức rất lớn). Và một số máy tính mini xung quanh thường phải được lập trình theo những cách lạ và khó. Tôi đã sử dụng một máy tính mini để số hóa địa chấn. Phải mất khoảng 10-15 phút băng hướng dẫn thông qua nó để khởi động HĐH, sau đó bạn sẽ thực hiện công việc của mình trên bảng số hóa.


2

Có chắc chắn. Tôi đã không sử dụng C trên các máy CP / M cũ đó, tôi đã sử dụng CB-80. CƠ BẢN tổng hợp. (Và vâng, nó thật kinh khủng). Trên một chiếc Heath / Zenith Z-89 với 2 ổ đĩa mềm, mỗi ổ chứa 89K.

Quá trình biên dịch đĩa đơn rất kinh khủng, đó là một trường hợp quên nó. Quá nhiều trao đổi đĩa. 2 ổ đĩa mềm là LUXURY! Nguồn trên một, trình biên dịch trên khác. Đặt một trình biên dịch đi và đi lấy một tách trà trong khi máy phát ra tiếng "clang clang clang" khi các đĩa mềm được đính hôn và thảnh thơi và những cái đầu đập xung quanh.

Ông chủ đã mua một ổ cứng 5 MB có kích thước khoảng 18x18x8 inch, được cấp nguồn riêng và gắn vào mặt sau của H89 bằng cáp ruy băng dài khoảng 4 feet.

Ôi tốc độ! và năng lực! với 5 MB dung lượng lưu trữ.


1

không biết về C (trình biên dịch C đầu tiên của tôi chạy từ ổ đĩa cứng và không nhanh), nhưng Trình biên dịch Macro đầu tiên tôi sử dụng (C64) yêu cầu chuyển đổi đĩa mềm (một để tải trình biên dịch, phần còn lại để tải trình biên dịch mã), mất hơn 20 phút để xây dựng hệ thống và sau vài tháng phát triển cả ổ đĩa mềm và bo mạch chủ quá nóng và chết.


1

Đại học năm 1988 = Fortran trên PC, 8088 512K (đó là K !!) ram và ổ đĩa mềm duy nhất Biên dịch mất 20-30 phút, tôi không phải trao đổi đĩa mềm vì tôi có một trong số 720K mới.

Một thiết bị đầu cuối Sun3 (ram 68030 1Mb) và 24 vt100 cho cả lớp.


1

Trước thời gian của tôi, tôi cho rằng. Lập trình "thực sự" đầu tiên của tôi (trên PC, dù sao) là COBOL. Lúc đó chúng tôi sử dụng máy tính IBM. Họ có 2 ổ đĩa mềm 360k; một cái có trình biên dịch, và cái kia có mã nguồn của bạn.

Tôi biết rằng ngay cả các dự án đại học đơn giản của tôi cũng mất 15 phút để biên dịch chạy trên những đĩa mềm đó - tôi đã chạy đến quán cà phê để uống cà phê trong khi nó đang biên dịch. Sau đó, cho dự án cuối cùng tôi đã làm việc với nó tại nhà bạn bè của tôi. Anh ta vừa nhận được một chiếc máy hoàn toàn mới với thứ gọi là ổ cứng - 10 megabyte! Dự án của chúng tôi biên soạn dưới một phút. Nó hoàn toàn thổi vào tâm trí của tôi.


Bạn rất có thể không có bất kỳ bộ đệm đĩa nào được thiết lập. Chỉ một số ít đã làm điều kỳ diệu.

1

Tôi đã phải thực hiện điệu nhảy mềm mại trên máy Mac 128K cũ của mình cho các ứng dụng khác nhau, vì vậy tôi không nghi ngờ điều này trong một phút, mặc dù tôi không thể cung cấp bất kỳ chi tiết nào. Tôi sẽ không ngạc nhiên nếu đó không phải là một phần lý do tại sao các phiên dịch viên BASIC rất phổ biến trên các máy tính cá nhân ban đầu (không cần nhiều lượt, bảng biểu tượng, v.v.).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.