パンチカードがプログラミングに使用された理由


8

私はプログラミング言語の歴史についての研究エッセイをやっていて、なぜプログラマーがパンチカードで自分のプログラムを書いたのかと思っていました。コンピューターの画面とキーボードは、プログラマーが使用する頃にはすでに存在していませんでしたか?

Jacquard織機を使用して目的のデザインを制御するために最初に発明されたのは知っていますが、人々がプログラムするときに、なぜカードにプログラムを書くことに決めたのですか?

コンピューターが非常に高価だったので、コンピューターにアクセスできる人が多くなかったため、パンチカードでプログラムを作成し、それを実行する会社や誰か、または組織に提出して結果を伝えていたのでしょうか。


どのスキャナーよりも信頼性が高くなります。
ラチェットフリーク

回答:


24

1974年以前のコンピューティングテクノロジーについては、あまりよく理解していないかもしれません。

時分割、マルチユーザー、システムは50年代後半に発明されましたが、60年代を通じて比較的まれでした。ほとんどのコンピューターはバッチモードで実行され、一度に1つのプログラムを実行しました。カードリーダー、ラインプリンター、および場合によってはコンソールオペレーターの個別のテレタイプ以外のユーザーと対話する機能はありませんでした。あなたが言うターミナル?60年代後半まで、ビデオディスプレイを備えた電子端末は、研究施設や航空管制や国防などの専門的な仕事に限定された、エキゾチックで非常に高価なガジェットでした。インタラクティブセッションをサポートしていたコンピューターは、一般にテレタイプを使用していました。テレタイプでプログラムに入るのは、カードにパンチするのと同じくらい不愉快でした

バッチ処理の問題についてもう少し詳しく説明します。これは、現在ほとんどの人がコンピューターを使用している方法にはあまり関係がないためです。50年代であっても、テレタイプと連動するインタラクティブ編集プログラムを作成することは確かに可能でした。ただし、バッチ処理のため、編集プログラムは、プログラムを編集しているテレタイプに座っている間、コンピューターを完全に独占していました。他の数百人から数千人がプログラムを実行する順番を待っていたので、あなたは非常に不人気な人でした。また、エディターの実行中は1分あたり数ドルが請求されます。プログラムを長い手で書き、最終ドラフトをキーパンチオペレーターに渡す方がはるかにコスト効率が高くなりました。そして、彼らにあなたのプログラムをパンチカードまたは紙テープに転写させます。これにより、「GOSUB」と入力するのを待機するCPUの貴重なミリ秒を無駄にすることがなくなりました。

ハードディスクドライブも50年代後半に発明されましたが、それらは小さく(約1MB)、まれで、高価であり、ユーザーが気軽にアクセスできるものではありませんでした。明らかに、ユーザーはある種の長期保存を必要としていました。選択肢は紙テープ、パンチカード、磁気テープでした。磁気テープは新しくて高価でした。一部のシステムでは紙テープが使用されていましたが、パンチカードは1928年以来、タブレーターやソーターなどのコンピューター以外のビジネスマシンで使用されている確立された技術であるため、多くの企業がすでにパンチカードの機械と保管に大きな投資を行っています。


5
1990年代でさえ、プログラミングの割り当てのために、大学の1学期全体で5分のコンピューター時間を与えられました。幸い、スクリーンエディターはPascalコードを入力するときにCPU時間をほとんど使用していませんでした。誰もが自分のプログラムを紙に書いて、紙のプログラミングマニュアルを使用して自分自身と他の人をクロスチェックし、修正した後、プログラムをティーチングアシスタントが入力できるようにし、それから入念に入力し、すべてのキャラクターを紙のオリジナルでダブルチェックしました。コンパイラをだますタイプミスがないことを確認します。
2014年

2
1980年代後半のAda割り当てを覚えています。すべてのセッションの最後に、使用したCPU時間は$で表されていました。
mouviciel 2014年

14

パンチカードは、入力/出力媒体としてだけでなく、長期保存デバイスとしても機能しました。プログラムのカードデッキをリロードすることで、プログラムを複数回実行できます。ハードドライブ、フロッピードライブ、磁気テープはありませんでした。


14

[なぜ]プログラマーがパンチカードで自分のプログラムを書いたのはなぜですか?コンピューターの画面とキーボードは、プログラマーが使用する頃にはすでに存在していませんでしたか?

私たちは、コンピューターが持っているI / Oメカニズムを使用します。1960年代には紙テープが一般的でした。1970年代(私がプログラミングを始めたとき)、紙テープはパンチカードに取って代わられていました。

