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

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

4
bashでデフォルトで式を評価しないためのプログラミング言語の概念は何ですか?
Bashでは、変数に格納された整数値を増やすには、算術展開を明示的に使用する必要があります。 i=1 i=$((i+1)) さもないと i=1 i=i+1 式を評価しませんi+1が、式を文字列として変数に割り当てます。 これは、式がデフォルトで評価される他のプログラミング言語と比較すると非常に不自然です。 プログラミング言語の設計または概念で、bashのそのような機能の概念または用語はありますか? 式を評価せず、デフォルトで文字列として扱うことの意味は何ですか? この機能は、遅延評価などの評価のタイミングに関連していますか? ありがとう。

4
プログラミング言語でゼロから数えることの起源は何ですか?
これは私が長い間疑問に思っていた(そして尋ねられた)質問です。 (ほとんど?すべて?)プログラミング言語では、配列、文​​字列などのインデックスはゼロから始まります。多くの言語で採用され、時間が経つにつれて慣例になったことを認識していますが、だれでもこの起源を指摘できますか? おそらく、それはすべてバイナリに根ざしていることに関係しているのではないかと思いました。しかし、私は10進法での必要性を引き継ぐという考えがわかりません-なぜインデックスを1から始めないのですか? ゼロからインデックスを開始する決定が説明されている可能性があるプログラミング言語の歴史的な知識を持っている人はいますか? ありがとうございました! 編集:ダイクストラの文章は、数学的な観点からさらに役立ちますが、すべての言語がゼロインデックス化されているわけではないことを彼は指摘しました。WBTの説明は、なぜメモリアドレスに基づいてゼロから始めるのかについても理にかなっています。(一部の言語は、配列操作に基づいてわずかに異なるインデックス付けを処理することを知っています。) 私は必ずしも理由を探る必要はありません(理解を深めるのに役立つので非常に感謝しています)が、いつこれが規則になったのか、および/または特定の言語にたどり着くことができるかどうかという線に沿って探します。 したがって、たとえば、K&RのCでは、配列のインデックスについて説明するとき、KまたはRは「配列の添え字は常にCでゼロから始まる...」(p。22)と説明し、後で文字を処理する関数について説明します。配列、「...より有用な設計は、行の長さ、またはファイルの終わりが検出された場合はゼロを返すことです。ゼロは、有効な行の長さになることはないため、許容できるファイルの終わりを返します。」(p.127) K&Rに基づいて、私は次のように収集します。a)規則は他の場所から採用されているため、Cはゼロインデックスの背後にあるインスピレーションではありません。b)2番目の例に基づいて使用する理由はもっと深い可能性があります。私はK&Rがその明確な散文で非常に広く評価されていることを知っています。それが、これを含めるもう1つの理由です。別の文書化された言語がゼロインデックスの背後にある理由を説明するために私が期待したことの例を示すためです。 私はWBTとbtillyの両方が同等に良い理由を提供していると思います。設計の決定を文書化した古い(Cより前の)言語を知っている人はいるかもしれません。同時に、そのような情報が存在しない可能性があることも認識しています。

5
Javaまたはその他のプログラミング言語での構成可能な同時実行性
SoftwareとConcurrency Revolution(htmlバージョン)という名前の並行性に関する研究論文を読んでいたとき。私は次の行に出くわしました: 残念ながら、ロックは機能しますが、最新のソフトウェア開発にとって深刻な問題を引き起こします。ロックの基本的な問題は、ロックが構成可能でないことです。正しいロックベースのコードを2つ取り、それらを組み合わせて、結果がまだ正しいことを知ることはできません。現代のソフトウェア開発は、ライブラリをより大きなプログラムに構成する機能に依存しているため、ロックベースのコンポーネントを、その実装を調査せずに構築することは困難です。 私は、Javaがどのように構成可能な同時実行性を保証するか、あるいはこのシナリオを生成する方法があるかさえ考えていました。 また、1つ以上のライブラリのデータをどのように同期させることができますか?プログラマーは自分のプログラムからそれを行うことができますか、それとも物事を同期させるのはライブラリ次第です。 Javaでない場合、ロックベースの同時実行を使用し、構成可能な同時実行を保証する他の言語はありますか? 以下も同じ論文から引用したものです。 同期メソッドには少なくとも3つの大きな問題があります。1つは、他のオブジェクト(Javaのベクターや.NETのSyncHashTableなど)の仮想関数を呼び出すメソッドを持つ型には適していません。ロックを保持したままサードパーティのコードを呼び出すと、デッドロックが発生する可能性があるためです。第2に、同期されたメソッドは、すべてのオブジェクトインスタンスのロックを取得および解放することにより、多くのロックを実行する可能性があります。第3に、プログラムがオブジェクトまたは異なるオブジェクトに対して複数のメソッドを呼び出すときに原子性を維持しないため、同期化されたメソッドはロックをほとんど実行できません。後者の簡単な例として、銀行振込を考えてみましょう。account1.Credit(amount); account2.Debit(amount)... 注:論文は2005年9月に発行されました

