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

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

5
OOP言語およびタイプのクラス
プログラミング言語理論では、型は値のセットです。たとえば、「int」型はすべての整数値のセットです。 OOP言語では、クラスはタイプですよね? クラスが複数のメンバーで定義されている場合、例えば class myclass{ int a; double b; } クラスについて話すとき、 「(a,b)どこaint型で、b二重である」、または 「{ (x,y)| xは任意のint、y任意のdoubleです}」? のインスタンスはmyclassどういう意味ですか? 「(a,b)どこaint型で、b二重である」、または メモリ空間を占有し、(必ずしもそうである必要はない、つまり空である可能性があります)を格納できるオブジェクト(x,y)。ここxで、int yはあり、doubleはありますか?

4
科学的プログラミング言語はなぜ奇妙なのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 科学と工学での使用を意図したプログラミング言語は、汎用言語と比較して一貫して奇妙なように思えます。私の頭の上のいくつかの例: Matlabでは、各関数を個別のファイルに配置する必要があります Rでは、他のほとんどすべての言語で=とは対照的に、<-は代入演算子です。 Matlab、R、Juliaなどはすべて1インデックスです Matlabはコメントに%を使用し、標準の#または//ではありません もちろん、これらの言語にはすべて、いくつかの設計機能があり、より自然な行列表記など、科学的アプリケーションで実際に使用しやすくなっています。それでも、これらすべてが不可解にすべての奇妙な選択を行いますが、これは何も簡単ではなく、言語設計者が他の言語の99%が行うことを選択した場合、簡単に回避できたはずです。ベンダーロックインの理由は何ですか?幅広いソフトウェア開発コミュニティとの連絡がないのですか?他に何か? 私はこのスレッドを読んで、説明が満足できるものであるとは思いませんでした。Rが科学的言語として設計されたからといって、規則を完全に無視し、=の代わりに<-を使用しなければならなかったわけではありません。

3
プログラミング言語の設計者がモジュロ演算の結果の符号を決定するときに使用される理論的根拠は何ですか?
通って行く剰余演算(の違いを探索しながら、私が入った大通りremとmod)私が出くわしました: 数学では、剰余演算の結果はユークリッド除算の残りの部分です。ただし、他の規則も可能です。コンピュータと計算機には、数値を保存および表現するさまざまな方法があります。したがって、それらのモジュロ演算の定義は、プログラミング言語や基盤となるハードウェアに依存します。 質問: 通って行くユークリッド除算私は、この操作のremainnderは常に正(または0)であることがわかりました。基盤となるコンピューターハードウェアの制限によって、プログラミング言語の設計者は数学とは異なるものになりますか? すべてのプログラミング言語には、モジュロ演算の結果に応じて符号が付けられる、定義済みまたは未定義のルールがあります。これらのルールを作成する際に採用される根拠は何ですか?基盤となるハードウェアが問題である場合、プログラミング言語とは関係なく、それに応じてルールを変更しないでください。

1
数学はHaskellの型システムの背後にある理論を理解する必要がありますか?
最近、私はハスケルに深く興味を持っています。 新しい概念(forallキーワードやSTモナドなど)とHaskellの型システム全般を学習しようとしている間、私は絶えずカテゴリー理論とラムダ計算の概念に出くわしました。だから、私は思う: Haskellの型システムを十分に理解するには、数学の他のどの分野が重要ですか? これらの数学の厳密な研究を見逃して、代わりに特定の関連する概念に焦点を当てることはできますか?(例えば、ラムダ計算における数量詞。)もしそうなら、どの概念が不可欠ですか? タイプとプログラミング言語をすぐに取り上げたいと思っていますが、適切と思われる代替の参考資料を提案してください。

