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

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

23
良いプログラミングメタファーとは何ですか?[閉まっている]
私は非プログラマーにプログラミングとは何かを説明することに言及しています。この質問を作成する前に、必ず同様の質問を検索しましたが、見つけた少数の質問は質問をかわすように見えたので、メタファーやアナロジーを具体的に見てみたいと思います。個人的には、比phorや類推を使用することで、技術的な何かを誰かに説明する方が簡単だと感じています。 私がこれに興味を持っている理由は、多くの人が毎日プログラマーの仕事に出くわしているからです。しかし、平均的な人にプログラマーが何であるかを尋ねると、彼らは本当に知りません。これは、誤解の特定の状況につながります(例:「[...]しかし、私はあなたがコンピューターが得意だと思った!」) 私は本当に最高のものを見つけたいです。私のキャリアの選択について誰かに簡単に説明できるようにしたいと思います。もちろん、少なくとも一般的なアイデア。 私は個人的にはしっかりしたものを持っていませんが、私はそれについて長い間考えており、通常はコンピューターが理解する言語を知っているため、コンピューターに何をすべきかを伝えることができる「言語」のメタファーに引き寄せられました私たちの問題を解決するために、それらを「教える」。 例えば: 代替現実では、人工知能を備えたヒューマノイドロボットが存在し、一部の人々は英語のバリエーションである共通言語を介してそれらと通信できることを想像してください。ロボットと通信できるこれらの人々は、特定の問題の解決方法や、家事のような特定のタスクを実行する方法を教えることができます。 まあ、そのようなロボットはまだ存在していませんが、私たちの時代のプログラマーはそれらの人々と似ていますが、ロボットと通信する代わりに、コンピューターと通信します。プログラマーは、この「共通言語」を使用して作成したソフトウェアを使用して、特定のタスクの実行方法や特定の問題の解決方法をコンピューターに「教え」ます。 プログラマーとこの「共通言語」は、電子メール、ウェブサイト、ビデオゲーム、ワードプロセッサ、スマートフォン(簡単に言うと)、および私たちが日常的に使用する他の多くのものを提供します。 私はプログラミングを王座などに置くつもりはありません。それは私が思いつく限りの最高の比metaです。 誰かがこの問題に何らかの問題を見つけると確信しています。おそらく少し不自然かもしれませんが、それがこの質問をしている理由です。


6
型推論のトレードオフは何ですか?
すべての新しいプログラミング言語、または少なくとも一般的になったプログラミング言語は型推論を使用しているようです。Javascriptでさえ、さまざまな実装(Acscript、typescriptなど)を通じて型と型推論を取得しました。私には良さそうに見えますが、トレードオフがあるのか​​、Javaや古い良い言語に型推論がないのはなぜだと思いますか 型を指定せずにGoで変数を宣言すると(型なしのvarまたは:=構文を使用)、変数の型は右側の値から推測されます。 Dを使用すると、動的言語のように、型を重複して指定せずに大きなコードフラグメントを作成できます。一方、静的推論は型と他のコードプロパティを推測し、静的な世界と動的な世界の両方の長所を提供します。 Rustの型推論エンジンは非常にスマートです。これは、初期化中にr値のタイプを見る以上のことを行います。また、変数のタイプを推測するために後で変数がどのように使用されるかについても調べます。 Swiftは型推論を使用して適切な型を算出します。型推論により、コンパイラは、指定した値を調べるだけで、コードをコンパイルするときに特定の式の型を自動的に推測できます。

