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

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


5
Ruby on Rails / Grailsは、サイトをすばやく立ち上げるための最速のフレームワークですか?
新しいWebサイトにGrailsを使用することを検討していますが、他の/新しいプログラミング言語とフレームワークを利用できます。J2EE / JSF2、ASP.NET、PHPを使用して開発を行いました。GrailsまたはRuby on Railsは、機能を迅速に稼働させるための最良の方法ですか? いくつかの最初の考え: DJangoはRoR / Grailsに似ており、私はそれを検討します GWTは興味深い概念ですが、ターンアラウンドタイムがそれほど速くないようです。 ありがとう、ジョン

5
開発速度の目安
プログラミング言語の実行速度を測定する多くのテストを見てきましたが、開発速度を測定するテストを見たことがありません。 動的言語で作業すると開発速度が上がると聞きましたが、その証拠はありますか?動的言語が効率的でないと言っているわけではありませんが、もしそういうものが存在するなら、科学的な研究の結果を見たいです。 さらに良いのは、メンテナンス施設に関する情報です。一部の言語は他の言語よりデバッグが簡単ですか? 編集:私は構文に近い2つの言語の違いに主に興味があります。たとえば、Cでのプログラミングは通常、Javaでのプログラミングよりも遅くなると思います。しかし、JavaでのプログラミングはC#でのプログラミングよりも高速ですか?

4
クロスプラットフォームライブラリを作成するにはどの言語を使用すればよいですか?[閉まっている]
この投稿を改善してみませんか?この質問に対する詳細な回答を提供します。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 SyncML解析ライブラリ(UIなし)を構築します。これは、ライブラリのメソッドによって供給される、ホストアプリケーションによって提供される情報に基づいてメッセージを構築できる必要があります。また、ライブラリは、ホストアプリケーションのメソッドへのコールバックを実行できる必要があります。 これをコンパイルして、可能な限り多くのプラットフォーム(Windows、Windows Phone 7 OS、OSX、iOS、Linux、Android、BlackBerry)で利用できるようにしたいと考えています。基本的に、できるだけ多くのプラットフォーム。 優先事項は、これをモバイルデバイスで使用できるようにすることです。 質問: どの設定を使用する必要がありますか?(プログラミング言語、コンパイラ、IDEなど) これらの異なるプラットフォーム用にこのライブラリをコンパイルするにはどうすればよいですか、またどのように接続しますか? 他の情報はありますか?例:クロスプラットフォーム開発の主題をカバーする記事? この種のクロスプラットフォームプロジェクトはこれまでに行ったことがないため、正しい方向に導くために利用できる情報があれば歓迎します。 私自身、C#/。NETおよびObjective-Cの経験があります。

12
ある値を他の2つ以上の値と比較する機能を備えた言語がないのはなぜですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 以下を検討してください。 if(a == b or c) ほとんどの言語では、これは次のように記述する必要があります。 if(a == b or a == c) これは少し面倒で情報を繰り返します。 上記のサンプル構文は少し不格好ですが、アイデアを伝えるためのより良い方法があると確信しています。 より多くの言語がそれを提供しないのはなぜですか?パフォーマンスや構文の問題はありますか?

2
表現力とプロダクションバグ率に相関する、プログラミング言語ランタイムのメモリ消費量の比較研究はありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 5年前休業。 多くの比較研究があり、1つの言語または別の言語を使用して構築されたアプリケーションのランタイムパフォーマンスに関しては、オンラインで入手できます。企業によって駆動されるものもあれば、学術的なものもあれば、個人的な実験報告だけのものもあります。 また、次のようなプログラミング言語とそのツールの副作用に関する比較研究のかなりのシェアを得ています。 ビルド時間、 ポストプロダクションバグ検出の可能性、 表現力、 等... しかし、私は最近、他の何よりもプログラムのメモリ消費量にますます困惑しています。これは、ムーアの法則が生のパフォーマンスに関して私たちの側にある一方で、他のボトルネックがより重要であることに気づくようになったという事実から来ている可能性があります。それと、ハードウェアを頻繁に更新することはあまりありません。「古い」もの(4 GBのRAMを搭載した2005〜2006年の3.6 GHz Pentium 4を読んでいます)があるため、それらからすべてのジュースを搾り出すために大きなトラブルを経験することを私に要求します(OS、UIの選択、サービスとデーモンの微調整、タスクなどに使用するアプリケーションの選択...)。非常に正直に言うと、ときどき起動しtopたりprocexp、最も無害なプログラムが使用しているメモリを見て涙を流したりします。 私は上記の方向に押し続け、基本的に自分自身と使用するプログラムを制限しようとすることでこれに対処できます(その理由から、私はcliプログラムを非常に愛しています)、しかし、私は考えるしかありませんたぶん私たちはそれを間違っているのです。 現代的なニーズのための現代的なツール もちろん、高水準言語は間違いなくより優れており、それらの重荷の価値を正当化します。いくつかの設計上の選択は、多くのツールチェーンで、当時は十分な(またはおそらく意図された)理由で行われました。共有ライブラリ、メモリモデル、プリプロセッサ、タイプシステムなど...しかし、最新のハードウェアでは、他のものよりも実行可能性が高いものもあるので、この問題に関するいくつかの深刻な研究に興味があります。 ですから、私の質問は、ベンチマークゲームなどの言語の基本的なランタイムメモリ消費量の比較に焦点を当てたペンダントがあるのでしょうか。 さらに、これを他のパラメーターと相互参照するいくつかの研究がありますか(たとえば、この記事が他の基準についてもベンチマークゲームに基づいて行ったのと同様)。

