Làm thế nào để lập trình làm việc khi lập trình viên sử dụng punchcards?


11

Tôi thấy điều này: Học lập trình trên punchcards

và tôi đã thấy điều này: http://en.wikipedia.org/wiki/Computer_programming_in_the_punched_card_era

nhưng họ để lại nhiều để được mong muốn.

Bất cứ ai có thể giải thích cho tôi cách lập trình viên lập trình khi họ sử dụng punchcards? Cụ thể, hệ thống các máy tính đầu vào được sử dụng để lấy hướng dẫn từ chính thẻ đục lỗ.

Tôi không biết nhiều về máy tính retro, vì vậy bất kỳ một hệ thống đầu vào nào bạn quen thuộc cũng sẽ ổn. Nhiều câu trả lời chung chung cũng được đánh giá cao.

Câu trả lời:


16

Trong một từ, kém.

Ít nhất là trên bất kỳ máy nào tôi từng sử dụng hoặc nghe nói, bạn không cho từng thẻ một lần. Có những đầu đọc thẻ tự động sẽ nạp và đọc hàng trăm thẻ mỗi phút (có thể khoảng 1000 / phút, nhưng tôi không chắc về thông số kỹ thuật chính xác).

Trong một trường hợp điển hình, bạn đã viết mã bằng tay, sau đó bấm mã vào thẻ. Mỗi thẻ chứa một dòng mã (tối đa 80 cột). Bạn lấy bộ bài để được thực thi. Tùy thuộc vào tồn đọng, bất cứ nơi nào từ một giờ hoặc lâu hơn một ngày hoặc lâu hơn, bạn đã lấy lại bộ bài của mình cùng với bản in kết quả.

Tôi có lẽ nên thêm: vì bộ bài của bạn chạy như một công việc, bạn không chỉ gửi mã cho chính chương trình - bạn phải viết một cái gì đó mơ hồ tương tự như một tập lệnh shell / script với các hướng để biên dịch và thực thi mã. IBM JCL (ví dụ) vẫn bị ảnh hưởng nặng nề bởi nguồn gốc thẻ Hollerith.

Một điểm nhỏ khác: trên hầu hết các hệ thống tôi nhớ, bạn thường bao gồm một số dòng trên mỗi thẻ đục lỗ. Bạn rõ ràng đã tránh làm rơi một bộ bài nếu bạn có thể, nhưng khi (không phải nếu) một người bị rơi, nó thực sự gần như là thảm kịch mà nhiều người tưởng tượng. Điểm thú vị: ít nhất là các bộ sắp xếp thẻ mà tôi thấy đã sử dụng một loại cơ số - họ sẽ tách các thẻ thành 10 thùng, dựa trên một chữ số của số dòng, sau đó "hợp nhất" chúng lại với nhau (thả tất cả các thẻ vào một bin theo thứ tự) sau đó lặp lại nhiều lần như bạn có các chữ số trong các số dòng.

Thẻ Hollerith có ảnh hưởng cực kỳ lớn - 80 cột như một giới hạn vẫn còn tồn tại đến một mức độ gần như đáng lo ngại. Ít nhất là trên các máy tính lớn của Data Data, những thứ như hệ thống tệp cũng bị ảnh hưởng khá nhiều. Ngay sau khi thẻ Hollerith gần như biến mất, phần còn lại của chúng có thể nhìn thấy trong HĐH - ví dụ, các tệp văn bản thường được lưu trữ dưới dạng một loạt các bản ghi 80 ký tự, bất kể có bao nhiêu / nhiều ký tự trong một dòng. Tôi vẫn có thể nhớ sự ngạc nhiên của mình về "sự lạc hậu" của một hệ thống như Unix nơi bạn phải đọc tất cả các dòng trước để tìm dòng N của tệp văn bản, thay vì chỉ có thể tìm kiếm trực tiếp.


Tôi nghĩ rằng những gì bạn mô tả là một cách làm việc hiện đại hơn nhiều. Phân loại thẻ và nạp liệu? Trời ơi, mẹ tôi đã giết vì điều đó ...: - D
littleadv

@littleadv: Thẻ Hollerith và nguồn cấp dữ liệu trước máy tính. Tôi ít chắc chắn hơn về máy phân loại, nhưng tôi khá chắc chắn họ cũng làm như vậy.
Jerry Coffin

1
Chúng tôi thường viết bằng tay COBOL và RPGIII trên giấy sau đó tự đấm thẻ. 4 ký tự bên phải trên thẻ đã được sử dụng cho "số dòng" của chương trình. Vâng, tôi đã đánh rơi một khay thẻ trước đó, chúng tôi đã có một máy phân loại thẻ trong cùng phòng với cú đấm chìa khóa. Hãy nhớ rằng, COBOL và RPGIII là những ngôn ngữ được định dạng RẤT nghiêm ngặt. Mã của bạn phải theo một số thứ tự nhất định để chạy. Sau đó, các khay thẻ được lấy để chạy và nhà điều hành chạy công việc, đưa cho bạn bản in cùng với các khay thẻ của bạn. Hy vọng rằng, bạn đã không có sai lầm.
MB34