9
ほとんどの「よく知られた」命令型/オブジェクト指向言語が、「何もない」値を表すことができる型への未チェックのアクセスを許可するのはなぜですか?
null(たとえば)の代わりに持つことの(不)利便性について読んでいMaybeます。この記事を読んだ後、私はそれを使用する方がはるかに良いと確信していますMaybe(または同様のもの)。しかし、すべての「よく知られた」命令型またはオブジェクト指向プログラミング言語がまだ使用しておりnull(「何もしない」値を表すことができる型への未チェックのアクセスを許可します)、そしてMaybeほとんどが関数型プログラミング言語で使用されていることに驚いています。 例として、次のC#コードを見てください。 void doSomething(string username) { // Check that username is not null // Do something } ここで何か悪臭がします...引数がnullかどうかを確認する必要があるのはなぜですか?すべての変数にオブジェクトへの参照が含まれると仮定すべきではありませんか?ご覧のとおり、問題は、定義上、ほとんどすべての変数にnull参照が含まれている可能性があることです。どの変数が「null可能」で、どれがそうでないかを判断できたらどうでしょうか。これにより、デバッグと「NullReferenceException」の検索中に多くの労力を節約できます。デフォルトでは、null参照を含むことができる型はないことを想像してください。その代わりに、本当に必要な場合にのみ、変数にnull参照を含めることができると明示的に述べます。それが多分背後にある考え方です。場合によっては失敗する関数(ゼロ除算など)がある場合は、Maybe<int>、結果がintである可能性があることを明示的に示しますが、何もありません!これは、nullではなくMaybeを好む理由の1つです。他の例に興味がある場合は、この記事を読むことをお勧めします。 事実は、ほとんどの型をデフォルトでNULL可能にするという欠点にもかかわらず、ほとんどのオブジェクト指向プログラミング言語は実際にそれをNULL可能にします。それが私が疑問に思う理由です: nullプログラミング言語ではなく、どのような引数を実装する必要がありMaybeますか?理由はありますか、それとも単に「歴史的な荷物」ですか? この質問に答える前に、nullとMaybeの違いを理解してください。