1
さまざまなプログラミング言語のほとんどの機能と使用法を示す一種のプログラムはありますか?
印刷やフォントのベンチマークとして使用されている「怠惰な犬を飛び越える茶色のキツネ」は誰でも知っています。 プログラミング言語にも同様の「怠惰な犬」があるのだろうか。 非常に多くの異なるプログラミング言語があり、あらゆる種類の機能と構文が類似または異なっています。問題は、異なる言語を同時に使用するとユーザーが混乱することです。 異なる言語の間には多くの違いがありますが、何か共通のもの、つまりタスクやルーチンがあるはずです。同じタスクを異なる言語で実装し、最も頻繁に使用される機能をカバーしようとすると、言語の学習または比較がはるかに簡単になります。 この種のプログラムは、チュートリアルのように非常に長くなる必要はありませんが、一般的で十分に抽象的である必要があります。存在しますか?

6
インターフェイスと抽象メソッドのみを持つ抽象クラスの間に違いはありますか?
抽象クラスがあり、このクラスに抽象メソッドのみがあるとします。この抽象クラスは、同じメソッドのみを持つインターフェースとは異なりますか? 私が知りたいのは、抽象的メンバーのみを持つ抽象クラスと同等のインターフェイスの間に、哲学的、客観的、および基礎となるプログラミング言語の実装に違いがあるかどうかです。


8
過去のIfステートメント配列、ループ…さて、何ですか
私がこの壁にぶつかったとき、私は1年以上前にプログラミングをあきらめました。基本的なAndroidアプリケーションを作成したいので、このトピックを再考します。しかし、私の限られた知識では不十分だと思います。 これが私の問題です。 私はいくつかの本を読んだり、C#/ Javaでビデオチュートリアルを見たり、例に従って、本を完成させたりしました。結局、彼らはいつも次に何をすべきかについて私を困惑させているようです。 つまり、基本的な "hello world"アプリケーションからifや配列までを教えてくれるので、コーディングの世界に出て、何かを作成する方法を知っているように思われます。 ここで何か不足していますか?これらはすべてのプログラムの構成要素であることは知っていますが、私が読んだ本は次に何をすべきかを実際に示すことはありません。 私が仮定する簡単な答えは「コーディングを開始する」ことですが、どこに?たとえば、「He​​ad First Java」を読みました。その部分まで、彼らはあなたがあなたが学んだすべてを取り、犬のレースゲームを作成することをあなたに言っていました... 「チートしないで、提供されたソースコードを見てみてください。これでこれを実行できるようになるはずです」_正確な引用ではありませんが、基本的にはそうです...... 30分前は、配列を作成する方法を説明しているだけでしたが、理論なしに、実際に動作するゲームを作成するつもりですか? 私がこれを尋ねる理由は、これが少なくともコーディングを開始するために知っているはずのすべてであると恐れているからです。 アドバイスありがとうございます


5
型に算術を設定できるプログラミング言語はありますか?
好奇心から、型に算術を設定して新しい型を作成できる言語はありますか?何かのようなもの: interface A { void a(); void b(); } interface B { void b(); void c(); } interface C = A & B; // has b() interface D = A | B; // has a(), b() and c() interface E = (A & B) ^ B; // has c() 一部の言語ではこれらのアイデアを表現できることを知っています(つまり、JavaはList<Comparable …

