Pada periode 1890-1970, semua pemrosesan data besar dilakukan melalui kartu punch. Kartu berlubang, pada gilirannya, diproses menggunakan apa yang disebut "Peralatan rekaman", tautan utamanya adalah "penyortir kartu punch" elektromekanis. Kartu berlubang dan peralatan terkait digunakan untuk menyelesaikan berbagai tugas: sensus, akuntansi, inventaris, penggajian, dll.
Bagaimana orang bekerja dengan kartu punch? Algoritma apa yang diikuti oleh penyortir kartu punch elektromekanis? Bagaimana penyortiran menurut bidang data numerik dilakukan? Dan di atas tali? Tentang semua ini - di bawah ini.

- Fitur yang mencolok dari peralatan rekaman zaman pra-komputer: pada awalnya sepenuhnya elektromekanis. Bahkan belum ada lampu elektronik di dalamnya. "Kecerdasan" peralatan rekaman dibangun dari sikat kawat (untuk mengenali lubang pada kartu berlubang), relai elektromekanis dan roda mekanis (untuk menjumlahkan nilainya). Terlepas dari keutamaan teknologinya, "peralatan rekaman" pada satu waktu merevolusi pemrosesan data besar.
Bagaimana orang bekerja dengan kartu punch?
- Setiap kartu punch menyimpan satu catatan data (hingga 80 digit atau karakter). Setiap catatan data terdiri dari beberapa bidang. Penyortir kartu punch mengatur kartu dalam urutan yang diperlukan untuk operator (sesuai dengan salah satu bidang data), setelah itu mesin, yang disebut "tabulator", membaca kartu punch yang diurutkan, mengekstraksi bidang yang diperlukan dari mereka (sekali lagi, ditentukan oleh operator), dan mencetak laporan.
- Sebagai contoh, perhatikan bagaimana kartu punch digunakan untuk memproses faktur. Perusahaan memiliki kartu punch terpisah untuk setiap faktur yang dikeluarkan untuk pembayaran (lihat contoh pada gambar di bawah). Bidang data seperti nomor pemasok, tanggal pembayaran, jumlah pembayaran, dll. Ditunjukkan pada kartu punch.

- Proses bisnis pemrosesan data otomatis yang sesuai adalah sebagai berikut. Penyortir kartu punch diperintahkan untuk menyortir kartu punch berdasarkan nomor vendor. Setelah penyortiran selesai, kartu punch diteruskan ke tabulator, yang menghasilkan laporan dengan membaca baris yang diinginkan dari setiap kartu punch. Penghitung mekanis yang dibangun di dalam tabulator secara otomatis merobohkan jumlah total.
- Banyak proses bisnis lainnya, seperti penggajian, inventaris, dan penagihan, dilakukan pada masa pra-komputer dengan cara yang sama.
Prinsip operasi penyortir kartu punch elektromekanis
- Penyortir mengambil setumpuk kartu punch dan mengurutkannya sesuai dengan bidang data yang ditentukan oleh operator. Misalnya dengan afiliasi karyawan ke departemen tertentu. Mengapa Sebagai pilihan, agar, setelah sebelumnya mengelompokkan karyawan berdasarkan departemen, kemudian menghasilkan laporan tentang implementasi rencana penjualan oleh masing-masing departemen perusahaan.
- Untuk mengatasi masalah ini, kartu punch pertama-tama disortir berdasarkan bidang "departemen", dan kemudian ditransfer ke tabulator, yang merangkum bidang "penjualan", mencetak hasil sementara untuk setiap departemen dalam laporan.
- Operator menempatkan paket kartu punch yang perlu disortir dalam baki khusus, dari mana mereka didorong satu per satu melalui penyortir. Penyortir membaca kartu punch dan membagikannya ke dalam 13 kantong: sepuluh kartu digital, dua kartu "zona" (untuk memproses nilai string); dan satu untuk kartu punch yang dibuang (yang tidak menentukan nilai dengan mana penyortiran dilakukan).