16
言語構文について書いています。メソッド名の中にパラメータが配置される言語はありますか?
JavaScriptで: function getTopCustomersOfTheYear(howManyCustomers, whichYear) { // Some code here. } getTopCustomersOfTheYear(50, 2010); C#の場合: public List<Customer> GetTopCustomersOfTheYear(int howManyCustomers, int whichYear) { // Some code here } List<Customer> customers = GetTopCustomersOfTheYear(50, 2010); PHPの場合: public function getTopCustomersOfTheYear($howManyCustomers, $whichYear) { // Some code here } $customers = getTopCustomersOfTheYear(50, 2010); この構文をサポートする言語はありますか? function GetTop(x)CustomersOfTheYear(y) { // …

6
Googleでのプログラミング言語の使用[終了]
GoogleはPython、Java、C ++を使用していると聞きました。しかし、私が知らないのは、これらのプログラミング言語のそれぞれがどのように使用されているかです。Googleで使用されているPython、Java、C ++は何ですか。1つの言語で十分なのに、なぜ最大3つのプログラミング言語を使用したのでしょうか。誰か知っていますか?

30
プログラミング言語で直面した最大の設計上の欠陥は何ですか?[閉まっている]
すべてのプログラミング言語に設計上の欠陥があるのは、他のほとんどの(すべて?)それはさておき、プログラミング言語のどの設計上の欠陥がプログラマとしてのあなたの歴史を通してあなたを最も悩ませましたか? 特定の目的のために設計されていないという理由だけで言語が「悪い」場合は、設計上の欠陥ではなく、設計の機能なので、そのような煩わしさを挙げないでください。言語がその設計目的に適していない場合、それはもちろん設計の欠陥です。実装固有のことや内部的なことも考慮されません。


5
解釈とコンパイル:有用な区別?
ここでは、インタプリタ言語とコンパイル言語の実装について多くの質問があります。区別が実際に意味をなすかどうか疑問に思っています。(実際には、質問は通常言語に関するものですが、それらの言語の最も一般的な実装について本当に考えています)。 現在、厳密に解釈される実装はほとんどありません。つまり、コードを一度に1行ずつ解析して実行する人はほとんどいません。さらに、マシンコードにコンパイルする実装も一般的ではなくなりました。ますます、コンパイラはある種の仮想マシンをターゲットにしています。 実際、ほとんどの実装は同じ基本戦略に集中しています。コンパイラーは、JITを介してネイティブコードに解釈またはコンパイルされるバイトコードを生成します。コンパイルと解釈の伝統的なアイデアのミックスです。 したがって、私は尋ねます:最近、解釈された実装とコンパイルされた実装の間に便利な区別はありますか?

4
プログラミング言語は関数をどのように定義しますか?
プログラミング言語は、関数/メソッドをどのように定義して保存しますか?Rubyでインタープリター型プログラミング言語を作成しています。関数宣言の実装方法を見つけようとしています。 私の最初のアイデアは、宣言の内容をマップに保存することです。たとえば、次のようなことをした場合 def a() { callSomething(); x += 5; } 次に、マップにエントリを追加します。 { 'a' => 'callSomething(); x += 5;' } これの問題はparse、文字列に対してメソッドを呼び出す必要があるため再帰的になり、parse遭遇したときに再度呼び出す必要がありdoSomething、最終的にスタックスペースが不足することです。 では、インタープリター言語はこれをどのように処理しますか?

15
2つのプログラミング言語を行き来するのは賢明ですか?[閉まっている]
私は2年近く、かなり多くのPHPを書いてきました。現在、.NET(主にc#)開発を行っています。ただし、時々戻ってphpを実行します。 私の主な質問は、これを続けるのが賢明なのか、C#での開発を続けるべきなのか、ということです。これは長期的に私に害を及ぼすでしょうか(私の主な目標はすべての取引のジャックになることではないことに注意してください)、またはそれを行うことは良い習慣ですか?

13
学習する「間違った」言語を選択することに多くの恐れがあるように見えるのはなぜですか?[閉まっている]
おそらく私だけかもしれませんが、現在のCS学生として、このサイトや他の場所で、「xに使用する言語は?」だけでなく、すでに多くの質問に出くわしました。しかし、「誰もがまだ言語Yを使用していますか?」私の最初のCSクラスはSchemeで教えられましたが、それが間違っていなければ、(少なくともJava、PHP、Pythonなどの言語と比較して)広く使用されていません。私のクラスメートの多くは、二度と使用する必要のない言語を習得しなければならないという考えに口を閉ざしましたが、あまり人気のない言語を学ぶことに対するこの恐怖の多くがどこから来たのかはよくわかりません。いいえ、取得した仕事でSchemeを使用することはできませんが、Schemeを使用することを学んだことを確かに後悔していません(ただし、非常に初心者であり、その1学期ではあまり詳しくありません)。今学期は検索エンジンクラスを受講していますが、これはPerlで行われ、再びクラスメートが言語の選択について不平を言っているのを見ています。好きな言語を持っていることや他の言語を嫌うことは理解できますが、そもそもそれを習得するのに苦労する人がいるのはなぜですか?「間違った」言語を本当に学べますか?SchemeやHaskellなどの良いメンタルエクササイズを他に何も学んでいないのに、少なくとも問題を解決するさまざまな方法に触れるのに役立つのではないでしょうか。

13
プログラミング言語が同期/非同期の問題を自動的に管理しないのはなぜですか?
私はこれについて多くのリソースを見つけていません:非同期のコードを同期的な方法で書くことができるのか、それとも良い考えかと思っていました。 たとえば、データベースに保存されているユーザーの数を取得するJavaScriptコードを次に示します(非同期操作)。 getNbOfUsers(function (nbOfUsers) { console.log(nbOfUsers) }); 次のようなものを書くことができたらうれしいです: const nbOfUsers = getNbOfUsers(); console.log(getNbOfUsers); そのため、コンパイラは自動的に応答を待機してから実行しconsole.logます。結果を他の場所で使用する前に、非同期操作が完了するまで常に待機します。コールバックpromise、async / awaitなどを使用することはあまりなく、操作の結果がすぐに利用可能かどうかを心配する必要はありません。 nbOfUserstry / catch、またはSwift言語のようなオプションのようなものを使用して、エラーを管理できます(整数またはエラーを取得しましたか?)。 出来ますか?それはひどいアイデア/ユートピアかもしれません...私は知りません。

4
正規表現はプログラミング言語ですか?
学術的な意味では、正規表現はプログラミング言語として認められますか? 私の好奇心のための動機は、SOの質問尋ね、私はただ見「Xを行うとregexができますか?」そして、それらを使用する可能性のある解決策について一般的な意味で何が言えるのだろうかと思いました。 私は基本的に「正規表現チューリングは完了していますか?」

14
プログラミング言語を組み合わせることは可能ですか?
私はしばらくプログラミングをしており、いくつかの初歩的なプログラムを書きました。そして、学び続けたいと思っています。次は何を学べばいいのか分からないところまで来たので、私自身の好奇心について質問したいと思います。 簡単に言えば、質問は、複数のプログラミング言語を1つの結果に結合できるかどうかです。たとえば、このコードは可能ですか? <html> cout << "Hello world!"; </html> または import java.util.Scanner; cout << "Insert a number from 1 to 10"; Scanner n = new Scanner(System.in); System.out.println("The value you entered was" +n.newLine()); これはばかげた質問のように感じますが、それが可能かどうかわからないので、私はそれを尋ねています。で、この私の上記の例が不可能な場合は、質問私は、彼はhtmlコードにPythonコードを使用している気づき、彼が何をしましたか?

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