なぜCはPascalに勝ったのですか?[閉まっている]


68

私の理解では、1980年代、そしておそらく1990年代にも、PascalとCは実稼働言語としてほとんど真っ向勝負でした。

パスカルの究極の終miseは、ボーランドのデルファイの怠慢によるものですか?または、運が悪かったり、Pascalに本質的に問題があるなど(復活の希望はありますか?)

好き嫌いではなく、歴史的な事実や観察できるバックアップに興味があります。


10
基本的に、使用している言語をサポートしている倒産会社が1社しかない場合、それは間違いなく役に立ちません(.Net Borland以前の話です)。
Let_Me_Be

48
一言で言うと、Unixです。
SKロジック


8
1ベースの文字列を使用するため、最終的にパスカルは失われます。
ピーターB

7
@jk:ISO Pascalで、文字列は任意の長さを持つことができる、ということは言うまでもありませんが、異なる長さの文字列は、異なるタイプを持っていました。文字列を大文字にするには、256個の関数が必要です。2つのランダムな文字列を追加するには、数千が必要です!
–MSalters

回答:


43

パスカルは主に次の理由で戦闘に負けました:

  • 冗長性(if ... then begin ... endvar A: array[0..15] of Integer
  • 相互に理解できない方言と公式の標準
  • 印象的なオブジェクト指向拡張よりも少ない
  • 最も成功した実用的な方言-Turbo Pascal-は、DOS / Windows以外のプラットフォームに移植されたことはありません。さらに、ボーランドはコンパイラのソースを決して公開しませんでした。
  • パスカルの「最後の希望」-Delphi-は、企業環境をターゲットとしたデータベース開発プラットフォームとしてボーランドによって位置付けられました。クリエイティブエンジニアがデータベースと企業環境の両方を嫌うので、これは残念なマーケティングの動きでした(マーケティング担当者によると思います)。それから、Delphi for Linux、Kylixの失敗。
  • AppleはCに切り替え、その後Objective-Cに切り替えたため、OS言語としてのPascalが殺されました

19
AppleがObjective-Cに切り替えたのは、Pascalの使用をやめてからずっと後のことです。オリジナルのMacintoshオペレーティングシステムとライブラリはPascalを使用して作成されましたが、AppleはMacの導入後すぐにCの適切なサポートを提供し、90年代初期までにCに切り替えました。AppleはNeXTを買収したときにObjective-Cを採用しました。これは、90年代後半のSteve Jobsの復帰後に起こりました。
カレブ

36
冗長性は関連する議論だとは思わない。コードを読むと、書かれた冗長性よりも利点があります。
ヨハネス

14
冗長性は、今日の言語で提唱されている正確なものではありませんか(python vs. perl)?
ルーク

7
冗長性が原因ではないと思いますが、それどころか、Pascalの強みの1つです。

9
これは間違っています。Turbo Pascalは広く成功しました。主な問題は、DOS / Windowsでしか使用できないことでした。

44

CはUnixのベースです。80年代および90年代に、Unixはますます注目を集めました。今日、Unixのフレーバーがスマートフォンにあります。


16
UNIXだけではありません。Windowsとそのカーネルは、主にCで作成されています。C++が強力になることは言うまでもありません。また、Cを少なくとももう少し普及させたに違いありません。
ヤムマルコビッチ

2
@ SK-logicそれは1984年に発表されました。私はCがそれまでに世界を引き継いだとは言いません。Smalltalk、Pascal、およびその他のものはほとんどどこでも使用されていました(COBOLは言うまでもありません)。
ヤムマルコビッチ

3
@Yam:UnixとCは80年代にすでに広く普及していました。私が大学(90年代初頭)で勉強したとき、UnixとCは、すべての真面目な開発者が取り組むことを望んでいた「プラットフォーム」でした。UnixはCで実装されたため、CなしではUnixはありませんでした。Smalltalk、Pascal、およびCOBOLはそのような重要な役割を果たしませんでした。
ジョルジオ

2
@Giorgio確かにDennis RitcheとBrian KernighanがCを安定させた後、CでUNIXを書き直したため、他のタイプのマシンへの移植がはるかに容易になりました。
ヤムマルコビッチ

2
@ Steve314良い点。しかし、私が見る限り、以前のWindowsカーネルもAssemblerで開発されました。アセンブリでは、呼び出し規約は定義上、どのような方法でも強制されません(したがって、「規約」という言葉)。したがって、「Pascal呼び出し規約」という名前が付いたという事実は、必ずしもPascalプログラミング言語の発明者によって開拓されたという意味ではなく、WindowsがPascalで開発されたという意味でもないようです。編集:あなたの最近のコメントを読みました。この時点でここに追加するインテリジェントなものは何もないと思います。:)
ヤムマルコビッチ

