タグ付けされた質問 「programming-languages」

タスクを完了するために計算のステップを実行するようにコンピューターに指示するための人工言語。プログラマーがコンピューターと通信できるようにします。

30
独自のプログラミング言語とそのコンパイラを作成するにはどうすればよいですか[非公開]
私はプログラミングに精通しており、BASIC、FORTRAN、COBOL、LISP、LOGO、Java、C ++、C、MATLAB、Mathematica、Python、Ruby、Perl、JavaScript、アセンブリなどの言語に出会いました。人々がプログラミング言語を作成し、そのためのコンパイラを考案する方法を理解できません。また、Windows、Mac、UNIX、DOSなどのOSを人々がどのように作成するのかも理解できませんでした。私にとって不思議なもう1つのことは、人々がOpenGL、OpenCL、OpenCV、Cocoa、MFCなどのライブラリを作成する方法です。最後に理解できないのは、科学者がマイクロプロセッサ用のアセンブリ言語とアセンブラをどのように考案したかです。私はこれらすべてを本当に学びたいです。私は15歳です。私は常に、バベッジ、チューリング、シャノン、デニスリッチーなどのコンピューター科学者になりたいと思っていました。 私はすでにAhoのCompiler DesignとTanenbaumのOSコンセプトの本を読んでおり、それらはすべてコンセプトとコードを高レベルでしか議論していません。彼らは詳細やニュアンス、そしてコンパイラやオペレーティングシステムの考案方法には触れません。スレッド、セマフォ、プロセス、または解析とは何かを理解するだけでなく、自分で作成できるように具体的な理解が必要です。私は兄にこれについてすべて尋ねました。彼はMITのEECSのSBの学生であり、現実の世界でこれらすべてのものを実際に作成する方法の手がかりを持っていません。彼が知っているのは、皆さんが言及したようなコンパイラー設計とOSの概念(スレッド、同期、並行性、メモリー管理、字句解析、中間コード生成など)の理解だけです

4
ソビエト連邦の宇宙計画で使用されたソフトウェアプログラミング言語は何ですか?
私はソビエトの宇宙プログラムに興味を持ち、1988年頃のブラン宇宙船のソフトウェアがPrologで書かれていることを発見することに興味がありました。 初期のミッション、特に1970年代初頭のMars PrOP-Mローバーミッションでどの言語が使用されていたのかを知っている人はいますか? 編集 Buran Prologの私のソースは、1990年5月のCIAサイトからの機密解除されたドキュメントです。OCRバージョンが見つかりませんでした。0449: オープンソースの文献によると、ソビエト連邦はフランスで開発されたPrologとして知られるプログラミング言語を使用して、ブラン車用のオンボードシステムソフトウェアを開発しました...

16
Grokking Java culture-なぜそんなに重いのですか?何のために最適化されますか?[閉まっている]
私はよくPythonでコーディングしていました。今、仕事上の理由で、私はJavaでコーディングしています。私がやるプロジェクトはかなり小さく、おそらくPythonのほうがうまくいくかもしれませんが、Javaを使用する正当な非エンジニアリングの理由があります(詳細は説明できません)。 Java構文は問題ありません。それは単なる別の言語です。しかし、構文とは別に、Javaには文化、一連の開発メソッド、および「正しい」と見なされるプラクティスがあります。そして今のところ、私はその文化を「グロック」することに完全に失敗しています。だから私は本当に正しい方向に説明やポインタをいただければ幸いです。 最小限の完全な例は、私が始めたStack Overflowの質問にあります:https : //stackoverflow.com/questions/43619566/returning-a-result-with-several-values-the-java-way/43620339 タスクがあります-(単一の文字列から)解析し、3つの値のセットを処理します。Pythonでは1行(タプル)、PascalまたはCでは5行のレコード/構造体です。 答えによると、構造体に相当するものはJava構文で利用可能であり、トリプルは広く使用されているApacheライブラリで利用可能です。しかし、それを行う「正しい」方法は、ゲッターとセッター。完全な例を提供してくれた人はとても親切でした。それは47行のコードでした(これらの行の一部は空白でした)。 巨大な開発コミュニティは「間違った」ものではないことを理解しています。これは私の理解の問題です。 Pythonのプラクティスは、読みやすさ(その哲学では保守性につながります)とその後の開発速度を最適化します。Cプラクティスは、リソース使用量に対して最適化されます。Javaプラクティスは何のために最適化されますか?私の最善の推測はスケーラビリティです(すべてが数百万のLOCプロジェクトに対応できる状態でなければなりません)が、それは非常に弱い推測です。