3
副作用のあるクロージャーは「機能的なスタイル」と見なされますか?
最新のプログラミング言語の多くは、クロージャ、つまりコード(ブロックまたは関数)の概念をサポートしています。 値として扱うことができるため、変数に格納し、コードのさまざまな部分に渡し、プログラムの一部で定義し、同じプログラムのまったく異なる部分で呼び出すことができます。 変数が定義されているコンテキストから変数をキャプチャし、後で呼び出されたときに(おそらくまったく異なるコンテキストで)変数にアクセスできます。 以下は、Scalaで記述されたクロージャーの例です。 def filterList(xs: List[Int], lowerBound: Int): List[Int] = xs.filter(x => x >= lowerBound) 関数リテラルx => x >= lowerBoundには、同じ名前のlowerBound関数の引数によって閉じられている(バインドされている)自由変数が含まれていますfilterList。クロージャはライブラリメソッドに渡さfilterれ、通常の関数として繰り返し呼び出すことができます。 私はこのサイトで多くの質問と回答を読んでいますが、私が理解している限り、閉鎖という用語は関数型プログラミングと関数型プログラミングスタイルに自動的に関連付けられることがよくあります。 ウィキペディアの関数プログラミングの定義は次のとおりです。 コンピュータサイエンスでは、関数型プログラミングは、計算を数学関数の評価として扱い、状態や変更可能なデータを回避するプログラミングパラダイムです。状態の変化を強調する命令型プログラミングスタイルとは対照的に、関数の適用を強調します。 そしてさらに [...]関数コードでは、関数の出力値は関数に入力された引数にのみ依存します[...]。副作用をなくすことで、プログラムの動作の理解と予測がはるかに容易になります。これは、関数型プログラミングを開発するための主要な動機の1つです。 一方、プログラミング言語によって提供される多くのクロージャー構成では、クロージャーが非ローカル変数をキャプチャーし、クロージャーが呼び出されたときにそれらを変更できるため、それらが定義された環境に副作用が生じます。 この場合、クロージャは関数型プログラミングの最初のアイデアを実装します(関数は他の値のように移動できるファーストクラスのエンティティです)が、2番目のアイデアは無視します(副作用を回避します)。 副作用のあるこのクロージャの使用は、関数型スタイルと見なされますか、それとも、関数型と非関数型プログラミングスタイルの両方に使用できるより一般的な構造と見なされますか?このトピックに関する文献はありますか? 重要な注意点 副作用の有用性や副作用のあるクロージャーの有用性については質問していません。また、副作用の有無にかかわらず、クロージャーの長所/短所についての議論には興味がありません。 このようなクロージャの使用が関数型プログラミングの支持者によって依然として関数型スタイルと見なされているかどうか、または逆に関数型スタイルを使用する場合にそれらの使用が推奨されていないかどうかを知りたいだけです。

