現在、次のような作業を容易にする多くのプログラミング支援があります。
IDE
デバッガー(行ごと、ブレークポイントなど)
コンパイル用のAntスクリプトなど
プログラミングの問題に悩まされている場合に役立つStackOverflowなどのサイト
20年前、これらのことはどれもありませんでした。人々はプログラミングにどのツールを使用し、これらの新しいツールなしでどのようにしたのでしょうか?私は当時のプログラミングがどのように行われたかについてもっと知りたいと思っています。
現在、次のような作業を容易にする多くのプログラミング支援があります。
IDE
デバッガー(行ごと、ブレークポイントなど)
コンパイル用のAntスクリプトなど
プログラミングの問題に悩まされている場合に役立つStackOverflowなどのサイト
20年前、これらのことはどれもありませんでした。人々はプログラミングにどのツールを使用し、これらの新しいツールなしでどのようにしたのでしょうか?私は当時のプログラミングがどのように行われたかについてもっと知りたいと思っています。
回答:
20年前の1991年です。これは、Borland C ++ 2.0 IDEがリリースされた年です。統合デバッガー(行ごとおよびブレークポイントを使用)、makeを使用した自動ビルド。
このように見えました http://www.ee.oulu.fi/research/tklab/courses/521419A/tc201_compile.png
StackoverflowのようなWebサイトはありませんでしたが、IDEを使用すると、きれいに印刷された本で数千ページのドキュメントを取得できました。
20年前... 1991 ...
どれどれ。SunOSとVAX VMSを使用していました。
テキストエディター(viまたはedit)を使用してコードを記述しました。
私は個人的にデバッガーを使用せず、使用しませんでした。SunOSでadbデバッガーを使用した人もいました。実際に数回使用して、コアダンプファイルからスタックトレースバックを回復しました。VAX VMSで何が利用可能かはわかりません。コードでprintステートメントを使用しました。
コンパイルにはmakeを使用しました。
私たちは紙の文書を読み、考え、実験を行いました。実際、それでも機能します。スタックオーバーフローは、不可解な理由で実験の実行や思考を拒否する少数の人々によって過度に使用されています。
30年前... 1981 ...
どれどれ。Univac Exec 8とIBM OSを使用していました。
テキストエディターを使用してコードを記述しました(Univacを思い出せませんが、IBMがTSO環境のエディターでした)
私-個人的に-デバッガーを使用しないでください。これらのマシンは「メインフレーム」であり、何も実行することはできませんでした。「デバッガ」はありませんでした。コードにprintステートメントを挿入する必要がありました。
コンパイル用のスクリプトを作成しました。
私たちは紙の文書を読み、考え、実験を行いました。
40年前... 1971年...
どれどれ。OSのないIBM 1620を使用していました。
パンチ紙カードを使用してコードを記述しました。
デバッグとは、プロセッサをシングルステップ実行することを意味しました。それはめったに役に立たなかったので、コードに「print」ステートメントを挿入することを学びました。
コンパイラーを手作業で実行して、パンチした紙カードのデッキを作成し、それを実行しました。「手動」とは、文字通りカードをカードリーダーにロードして、コンパイラまたはアセンブラをインストールすることを意味します。次に、ソースコードをカードリーダーにロードして、オブジェクトコードを生成します。次に、結果のオブジェクトコードをカードリーダーにロードして、プログラムを実行します。
私たちは紙の文書を読み、考え、実験を行いました。
「腐った子供の芝生を降りろ」
IDE。ほとんど役に立たない。コード補完は楽しいこともありますが、一部の人々が主張するほど有用ではありません。Visual Studioのおかげで、VBは許容可能な言語であると言われました。構文の色付けは、おそらくこれまでに発明された中で最も便利な機能です。残りはオプションのアドオンである必要があります。そのため、それらを省き、メモリとプロセッサのサイクルを解放できます。
松葉杖が進むにつれて、より悪いことに依存することがあります。
デバッガー。役に立たない。言語定義が非常に悪く、セマンティクスが非常に曖昧であるため、何が起こるかを理解できない場合を除きます。たとえば、VB。デバッガーが必要になったら、今度はより良い言語を取得するときです。
プログラミングを教えた私の経験からすると、デバッガーは役に立たない可能性があります。一部の人々にとっては、コードに意味的な意味がなく、意味がない、純粋なハッカーだけである、曇った思考と奇妙な経験的スタイルのプログラミングにつながります。
コンパイル用のAntスクリプトなど。インクリメンタルコンパイルとリンクは、それほど素晴らしいアイデアではありません。ハイパーコンプレックス言語では、これは必要なハックですが、実際にはハックと見なされる必要があります。それは必要ではなく、望ましくさえありません。
インクリメンタルコンパイルにあまり依存しない、より良い言語は、洗練されたAntスクリプトよりもはるかに優れているように思えます。
Stackoverflowなどのサイトは、バグに行き詰まっている場合に役立ちます。時々役立つ。
デバッガーと同様に、一部の人々は単純な不運によって成功しているように見える可能性があります。それは悪いことです。
うーん、あなたの前提は全く真実ではありません。後者の2つの項目は正しいですが、20年前にはIDEとデバッガーがありました。
実際、デバッガーは常に存在しています。Brooksのチームが古いIBMメインフレームを構築して以来、全員が専用のマシンを所有していたため、それらの設計と使用は進化しました。ただし、今では、多くの異なる言語で同じデバッガーを使用できます(例については、GCCプロジェクトまたはMS Visual Studioを参照してください)。
20年前、ANTはありませんでしたが、Makeは間違いなくありました。ツールの互換性のないバージョンもいくつかありました。それは人々がプロジェクトを構築するために使用したものです。
また、ウェブはすぐには利用できませんでしたが(大学や軍隊での研究プロジェクトでした)、書籍や雑誌がありました。雑誌は最新の情報を提供し、本は理論を扱っていました。
なんてこった。1991?本当に?当時何が起こっていたと思いますか?つまり、Turbo Pascalはまだかなりセクシーで、NetwareはWindowsの有効なライバルであり、高速コンピューターはmhzで測定されていましたが、それ以外はそれほど違いはありませんでした。さらに10年前に戻ると、グリーンスクリーンの話をしているが、それらのシステム用のIDEもありました。
70年代半ばに戻って、そのようなパンチカードやがらくたを見つける必要があります。
素晴らしいツールがたくさんありました。Unixカーネルはどのように構築されたと思いますか?そしてコンパイル?Lotus 123、Corel Draw、Wordperfect、Xenix、MS Windows、X Windows、gnu、Kings Quest、Flight Simulatorなど、他のすべての巨大なアプリ
Unixには、コード分析用のlint、コンパイル用のmake、編集用のviまたはemacsなどのプログラマ生産性ツールがたくさんありました。Kornシェル(およびおそらく他のシェル)を使用すると、0.5秒で1つのエディターを中断し、別のエディターにジャンプし、グリーニングスクリーンを備えた低速のダイヤルアップモデムで実行できます(「草の成長を監視」)。dbxでデバッグするか、コアダンプを読み取ることができます。
グラフィックス端末にお金があれば、X Windowsとxdbxを使って本当に素晴らしいデバッグをすることができます。
インターネットはありましたが、WWWはありませんでした。匿名FTP、gopher、WAISがありました。そして、質問を投稿するためのcomp.lang.cのようなネットワークニュースグループ(現在ではほとんどがスパムです)。
これらのツールは強力でした。カーネルの再構築の実行を1〜2日見たことはありますか?makefileの後にmakefileをビルドし、それらすべての依存関係をビルドします。また、どのターゲットを並行して構築できるかを検出できるpmakeもありました。アリはまだできますか?
Turbo Pascalのような素晴らしいBorland製品がPCにありました(80年代半ばに登場したv4は大きな変化でした)。
興味深い時代でした。そして興味深い価格。Windows 3 SDKボックスにはキャリーハンドルがありましたが、持ち上げるには両手が必要で、ディスクが多すぎて、1フィートの高さのマニュアルが山積みでした。リレーショナルデータベースには、ユーザーあたり数千ドル、Unix戦争、スラッシュキーを介したスプレッドシート戦争がかかります。こんなに低価格/無料で入手できるツールに驚いています。
このすべての最も面白い部分は、Visual Studioのキーストロークコマンド(CTRL-K + CTRL-C)の一部が古いWordstarコマンドであることです。使うたびにちょっと懐かしい。
20年前、Atari ST 1040でGFA Basicをプログラミングしていました。
より多くのキーボード、より少ないマウス。
20年前、私はBASICでプログラミングしていました。BASICAとGW BASICはIDEではないため、IDEはありませんでした。後でQuick BASICを見たとき、私はとても幸せでした。開発で最初にコピーアンドペースト機能を使用したとき、非常に興奮しました。後で彼らはQBASICコンパイラを以前のようにインタプリタではなく、それも素晴らしかったのですが、それから私はCに移ってBorlandのTurbo C IDEを使用しました。私はエジプトにいますが、当時はインターネットがなく、私たちはソフトウェアで約1年遅れていました。バージョンが今日リリースされた場合、約1年後にそれが手元に届きます。今ではずっと簡単になりましたが、当時のプログラミングの喜びは比類のないものでした:)
「ウェブ年」現象は、日付の計算に偏りがあると思います。
20年前、私はSmalltalkでプログラミングしていました-20インチの画面を備えたMac IIeの最初のGUIベースのオブジェクト指向言語の1つです。 -プログラミングのナイフ時代。
今から40年前、私は音響カプラースタイルのモデム(110ボーベイビー!)を備えたテレタイプ端末を使用して基本的なプログラミングを行っていました。電話をダイヤルし、モデムのラバーカップに手をセットしたもの。
たくさんのパンチカードを台無しにする前に、FORTRANプログラムを作成するのに役立つ標準フォームを次に示します。
(から:http : //www.w3.org/2010/Talks/01-08-steven-ten-euro-computer/)
間違いを消すことができるように鉛筆を使用し、いくつかの手順を忘れた場合に備えて、印刷されたステートメントの間に空白行をいくつか残してください。
(OK、多分それは1991年より少し前かもしれませんが、そうではありません...)
まあ、それはすべてパンチカードから始まりましたが、少なくともその歴史の教訓を聞いたことがあると思います。しかし、それは20年以上前にさかのぼります。
デバッグ用ですか?何が起こったのかをチェックして確認するのに役立つ多くのメッセージボックス、ログファイル、およびその他の出力方法。
20年前に4GLが大流行しました。
驚くべきことに、物事20年前には、すべてではありませんでしたという異なります。今から30年前...
この回答を書いているとき、私は当時まだ10歳でしたが、5.25インチのフロッピーディスクを1 MBのハードドライブに入れてIBM Headstart XT / AT PCを有効にしたことに留意してください。
私が働いている場所では、20年前のシステムとコードベースを維持しているため、レガシーシステム、開発環境、およびコードを操作するとき、まだ時間のゆがみがあります。
20年前、主にCのパスカルでコーディングをしていました。DOSプラットフォームの場合、Turbo C、Turbo Pascalがあり、ほとんどがデバッガーを備えた完全なエディターであり、ステップスルーが可能です。以下のために、実際のプログラミング、私は自分自身のように、ほとんどのプログラマは、コマンドプロンプトから実行、VI +コンパイラを使用感じます。
特に一部のプログラミング言語では、プログラミングは少し難しくなりました。私自身のプログラミングでもこの痕跡を見ることができprint
ます。ステートメントをステップ実行するよりも、ステートメントを使用してテストを実行する方が簡単です。
ブルガリアを代弁できます。
あなたとは対照的に、ブルガリアはコンピューター技術のトップ国の一つでした。ソビエト連邦は共産主義ブロックの一部であるため、私たちのコンピューターサイエンスに多額の投資を行い、共産主義ブロックの業界のリーダーになりました。しかし、共産主義者は民間企業を容認せず、この分野のすべては政府によって管理されていました。このように、数年前の最近の共産主義ブロックの崩壊は、産業を良好な状態に保つための安定した企業を国に残しませんでした。しかし、知識の素晴らしい遺産が次世代の専門家に残されました。ですから、私たちは最新のテクノロジーへのアクセスを停止することはなく、ソフトウェア開発は西洋諸国と違いはありませんでした。最新のツールとプログラミングの概念を使用しました。
したがって、私は他の人が言うことをすべて繰り返すことはしませんが、はい(当時開発されていたソフトウェアの性質に対応して)その時点で非常に優れたIDEとデバッガーがありました。
私は個人的にTurbo PascalとTurbo C(Borland製)を使用したことを覚えています。グラフィック用のオートデスクのソフトウェア(3d StudioやAnimatorなど)。
しかし、知識の源はもっと限られていた-主に本、雑誌、同僚、そしてめったにBBS経由の電子雑誌。インターネットはほとんどが骨io品でした。Usenetにアクセスできる人もいましたが、仕事に使うことはめったにありません。
1991年には、不均等に分布していましたが、お気に入りのツールのほとんどの単純なバージョンが存在することがわかりました。
より興味深い比較は1981年です。つまり、USENETとUUCPとARPANETネットワークを含む広く利用可能な社会プロセスの始まりです。(インターネットのTCPフラッグデーは1983年でした。)
さらに興味深い比較は、1971年との比較です:あなたが今知っている、愛するオペレーティングシステムの初期バージョン、出版に基づく社会的プロセス(紙のニュースレター、直接参加した会議、個人の連絡先とのコードの共有、ユーザーグループ、磁気テープなどのメディアの使用) )。
20年前、Windowsプログラミング用にOWLを使用してBorland C ++の386でコーディングしていました。
私のマシンには、数MBのRAMと200 MBのハードドライブがありました。フロッピーディスクからほとんどのソフトウェアをインストールできましたが、CDにはますます多くのソフトウェアが追加されていました。
F8キーを押してBorlandでプロジェクトを「実行」すると、コンパイラは非常に迅速に動作し、結果をすぐに再生できました。
オフィスには1台のPCがあり、数時間ごとに(Trumpet WinSockを使用して)悪意を持ってデーモンに接続し、全員のメールをダウンロードしていました。
プログラミングの方法がわからないときは、よく本で答えを調べました。Win32APIの本は特に役に立ちました。
実際、私たちは非常に生産的でした...そして、IDEは当時非常に迅速に機能しました!しかし、優れたリファクタリングや統合されたテストツールはありませんでした。
20年前?素晴らしいドラッグアンドドロップUIビルダーとプロジェクトマネージャーを備えた素敵なIDEを使用していました。かなり良いOO言語、本当に良いGUIオブジェクトのセット、たくさんの素晴らしいアプリ、そして堅実なUnixシェルを与えてくれたターミナルウィンドウがありました。そして、デバッガーですが、それらは弱者向けです(または、彼らの恐ろしいコードを処理します)。
それがMacのように聞こえるのは、私がNeXT開発環境について話しているからです。これが現代のMac OSに変わったのです。whippersnappersについては、ここで履歴を読むことができます。
補足として、そこにある素晴らしいGUIの構築は、私を完全に台無しにしたと言います。JavaでSwingアプリの開発を始めたとき、誰かの犬が古いGUI APIドキュメントを食べて、それを再び投げて、Sunがそれを出荷したようでした。Webがようやくどこかで手に入れていることに感謝します。
私は1981年にプログラミングを開始し、この秋に30年前に登場しました。
1991年、私はApple Computer(最近は「Apple」とも呼ばれます)で働いていて、Metrowerksという名前のカナダの小さな会社と密接に仕事をしていました。
Metrowerksは、C、C ++、およびPascal用のキックIDEを構築していました。この環境は、Appleが68KからPowerPCプロセッサへの移行を成功させる上で大きな役割を果たしました。
私はAppleの従業員でしたが、数年の間、Metrowerksのプロダクトマネージャーであり、製品戦略などでグレッグガラノスとジャンベランジャーと緊密に協力していました。移行、Appleの最初の素晴らしいMac移行(2番目はOS Xへの移行)。
1981年、UCSCで新入生の年になり、PDP-11 / 70で実行されているUnixリリース7(バージョン7ではない)で作業を開始する機会を得ました。
IDEはありません!ちなみに、数年後までバージョン管理はできませんでした!
vi(およびvimは選択ではありませんでした)、cc、ln、およびmakeでした。私たちの「スマート端末」のますます複雑なTERMCAPSに対応するために、Cシェルスクリプトを記述し、ソースをCシェルにハッキングして、環境変数のサイズを512文字から1024文字に増やしました。
上流階級のCIS学生であるテッド・ゴールドスタインのキャンパス外のコンドミニアムのフロアで、ライオンズ本の海賊版コピーを読む機会を得ました。Tedは、AppleのツールのVPを含む非常に完全なキャリアに進みました。
1984年にMacを手に入れ、MDS(Macintosh Development System)の初期版を手に入れ、この新しく素晴らしい獣をプログラムすることを学びました。
とても楽しかったです。起動して実行するのがはるかに簡単でした。しかし、Rubyのような言語で私たちが持っている力は驚くべきものです。コンパイラのシンボルテーブルのハッシュテーブルを作成する代わりに、基本的なデータ型として左右を使用しています。
はい、とても楽しかったですが、二度と戻りません...
1991年に、X端末でUIMXと呼ばれるIDE /フレームワークを使用して、Informatix RDBMSにアクセスするMotifベースのアプリケーションを作成しました。言語はCでした。
バージョン管理用のSCCS、ビルド用のmakeがありました。
振り返ってみると、今日の仕事とそれほど変わらない。
20年ですね その直前にアップルランドを離れた後、私はその特定の時間にPCランドでしか操作していませんでした。その当時、私は金持ちの子供たちが統合されたデバッグ機能を備えた本格的なIDEを持っていたことを覚えています(Borland&Microsoft)。私たちの残りは、うまく機能したが、それほど「統合」されていなかった低価格のブランド(ミックスソフトウェア、さまざまなシェアウェアコンパイラベンダー)と一緒にスクレイピングしていました。マウスは机の上にありましたが、めったに触れませんでした。テキストモードで費やされた時間の90%。デュアルモニターのセットアップがフェードアウトし始めていました(それ以前は、MDAカードとCGAカードが異なるI / O /メモリの場所を使用し、両方が可能だったのと同じシステムにモノクロコーディングモニターとカラー「ランニング」モニターがありましたDOSで同時に実行されます)。Windowsの初期バージョンは、複数のモニターに満足していませんでした。
人気のある言語は、C、Pascal、およびModula-2でした。人々はまだロゴとBASICを使用していました。「Visual BASIC」がついにBASICを殺し始めていました。COBOLとRPGは大学で教えられていました。
金持ちの子供たちはインターネットでUSEnetを使用しており、貧しい子供たちはまだローカルBBSにダイヤルし、FIDOnetグループを使用していました(通常1200-2400bpsで、9600bpsモデムはまだほとんどの人にとって手頃な価格ではありませんでした。コンピューター)。
70年代に最初にプログラミングしたコンピューターは、Univac 1218でした。1218には、ミニマリストのエグゼクティブと16Kの18ビットワード指向のフェライトコアメモリ(したがって、「コアダンプ」という用語)がありました。二次ストレージは、磁気テープとホレリスエンコード80カラムパンチカードを介して処理されました。マシンは、算術演算に1の補数を使用し、アドレス指定に2の補数を使用しました。フロントパネルを使用してプログラムおよびデバッグできます。フロントパネルでは、すべてのレジスタの内容が、照光式押しボタンスイッチを使用して表示されます。このCPUは、現代の標準では原始的なように見えるかもしれませんが、当時はとてもクールでした。
トピックに戻る:20年前、ほとんどの開発でIDEを使用していました。私はIDEが弱い人向けだと信じている無愛想な老人の一人ではありません。優れたIDEは生産性アンプです。
20年前、私はRMCOBOL-85をプログラミングする学生でした。
ファイルサーバーに接続された緑色のターミナルを使用していました。
インターフェイスはメモ帳スタイルのテキストエディターでした。派手なビットはありません。また、VIを使用する選択肢もありました。しかし決してしませんでした。
ああ、良い日。:)
ほぼ20年前のその日まで、私はIBM PCとAmiga 1000を使用して、Atari Lynxと呼ばれるもののCコードとアセンブリをクロスコンパイルしていました。問題のプログラムは、システム変数の1Kで47K(キロバイト)のスペースで5つのカジノゲームを実行しました。なんと16Kがダブルバッファビデオ用に予約されていました。「開発」システムが到着すると、画面を1色に変えてスピーカーをクリックするアセンブリ言語のサンプルルーチンがありました。それでした。テキストが必要な場合は、フォントと独自のテキストルーチンを作成する必要があります。ネットワーキング?独自のドライバーを作成するだけです。なぜダンノ、しかしそれの難しさは楽しみの一部でした。どれもうまくいったのは驚くべきことです。
20年前、私はInterface BuilderとObjective-Cを使用してNeXTstep OS用のデスクトップパブリッシングアプリを作成するチームの一員でした。そして、はい、インターネットは普及しており、使用するのが少し難しくなりましたが、comp.sys.nextで答えを見つけて投稿することができました。
私がされたデバッグ、1989年に契約開発者の技術サポート担当者としてSunでデバッガを。
私はほぼ30年前にIDEを使用していました-UCSD p-System / Apple Pascal。Sundog:Apple Pascalと6502アセンブリ(1982-84)を使用したApple IIの冷凍レガシー。私自身のp-code / 6502逆アセンブラーも書きました。さらに言えば、1981年にLunar&Planetary InstituteのNorthstar Horizon(Z-80)マイコンでUCSD p-Systemを使用していました。
1963年、私はキャンパスで夏の仕事で働いていました。Digital(DEC)製のPDP-1コンピューター上にありました。
そして、はい、DDTと呼ばれるインタラクティブなデバッガーがありました。ブレークポイントを設定し、変数を調べて変更し、コードをパッチすることができます。テキストエディタは非常に原始的であり、代わりにオフラインの紙テープマシンを使用することがよくありました。
言語はアセンブラーでした。マシンには4ビットの18ビットワードのようなものがありました。オペレーティングシステムなし。
1971年までに、私はそれぞれ36ビットの262,144ワードのPDP-10を使用していました。10人の同時ユーザーをサポートするインタラクティブなタイムシェアリングシステム、TECOと呼ばれるテキストエディター、依然としてDDTと呼ばれるデバッガー、Lisp、Fortran、Basic、Algolなどの言語。TECOは本当に強力でした。その中にプログラムを操作するテキストを書くことができます。
PDP-10は、未来のオフィスが生まれたパロアルトリサーチで製造された同様のマシンの基礎でした。イーサネット、マウスとGUI、電子メール、レーザープリンター、およびオブジェクト指向プログラミング。パロアルトにはそれがすべてありました。PCの10年前。
このようなものの多くは忘れられており、その後数年で何度か再発明されました。そしてもちろん、新しいものもたくさんあります。
1991年に進んで、私はVAXに取り組んでいました。私の主な言語はSQLでしたが、必要に応じてPASCALで書きました。DCLとDatatrieveもスクリプト言語として使用しましたが、この用語は使用しませんでした。
当時、VAXにはIDEがありませんでした。少なくとも私が働いていた場所にはありませんでした。しかし、テキストエディタ、コンパイラ、リンカ、デバッガ、およびコマンド言語はすべて、開発者がそれらすべてを使用するという考えで構築されました。彼らはうまくいっています。いくつかのコマンドを思い出すことは、特定のツールがツールバーのどこにあるかを思い出すことほど難しくありませんでした。コマンドの再入力は、コマンドの再呼び出しによって簡単になりました。
VAXには優れたデバッガーがありましたが、私はそれを学んだことはありません。PASCALを使用すると、プログラムを開始するのが非常に簡単になり、構造化プログラミングにより、デバッガーを使用せずにバグを簡単に特定できました。SQLのデバッグはまったく別の方法です。
VAXでの作業に加えて、デスクトップツールを使用してデータをローカルで操作しました。これらはMS Officeツールまたはその前駆体のいずれかでしたが、覚えていません。難しい部分は、デスクトップツールをVAX上のデータベースに保存されているデータにリンクすることでした。