35

パスカルが私の好きな言語ではない理由エッセイブライアンW.カーニハンによる批判の主要なポイントをカバーしています。

Cははるかに用途が広く、拡張可能です。一部の人々は、Cで(ある種の)オブジェクト指向プログラミングを行う方法を見つけました!また、インラインアセンブラおよびその他の低レベル機能により、システムプログラミングの重要な言語になりました。


9
よく覚えていれば、Turbo Pascal(私の最初のプログラミング言語)はインラインアセンブラをサポートしていました。カーニハンのエッセイを見たことがあります。しかし、彼の批判はすぐに時代遅れになりませんでしたか?
コンラッドモラウスキー

2
@ Morawski、TPは80代から、Cは70代からです。それは10年以上遅れました。
SKロジック

9
@Morawski:さらに、Turbo PascalはPascalの1つの実装にすぎませんでした。標準では特に有用ではない言語が記述されているため、実装者は独自の小さな拡張機能を追加して、有用なプログラムを作成できるようにする必要がありました。ここではフラグメンテーションが問題である可能性があります。
デビッドソーンリー

@ SK-logic、PASCALは1970年に最初に定義され、その後、最初のコンパイラが利用可能になりました。Turbo Pascalが現れました。1984年、JRTパスカルFARの需要が製品を提供する能力を上回ったため、ジムタイソンが破産した後。誰もがJRTパスカルを思い出したので、ターボパスカルは、最初はかなり疑いの目で見られていた、とLOT人々のはそれによって燃え得ていました。
ジョンR.ストローム

@ JohnR.Strohm、TPのインラインアセンブラに関するKonradのコメントに答えてきました。
SKロジック

23

それは排他的な使用ではありませんでしたが、Pascalはプログラミングを教えるために設計されており、実際に主要言語として使用されることはありません。

DelphiとObject Pascalはそれを変更しました。しかし、その時点では、すでに遅れていました。


4
しかし、BASICもプロ用に設計されたものではありませんでしたが、まだ
活気が

11
@Morawski:本当ですか?VBとは別に?

5
@Let_Me_Be Borland(Object)PascalまたはDelphiで作成されたWindowsアプリケーションをかなり覚えています。C / C ++で記述するよりもはるかに簡単でした。現在、C#とJavaがこのドメインにサービスを提供していると思います。
quant_dev

11
パスカルはすぐに本当の汎用言語になりました。Delphiを待つ必要はありませんでした。多くの人が若いときにプログラミング言語を教えること(または教えることができること)が究極の終tailを伴うことはわかりません。まったく逆です。
ヤムマルコビッチ

10
@Morawski BASIC(まあ、VB)が今でも語られ、使われている唯一の理由は、Microsoftの最初の製品がBASICインタープリター(コンパイラーではないことは間違いない)であり、彼らがそれを喉に押し付け続けていることです。代わりにPascalを選択した場合、VP.Netについて話します。世界はあまり吸わないだろう。
MetalMikester

18

