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

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

12
1つの製品またはソフトウェアの開発に複数のプログラミング言語が使用されるのはなぜですか?
私は最近、コンピューターサイエンスの修士号を取得することを目指している大学院生です。私は本当に興味をそそられ、それらに貢献することを勧める複数のオープンソースプロジェクトに出会いました(CloudStack、OpenStack、moby、Kubernetesなど)。それらの大部分に共通していることの1つは、複数のプログラミング言語(Java + Python + GoまたはPython + C ++ + Rubyなど)を使用していることです。複数のプログラミング言語が互いに通信するためにどのように作られているかを扱っているこの他の質問をすでに見てきました:2つの異なる言語を持つ2つの異なるプログラミングを相互作用させる方法は? 企業に複数のプログラミング言語の使用を促す要件を理解したいと思います。ソフトウェアアーキテクトまたはプロジェクトリーダーが「タスク1に言語Xを使用し、タスク2に言語Yを使用することを提案しています」と言う要件または要件のタイプは何ですか?同じ製品またはソフトウェアで複数のプログラミング言語が使用されている理由を理解できないようです。

4
飛行機ではどのオペレーティングシステムが使用され、どのプログラミング言語で開発されていますか?[閉まっている]
民間航空機(ボーイングやエアバスなど)で使用されているオペレーティングシステムが何かを知っている人がいるのだろうかと思っていました。 また、(推奨)リアルタイムプログラミング言語とは何ですか?私はエイダがボーイングで使用されていると聞いたので、私の質問は-なぜエイダですか?ボーイングがこの言語を選択しなければならなかった基準は何ですか?(ちょうどリフトオフでガベージコレクターが起動する場合、Javaは最適な選択肢ではないと思います)。

14
現代の主流のプログラミング言語でラムダ関数の人気が高まったきっかけは何ですか?
過去数年で、匿名関数(ラムダ関数)は非常に人気のある言語構成要素になり、ほぼすべての主要な/主流のプログラミング言語がそれらを導入するか、標準の次の改訂で導入する予定です。 しかし、匿名関数は、数学とコンピューターサイエンス(1936年頃に数学者のアロンゾ教会によって発明され、1958年からLispプログラミング言語で使用された、たとえばここを参照)で非常に古く、非常によく知られた概念です。 では、なぜ今日の主流のプログラミング言語(その多くは15年から20年前に生まれたもの)が、最初からラムダ関数をサポートし、後で導入しただけだったのでしょうか? そして、ここ数年で匿名機能が大々的に採用されたきっかけは何ですか?この現象を引き起こした特定のイベント、新しい要件、またはプログラミング手法はありますか? 重要な注意点 この質問の焦点は、現代のメインストリーム(したがって、いくつかの例外を除いて、機能しない)言語での匿名関数の導入です。また、匿名関数(ブロック)は関数型言語ではないSmalltalkに存在し、通常の名前付き関数はCやPascalなどの手続き型言語にも長い間存在していることに注意してください。 「機能的なパラダイムの採用とその利点」について話すことによって、あなたの答えを一般化しすぎないでください。これは問題のトピックではないからです。

14
プログラミング言語を本当にマスターするにはどうすればよいですか?
言語を学ぶには、本を購入し、例に従ってください。可能な場合はいつでも練習を試すことができます。しかし、私が本当に探しているのは、一度学んだ言語を習得する方法です。 今、私は経験が1つの主要な要因であることを知っていますが、言語の内部を学ぶこと、基礎となる構造などはどうでしょうか。 この本を読んで、その本を読んで、このゲームとそのゲームを作るという記事があります。しかし、私にとってこれは言語をマスターすることを意味するものではありません。どんなに難しくても、他の人のコードを読んで理解できるようにしたい。関数をいつ使用するか、いつ使用するかなどを理解する リストは延々と続く可能性がありますが、私はポイントを作ったと信じています。:) 最後に、必要に応じて、例としてCを使用しますが、Cを例として使用した場合に最適です。