7
追加の書き込みなしにファイルに挿入できないのはなぜですか?(私は追加も上書きも意味しません)
これは、プログラミング言語に依存しない問題として発生します。 内容のファイルがあります aaabddd 私がC後ろに挿入したいときはb、私のコードを書き直す必要dddがあります aaabCddd Cこの位置に挿入できないのはなぜですか? Java、Pythonなどではできません。Linux、Windowsなどではできません。私は正しいですか? C追加の書き込みなしに単純に挿入できない理由がわかりません。なぜこれがそうであるのか誰かが説明してくれませんか?

1
Brainfuckの学習から実用的な用途はありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 Brainfuckは、1993年にUrbanMüllerによって作成された難解なプログラミング言語です。プログラマーを挑発して楽しませるように設計されており、実際の使用には適していません。 しかし、それでも存在し、いくつかの本当にクールなものがそれで書かれています。 私の質問は-Brainfuckの学習/練習はプログラミングの私の知識の深さを増すでしょうか?例:(高水準言語を使用する)高水準プログラマーは、低水準のメソッドと操作の理解を向上させますか?それとも、読み書きが難しいという意味で「コード」のように見えるコードを示すことによって、時間を費やして面白がっている冗談なのでしょうか。

3
オブジェクト指向プログラミング言語は「集合コンストラクター」をサポートしていますか?
いくつかのオブジェクトが互いに依存している場合があるため(たとえば、循環参照が含まれている場合)、したがって、構築後に新しいオブジェクトがいくつかの集合的制約を満たすことを確認する1つのアトミック操作の一部としてオブジェクトを作成すると便利だと最近検討しました。 これを行うには、複数のオブジェクトを作成できるコンストラクターを用意します。次に、プログラマーはすべてのコードを単一のコンストラクターに配置し、オブジェクトo 1、...、o nが作成されると、それらが必要なすべての制約を満たすようにします(たとえば、新しいオブジェクト間のすべてのリンクが既に配置されています)。私は そのような機能について聞いたことがなかったので、私は集合コンストラクターという用語を自分で作り上げましたが、この概念の受け入れられた名前がおそらく存在するかもしれません。 では、この種のコンストラクタをサポートするプログラミング言語はありますか?そうでない場合、アイデアはすでに試されていますか?

2
OOP言語のモジュールシステム
シンプルなオブジェクト指向プログラミング言語を設計しています。 これは、Javaと同様に、VMによって静的に型付け、コンパイル、および実行されます。 違いは、OOPをそれほど強調したくないということです。コード自体はほとんどC ++(ファイルスコープで許可されているクラス、関数、変数)に似ています。 必要なものの1つはモジュールシステムです。私は以下を理解しました: すべてのファイルはモジュールです(一度コンパイルすると)-Pythonのように プログラマーはimportキーワードを使用してモジュールをインポートする必要があります。これにより、コンパイラーは標準ディレクトリーおよびファイル・ディレクトリーでモジュールを検索します(VMは実行時にもこれを行う必要があります)。 そして今、私はサブモジュールとモジュール階層の概念をどのように導入すればよいのか分かりません。 たとえば、1つのオプションは、ディレクトリ階層に依存することです。これによりimport engine.graphics.renderer、作業ディレクトリ内、および「renderer」というモジュールを持つ「graphics」というディレクトリ内に「engine」というディレクトリが見つかるはずです。 そのようなデザインの欠点は何ですか?何か不足していますか?

6
xmlベースのプログラミング言語
私はウィキペディア-Category:XMLベースのプログラミング言語を見ていました。 言語を設計するために誰かがこのアプローチを取るのはなぜですか それの利点は何ですか? 私はデメリットしか考えられません。 維持するのが難しい 読みにくい 書くのが難しい