CがPascalよりも勝っているとは思わない。大多数のプログラマーにとって、JavaはPascalよりも勝っていました。Pascalでプログラミングを行っていたプログラマーのカテゴリーは、同じ仕事にJava(またはC#)を選択するようになりました。Cでプログラミングしていた人は、C(およびC ++)に固執していました。

Pascalの終Theは、主にボーランドがGUIの働き方に固執している一方で、顧客がWebに移行したことに起因します。ボーランドは、サーバーサイドの開発に対して本当に魅力的な提案をしたことはありませんでした。Delphiがすべての実用的な目的のために死んでしまった最後の数年でのみ、Delphiにこだわった人々はC#に移行しました。C / C ++は常にPascal / Java / C#の群衆とは異なる群衆であり、C(++)の人々ははるかに技術的/低レベルに焦点を当てています。


19
ボーランドの終miseは、ウェブ開発が必要になるずっと前のことです。彼らの間違いは単純でした。彼らはそもそも彼らがリーダーになった理由を忘れ(安価で高速で効率的な大衆向けコンパイラー)、高価な企業ツールに飛び込みました(Microsoftや他の企業はすでに良好なスタートを切っていました)。従来の群衆は別の場所に移動する必要がありました。
MetalMikester

@MetalMikester、それはまさにグレードAの真実です。彼らは、小規模で独立した開発者を捨てて、企業売上の「大金」を追いました。残念ながら、新しい所有者であっても、まだその一部が残っています。
GrandmasterB

とはいえ、彼らはウェブアプリケーション開発のための良いオプションの欠如に同時に対処しなければなりませんでした(クライアント/サーバーへの長年の主張から、製品ラインのあらゆるものがあります)。
jwenting

2
JavaとC#にはC構文があり、PascalではなくCと非常に似ています。また、JavaはC ++プログラマーに対応していました。
m3th0dman

11

簡単に言うと、Cはポータブルアセンブラであり、PASCALは教育用言語です。

ウィキペディアのこのセクションでは、実際にそれを十分にカバーしています。

編集:
ここの一部は私の答えを誤解しているように思えます。または実際にはむしろ質問。
この質問は人気についてです。そして、Cが最終的にPASCALよりも人気がある理由は、1つは金属に近いポータブル言語として設計および販売され、もう1つは教育用言語として設計および販売され、多くの安全性と明確性を実施しているためです。
最終的に、どちらの言語が設定された目標を達成できなかったのか、予期しない成果を達成したのかは、実際には重要ではありません。そして、PASCALに対するCの優位性から人気の違いを推測しようとする人は、明らかに間違っています。
この質問の鍵は、歴史とそれに関わるヒステリーにあります。


2
しかし、あなたがリンクしているWikiエントリでさえ、それを認めていますmany major development efforts in the 1980s, such as for the Apple Lisa and Macintosh, heavily depended on Pascal (to the point where the C interface for the Macintosh operating system API had to deal in Pascal data types).
Konrad Morawski

@Morawski:Appleは当時、多大な開発努力を重ねてきた可能性があり、代替品を大きく先取りした製品を開発したかもしれないという事実にもかかわらず、彼らの市場シェアは非常に低かった。AppleもPASCALも悪くありません(実際、PASCALは私の第一言語であり、今でも気に入っています)。しかし、どちらも業界の現実のニーズを満たすことができませんでした。
back2dos

4
@ S.Lott素晴らしいので、ポータブルPDP-11アセンブラーです。現在の関連性は何ですか?2011年にPDP-11を気にする必要があるのはなぜですか?Cは、いかなる意味でも移植可能なx86アセンブラーではありません。
quant_dev

1
そして、LispはAI研究のための言語です。
mojuba

1
@mojuba:「言語の本来の目的は関係があるかもしれないし、そうでないかもしれない」-それは私が完全に同意するものだ。私のポイントは、この場合、それが関連していということでした。;)
back2dos

5

70年代から80年代初期にかけて、Cコンパイラはパソコン用に比較的簡単に手に入りましたが、ほとんどはCのサブセットしか実行しませんでした(そのため、古い雑誌で非常に多くの異なる「小さなC」コンパイラが表示されます) )。Pascalは、最も裕福なコンピューター愛好家だけがハードドライブを所有していた時代に、より扱いにくい言語になりました(5メガハードドライブは数百ドルでした)。Apple 2(私の最初のコンピューターであり、「プラス」でもない)の場合、Pascalを実行するには追加のメモリーカードを購入する必要があり(64kのRAMが必要です!)、「tiny C」コンパイラは1枚のフロッピーに収まります(16kのRAMで対応できます)。

パスカルはコンピューターサイエンスのカリキュラムで教えられていましたが、Cはほとんど独学でした(電気工学のカリキュラムで教えられることもありました)。パスカルは、私は、彼らが会ったことのないよう不当だと思った「束縛と規律言語」であるためのカウボーイコーダーの間で評判、得ADAを

80年代のPascalの主要なドライバーは、Apple(APIはPascal呼び出し標準を使用していたため)とBorlandでした。ボーランドの「ターボ」コンパイラは、おそらく市場で最も優れたコンパイラであり、「本のような」ライセンスは、より悪質なライセンスを持つ企業よりもはるかに人気がありました。