5
抽象クラスが既にあるのに、なぜJava 8のインターフェイスにデフォルトおよび静的メソッドが追加されたのですか?
Java 8では、インターフェイスに実装メソッド、静的メソッド、いわゆる「デフォルト」メソッド(実装クラスがオーバーライドする必要はありません)を含めることができます。 私の(おそらく素朴な)見解では、このようなインターフェースに違反する必要はありませんでした。インターフェイスは常にあなたが満たさなければならない契約であり、これは非常にシンプルで純粋な概念です。今では、いくつかのものが混在しています。私の考えでは: 静的メソッドはインターフェイスに属しません。これらはユーティリティクラスに属します。 「デフォルト」メソッドはインターフェースでまったく許可されるべきではありません。この目的には常に抽象クラスを使用できます。 要するに: Java 8より前: 抽象クラスと通常クラスを使用して、静的メソッドとデフォルトメソッドを提供できます。インターフェイスの役割は明確です。 クラスを実装することにより、インターフェイス内のすべてのメソッドをオーバーライドする必要があります。 すべての実装を変更せずにインターフェイスに新しいメソッドを追加することはできませんが、これは実際には良いことです。 Java 8以降: インターフェースと抽象クラス(多重継承を除く)には実質的に違いはありません。実際、インターフェイスを使用して通常のクラスをエミュレートできます。 実装をプログラミングするとき、プログラマはデフォルトのメソッドをオーバーライドするのを忘れることがあります。 クラスが同じシグネチャを持つデフォルトメソッドを持つ2つ以上のインターフェイスを実装しようとすると、コンパイルエラーが発生します。 インターフェイスにデフォルトのメソッドを追加することにより、実装するすべてのクラスがこの動作を自動的に継承します。これらのクラスの一部は、その新しい機能を念頭に置いて設計されていない可能性があり、これにより問題が発生する可能性があります。たとえば、誰かが新しいデフォルトのメソッドdefault void foo()をinterface Ixに追加すると、同じシグネチャを持つプライベートメソッドをCx実装Ixしているクラスfooはコンパイルされません。 このような大きな変更の主な理由は何ですか?また、追加された新しいメリット(ある場合)は何ですか?


18
プログラミング言語にとって冗長性が悪いのはなぜですか?[閉まっている]
プログラミング言語の冗長性について文句を言う人がたくさんいます。プログラミング言語の冗長性が高いほど、理解するのが適切であることがわかります。冗長性はAPI、その特定の言語のより明確なsの作成も強化すると思います。 私が考えることができる唯一の不利な点は、より多くの入力ができることですが、ほとんどの人がすべての作業を行うIDEを使用しているということです。 それでは、冗長プログラミング言語の潜在的な欠点は何ですか?

17
(なぜ)新しいプログラミング言語を学ぶべきですか?[閉まっている]
私は、Java、C / C ++、JavaScript / jQueryに非常に精通しており、Objective-Cにはかなり優れています。私は言語とそれに対応するフレームワークも非常に生産的であり、エンタープライズレベルのシステム(および小規模なシステム)を十分に簡単に作成しながら、コードを「クリーン」で保守可能な状態に保ちます(はい、6年後に自分のコードを読むことができます)ヶ月:) プラットフォーム(iPhone、iPadなど)またはクライアント/実装組織によって義務付けられていない限り、「なぜ」新しいプログラミング言語を学ぶ必要があるのでしょうか。「楽しい」だけですか?そして、私がそれで価値のあることをするつもりがないなら、その楽しみで何をしますか? 私の仲間の多くは、「次の新しいもの/言語」を学ぶために飛び込む準備ができており、通常はPython、Ruby、またはPHP(人気のあるものをいくつか挙げています)です。今、言語自体を知っているだけでは無駄です。また、フレームワークを理解し、それらの使用法/ API、および「適切な実装慣行」などを学ぶ必要があります。 それでは、「経済的」な意味から、新しいプログラミング言語を学ぶことに何か利点はありますか?言語が迅速かつ汚い方法で習得された場合、おそらく迅速かつ汚いプロトタイピング/実装にも使用されますが、それは時間/労力の正当な投資とは思えません。 だから、なぜ私(またはそのことについて誰でも)が「楽しいから試してみよう」以外の新しいプログラミング言語を学ぶべきなのか-長い目で見れば時間の投資がそれだけの価値がない場合は?

3
プログラミング言語、特にCでは、中括弧ではなく中括弧を使用するのはなぜですか?
「Cスタイル言語」の定義は、実際には「中括弧({})を使用する」まで簡略化できます。なぜその特定の文字を使用するのですか(そして[]、少なくともUSキーボードではShiftキーを必要としないなど、より合理的な文字を使用しないのはなぜですか)。 これらの中括弧からプログラマの生産性に実際の利点はありますか、または新しい言語設計者が代替手段(つまり、Pythonの背後にいる人)を探す必要がありますか? ウィキペディアは、C が前述のブレースを使用しているが、その理由を説明していないと言っています。Cベースのプログラミング言語のリストに関するウィキペディアの記事の声明は、この構文要素がやや特別であることを示唆しています。 大まかに言って、Cファミリー言語は、Cに似たブロック構文を使用する言語です(ブロックの開始と終了のための中括弧を含む)...