4
TDDを簡単に実行できるようにゼロから設計された新しい言語はどのように見えますか
いくつかの最も一般的な言語(Java、C#、Javaなど)では、コードを完全にTDDしたいときに、その言語と対立しているように見えることがあります。 たとえば、JavaとC#では、クラスの依存関係をモックする必要があり、ほとんどのモックフレームワークでは、クラスではなくインターフェイスをモックすることをお勧めします。これは、多くの場合、単一の実装で多くのインターフェースがあることを意味します(この影響は、TDDにより多数の小さいクラスを作成するよう強制されるため、さらに顕著になります)。具象クラスを適切にモックできるようにするソリューションは、コンパイラーを変更したり、クラスローダーをオーバーライドしたりするなど、かなり厄介です。 それで、TDDに最適になるようにゼロから設計された言語はどのようになりますか?(インターフェイスをコンストラクタに渡すのではなく)依存関係を記述する何らかの言語レベルの方法で、明示的に行うことなくクラスのインターフェイスを分離できるのでしょうか?

8
なぜほとんどの求人が一般的な開発者ではなく、<language here>開発者向けであるのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 理想的な世界では: Patrick McKenzieは、優れた記事「プログラマーをプログラマーと呼ばないこと、およびその他のキャリアアドバイス」で、とりわけ、その言語は重要ではないと説明しています。 開発者は、一般的に問題を解決する人です。開発者は、特定の言語でコードを書く人ではありません。 企業はあなたが知っている言語を気にしません。特定の言語で書かれたプロジェクトの開発者を雇う必要があり、経験豊富であるがこの言語でコード行を書いたことがない候補者がいる場合でも、彼は採用されます。 開発者として、および他の開発者を雇わなければならなかった人としての私の経験によれば、観察は非常に似ています: JavaでのN年の経験またはC#でのN年の経験は重要ではありません。重要なのは、候補者が問題を解決する方法を知っている、スパゲッティコードとよく考えられたアーキテクチャを備えたクリーンなコードの違いを知っているなどです。 以前使っていた言語は気にしません。C#プロジェクトの場合は、C#だけを知っていて、それをよく知らない初心者ではなく、Java、Python、Ruby on Railsのコードを書くことに人生を費やしたプロの開発者を雇います。 1つの言語を使用して得た知識と経験は、ほとんどの場合、他の言語で再利用できます。 Ruby on RailsをWeb開発に使用し、残りのキャリアをOracleを使用したJavaデスクトップアプリケーションの作成に費やした経験豊富な開発者は、Microsoft SQL Serverを使用するASP.NET MVCプロジェクトに完全に適合します。この人は、この仕事に必要なすべてのことをすでに知っているので、いくつかの特定のものと構文の違いは別です。 一方、ASP.NET MVCの小さなWebサイトをいくつか実行しただけの人は、MVCアーキテクチャを完全に理解していない可能性があり、SQLプロファイリングとは何かを知っている可能性があり、その他の必須事項が不足している可能性があるため、まったく適合しません。知識。 私が以前にCodeIgniterを使用したことがないという理由だけで、CodeIgniterを使用するPHP Webサイトの小さな問題を修正できないと言わないでください。 実際には: 実際には、フリーランスの仕事を検索したり、一般的な求人を見つけたりすると、それらは言語固有のものです。 Magentoで2年の経験を持つPHP開発者を探す人もいます。他のユーザーは、VB.NETの経験が3年以上ある人を検索します。6年間C#の開発を行ったことを述べた履歴書を送っても、VB.NETに言及していなければ、彼らは気にしません。答える。Firebirdの経験を持つ人を求めた場合、彼らはOracleでの10年の経験について聞いてくれません。 理論と、パトリックマッケンジーと私が常識であると説明していること、そして求人の実際の世界の間に、なぜそのような違いがあるのでしょうか。

3
.NETモジュールがモジュールファイル名を名前空間から分離するのはなぜですか?
Schemeプログラミング言語(R6RS標準)の実装では、次のようにモジュールをインポートできます。 (import (abc def xyz)) システムは、ファイルを検索しようとするあなたのスキームモジュールを維持するいくつかのディレクトリです。モジュールのソースコードであり、必要に応じてオンザフライでコンパイルされます。$DIR/abc/def/xyz.sls$DIRxyz.sls Ruby、Python、およびPerlモジュールシステムは、この点で似ています。 一方、C#はもう少し複雑です。 まず、プロジェクトごとに参照する必要があるdllファイルがあります。それぞれを明示的に参照する必要があります。これは言うよりも複雑で、ディレクトリにdllファイルをドロップし、C#に名前でピックアップさせます。 次に、dllのファイル名と、dllによって提供される名前空間との間に1対1の名前の対応はありません。この柔軟性は高く評価できますが、手に負えなくなる可能性もあります。 これを具体的にするために、私がこれを言うときusing abc.def.xyz;、C#がC#がabc/def/xyz.dll参照することを知っている(プロジェクトごとに構成可能)ディレクトリでファイルを見つけようとするとよいでしょう。 Ruby、Python、Perl、Schemeのモジュール処理方法の方がエレガントだと思います。新興言語はより単純な設計で行く傾向があるようです。 .NET / C#の世界が、このようにして、間接レベルをさらに上げているのはなぜですか?

7
関数型プログラミングの実際の実装?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 私は、それぞれが非常に得意とする分野を理解するために、さまざまな種類の言語に精通しようとしています。これまでのところ、C-手続き型言語、C ++とjava-静的型付きオブジェクト指向言語、そしてgroovy-動的型付きオブジェクト指向言語について触れてきました。 すべてのプログラミング言語はおそらくニーズに答えるために始められています。そして、私はすべての言語が少なくとも1つの点で非常に優れていると思います。そのため、特定の領域または分野で標準になります。Cと同様に、C ++はブラウザーやゲーム開発などの分野で標準になっています。簡単なスクリプト機能を備えたLinuxの世界ではPython、エンタープライズの世界ではJavaなど。 今、私はClojureやLispのような関数型プログラミング言語を学びたいと思っています。では、実際のシナリオで関数型プログラミング言語はどこに使用されているのでしょうか?アプリケーションやUIの開発にClojureやLispを使用することはないと思います。では、関数型プログラミングの実装について簡単に理解するために、基本的なチュートリアルと学習リソースを確認した後、どのようなプロジェクトに没頭すべきでしょうか?また、clojureのように、特定の1つの言語を強くお勧めしますか?

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