4
Chúng tôi có một phòng với hai máy móc khóa 029 , nhưng không có máy phân loại . Vì vậy, mặc dù các thẻ được đánh số, chúng tôi thường vẽ các đường chéo trên ngọn như thế này . Nếu bạn đã làm rơi một hộp ô tô, thông thường chúng sẽ kết thúc trên sàn trong một số nhóm, bạn có thể ghép lại với nhau khá tốt dựa trên những dòng này để bắt đầu, và sau đó hoàn thành công việc bằng cách xác minh số thẻ theo thứ tự.
tcrosley

2
Không chỉ các chương trình được bấm trên thẻ, dữ liệu đầu vào và dữ liệu đầu ra cũng được bấm trên thẻ. Thẻ là hình thức lưu trữ chính vào cuối thập niên 70 và đầu thập niên 80. Dung lượng đĩa quá đắt để sử dụng cho mọi thứ ngoài trình biên dịch và trình tải.
Gilbert Le Blanc

6

Bạn đã sử dụng cú đấm thẻ như một biên tập viên.

  • Chèn == đấm một thẻ mới.
  • Di chuyển == nhặt thẻ và di chuyển đến đúng vị trí.
  • Xóa == lấy thẻ ra và ném vào thùng
  • Sao chép - các cú đấm thẻ tốt hơn có chức năng sao chép có thể sao chép một cột thẻ khác theo cột.
  • Lặp lại một ký tự - sử dụng chức năng sao chép nhưng nhập các ký tự thay thế khi bạn đạt đến ký tự bạn cần thay thế.
  • Xóa một ký tự - sử dụng chức năng sao chép nhưng giữ thẻ đã sao chép để ngăn nó di chuyển và nhấn khoảng trắng cho mỗi ký tự bạn muốn "xóa"
  • Chèn ký tự - sử dụng chức năng sao chép nhưng giữ thẻ gốc bất động trong khi nhập văn bản mới.

Đối với hầu hết các thẻ phần là "bất biến" nhưng bạn có thể loại bỏ các ký tự bằng cách băng qua các lỗ bằng băng dính mờ đục.

Bạn đọc trong chương trình của mình được bao quanh bởi JCL thích hợp và đợi máy in đưa ra kết quả. (Có thể là giờ!)


4

Rất chậm.

Mẹ tôi là một lập trình viên như vậy, vì vậy tôi có hàng tấn thẻ này ở nhà khi lớn lên. Những gì họ sẽ làm là mã hóa chương trình trên thẻ, sau đó đưa từng thẻ vào đầu đọc thẻ (tương tự như cách các máy bỏ phiếu hoạt động bây giờ). Nếu bạn đánh rơi thẻ - bạn sẽ gặp nhiều rắc rối, vì bạn chỉ có thời gian máy X được phân bổ cho bạn và bạn phải sắp xếp chúng theo đúng thứ tự và khởi động lại cho máy ăn lại và cố gắng thực hiện nó đúng giờ trước khi lập trình viên tiếp theo đuổi bạn ra. Một chương trình tầm thường (trong các tiêu chuẩn hiện tại của chúng tôi) có thể đã yêu cầu hàng trăm, nếu không phải hàng ngàn thẻ như vậy và thời gian của máy để tải và chạy nó.

Rất tẻ nhạt.


Mặt khác, có lẽ có rất ít ký sinh trùng trong ngành :)
haylem

phụ thuộc vào cách bạn định nghĩa "ký sinh trùng" .... :)
littleadv

Thật không may, tôi không có nghĩa là "lỗi" nổi tiếng từ thời đó, nhưng đám người đã nhảy vào băng thông tin CNTT.
haylem

Ôi nỗi nhớ ... thế giới là một nơi tốt đẹp hơn trong thời đại cũ! Nhưng thực sự, chủ yếu là vì chúng ta có xu hướng quên đi những thứ xấu. Có tất cả các nhóm người nhảy vào tất cả các loại bandwagons, luôn luôn và sẽ luôn luôn như vậy.
littleadv

Suỵt Đó là những ngày. Đó là tất cả. (Tôi thực sự không biết, tôi đã không ở đó.)
haylem

1

Trong một số cách "không quá khác biệt", trong một số cách "rất khác nhau".

Họ đã viết mã nguồn, thường là trên giấy. Điều này sau đó được nhập lại vào thẻ đục lỗ (một dòng mã nguồn trên mỗi thẻ, thường có số dòng, do đó bạn có thể dễ dàng sửa mã nguồn của mình khi kết thúc không đúng thứ tự).

Chương trình sau đó được thêm tiền tố với các thẻ có hướng dẫn cách biên dịch chương trình và được thêm vào các hướng dẫn về cách chạy chương trình và (các) tệp dữ liệu nào để sử dụng (hoặc băng để gắn kết, v.v.).

Điều này sau đó được gửi cho các nhà khai thác, những người sẽ nạp thẻ vào một máy đọc tốc độ, chạy công việc và trả lại kết quả khi in.

Với một chu kỳ chỉnh sửa / biên dịch / kết quả điển hình theo thứ tự "ngày mai", mọi người có xu hướng trở nên hoang tưởng hơn - kiểm tra mã của họ để tìm lỗi cú pháp.

Không có khả năng gỡ lỗi tương tác, cách duy nhất để theo dõi thực thi sẽ là các dòng gỡ lỗi được in trong khi thực hiện.

Ở một số nơi, mã sẽ nằm trên băng đục lỗ thay vì trên thẻ đục lỗ.

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.