9
なぜ人々はPython 3の使用をためらうのですか?
Python 3は2008年12月にリリースされました。それから多くの時間が経過しましたが、今日でも多くの開発者はPython 3の使用をためらっています。 もちろん、Python 3にはPython 2との非互換性があり、一部の人々は後方互換性に依存する必要があります。しかし、Python 3は、ほとんどのプロジェクトがPython 3に切り替えたり開始したりするのに十分な長さではありませんか? 競合する2つのバージョンがあると、多くの欠点があります。学習者の混乱など、2つのブランチを維持する必要があります。では、なぜPython 3に切り替えることについてPythonコミュニティ全体でそんなにためらいがありますか?

8
すべての言語はCで書かれていますか?
時々、異なる言語(C / C ++、C#)でプログラミングしているときに、この考えが思い浮かびます。 すべての言語はCプログラミング言語で書かれていますか? C言語はすべての言語の母/父ですか? 各コンセプト(OOPなど)はすべてCで実装されていますか? 私は正しい方向にいますか?

19
C、Perl、Pythonなどの代わりにC ++を使用する理由はありますか?[閉まっている]
Linux(サーバー側)開発者として、C ++をどこで、なぜ使用する必要があるのか​​わかりません。 パフォーマンスに行くとき、最初と最後の選択肢はCです。 「パフォーマンス」が主要な問題でない場合は、PerlやPythonなどのプログラミング言語が適切な選択です。 この分野で私が知っているほとんどすべてのオープンソースアプリケーションは、C、Perl、Python、Bashスクリプト、AWK、さらにはPHPで書かれていますが、誰もC ++を使用していません。 GUIやWebアプリケーションのような他の分野については話していません。Linux、CLI、デーモンについてだけ話しているのです。 C ++を使用する十分な理由はありますか?

26
コード例を常に探しているのは、悪い開発者の兆候ですか?[閉まっている]
私はCとC ++で数年の経験を持つCS学生であり、過去数年間はJava / Objective Cでアプリ開発を常に行ってきましたが、現在はWeb開発に切り替え、主にルビーに焦点を当てていますレールと私は(アプリの開発と同様に、実際に)私は他のコードを参照しすぎることに気付きました。私は常にゼロからできるはずだと思う多くのことのためにGoogleの機能を使用しています。 基本的な基本事項は問題ではありません。これを例として使用するのは嫌ですが、スプリントでjava / pythonの両方でjavabatを実行できます。おもう? 通常使用する必要があるものは知っていますが、構文を常に参照します。私は学位を取得しているにもかかわらず、この分野での仕事を探すという点で私を非常にしっかりと抑制しているので、これに関するいくつかのアドバイスと意見を歓迎します。私が尋ねる主な理由は実際に雇用についてではありませんが、ハッカソンでノンストップコードを叩き出して、20個のGoogle / githubタブを開いてそこに座っている唯一の人になりたくないということはもっとありませんわずかな自信不足のため... 人は中程度から複雑なタスクのコード例を常に探しているので、悪い開発者ですか?

7
Cプログラミング言語が登場したとき、それは低レベル言語と見なされていましたか?
現在、Cは低レベル言語と見なされていますが、70年代に低レベル言語と見なされていましたか?この用語は当時も使用されていましたか? 多くの一般的な高レベル言語は80年代半ば以降まで存在しなかったため、低レベルの性質が長年にわたって変化したかどうか、どのように変化したかを知りたいです。

24
Pythonの欠点は何ですか?[閉まっている]
Pythonは最近大流行しているように見えますが、それは当然のことです。なぜなら、Pythonは本当に解決すべき新しい問題を与えられることを楽しんでいる言語だからです。しかし、賢者がかつて言ったように(実際に誰がそれを言ったのかわからないので、彼を賢者と呼ぶ;彼がその賢者であったかどうかはまったくわからない)、本当に言語を知ることはそのことを知っているだけではない構文、設計など、利点だけでなく、欠点もあります。完璧な言語はありません。一部の言語は他の言語よりも優れています。 だから、あなたの意見では、Pythonの客観的な欠点になります。 注:ここで言語比較を求めているわけではありません(つまり、C#はPythonよりも優れています... yadda yadda yadda)-より多くの客観的(ある程度)の言語機能は、適切に設計されているかどうか、あなたがそれに欠けているものなど。比較として別の言語を使用する必要がある場合、ただし他の言語では詳しく説明するのが難しい点を説明するためにのみ使用します(つまり、理解を容易にするため)

15
Java、Javascript、C#などのメモリ管理言語が「new」キーワードを保持しているのはなぜですか?
newJava、Javascript、C#などの言語のキーワードは、クラスの新しいインスタンスを作成します。 この構文は、C ++から継承されているようです。C++ newは、ヒープ上のクラスの新しいインスタンスを割り当て、新しいインスタンスへのポインターを返すために特に使用されます。C ++では、これがオブジェクトを構築する唯一の方法ではありません。new- を使用せずにスタック上にオブジェクトを作成することもできます。実際、この方法のオブジェクトの作成方法はC ++でより一般的です。 だから、C ++のバックグラウンドから来て、newJava、Javascript、C#のような言語のキーワードは、私にとって自然で明白なように思えました。それから、newキーワードのないPythonを学び始めました。Pythonでは、次のように、コンストラクターを呼び出すだけでインスタンスが構築されます。 f = Foo() 最初は、Pythonが持つ理由がないことに気付くまで、これは少しnew戸惑いました。すべてがオブジェクトであるため、さまざまなコンストラクタ構文を明確にする必要はありません。 しかし、それから私は考えました-Javaの本当のポイントは何newですか?なんで言うのObject o = new Object();?どうしてObject o = Object();?C ++ではnew、ヒープへの割り当てとスタックへの割り当てを区別する必要があるため、間違いなくが必要ですが、Javaではすべてのオブジェクトがヒープ上に構築されますnew。Javascriptについても同じ質問をすることができます。私があまり馴染みのないC#では、newオブジェクト型と値型を区別するという点で何らかの目的があると思いますが、よくわかりません。 とにかく、C ++の後に来た多くの言語は単にnewキーワードを「継承」しているように思えます-本当にそれを必要としません。それはほとんど痕跡のキーワードのようなものです。なんらかの理由でそれを必要としているようには見えませんが、まだあります。 質問:これについて正しいですか?あるいはnew、Java、Javascript、C#などのC ++にインスパイアされたメモリ管理言語である必要があり、Pythonではなくてはならない説得力のある理由がありますか?

8
C ++はDよりも優れているのでしょうか?
私は最近Dを学んでおり、言語にある程度精通し始めています。私はそれが提供するものを知っています、私はまだすべてを使う方法を知りません、そして、Dイディオムなどについて多くを知りません、しかし、私は学んでいます。 私はDが好きです。これは素晴らしい言語であり、ある意味ではCの大規模な更新であり、うまく機能しています。どの機能も「ボルトオン」されているようには見えませんが、実際には非常によく考え抜かれ、適切に設計されています。 DはC ++であるべきだとよく耳にします(不必要な火炎戦争を避けるために、誰もが自分で決定するのが正しいかどうかは疑問です)。また、いくつかのC ++プログラマーから、C ++よりもはるかにDを楽しんでいると聞きました。 私自身はCを知っていますが、C ++を知っているとは言えません。C ++が言語として Dよりも優れている何かがあると思う場合、C ++とDの両方を知っている人から聞きたいです(通常の「サードパーティライブラリが多い」または「リソースが多い」または「 DよりもC ++を必要とするジョブが多い」)。 Dは、C ++が抱えていた多くの問題を修正するために、非常に熟練したC ++プログラマー(Walter BrightとAndrei Alexandrescu、Dコミュニティの助けを借りて)によって設計されましたが、実際には結局良くならない何かがありましたか?彼が逃した何か?あなたがより良い解決策ではなかったと思うものはありますか? また、私はD 1.0ではなくD 2.0について話していることに注意してください。


9
多重継承が嫌われる「本当の」理由はありますか?
私は常に、言語で複数の継承をサポートするというアイデアが好きでした。ほとんどの場合、意図的に無視されますが、想定される「置換」はインターフェースです。インターフェースは、多重継承が行うものと同じ基盤をすべてカバーするものではなく、この制限により、定型コードが増える場合があります。 私がこれまでに聞いた唯一の基本的な理由は、基本クラスのダイヤモンドの問題です。私はそれを受け入れることができません。私にとっては、「まあ、それを台無しにすることは可能だから、それは自動的に悪い考えだ」というようなひどい結果になります。ただし、プログラミング言語で何かを台無しにすることができます、と私は何を意味します。少なくとももっと徹底的な説明がなければ、私はこれを真剣に受け止めることはできません。 この問題を知っているだけで、戦いの90%になります。さらに、私は何年か前に「エンベロープ」アルゴリズムまたはそのようなものを含む汎用的な回避策について聞いたことがあると思います(これは鐘を鳴らしますか?)。 ダイヤモンドの問題に関して、私が考えることができる唯一の潜在的に本物の問題は、サードパーティのライブラリを使用しようとしており、そのライブラリ内の2つの一見無関係なクラスが共通の基本クラスを持っていることを見ることができない場合ですが、ドキュメンテーション、単純な言語機能では、たとえば、実際にコンパイルする前に、ダイヤモンドを作成する意図を明確に宣言する必要があります。このような機能を使用すると、ダイヤモンドの作成は意図的、無謀、またはこの落とし穴に気付かないためです。 すべてが言われているように...あらゆるあり、実際のほとんどの人は多重継承を憎む理由は、またはそれが良いよりも害の原因とヒステリーのすべてのちょうど束でありますか?ここにないものがありますか?ありがとうございました。 例 車はWheeledVehicleを拡張し、KIASpectraはCarとElectronicを拡張し、KIASpectraはラジオを含みます。KIASpectraにElectronicが含まれないのはなぜですか? それは電子だからです。継承と構成は、常にis-a関係とhas-a関係でなければなりません。 それは電子だからです。配線、回路基板、スイッチなどがあります。 それは電子だからです。冬にバッテリーが切れると、すべてのホイールが突然なくなったのと同じくらいのトラブルに見舞われます。 インターフェースを使用しないのはなぜですか?たとえば、#3を考えてみましょう。私はこれを何度も何度も書きたくないし、これを行うために奇妙なプロキシヘルパークラスを本当に作りたくない: private void runOrDont() { if (this.battery) { if (this.battery.working && this.switchedOn) { this.run(); return; } } this.dontRun(); } (その実装が良いか悪いかについては触れていません。)WheeledVehicleの何にも関連せず、Electronicに関連するこれらの機能のいくつかがどのように存在するか想像できます。 そこには解釈の余地があるので、その例に落ち着くかどうかはわかりませんでした。また、VehicleとFlyingObjectを拡張するPlaneや、AnimalとFlyingObjectを拡張するBirdの観点、またはより純粋な例の観点から考えることもできます。

14
なぜほとんどのプログラミング言語は、関数から単一の値を返すことしかサポートしないのですか?[閉まっている]
ほとんどのプログラミング言語の関数が、任意の数の入力パラメーターをサポートするように設計されていますが、戻り値は1つだけである理由はありますか? ほとんどの言語では、その制限を「回避する」ことができます。たとえば、出力パラメータを使用したり、ポインタを返したり、構造体/クラスを定義/返したりすることができます。しかし、プログラミング言語が複数の戻り値をより「自然な」方法でサポートするように設計されていないことは奇妙に思えます。 これについての説明はありますか?

15
LISPは今日の世界でまだ有用ですか?どのバージョンが最も使用されていますか?
私は自分自身に新しいプログラミング言語を定期的に教えようとしています。最近、私はLispとその方言がC / C ++のような言語とはまったく反対の立場にあることを読みました。ただし、2つのことは私には不明確であり、それらに関するガイダンスを探しています。 LISPは今日でもまだ実践/使用されていますか、それともFORTRAN / COBOLなどのレガシー言語ですか?つまり、既存のコードを維持することとは別に、新しいプロジェクトでまったく使用されますか? 最も広く使用されている方言は何ですか?最も一般的な2つの方言としてSchemeとCommon Lispに出会いましたが、どちらが最も好まれ/有用な方言であるかについてのあなたの意見が欲しかったです-そして、あなたが最初のランク初心者のためのリソースを提案できるなら、非常に満足します。 私が慣れ親しんでいる手続き言語とは根本的に異なる言語を習得したいのですが、もし完全に時代遅れであれば何かに過度の労力を費やしたくはありません。しかし、学術的観点からのみ...

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