ボーランドは、Microsoftがリード開発者とプロジェクトマネージャー(Hejlsberg、Gross、その他35人以上)を雇い、最終的に.NETとVisual Studioを開発したときに、開発市場でリードを失いました。ボーランドとマイクロソフトは数年後に訴訟を解決しましたが、ボーランドは損失から回復することはありませんでした。私の意見では、Delphiはその時点で萎縮し始めました(フォーカスとドライブを与えた人々が雇われたため)。同時にCEOの変化により、ボーランドはコンパイラー会社からALM(アプリケーションライフサイクル管理)会社になりました。 、数年後に名前をInpriseに変更します。ボーランドの灰は現在、Micro Focusが所有しています。


マイクロフォーカス?それはいつ起こったのですか?少なくとも過去数年間は、Embarcadero(誰でも)が所有していると思いました。DelphiがCOBOLツールの「有名な」会社に所有されている場合...
Steve314

@ Steve314、「CodeGearの」分割は2008年にエンバカデロに売却し、Micro Focus社は2009年にボーランドの残りの部分を買ったen.wikipedia.org/wiki/Borland#Later_Borland_years
Tangurena

1
ボーランドはコンパイラー、ライブラリー、IDE(Delphi、The Builders)を開発しましたが、誰も気にかけなかった何とか何とか何とかを開発しました。誰かがそれを火葬するのに何とか何とか何とかを十分に気遣ったと私に言っていますか?
Steve314

5

ホーリーは、これは片側だけのフーイです。このサイトで始めた人たちは、Delphiをお気に入りの言語として使っていましたか?

ほぼ全員がボーランドに言及しており、2/3の人々がDelphiがバケツを蹴ったと考えています。申し訳ありませんが、エンバカデロは数年前にボーランドのCodeGearユニットを購入しました(チャリティーではなく、お金のため)。彼らはかなり素晴らしいことをして、いくつかの素晴らしいツールを彼らの素晴らしいIDEに統合し、素晴らしいプラットフォームを作成しましたOBJECT PASCALでのクロスプラットフォーム開発用。物事のオープンソース側のLazarusとFreePascalは言うまでもありません。

したがって、これがCがPascalに勝った理由が歴史的な質問であれば、それで問題ありません。しかし、Object Pascalのコードの作成者は増え続けており、TIOBEインデックスがそれにとって大きな意味があることは知りませんが、Embarcaderoが新しいツールをリリースするたびに、人々はまだObject Pascalでコードを書いており、関心が急上昇していることは明らかですしたがって、(古いコードを維持するだけでなく)新しいコードを書くことに興味がある実際の人間は、Delphiに興味を持っています。

Cに関連するものについて同じことを言えるかどうかはわかりません。


3
死んでいるはずです。まだそれを使用する理由がある唯一の人々は、私のようなもので、多くの既存のVCLアプリのためにそれを使い続けています。Delphi / C ++ Builder IDE全体は、過去5年間に最新技術からくだらない、バグのある混乱に崩壊しました。ヘルプファイルとドキュメントは存在しません。デバッガーは恥ずかしいです。IDEを別にすれば、下位互換性が必要でない限り、C ++でObject Pascalバージョンを使用する理由はまったくありません。この場合のC ++の主な利点は、コードを移植してくだらないIDEをエスケープできることです。

1
Cに関しては、まず第一に組み込みセクター全体で完全に支配的な言語であり、そこにあるすべての新しいツールはC用に作成されています。Windows Linux 全体はCです。CまたはC ++は、プログラミングが使用されるアプリケーションのほぼすべての分野で支配的です。C ++標準はメジャーアップデートされています。CとC ++の両方の新しい安全なMISRAサブセットは、組み込みアプリで成功し、前者は業界の事実上の標準になりました。だから...興味の急増はありません、常に高い関心があります。

2
@Lundin、冗談でしょうか、私は過去4年間Delphi 7を使用してきましたが、最終的に2009年に更新され、XE2でも働いています。最後に、ブレークポイントを維持するために、5または6ビルドごとにIDEを再起動する必要はありません。さらに、EmbarcaderoはAndroidおよびiOSプログラム用のDelphi Codeを使用する方法を作成しましたが、これは新しくてもかなりクールです。利点は、完全に非公開会社によって管理されているため、改善が実際に開発者の手に渡ることです。
ピーターターナー

1
私は実際にはPCプログラマーではありませんが、90年代半ばからBuilderをあちこちで使用しています。それは、Codegearを回したところのどこかまで着実に改善されていましたが、10年前よりも悪化しているため、一部のギアは明らかに壊れました。とにかく、これはトピック外です。なぜなら、Delphi / BuilderはCodegear / Embarcaderoの大失敗のずっと前に消滅し始めたからです。