- Algoritma yang digunakan oleh sorter kartu punch sangat berbeda dari algoritma yang diterima secara umum saat ini. Perbedaan utama adalah bahwa kartu punch tidak dapat dibandingkan satu sama lain.
Algoritma Penyortiran Bitwise
Bagaimana kemudian penyortir kartu punch dapat melakukan tugasnya? Ini mengimplementasikan algoritma "bitwise sorting" yang elegan. Intinya: penyortir kartu punch memproses satu digit bidang data sekaligus; untuk mengurutkan berdasarkan bidang tiga digit, satu pak kartu punch harus melewati sorter tiga kali. Jadi algoritmanya:
- Menyortir kartu punch berdasarkan bidang data numerik yang ditentukan oleh operator, penyortir, selama proses pertama, hanya memproses bit yang paling tidak signifikan dari bidang ini. Dan sesuai dengan nilai dari kategori ini, ia memutuskan di mana harus menjatuhkan kartu punch saat ini: mana dari 10 kantong digital (dari nol ke kesembilan).
- Setelah penyortir selesai membagikan kartu punch ke dalam saku, operator mengeluarkannya dan meletakkannya dalam satu bundel bersama. Dalam urutan: mulai dari nol saku dan berakhir dengan kesembilan.
- Operator menempatkan paket kartu punch yang telah dirakit ke dalam penyortir, dan mengulangi langkah 1 dan 2 secara berurutan untuk setiap kategori.
- Semuanya, sekarang kartu punch diurutkan.
Keuntungan dari Algoritma Pengurutan Bitwise
- Algoritma pengurutan bitwise ramping dan cepat. Kompleksitas komputasinya adalah O (n log n). Dengan kata lain, dengan peningkatan jumlah kartu, durasi algoritma meningkat secara linear, dan tidak secara eksponensial.
- Algoritma pengurutan bitwise secara teknis dapat diimplementasikan sebagai desain elektromekanis sederhana.
- Terlepas dari kenyataan bahwa tidak lebih dari 3600 kartu ditempatkan di baki input penyortir kartu punch, ia dapat mengurutkan jumlah kartu punch yang jauh lebih besar jika operator melakukan dua tindakan berikut secara tepat waktu: (1) memuat paket kartu punch baru dalam baki secara tepat waktu; (2) mengosongkan kantong digital secara tepat waktu (sehingga tidak meluap).
Bagaimana data string dikodekan
- Seperti disebutkan di atas, nilai numerik dikodekan pada kartu berlubang. Satu lubang di kolom. Kami sudah memilah penyortiran mereka. Sekarang tinggal memahami bagaimana string dikodekan pada kartu punch dan bagaimana penyortir kartu punch mengaturnya.
- Untuk bekerja dengan string di kartu sortir kartu ada dua kantong "zonal" (11 dan 12), selain 10 yang digital. Prinsip penyandian karakter alfabet adalah sebagai berikut (lihat gambar di bawah). Setiap huruf dikodekan dengan dua lubang pada kartu yang dilubangi: lubang pada nomor (dari 1 hingga 9) dan lubang pada "zona" (0, 11 atau 12).

- Harap dicatat: string dengan nol didigitalkan saat memproses bidang data numerik, dan "zona" saat memproses bidang data string.
Algoritma pengurutan string karakter
Berkat pengodean ini, penyortir dapat mengurutkan bidang data string secara alfabet. Untuk melakukan ini, ia perlu dua kali lari. Algoritma adalah sebagai berikut:
- Pada percobaan pertama, penyortir kartu punch mengatur kartu dengan cara yang sama seperti ketika menyortir bidang data numerik. Perbedaannya adalah bahwa dengan penyortiran alfabet, hanya sembilan kantong yang terlibat: dari tanggal 1 hingga tanggal 9.
- Setelah menyelesaikan penyortiran, operator mengeluarkan kartu berlubang dari saku digital. Sekali lagi, secara berurutan (seperti dalam kasus pemesanan oleh bidang data numerik): mulai dari saku pertama dan berakhir dengan yang kesembilan. Operator mengirim paket kartu yang dikumpulkan untuk disortir kedua kalinya.
- Pada run kedua, penyortir kartu punch hanya membaca garis "zona" (0, 11 dan 12), dan mengabaikan garis dengan angka.
- Akibatnya, kartu punch yang dipesan didistribusikan oleh sorter ke dalam tiga kantong "zonal": dari A hingga I ditempatkan di saku ke-12; dari J ke R - di tanggal 11; dari S ke Z - pada tanggal 0.
- Jika Anda perlu mengurutkan bukan dengan satu karakter pertama, tetapi dengan dua atau tiga karakter pertama, misalnya, maka proses yang dijelaskan di atas (langkah satu hingga empat) dilakukan secara berurutan untuk setiap karakter. Yaitu untuk setiap simbol, dua berjalan melalui penyortir kartu punch dilakukan.

Jadi, ketika belum ada komputer, perusahaan memproses data besar menggunakan kartu punch. Terlepas dari kenyataan bahwa kartu punch sudah ketinggalan zaman, kami masih menemukan pengaruhnya pada kondisi teknologi komputer saat ini - setiap kali kami harus memasang format teks dengan garis 80-karakter. Sesuatu yang serupa diamati, misalnya, ketika bekerja dengan Far Manager.