はい、テレタイプ備えたマシンがあり、VDUと呼ばれる驚くべきものもありました。しかし、彼らはまだ主流ではありませんでした。これらのテクノロジーはどちらも、(メインフレーム)コンピューターオペレーターがより一般的に使用していました。めったにありません。

パンチカード時代のピークで、最も一般的なマシンはIBM029でした

cs.uwaterloo.ca/40th/Chronology/1967.shtmlを参照してください

その画像では、生徒たちは自分のコードを打ち込んでいます。プロのプログラマは、より一般的には、コーディングシートに手書きでコードを記述し、コーディングした言語に従ってフォーマットされています。

en.wikipedia.org/wiki/Fortranを参照してください

私たちはコーディングシートをデータセンターに送り、オペレーターはそれらをパンチングスピードで打ち込み、カードを検証オペレーターに渡します。彼女(データセンタースタッフの90%は女性で、マネージャーのみが男性でした)は、パンチマシンを確認モードに設定して、もう一度コードを入力します。マシンは、彼女がタイプしているものがすでにカード上にあったものと異なるかどうかを判断します。2回行うことで、速度精度を実現しました。

カードを取り戻すとき、最初に行うことは、デッキ全体の上部に斜めの線を引くことでした。それをする前にあなたのカードを落としたなら、災い!線が引かれたので、カードを落とした後にカードを順番に戻すという戦いのチャンスがありました。

多くのプログラム編集は、通常自分でパンチする新しいカードの挿入と、既存のカードをデッキの別の場所に移動することで構成されていました。当然、最初に描いた対角線はあまり役に立たなくなります。そのため、いくつかの編集を行った後、別の線を描きます。カードの行数が多すぎるか、カードリーダーで読み取りエラーが発生し始めた場合(最速のリーダーは毎分1200カード以上で動作したため、カードが読み取られるたびにドキドキしました)、デッキを送り返します。複製するデータセンターへ。

小さな編集は、ハンドパンチを使用して実行できます。

ここに画像の説明を入力してください

経験を積むと、各文字のホレリスコードを学習し、キーボードを使用するのと同じくらい速くパンチできます。

エラーを起こしたときに誰も見ていない場合は、カードから打ち抜かれた「チャド」で間違った穴を埋め、サムネイルでこすって、カードの残りの端とかみ合うようにします。そのようなパッチは、読み取りプロセス中に緩んでいたことがよくありますが、少なくとも1回は機能しました。読み取りプロセス中にチャドが出た場合、「クラッシュ」が発生し、次のカードが押しつぶされ、認識できないほどしわになります。カードリーダーは位置がずれるので、コンピューターエンジニアがそれを修正する必要があります。

1970年代後半になると、プログラムを磁気テープにロードすることが一般的になりました。テープは、コードを固定長の80文字のレコードで保持しており、編集を行う「ライブラリアン」プログラムがありました。私が覚えているように、1つは実際には司書と呼ばれていました。別のカードデッキをコーディングして編集を行うか、一般的になるように、テレタイプまたはVDUを使用してオンラインで編集を行います。うわー!

これらの司書エディターを動かすために使用される構文は、IBM-PC Edlinの構文と非常によく似ていました

要約すると、利用可能なツールを使用します。最新のテクノロジーは常に最も高価であり、誰もがアクセスできるようになるまでにはしばらくかかる場合があります。それは、利便性とスキルの問題でもあります。私はラップトップでこれを入力していますが、スマートフォンでメールを書くときは、「swype」入力を使用します。この場合、指がキーボードの画像の上に奇妙なジグザグパターンを作り、ソフトウェアが意図した単語を認識します。

あなたのエッセイで頑張ってください。


9

歴史の重み...

200年以上前に発明された機械織機であるJacquard織機に戻りましょう。

織機は「カードのチェーン」、つまり連続したシーケンスにまとめられた多数のパンチされたカードによって制御されていました。

ジャカード織機カード

これは既知の技術であり、後に米国国勢調査局では集計マシン-Hollerithマシンを使用して国勢調査データを集計しました。パンチカードを使って集めました。

ハーマンホレリスのタブレータは、紙のパンチカードの穴を「読み取る」ことで国勢調査データをキャプチャして処理する電気的に作動するコンポーネントで構成されていました

ホレリスカードリーダーマシン

これらの初期の集計マシンは後にコンピュータに進化しましたが、入力方法は同じままでした。

画面は存在し、キーボードは存在します(タイプライター)が、それらをコンピューターに接続するという考えは?しばらく時間がかかりました。

さらに、パンチカードは実行中のプログラムだけではなく、実際のデータでもあり、記憶媒体でもありました。ハードドライブも磁気テープもありませんでした。


5