1

私の考えでは、Cとそれから派生した主要言語であるC ++、Java、C#は、MicrosoftやSun / Oracleなどのさまざまな開発スタックにまたがる最大のソフトウェア企業に受け入れられました。その結果、Windows、Apple OS、およびUnixの「母国語」になりました。

パスカルは、ボーランドの最善かつしばしば見当違いの努力にもかかわらず、そのレベルの市場浸透を達成しませんでした。


3
これは疑問を抱いているようです:なぜCが最大の企業を引き継いだのか?MacOSはPascalで始まり​​、よりCフレンドリーになりました。その理由は何ですか?
デビッドソーンリー

1
@DavidThornley-その多くは、一流の経験豊富なプログラマーの採用に関係していると思います。Cは、アセンブリとブレンドされて、1980年代半ばから主流のPCアプリケーションに選択される言語でした。Cベースを採用することにより、熟練したプログラマーの採用がはるかに簡単かつ安価になりました(再トレーニングなどは不要)。
-jfrankcarr

3
しかし、あなたは質問を1つの層に押し戻しました。一流の経験豊富なプログラマーが切り替えたのはなぜですか?なぜCが言語として選ばれたのですか?KnuthはPascalで彼の最初の文芸的プログラミングを行い、その後Cに切り替えました。なぜですか?誰が切り替えを主導したかを正確に知ることは有用かもしれませんが、質問には理由があります。
デビッドソーン

私は80年代に2つのソフトウェア会社で働いていました。プログラマーの役割ではなく、サポートの役割でした。私が思い出すことができることに基づいて、私はMASMからCへの移行がすでにMASMプログラミングに深く関わっている人にとって簡単だったと思う。Turbo Pascalが嫌いだったことを覚えています。TurboPascalで働いていたプログラマーはおもちゃの言語と呼んでいましたが、QuickBasicでそれらを使いたくはありませんでした。その仲間からの圧力のために、私は最初にMASMとCを学びました。それが要因になる可能性もありますが、実際の起源はわかりません。
jfrankcarr

90居住の始まりである80居住の終わりには、Cはすでに非常に人気がありました。どんなUNIX実装でも、コンパイラを標準モジュールとして見つけることができます(そして、UNIXはほとんどのプログラマーが取り組みたいオペレーティングシステムでした)。パスカルよりも人気があると言っているわけではありませんが、非常に人気がありました。したがって、C ++、Java、およびC#が人気があります。これは、Cが一般的であり、逆ではないためです。
ジョルジオ

0

Pascalは、単一のかなり限られた環境のPC / DOSでのみ人気を博しました。

それでも、PC上で実行されるMicroFocus COBOLアプリケーションは、パスカルアプリケーションと同じ数でした。

Cは、UNIXオペレーティングシステムとすべてのMS / Windowsオペレーティングシステムの基本でした。

限られたハードウェアでの効率的な実行と、基盤となるOSおよびGUIライブラリへのネイティブアクセスの組み合わせが、おそらくCの成功の主な理由でした。PascalはWindowsで実際にハッキングすることはありませんでしたが、Delphiは違いを生むには遅すぎました。


あなたのコメント "..そして、すべてのMS / Windowsオペレーティングシステム"は実際には間違っていると思います。WindowsはもともとPASCALで設計およびコーディングされました。en.wikipedia.org/wiki/Talk:X86_calling_conventionsから:「ここで計量すると思った。WatcomC / C ++ユーザーガイドで__pascalキーワードを調べたところ、__ pascal呼び出し規約がOS / 2 1.xおよびMicrosoft Windowsの3.xのAPIを」
ジョン・R. Strohm

@ JohnR.Strohm呼び出し規約と実装言語は必ずしも同一ではありません。Microsoftは1993年に既にCを使用していた可能性があります(1992年にWindows 3.1がリリースされました)。種類のソース
からCVn

80年代初期のIIRCは、Xenixを社内で多く使用しており、おそらくこの方法でCを開始しました。それ、そして(ターボ)パスカルは、結局、危険なライバルであるボーランドのキラー製品でした。当時、MicrosoftとLotus、Borlandなどの他の大規模ソフトウェア企業との規模の違いは、まだそれほど大きくありませんでした。
wazoox
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.