2
採用市場、パフォーマンス、保守性に基づいてアプリを構築するための言語を選択する[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 Rubyですべて実行される特定の本番用アプリ用にHaskellコンポーネントの構築を開始するかどうかの選択に直面しています。 私はいくつかの理由でHaskellに傾いています。主に速度(コンパイルされたHaskellは4〜8倍速い)、透明性の向上(Haskell型システムによる)、安全なリファクタリング(型システム)です。Haskellでいくつかのオープンソースおよびプロダクションプログラムをすでに書いており、それを非常に楽しんで書いています。 実現可能性は問題ではありません。Haskell Snap WebフレームワークとPostgreSQL.Simpleなどのデータベースライブラリをいじってみましたが、RailsアプリとさまざまなバックエンドプログラムをHaskellで書き換えることが可能であることに満足しています。 本当の問題は、開発チームの規模を拡大する必要がある場合にプログラマーを採用すること、または最終的にはプログラミングの責任を完全に引き継ぐことです。Rubyでは、Haskellよりもプログラマを見つける方がはるかに簡単です。その一方で、Haskellコミュニティは成長しているようで、DSLとしてアプローチする場合(Ruby on Railsのように)、Haskellプログラムの一部を変更するようにプログラマーをトレーニングすることはそれほど難しくありません。Haskell型システムは、動的Rubyよりもはるかに安全なコラボレーションを約束するようです。 ポールグラハムは、エッセイ「ビーティングザアベレージ」(http://www.paulgraham.com/avg.html)で、優れた言語を使用することが決定的な利点になり得ると主張しています。しかし、プログラマーをチームに追加しやすくするために、優れた言語を使用するのをやめるのはいつ適切でしょうか。

3
参照の透明性はどのように適用されますか?
FP言語では、同じパラメーターを使用して関数を何度も呼び出すと、同じ結果が繰り返し返されます(つまり、参照透過性)。 しかし、このような関数(疑似コード): function f(a, b) { return a + b + currentDateTime.seconds; } 同じパラメータに対して同じ結果を返すことはありません。 これらのケースはFPでどのように処理されますか? 参照の透明性はどのように適用されますか?それともそうではなく、プログラマが自分で行動するかどうかに依存しますか?

2
Javaプログラムから関数を呼び出してプリミティブ型の結果を受け取ることができるJavaでRubyファイルを実行する方法は?
何を求めているのかよくわかりません(笑!)。そうでない場合は、申し訳ありません。 Javaプログラムがあるとします。それは持っているMainとJavaCalculator、クラスを。JavaCalculatorのようないくつかの基本的な機能があります public int sum(int a,int b) { return a + b } 今、私はルビーファイルを持っていると仮定します。と呼ばれるMyProgram.rb。 MyProgram.rbルビプログラムに期待できるものをすべて含むかもしれません。次のものが含まれていると仮定します。 class RubyMain def initialize print "The sum of 5 with 3 is #{sum(5,3)}" end def sum(a,b) # <---------- Something will happen here end end rubyMain = RubyMain.new 良い。さて、あなたは私がしたいことをすでに疑っているかもしれません: Javaプログラムを実行したい Rubyファイルを実行させたいMyProgram.rb Rubyプログラムが実行されると、のインスタンスが作成され、JavaCalculatorそのsum関数が実行され、値が取得されてから出力されます。 ルビファイルは正常に実行されました。 Javaプログラムが閉じます。 注:「のインスタンスを作成するJavaCalculator」は必ずしも必要ではありません。クラスsumから関数を実行するだけで十分Mainです。 私の質問:そのようなことは可能ですか?特定の処理を実行して結果を取得するようにJavaプログラムに命令できるRubyファイルを内部で実行するJavaプログラムを実行できますか?上記の例では、RubyファイルがJavaプログラムに合計を求めて結果を返すように要求しています。 …

2
「成熟した」と見なされるプログラミング言語の基準
最近この質問の答えを読んでいて、「言語は成熟している」という言葉に感動しました。 それで、「プログラミング言語は成熟している」と私が言うとき、私は実際には何を意味しているのだろうと思いましたか?通常、プログラミング言語は最初に必要性から開発されます、例えば 新しいプログラミングパラダイムまたは既存の言語にはない機能の新しい組み合わせを試してみてください。 問題を解決するか、既存の言語の制限を克服してください。 プログラミングを教えるための言語を作成します。 特定の種類の問題(並行性など)を解決する言語を作成します。 Webなどの特別なアプリケーション分野用の言語とAPIを作成します(この場合、言語はよく知られたパラダイムを再利用する可能性がありますが、API全体が新しい必要があります)。 競合他社を市場から追い出すための言語を作成します(この場合、作成者は、開発者を新しいプログラミング言語とプラットフォームに引き付けるために、新しい言語を既存の言語と非常に似たものにしたいと思うかもしれません)。 言語が作成された当初の動機とシナリオに関係なく、最終的に一部の言語は成熟したと見なされます。私の直感では、これは言語がその目標(少なくとも1つ)を達成したことを意味します。たとえば、「Webアプリケーションを作成するための信頼できるツールとして言語Xを使用できるようになりました」。 ただし、これは少しあいまいなので、言語が成熟していると言うときに適用される最も重要な基準(ある場合)をどのように考えるかを尋ねたいと思います。 重要な注意点 私は一般的な基準のみに関心があるため、この質問は(意図的に)言語にとらわれません。言語に依存しない回答とコメントのみを書き込んでください!特定の「言語Xは成熟している」または「どのプログラミング言語が成熟していると見なすことができる」か、または「言語Xは言語Yより成熟している」かどうかは質問していません。この質問の範囲外です。 編集 質問は、より正確にするために、によって基準私は、「ツールのサポート」、「養子縁組産業別」、「安定性」、「豊富なAPI」、「大規模なユーザーコミュニティ」、「成功したアプリケーション・レコード」、「標準化」のようなものを意味します、「クリーンで均一なセマンティクス」など。

4
小さな埋め込みプロジェクトに適した解釈言語[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 6年前休業。 小さなARM Cortex M3を搭載したmbedマイクロコントローラーを持っています。基本的に、プロジェクトに効果的なリソースは、最大25 KBのRAMと最大400 KBのフラッシュです。I / Oには、PS / 2キーボード、VGAフレームバッファー(文字出力付き)、およびプログラムの保存/読み込み用のSDカード(最大で数MB)があります。 私が物事に実装するプログラミング言語を理解しようとしているので、私は尋ねます。私は実装が簡単で、リソースを無駄にしないインタープリタード言語を探しています。私はこれも少なくともデバイス自体に書き込むことができるようにするつもりですが、エディターは解釈できます(そう、ブートストラップ)。 とにかく、私はいくつかの単純な言語を見てきました。いくつかの素晴らしい候補: 前方へ ベーシック スキーム? 誰かがこのようなことをしたり、この法案に合う可能性のある言語を知っていたり、これまでに私の3人の候補者についてコメントしたりしていますか?

4
「プライベート」インターフェースの使用例?
インターフェイスがクラスのパブリックプロパティと関数を定義する方法と同様の方法で、クラスの特定の内部プロパティと関数を適切に定義できる有効なユースケースがあるかどうか疑問に思いました。 人間を説明するクラスを構築する必要があるタスクを想像してみてください。 明らかに、各人間はヒューマノイドクリーチャーですが、すべてのヒューマノイドクリーチャーが人間であるとは限らないため、おそらく次のような機能を持つインターフェースIHumanoidがあります(ボディプランをクラスにハードコードすることは役に立たないため)。 public interface IHumanoid { function get head():IHead; function get torso():ITorso; function get leftArm():IArm; function get rightArm():IArm; function get leftLeg():ILeg; function get rightLeg():ILeg; } さらに、そして明らかに、各人間は哺乳動物ですが、すべての哺乳動物が人間であるとは限らないため、どこかに浮かぶ男性と女性の2つの定義を持つ別のインターフェイスIMammalがおそらくあります。 public interface IMammal { function procreate(partner:IMammal):void; } public interface IMaleMammal extends IMammal { function inseminate(female:IFemaleMammal):void; } public interface IFemaleMammal extends IMammal { function …

2
不等式演算子に= / =を使用する言語はありますか?
ウィキペディアは言う: 等しくない 不等式を表すために使用される記号(項目が等しくない場合)は、スラッシュの等号 "sign"(Unicode 2260)です。 ほとんどのプログラミング言語は、ASCII文字セットに制限されており、〜=、!=、/ =、= / =、または<>を使用してブール式の不等式演算子を表します。 これらの演算子のすべてがで見つけることができます。この表離れてから、=/=。私はこのequals-slash-equals をプレーンテキストでフォーマットする方法として使用できますが、プログラミング言語では使用できません。 =/=プログラミング言語の不等式演算子として使用されていますか?

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