3
コンピュータにソーティングネットワークなどの専用ハードウェアが付属していないのはなぜですか?
私たちのやり方をプログラミングする代わりに、「ソート」などの一般的なタスクの仕様を作成して、環境にコンパイルして、ハードウェアを最大限に活用させてみませんか?このようにして、ソートネットワークなどの新しい専用ハードウェアを搭載したコンピューターを出荷でき、既存のコードで自動的に動作します。


6
関数型プログラミング言語を採用すべきですか?
私は最近、自分のコードを書く方法についてもっと心配しています。デザインパターンに関するいくつかの本を読んだ後(そしてそれらの熱狂的な実装については、きっと)、私は自分の考えを、変化するものをカプセル化することに大きくシフトさせました。インターフェースが少なく、メソッド指向のコードが多く書かれていることに気づきがちですが、述語、アクション、その他のデリゲートタスクを使用して古いクラスに活気を与えたいと思っています。変化するのは行動だと思うことが多いので、それをカプセル化します。常にではありませんが、多くの場合、インターフェイスを単一のメソッドに分解し、クライアントコードに新しいクラスを作成させるのではなく、タスクにデリゲートを使用することを好みます。 だから私はそれが私を襲ったと思います。代わりに関数型プログラミングを行うべきですか? 編集: 関数型プログラミングについて誤解している可能性があります。 現在選択している言語はC#で、C ++の出身です。私はゲーム開発者として働いていますが、現在は失業しています。 私は建築に対する情熱を持っています。私の利点は、クリーンで柔軟性があり、再利用可能で保守可能なコードです。私がこれらの方法で毒されているのか、それともより良いのかわかりません。リファクタリング熱がありますか、それとも次に進むべきですか?これは「仕事に適したツールを使用する」という疑問かもしれませんが、ご意見をお聞かせください。 関数型言語を選ぶべきでしょうか?私の恐怖要因の1つは、Visual Studioの快適さを離れることです。

4
遅延初期化をJavaに組み込むことができなかった理由はありますか?
私はユーザーの非永続状態がまったくないサーバーで作業しているため、ユーザー関連のすべてのオブジェクトは、すべてのリクエストでロールアウトされます。 その結果、未使用になる可能性のあるオブジェクトのプロパティを遅延初期化していることがよくあります。 protected EventDispatcher dispatcher = new EventDispatcher(); なる... protected EventDispatcher<EventMessage> dispatcher; public EventDispatcher<EventMessage> getEventDispatcher() { if (dispatcher == null) { dispatcher = new EventDispatcher<EventMessage>(); } return dispatcher; } これをJavaに組み込むことができなかった理由はありますか? protected lazy EventDispatcher dispatcher = new EventDispatcher(); 以下のコメントで述べたように、言語は理論的に進化して、必要なほとんどすべてのものを含めることができることを理解しています。可能性の実用的な測定方法を探しています。これは他の機能と競合しますか?実装は、JVMが存在する場合でもうまく機能するように単純ですか?そして、それは良い考えですか?

3
すべての文字列が有効なプログラムであるプログラミング言語はありますか?
固定アルファベット(ASCIIなど)の場合、これらの文字の可能なすべての置換が、実行可能な意味的に有効なプログラムであるようなチューリング完全プログラミング言語は存在しますか? 無限ループも意味的に有効であると見なします。 Markdownなどの一部のデータ形式は、普遍的な意味論的有効性(すべての入力が有効)を持っていることは知っていますが、このプロパティを備えたプログラミング言語を思いのままにすることはできません。

1
型パラメーターの型引数を推論する手法の名前は?
セットアップ:Iterator型パラメーターを持つと呼ばれる型があるとしましょうElement: interface Iterator<Element> {} 次に、をIterable返す1つのメソッドを持つインターフェースがありますIterator。 // T has an upper bound of Iterator interface Iterable<T: Iterator> { getIterator(): T } Iteratorジェネリックであることの問題は、型引数を指定する必要があることです。 これを解決する1つのアイデアは、イテレータのタイプを「推測」することです。次の疑似コードは、Elementへの型引数であると推定される型変数があるという考えを表していますIterator。 interface <Element> Iterable<T: Iterator<Element>> { getIterator(): T } そして、次のような場所で使用します。 class Vec<Element> implements Iterable<VecIterator<Element>> {/*...*/} このの定義は、その定義の他の場所ではIterable使用していませんElementが、実際の使用例では使用しています。を使用する特定の関数は、双方向のイテレータなど、特定の種類のイテレータのみを返すs Iterableを受け入れるようにパラメータを制約できる必要もあります。そのIterableため、返されるイテレータは要素タイプだけではなくパラメータ化されます。 質問: これらの推定された型変数の確立された名前はありますか?テクニック全体についてはどうですか?特定の命名法を知らないために、この例を実際に検索したり、言語固有の機能について学ぶことが困難になっています。 総称を持つすべての言語がこの手法を備えているわけではありません。これらの言語で同様の技術の名前はありますか?