14
Cプログラミング言語はまだ使用されていますか?
私はC#プログラマーであり、開発の大部分はWebサイトといくつかのWindowsアプリケーション用です。Cに関する限り、必要がないので、私は長い間使用していません。友達がC#の学習を手伝っている間に、仕事をテストするためにCを学ぶ必要があると言ったのは驚きでした。 私は、Cで開発が行われている場合にのみ、誰かがテストのためにCを学習するだろうと考えました。私の知識から、COMおよびハードウェア設計に関連するすべての開発もC ++で行われます。したがって、C ++を使用する必要がある場合、Cの学習は意味がありません。私も歴史的な重要性を信じていないので、なぜCを学ぶのに時間とお金を浪費するのですか? Cは、新しいソフトウェア開発やその他の何かでまだ使用されていますか?

16
ユーザー定義の演算子が一般的ではないのはなぜですか?
関数型言語で見落としている機能の1つは、演算子が単なる関数であるという考えです。したがって、カスタム演算子を追加することは、関数を追加するのと同じくらい簡単です。多くの手続き言語では演算子のオーバーロードが許可されているため、ある意味では演算子は関数のままです(これは、テンプレートパラメーターの文字列として演算子が渡されるDで非常に当てはまります)。 演算子のオーバーロードが許可されている場合、カスタム演算子を追加するのは簡単なことが多いようです。私はこのブログ投稿を見つけました。これは、カスタム演算子が優先順位規則のために中置記法でうまく機能しないと主張していますが、著者はこの問題にいくつかの解決策を提供します。 私は周りを見回しましたが、その言語のカスタム演算子をサポートする手続き言語を見つけることができませんでした。ハック(C ++のマクロなど)がありますが、それは言語サポートとほとんど同じではありません。 この機能の実装は非常に簡単なので、なぜもっと一般的ではないのですか? itいコードにつながる可能性があることは理解していますが、それによって、過去に言語設計者が簡単に悪用される可能性のある便利な機能(マクロ、三項演算子、安全でないポインター)を追加することを妨げませんでした。 実際の使用例: 欠落している演算子を実装します(たとえば、Luaにはビット演算子がありません) Dの模倣~(配列連結) DSL |Unixパイプスタイルの構文シュガーとして使用(コルーチン/ジェネレーターを使用) 私はまた、言語に興味があるんカスタム演算子を許可するが、私は、より興味なぜそれが除外されています。スクリプト言語をフォークしてユーザー定義の演算子を追加することを考えましたが、どこにも表示されていないことに気付いたときに自分自身を止めました。したがって、言語デザイナーが私よりも賢いのは私がそれを許可していないことにはおそらく十分な理由があります。

30
英語圏以外の国の人々は英語でコーディングしていますか?[閉まっている]
私はそれが(同僚によって)どこから来たとしても誰もが「英語でコードを書く」と言ったと聞きました。信じることは難しいと思いますが、ほとんどのプログラミング言語でサポートされている文字セットが比較的狭い場合は驚かないでしょう。 英語が第一言語ではない国で働いたことはありますか? もしそうなら、彼らのコードはどのように見えましたか?

15
OOPの時代にCがこれほど人気が​​あるのはなぜですか?[閉まっている]
私はCとC ++の両方で多くのコードを記述しましたが、CがJavaにやや遅れて2番目に人気のある言語になるとは思いませんでした。 TIOBEプログラミングコミュニティインデックス 私は、OOPのこの時代に、Cがまだとても人気がある理由について興味がありますか?人気のあるプログラミング言語の上位5つのうち4つは、「現代の」オブジェクト指向対応言語です。 さて、CでOOPをある程度使用できることに同意しますが、それはある種の苦痛で洗練されていません(少なくともC ++とはかなり違います)。それでは、何がCをそんなに人気にしているのでしょうか?効率ですか?低レベルである; すでに存在するライブラリの大部分または他の何か?

8
ソースコードを持っていないプログラムの出力を変更する方法
私たちの会社には、数学的な計算を行う小さなプログラム(.exe 500Kbサイズ)があり、最終的にはワークフローを続行するために使用するExcelスプレッドシートに結果を出力します。 列、間隔の形式を変更し、ExcelスプレッドシートでVBAロジックなどを追加しますが、このプログラムではこのパラメーターを構成できないため、変更する唯一の方法は.exeを分解/リバースエンジニアリングすることです プログラミングされた言語が誰にもわからないのは、私たちが知っている唯一のことです: 20年以上前に開発 10年前に退職した開発者 GUIアプリケーション スタンドアロンで実行 サイズ500Kb この種の問題に対処するためのオプションはありますか?リバースエンジニアリングが唯一のオプションですか、それともより良いアプローチがありますか?

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