私を含む私たちの多くは、 ホームコンピュータ で書かれたプログラムからプログラミング生活を始めました。
10 PRINT "ENTER RADIUS"
20 INPUT R
30 PRINT "CIRCUMFERENCE="; 2 * R * PI
40 PRINT "AGAIN?"
50 INPUT A$
60 IF A$="Y" THEN GOTO 10
70 END
もちろん、行番号ベースのBASICはspagettiコードを作成する傾向がありました。これは、ほとんどのBASIC方言がWHILE
のような構造ステートメントを逃し、FOR
- loop with IF
、GOTO
およびGOSUB
。 QBASICと Visual Basic が登場した1991年以前のBASIC方言について話しています。
BASIC方言は意欲的なプログラマーの間で悪いスタイルを促進したかもしれませんが、そのようなBASIC方言で作成されたより大きな商業プロジェクトはありましたか?もしそうなら、どうやって彼らはどうやって明らかに欠点と共存し、回避しましたか?
「深刻」とは、次のことを意味します。
承知しました。 Altair/MITS/SWTPC/Kim/Sinclair/Pet/RadioScrap/OSI/Appleが発生する前に、 IBM 51 と呼ばれる楽しい小さなマシンがありました。 [〜#〜] rom [〜#〜] にベーシック、大きなカセットテープドライブ(または2つ)、8 KBのメモリが搭載されていました。 24行のスクリーンとプリンタで、すべてわずか10,000米ドルです。これは、通常のminiよりも1桁安い価格です。もともとは科学者向けに作成された( [〜#〜] apl [〜#〜] in ROMもオプションでした)が、いくつかの会計タイプで発見され、流行が始まった:すべての中小企業は1つを望んだ。もちろん、カスタムソフトウェアを使用した。5110がそれに続き、テープドライブが8インチフロッピーに置き換えられた。
商用ソフトウェアはありますか? ガロン。
総勘定元帳、給与、買掛金、売掛金、在庫管理、請求書などと言えますか?私はそこにいて、それをしました-BASICで。公共料金の請求書、新車と中古車の在庫、ごみ収集車のピックアップ、飲み物の配達スケジュールは?うん-BASIC。追跡したい 鉄鉱石 鉱山から列車、船へ...基本。上げ床になっていないものはすべてBASICで処理されていた可能性があります。商業的に、ということです。 (なぜなら RPG II はカウントしないからです;-)。
制限をどのように回避しましたか?
さて、あなたが最初にしたことは、より多くのメモリを得るために顧客をIBMに送り返すことでした。なぜなら、8 KBで深刻なものを誰が書けるからですか?あなたは単にhadを16にする必要があります。可能であれば、2つのテープドライブを使用します。オートマトンの理論は別として、1つのテープでのマージソートは少し遅いです。
ああ、ごめんなさい-BASICの限界を意味しました。
まあ、行番号のようなリソースをかなり注意深く管理する必要がありました。それらを使いたくなかったからです。セクション全体の番号を付け直して、1行または2行のコードを誤って失うことなく、すべてを入力し直さなければならないという、本当に大変なことです。
いや、冗談だよ。マイクロコンピュータ、つまり自分で番号を付け直すことができないBASICインタプリタが登場するまで、実際にはその問題はありませんでした。
また、モジュール性を使用しました。新しいプログラムを呼び出した場合、それが終了して呼び出し元のプログラムに戻るまで実行しました。ステロイドのgosub(使用するメモリが増えるため)が遅い(マシンがテープ上のプログラムを見つけてロードするのに時間がかかり、元のプログラムを巻き戻して見つけてロードするため)バック...)。 forkとexecによく似ていますが、forkがなければ、メモリスペース全体が共有されるため、betterのみになります。
規則の厳密な使用も役立ちました。たとえば、「このルーチンの機能を説明するコメント行で常にGOSUBをターゲットにする必要があり、可能な場合はGOTOについても同じようにする必要があります。 構造化プログラミング 、少し後で-慣例により再び。
[〜#〜] oaoo [〜#〜] 、 [〜#〜] yagni [〜#〜] 、 [〜#〜] tsttcpw [〜#〜] 、ペアリング、 リファクタリング 容赦なく、そのようなもの。もちろん、それらの名前ではありません。 (参照:伝道者;-)
栄光の日々。
私がこれまで取り組んだ最初のソフトウェアは、ボイラー機器のサイジングと価格設定に伝熱計算を使用するために80年代に書き戻した8kラインGW-BASICプログラムでした。コードは完全に理解できませんでしたが、うまく機能して、20年以上使用しました。
これは、リファレンスマニュアルを持つ機械エンジニアが実際に高品質の使用可能なソフトウェアを(当時は)作成できるというBASICの強みでした。 BASICおよびPCが普及する前は、そのようなことは前代未聞のことでした。共有メインフレームをプログラミングして作業するには、コンピューターエンジニアとコンピューターオペレーターのチームを雇う必要があります。これらすべては、典型的な機械エンジニアが短時間でピックアップするには、あまりに複雑でした。
したがって、BASICは確かに家庭用コンピュータの愛好家を超えて非常に有用でした。これは、専門家のチームなしで手頃な価格で社内でカスタムソフトウェアを作成する領域への多くの企業の最初の導入でした。
はい、BASICで行われた多数の商用製品およびその他の「深刻な」開発がありました。理由を理解するには、BASICがミニおよびマイクロコンピュータで成長した1970年代と1980年代のコンテキストを理解する必要があります。
当時、機械類は今日の基準で明らかに無茶苦茶でした。 CPUは数MHzでクロックされ(多くの場合、マイクロコンピュータでははるかに少ない)、このページをレンダリングするために必要なHTMLが占有するメモリよりもメモリが少なかった。製品を展開する場合は、裸のアセンブリか、マイクロコンピュータではROM(多くの場合16K)で出荷されているBASICインタプリタのいずれかである利用可能なツールを使用する必要がありました。 64Kアドレス空間で)システムで使用できます。他の言語も利用可能でしたが、当然のことながら、構造化された機能のすべてを備えているわけではありませんでした。これは、メモリが不足しているという事実に大きく関係していました*。は非常にハイエンドのシステムを除いて仮想的であり、通常、より高度な言語のコンパイラを保持するのに十分ではありませんでした。そのような限られたリソースでは、「深刻」は相対的な用語であり、単に投げていませんでした豊富な処理、メモリ、ストレージを使用して現在私たちが行っているコンピュータの仕事の種類。
初期の家庭用コンピューターのメーカーはもっとよく知っているべきであり、構造化言語を提供すべきだというあなたの主張は、その文脈ではうまくいきません。それは、人々が腹を立てることができる価格で利用可能な技術で単に起こることはありませんでした。
言語の欠点をどのように回避したかは簡単でした。それらをそのように認識せず、利用可能なもので作業を完了させました。 ANSI Minimal BASICは、アセンブリ言語とよく似た構造になっており、単純な分岐とサブルーチン呼び出しのほとんど同じフレーバーが得られますが、星が適切に配置されていることを確認する必要があります。唯一の例外はFOR..NEXT
ループを提供するために使用される構造。基本的に、BASICで何かを開発してそれをうまくやりたい場合、アセンブリでそれらを書くのと同じくらい注意深くプログラムの構造を計画して理解する必要がありました。利用可能なデバッグツールは非常に原始的なものだったので、本質的にはプログラムを機能させて保守可能にするためには、一緒に行動する必要がありました。
はい、当時はたくさんのスパゲッティがありましたが、悪いコードを書くことが不可能な言語はまだ見ていません。
*メモリは、1980年代初頭に、MBあたり約US $ 750-1,000で動作しました。インフレ調整後、これは2010ドルで1,600〜2,200米ドルです。同じ年、メガバイトあたりのコストは約0.03米ドルでした。
1980年代に戻った最初の100%プログラミングの仕事は、元々 GW-BASIC で書かれた垂直市場会計パッケージに取り組んでいました。 QuickBASIC 3.0に移植されていましたが、初期のBASIC方言に関連するほとんどすべての障害が保持されていました。大量のGOTOと多くの貧弱な構造がありました。約12のモジュール(在庫、元帳など)があり、プログラムはモジュールあたり約US $ 1000〜US $ 2500と年間サポート契約で販売されました。会社の収益は年間1,500万〜2,500万ドルの範囲でした。
欠点に対処する方法については、機械語または [〜#〜] masm [〜#〜] を使用することにより、多くの制限が回避されました。 PEEKおよびPOKE コマンドを使用して機械語をBASICプログラムに挿入するのが一般的でした。基本的なデータベースサポート、通信、テキスト「グラフィック」などを追加するためにプログラムを拡張するために、MASM(およびその後のC)プログラムを作成しました。
Peachtree Softwareの会計ライン全体(売掛金、買掛金など)はすべてBASICで記述されていました(私が知っている限りでは、まだ記述されているかもしれません)。 IBM PCが最初にリリースされたとき、私は長い夜をかけて、IBMパーソナルコンピューターとPeachtreeパッケージを購入して中小企業向けの本を購入する顧客のために、コードのデバッグと修正に多くの時間を費やしました。
私の最初の仕事は1981年のプログラミングでしたApple IIs in Basic in the Price Waterhouse(Pre Coopers)office in theマネジメントコンサルタントin the Belfast、N. Ireland。2/3のチームが開発し、書店や食肉処理場などのクライアントにインストールされたシステムです。これは財務モデリングシステムであり、非常に複雑なVisicalcスプレッドシート(50シート、3,000変数)が大規模なBasicプログラムに変わりました。Apple食肉処理場での1週間のスループットを処理する4台のディスクドライブを備えたIIシステム。毎週2人週かかっていた手動システムよりも少し高速です。
その後、Act Siriusマシンに移動し、クライアントにインストールされたBasic(Microsoft 8KB Basic)でプログラミングしました。
Basicには行番号がありましたが、プログラムの番号を付け直すことができるツールキットがありました。 Pascalを学んだUniは初めてだったので、できるだけ構造化されたスタイルで(Basicでできる限り)書こうとしましたが、GotosとGosubsはもちろん使用されました。
1983年12月にレインボーでプログラムを作成しました。
PDP-11 システムで BASIC-PLUS を使用して記述されたロットの商用ソフトウェアがありました。統計分析と会計のパッケージに加えて、かなりの量のハイエンドのラボ自動化機能を見たのを覚えています(これらがどれほど「商業的」かはわかりません。それらは機器パッケージの一部として含まれる傾向があったため、わかりません。別売りの場合)。 ISTR BASICは HP 20 アプリケーション開発の主要言語の1つであり、初期の HP 9800シリーズ ワークステーションでサポートされている主要な(おそらく唯一の)言語でした。
Alpha Softwareの初期のDOSデータベース製品(1985年頃) "Database Manager I"、 "Database Manager II"(DMB2)、および "Alpha Three"はBASICで記述され、IBM BASICコンパイラでコンパイルされました。 「アルファスリー」を手掛けました。すべてのUIはBASICでしたが、CとASMで記述されたコアTSR(終了して常駐)コンポーネントがあり、BASICは割り込みを介して通信しました。行番号と改行は貴重なセグメントスペースを占有するため、コードはひどく押しつぶされて読めなくなりました。シェア変数とスワップモジュールを常に使用しました。仕事をするのは大変でした。ただし、編成については論理的になるように努めましたが、文字列ライブラリはすべて60000の低い行番号でした。文字列のトリミングなどの一般的な操作は次のようになります。
$ S = $ INS; GOSUB 60210; $ INS = $ S;
「アルファスリー」のリリース後間もなく全Cに改宗。
1980年代初頭、米空軍は Cromemco S100バスコンピューター を購入し、飛行中隊が飛行計画ツールとして使用できるようにしました。
飛行計画ソフトウェアは、 Eglin AFB、Florida にある戦術空中戦センターの空軍パイロットとナビゲーターによってBASICを使用して開発されました。
BASICの「明らかな欠点」を回避する限り、私たちはそれ以上何も知りませんでした。当時、コンピューターへの物理的なアクセスを搭乗員に与えるだけで、技術は飛躍的に進歩したように見えました。
このようなBASIC方言で作成された大規模な商業プロジェクトはありましたか?
C64またはその前任者のような古い家庭用コンピュータには、多くのBASICプログラムが存在し、いくつかの商用プログラムも存在しました。 RAMの<64kBで「大きな」BASICプログラムを書くことは実際には簡単ではないので、「大きな」はめったに可能ではありません。マシンの制限を回避したい場合、通常「高水準言語」であるBASICの地位を離れ、アセンブラーを使用します。
ですから、あなたの質問に対する答えは「おそらく多くない」ですが、あなたが考えている理由のためではありません(「エラーが発生しやすい/構造化されていない」など)。
ちなみに、有名なPETSpeed BASICコンパイラはBASICで書かれています(もちろんそれ自体でコンパイルされています)。
QuickBasicプログラマとして20年前に私が持っていた唯一の恐れは、「メモリ不足」というメッセージでした。しかし、これは私をより良いプログラマにしただけです!コンパクトで本格的なコードの書き方を学びました。
私はかつてQuickBasicを使って産業用プログラミングを行っていました。現実の世界(工場)では、上司に「Cで書かれるのに半年かかるだろう」とは言えません。あなたはただ言うことができます:「はいボス、それは来週準備ができています」。はい、BASICは現実の世界で実用的かつ迅速なソリューションでした。 CやPascalではありません。
ユニークなデータベースであるQuickBasic 4.5で作成したプログラムの1つは、いくつかの企業に販売され、実際に既に所有していた商用データベース(おそらくCまたはPascalで作成されたもの)を置き換えました。このデータベースは今日まで使用されています。
私が言及したい一つの主題:
私たちは皆、新しいプログラミング方法はとても便利だと思います。しかし、実生活(業界)では、最近のほとんどのマシンは最新のPLCで動作しています。プログラムは通常、ラダープログラミングで作成されます。これは、GW-BASICよりも何百万倍も原始的です。 PLCのプログラマーとして私は明確に言うことができます。この基本的なラダープログラミングを高レベル言語でGW-BASICまたはQuickBasicに置き換えたいです。 (MEGA-BASICは、過去にこの目的で使用された方言です)。
結局のところ、ほとんどのマシンは何をしていますか?入力の解釈と出力の設定。そのためにC/Assemblyは必要なく、Javaも必要ありません。保守可能なコードを作成するには、QuickBASICが必要です。
Apple] [のオリジナルのUltimaはApplesoft Basicで書かれたと思います。
DECは、開発したRSTSやその他のOSの多くにBASICのバージョンを使用しました。
もちろん。
ずっと前に、私は何百万ドルものシステムを、主に自動車ディーラー業界に売った会社で働いていました。これらのシステムは、カスタマイズされた16ビットHP 21MXミニコンピューター派生物でBASICソフトウェアを実行していました(成功した16ビットマイクロプロセッサーの時代の前)。これは、何十人ものBasicプログラマーがいる中規模の会社でした。彼らは、行番号を必要とし、286の可能な変数名のみを許可する旧式のBASIC方言を使用しましたが、ソリューションは中規模企業にすべての企業会計と在庫(など)を提供しました。 R&Dグループは、次世代ハードウェアの開発を支援するために、アセンブラ、コンパイラ、さらにはハードウェアエミュレータをBasicで作成しましたbootstrap.
私は、1つの古いタイマーに対するより近代的なプログラミングおよびハードウェア設計方法の利点であると私が考えたものを説明しようとすると、優れた設計者は問題の解決策を適切に分割、モジュール化、および構造化しました。一方で、彼は、言語やツールについて説明しましたが、悪意のある設計者は、内部で機能する「派手な」流行の開発パラダイムに関係なく、デバッグできないゴミを生成する可能性があります。
事実、米国の新しい自動車ディーラーのほとんどは、今日、BASICプログラムを使用して、資金調達オプションを見積もり、車を購入したときに得られる長い決済ステートメントを作成しています。プログラムは、現代のハードウェアでエミュレーションの下で実行されるBASICの古いミニコンピューターバージョンで書かれています。移植されたWeb UIがありますが、そのBASICはその下のttyと通信しています。
1980年頃、ユニバーサル生命保険は生命保険事業で急速に流行しました。すべての企業はすぐにそれを販売したいと考えていました。そして、利息と保険数理のジャンボジャンボの非常に複雑な組み合わせを使用して、各ポリシーのアカウント値を毎月計算する必要がありました。データ処理部門での大規模なプロジェクトには約1年かかるため、多くの企業は、メインフレームで行われていたもののより複雑なバージョンを実行するために、必要な数のApple、PC、および/またはTandy TRS-80を使用して生産を開始しました。 20年。これらのほとんどすべてがBASICでプログラムされています。 BASICは主に短精度の浮動小数点を使用していたため、何百万もの顧客のペニーが丸めで失われました。
JPLには、約35年前にも広く使用されていたBASICのバージョンがありました。 Mは管理の略でMBASICと呼ばれていましたが、とりわけ宇宙船のプログラミングに使用されていました。
IBMの非常に人気のある 4680/4690小売店頭販売システム は IBM 4680 BASIC と呼ばれる方言で書かれました。私は、1998年から2002年にかけて、英国の大手小売業者のためにこのシステムに取り組みました。
このシステムは非常に人気があり、Wiki記事によると、2005年に市場シェアの12%を維持しました。システムは現在も強力であり、西側諸国のほとんどの人々がこのBASIC搭載システムを間接的に使用した可能性が高いです週間。
80年代にインドにSoftekという会社があり、独自のバージョンのWordstar、dBase、Lotus 1-2-3を作成していました。もう1つの製品はBASICコンパイラーでした。
彼らは独自のCBASICを使用して、SIMS-FA(Softek Financial Accounting)と呼ばれる非常に包括的な複式簿記パッケージを作成しました。
PICKまたはその他のMultiValueデータベースを調べます。彼らはすべて、DataBasicを主要言語または唯一の言語として使用しており、垂直市場での重要な使用法があります。私たちは、20年以上前に調達ベンチマーク用に私が作成したシステムをまだ実行しています。約5万行のコードを実行します。
どれか?はい。たくさんの?いいえ。教育用ソフトウェアと記録管理。
基本的な時代:〜1970-199
1990年頃まで、制限は期待を超え、業界のニーズに合わせて進化しました。ほとんどの場合、大企業のニーズはコンサルタントによって分析され、ニーズを満たすあらゆる言語に対応しました。
今日のようではなく、企業は必要なものについて多かれ少なかれ開発されたアイデアを持っており、VBAを使用して何らかのソリューションを構築し、さらに能力のあるクライアント/サーバーソリューション、Webアプリ、およびデータグルーミングを備えた最適化されたインターフェイスを発見するために十分に学習します。
1970年代に、通常の会社が企業の予算なしでアカウントのバランスをとったり、コンピューターで生産額を登録したりできるとしたら、本を保管することから大きな一歩を踏み出し、図表を入手できればそれは素晴らしいことでした。
1980年代に、製品図面をコンピュータに移行して編集可能にできるとしたら、それも素晴らしいことです。
これらは両方とも、インタープリターベースの言語で実行できます。コンピューターがより多くのデータを保持できるようになると、CPUは1977年頃から1987年頃までの生データのシャッフルパフォーマンスに関するムーアの法則に遅れをとるため、複雑さがコンパイラーを必要としました。
しかし、期待が高まる1980年代の終わりまで、1970年代に確立された言語(アセンブラーやFPUボードなどのカスタムハードウェアによってまれに補完される)は、いくつかの例外を除いて、企業ですべての真面目で商業的な仕事をしました。メインフレームでは、CobolとFortranがまだチケットでした。企業だけがそれを買う余裕があり、真面目な会社は社内のBASICプログラムで彼らができる真面目な仕事をしました、そしてしばらくの間これで十分でした。
ワードプロセッサやダイアグラムプロッタなどの一般的な使用向けのスタンドアロンソフトウェアパッケージは、オペレーティングシステムがコンパイラのターゲットとして手頃な価格のコンピュータで成熟し、「会社規模」のドキュメントとデータを保持できるストレージが登場した頃に登場しました。
パスカルはここで主要な候補者でした。以前は、そのようなほとんどすべてがアセンブラで記述されていました。最後にCがUnixから登場し、PCで使用され始めました。
BBC BASIC は1981年に英国でリリースされた BBC Micro から始まりました。AcornのARMベースのRISC OSコンピュータに実装されたバージョン5に到達するまでに、世界で最も速いインタープリタ型BASICと見なされていました。その構文は、CASEやWHILEなどの構造化キーワードや関数やプロシージャなど、当時としては高度なものでした。 (元々は 6502 のアセンブラが含まれていましたが、 のARMのRISC OS バージョン。)
多くの商用デスクトップアプリケーションは、それを使用して作成されました。これは主に、協調型WIMPシステムが使用したSWI呼び出しへの便利なアクセスを提供したためです。それを使用して書かれたアーケードゲームさえあるほど十分に高速でした- Nevryon 、Rタイプのクローンは、私が特に見ていたものですのソース。
古い xBase データベーススクリプト言語( dBase II 、 dBase III + 、Clipperなど)は、さまざまな非当時の標準的なBASIC。
BASICが商用に使用されているわけではありませんが、十分近いと思われます。
Commodore 64 ゲームの一部 Gunship の時代はBASICで書かれていました。コードを編集することもできるので、着陸するたびにヘリコプターを装備できます。