4
「yield」などのジェネレーター言語機能を使用するのは良い考えですか?
PHP、C#、Python、およびおそらく他のいくつかの言語には、yieldジェネレーター関数の作成に使用されるキーワードがあります。 PHPの場合:http : //php.net/manual/en/language.generators.syntax.php Pythonの場合:https : //www.pythoncentral.io/python-generators-and-yield-keyword/ C#の場合:https : //docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield 言語の機能/機能として、yieldいくつかの規則に違反していることを心配しています。それらの1つは、「確実性」と呼んでいるものです。呼び出すたびに異なる結果を返すメソッドです。通常の非ジェネレーター関数を使用してそれを呼び出すことができ、同じ入力が与えられた場合、同じ出力を返します。yieldでは、内部状態に基づいて異なる出力を返します。したがって、以前の状態を知らないで生成関数をランダムに呼び出すと、特定の結果を返すことは期待できません。 このような関数はどのように言語パラダイムに適合しますか?それは実際に慣習に違反していますか?この機能を使用することは良い考えですか?(良い点と悪い点の例を示すために、gotoかつては多くの言語の機能でしたが、現在もそうですが、それは有害であると見なされ、Javaなどの一部の言語からは根絶されました)。プログラミング言語のコンパイラ/インタープリターは、そのような機能を実装するために何らかの規則を破る必要がありますか?たとえば、言語はこの機能を動作させるためにマルチスレッドを実装する必要がありますか、それともスレッド化テクノロジなしで実行できますか?

6
静的型付けは、より大きなプロジェクトでどのように役立ちますか?
スクリプトプログラミング言語のサイトのメインページで好奇心をかきながら、次の文章に出会いました。 システムが大きくなりすぎて頭に残ることができない場合は、静的型を追加できます。 これにより、静的なコンパイル言語(Javaなど)と動的なインタープリタード言語(主に使用頻度が高いためPythonが主流ですが、ほとんどのスクリプト言語間で共有される「問題」)の間の多くの宗教戦争で、静的な不満の1つでした。動的に型付けされた言語に対する型付き言語のファンは、「いつか、関数の戻り値の型を忘れ、それを調べなければならず、静的に型付けされた言語ではすべてであるため、より大きなプロジェクトにうまくスケーリングできない」明示的に宣言されています。」 このような発言は理解できませんでした。正直に言うと、関数の戻り値の型を宣言したとしても、コードの多くの行を記述した後はそれを忘れることができ、その関数の検索関数を使用して宣言されている行に戻る必要があります。それをチェックするあなたのテキストエディタ。 さらにとして、関数がで宣言されているとしてtype funcname()...、知っwhitout typeあなただけ知っているので、あなたは関数が呼び出された各ラインを超える検索する必要がありますfuncnameしばらくPythonで、あなたのように、coudだけを検索def funcnameまたはfunction funcnameだけで、一度たまたま宣言。 さらに、REPLでは、関数の戻り値の型をさまざまな入力でテストするのは簡単ですが、静的に型付けされた言語では、コード行を追加し、宣言された型を知るためにすべてを再コンパイルする必要があります。 では、静的型付け言語の強みではない関数の戻り値の型を知る以外に、静的型付けは大規模なプロジェクトでどのように役立つのでしょうか。

3
Cの変数の「真の」サイジングはどの程度役に立ちますか?
Cのポジティブな機能(実際にはgcc、clangなどの実装の機能)として常に直感的に私を驚かせた1つのことは、実行時に独自の変数の隣に隠された情報を格納しないという事実です。つまり、たとえば「uint16_t」タイプの変数「x」が必要な場合、「x」が2バイトのスペースしか占有しないことを確認できます(そのタイプなどの非表示の情報は含まれません)。 。)。同様に、100個の整数の配列が必要な場合は、100個の整数と同じ大きさであることを確認できます。 しかし、より多くの私はそれが実際に持っている場合はより多くの私は疑問に思って、この機能のための具体的なユースケースを思い付くしようとしています任意のすべての実用的な利点を。私がこれまでに思いつくことができる唯一のことは明らかにそれがより少ないRAMを必要とするということです。AVRチップなどの限られた環境では、これは間違いなく大きなプラスですが、日常のデスクトップ/サーバーのユースケースでは、それはかなり無関係であるようです。私が考えている別の可能性は、ハードウェアへのアクセス、またはメモリ領域のマッピング(たとえば、VGA出力など)に役立つ/重要である可能性があることです... ... 私の質問:この機能なしでは実装できないか、非常に煩雑にしか実装できない具体的なドメインはありますか? PSより良い名前があるかどうか教えてください!;)

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