私はUniでパンチカード(および「編集可能な」マークセンスカード-鉛筆+マーク+消しゴム!)を使用していたので、私は課題としてカードのデッキを提出しました。キーボードや端末は見えませんでした。そして、それはそれほど昔ではありませんでし:80年代。

「データをパンチする」という用語の使用法はどこから来たと思いますか(ただし、以下を参照)。「キーパンチオペレーター」という肩書きがありました。本質的には、カードパンチングマシンに座ってコード/データを「パンチ」したタイピストでした。

IBMは依然としてJCLプログラムを「デッキ」と呼んでおり、各行には最大80文字があります。なぜですか?標準のパンチカードには80列あり、元のコンピューターでは、オペレーターはカード(プログラム)のデッキを入力ホッパーに入れて実行していました。OS(MVS)は(IBMの後方互換性の約束により)古代のハードウェア制限にロックされていました。


Q:ドラマーとドラムマシンの違いは何ですか?

A:ドラムマシンで、あなただけの持っているパンチを一度に情報を。


1
あなたが何について話しているかを知るための+1。冗談であなたにもう1つ+1を与えることができたら、そうします。
John R. Strohm 2014年

4

コンピュータの時間は当時非常に高価だったので、通常オフロードできるものはすべてそうでした。


さて、これは理にかなっています。

これは、他の7つの回答で作成および説明されたポイントよりも実質的なものを提供していないようです
gnat

@gnatは、この回答が他の回答よりも前に存在していたことに注意してください。
dave、2014年

私はコメントする前にそれに気づきました(これを古い順に並べ替えて確認しました)。また、コメントのようになっている(回答方法を参照)...と、上部に表示されている通知に反していることにも気付きました。「説明とコンテキストを提供する長い回答を探しています。 1行で回答してください。回答が正しい理由を、できれば引用を含めて説明してください。説明を含まない回答は削除される場合があります。」
gnat

@gnatこの質問はもともとstackoverflowで尋ねられたもので、(私の回答とともに)ここに移動されたので、私が投稿しなかったサイトのルールを知らないことを許してください
dave

3

コンピューターは、今日見られるように、明らかに始まりませんでした。彼らはより機械的でした。パンチカードは、2進数を機械的に表すために使用されます。パンチカードの上を動く機械式読み取りヘッドが「穴」または「穴なし」を読み取ります。これらの穴の組み合わせと穴なしの組み合わせを使用して、機械装置の動作を制御できます。それによって、何かを制御するプログラムがあります!


しかし、なぜFORTRANのような言語がパンチカードで使用されたのですか?コンピューターを使用する時間を稼ぐのにおそらく費用がかかり、これによりコストが削減されただけだと思いますか?

1

磁気テープは、1951年にデータストレージに最初に使用されました。ハードドライブは1956年に導入されました。フロッピードライブは1971年に導入されました。

1970年代までに、IT組織は少なくともパンチカードからの移行を調査していました。1980年代後半または1990年代初頭までに、移行はほぼ完了しました。

パンチされたカードは、少なくともいくつかの理由で、他のより効率的な記憶媒体が利用可能であったときに、その間ずっと保持されていました。

1)それらは使用中であり、慣性は克服するのが難しいものです。言い換えれば、「私たちはいつもこのようにしていた」。

2)コスト。1 TBのSATAドライブは今日50ドル強で手に入れることができますが、ムーアの法則の変化により、時間の経過とともにコストが下がっています。比較すると、1980年のSeagate ST-506 5 MBドライブの価格は1,500ドル(今日は約4,300ドル)です。


1

当初、コンピューターシステムはプログラマーがアクセスできない部屋にあり、ほとんどのシステムは一度に1つのプログラムしか実行できませんでした(バッチ処理)。プログラムを実行するには、パンチカードまたは紙テープを使用してプログラムを送信し、後で戻ってきて、通常は印刷物である結果を得ました。プログラマが「コンソール」への直接アクセスを許可されることはめったになく、もしそうであれば、プログラムを書くことではなく、デバッグすることでした。

1965年頃のプリエンプティブマルチタスクの登場により(Multicsを参照)、「ターミナル」を介して多くのユーザーを一度にサポートできるようになりました。当初、これらの端末はマシンのようなテレタイプであり、その後キーボードを備えたCRTスクリーンでした。これらのシステムは1970年代初頭まで広く利用されていませんでした。

私の最初のコンピューターにはハードディスクがありませんでした。プログラムをコンパイルするために、コンパイラはパンチされたカードからメモリに読み込まれ、実行されました。パンチされたカードからソースコードを読み取り、コンパイルされたバージョンをパンチします。そのバージョンはローダープログラムの背後に置かれ、読み込まれました。そのときだけ、プログラムが実行されていました。ああ、古き良き日々;)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.