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

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

19
理想的なプログラミング言語の学習シーケンス?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 どう思いますか?今日、頻繁に使用されるほとんどの言語とパラダイムを網羅し、一般的なプログラミングの基本、アイデア、および実践を把握するのに役立つ理想的なプログラミング言語学習シーケンスは何ですか?言語ではなく、パラダイムの学習シーケンスを提案することもできます。 注意:これは、私がstackoverflowで尋ねた質問のポートであり、主観的で議論的であるため閉じられました。

5
より表現力のあるプログラミング言語の進化により、ソフトウェア設計仕様の必要性は大幅に減少しましたか?
数年前の私を含む多くのIT担当者にとって、理想的なソフトウェア開発プロセスでは、コード行を記述する前に、多くのUMLダイアグラムを含む詳細な設計ドキュメントを作成する必要があります。(これはウォーターフォールモデルの説明のように見えますが、反復がより小さいことを除いて、アジャイルでも同じです。) 過去2、3年の間に、私は完全に考えを変えました。関連するテストケースを含む詳細な要件仕様は、絶対に不可欠であると私はまだ考えています。大規模なプロジェクトの場合、コーディングを開始する前に、アーキテクチャ全体の概要も必要になります。ただし、残りはすべてコードで可能な限り行う必要があります。理想的なケースでは、コード自体を除いてソフトウェア設計の説明はありません。 どのようにしてこの結論に達しましたか?以下にいくつかの引数を示します。 フィードバック 文書を書いたり、図を作成したりするツールはほとんどフィードバックを提供しません。はい、UMLダイアグラムの整合性チェックを行うモデリングツールがありますが、それらは制限されており、多くのオーバーヘッドが伴います。 フィードバックがなければ、エラーを認識して修正することは困難です。 コードを書くとすぐに、次のような多くのフィードバックが得られます。 コンパイラからのエラーと警告 静的コード分析結果 単体テスト エラーをすばやく認識して修正できます。 一貫性 コードがドキュメントと一致していることを確認するには、何度も確認する必要があります。頻繁な変更がある場合、コードとドキュメントの同期を保つのは困難です。 リファクタリング テキストの説明や図をリファクタリングするのは通常困難でエラーが発生しやすい一方で、コードをリファクタリングするための強力なツールとテクニックがあります。 この作業を行うための前提条件が1つあります。コードは読みやすく、理解しやすいものでなければなりません。これはおそらくAssembler、Basic、またはFortranでは達成できませんが、最新の言語(およびライブラリ)ははるかに表現力があります。 したがって、私の議論が有効であれば、ソフトウェア設計の仕様やドキュメントの軽量化や軽量化に向かう​​傾向があるはずです。この傾向の経験的証拠はありますか?

6
関数に渡される引数の量を制限することに基づく言語
このアイデアは、+、-、%などのファクト演算子に触発されており、1つまたは2つの引数が渡され、副作用がない関数と見なすことができます。私または他の誰かが、3つ以上の引数の受け渡しを停止し、戻り値を介してのみ機能する言語を作成すると仮定します。 a)そのような言語はコードを理解しやすくするでしょうか? b)コードの流れはより明確になりますか?(より多くのステップを強制し、潜在的に少ない対話を「非表示」にします c)制限により、より複雑なプログラムでは言語が非常に大きくなりますか? d)(ボーナス)賛否両論に関するその他のコメント 注意: 2つの決定を行う必要があります。1つ目は、main()または同等の外部でのユーザー入力を許可するかどうか、および配列/構造体を渡すときに何が起こるかについてのルールです。たとえば、1つの関数で複数の値を追加したい場合、その関数を配列にまとめることで制限を回避できます。これは、配列または構造体がそれ自体と対話することを許可しないことで停止できます。これにより、たとえば、各数値をその位置に応じて異なる量で除算できます。

1
モジュロ/剰余を意味するパーセント記号(%)の使用は、どのプログラミング言語で発生しましたか?
モジュロ/剰余を意味するパーセント記号(%)の使用は、どのプログラミング言語で発生しましたか? この前の投稿1は、シンボル%が選択された可能性が高いことを説明しています。これは、除算に関連する操作に賢いスラッシュが含まれているためです。また、Cによるシンボルの使用の影響についても言及しています。しかし、それがCに由来するかどうかはわかりません。Bプログラミング言語はCの前身であり、Bのユーザーガイド(PDF、ページ12)を見つけました。 演算子%はモジュロを示します。両方のオペランドが正の場合、結果は正しいです。それ以外は未定義です。 ただし、このユーザーズガイドの日付は1972年で、およそCが登場した時期です。これにより、理論的にはCで作成されたものの、Bにバックポートされたものも可能になります。また、%記号の使用を示す前に、他の言語の仕様を見つけることもできませんでした。 私はこの質問が重複していないと信じています:モジュロ演算が基本である理由を尋ねるので、特にシンボルがモジュロを意味するように見えたときについて尋ねています。

2
上位のパラメトリック多型は有用ですか?
私は誰もがフォームの一般的なメソッドに精通していると確信しています: T DoSomething<T>(T item) この関数は、パラメータポリモーフィック(PP)、特にランク1 PP とも呼ばれます。 このメソッドは、次の形式の関数オブジェクトを使用して表現できるとしましょう。 <T> : T -> T つまり、<T>1つの型パラメーターを受け取り、1つの型のパラメーターをT -> T受け取りT、同じ型の値を返すことを意味します。 その場合、次はランク2 PP関数になります。 (<T> : T -> T) -> int この関数は、型パラメーター自体を受け取りませんが、型パラメーターを受け取る関数を受け取ります。これを繰り返し続けて、ネストをより深くし、より高いランクのPPを取得できます。 この機能は、プログラミング言語では非常にまれです。Haskellでさえ、デフォルトでは許可していません。 便利ですか?他の方法では説明が難しい動作を説明できますか? また、何かが命令的であるとはどういう意味ですか?(このコンテキストで)

4
iterableとenumerableに違いはありますか?
多くの言語には、反復可能または列挙可能と呼ばれる非常に類似した構造があるようです。これらは反復または列挙できる構造であり、非常に似ているように思えます。これらの単語は同義語ですか、用語の選択を正当化するiterableとenumerableの間に微妙な意味の違いがありますか?

5
「チーム全体」のC ++機能
C ++では、例外などの機能はプログラム全体に影響します。プログラム全体でそれらを無効にするか、コード全体でそれらを処理する必要があります。有名な C ++報告書上の記事は、それを置きます: 直感に反して、コーディング例外の難しい部分は、明示的なスローとキャッチではありません。例外を使用することの本当に難しい部分は、任意の例外がスローサイトからハンドラーに伝播できるようにすべての介在コードを記述し、プログラムの他の部分を損傷することなく安全に到着することです。 さえがあるのでnew、例外をスローし、すべての機能が提供する必要がある基本的な例外安全性を - -それは唯一の例外をスローしない保証機能を呼び出しますしない限り、あなた無効に例外がない限り、完全にあなたの全体のプロジェクトでは。 したがって、例外は「プログラム全体」または「チーム全体」の機能です。それらは、それらを使用するチームの全員が理解する必要があるためです。しかし、私が知っている限り、すべてのC ++機能がそのようになっているわけではありません。 考えられる例は、テンプレートを取得していないが、使用していない場合でも、正しいC ++を作成できるかどうかということです。sort整数の配列を呼び出して、その驚くべき速度の利点を楽しむこともできます。Cのqsort(関数ポインターが呼び出されないため)バグを危険にさらすことなく、またはそうしませんか?テンプレートは「チーム全体」ではないようです。 コードを直接使用しないコードに影響を与え、したがって「チーム全体」である他のC ++機能はありますか?Cにはない機能に特に興味があります。 更新:私は特に、あなたがそれらに気づく必要がある言語強制サインがない機能を探しています。私が得た最初の答えはconst-correctnessであり、これもチーム全体であるため、誰もがそれについて学ぶ必要があります。ただし、AFAICSは、マークされた関数を呼び出した場合にのみ影響を与えconst、コンパイラは非constオブジェクトでの呼び出しを禁止するため、Googleに何かを提供します。例外を除いて、あなたはそれを得ることさえしません。さらに、を使用するとすぐに常に使用されるためnew、例外はより「邪魔」になります。ただし、これを客観的に表現することはできないため、チーム全体の機能に感謝します。 更新2:C ++機能の代わりに、大量のメインストリームプログラミング言語に適用されるマルチスレッドのようなものを除外するために、「C ++固有の機能」のようなものを書くべきでした。 付録:この質問が客観的である理由(疑問がある場合) C ++は複雑な言語であるため、多くのプロジェクトまたはコーディングガイドは「単純な」C ++機能を選択しようとし、多くの人々は主に主観的な基準に従って一部の機能を含めるか除外しようとします。それについての質問は、ここSOで定期的に閉じられます。 上記の代わりに、「可能な限り正確に」「全チーム」言語機能とは何かを定義し、C ++に関する文献の広範な裏付け証拠とともに例(例外)を提供し、C ++でチーム全体の機能を要求します。例外を超えて。 「チーム全体」の機能を使用するか、それが関連する概念であるかは主観的かもしれませんが、それはこの質問の重要性がいつものように主観的であることを意味します。

10
なぜ「コールバック関数」が必要なのですか?
私はその本を読んでいprogramming in Luaます。と言った クロージャーは、多くの状況で価値のあるツールを提供します。これまで見てきたように、これらはsortなどの高階関数の引数として役立ちます。クロージャーは、newCounterの例のように、他の関数を構築する関数にも役立ちます。このメカニズムにより、Luaプログラムは機能的な世界からの洗練されたプログラミング手法を組み込むことができます。クロージャーはコールバック関数にも役立ちます。ここでの典型的な例は、従来のGUIツールキットでボタンを作成するときに発生します。各ボタンには、ユーザーがボタンを押したときに呼び出されるコールバック関数があります。ボタンを押したときに、ボタンごとにわずかに異なる処理を行う必要があります。たとえば、デジタル計算機には、各桁に1つずつ、10個の同様のボタンが必要です。次のような関数を使用して、それぞれを作成できます。 function digitButton (digit) return Button{label = tostring(digit), action = function () add_to_display(digit) end} end を呼び出すdigitButtonとを返すように見えるのでaction(これによりクロージャが作成されます)、digit渡されたにアクセスできますdigitButton。 私の質問は: Why we need call back functions? what situations can I apply this to? 著者は言った: この例では、Buttonは新しいボタンを作成するツールキット関数であると想定しています。labelはボタンのラベルです。actionは、ボタンが押されたときに呼び出されるコールバッククロージャーです。コールバックは、digitButtonがタスクを実行した後、ローカル変数digitがスコープから出た後、長時間呼び出すことができますが、それでもこの変数にアクセスできます。 著者によると、同様の例は次のようになります。 function Button(t) -- maybe you should set the button here return t.action -- so …

5
コンピューターサイエンスで不変式が重要な理由
文字通りの意味で「不変」を理解しています。コードを入力するときにも認識します。しかし、コンピューターサイエンスの文脈でこの用語の重要性を理解しているとは思わない。 有名なプログラマーやコンピューター科学者からの言語設計に関する会話やホワイトペーパーを読むたびに、「不変」という用語が専門用語として登場し続けます。それは私が理解できない部分です。何がそんなに特別なのですか?

9
プログラマがCとC ++の違いを知らないのは一般的ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 インタビュー中に、CとC ++の違いを知っているかどうかを尋ねられました。 私はなぜそのような質問が求められているのだろうと思っていましたか?

10
競争で開発に「lingua obscura」を使用している場合(なぜ)心配する必要がありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 私はポール・グラハムのエッセイ-Beating The Averages(2003)を読んでいたのですが、彼が言わなければならないことは次のとおりです。 職務記述書のITフレーバーが多ければ多いほど、会社の危険性は低くなります。最も安全な種類は、Oracleの経験を必要とする種類でした。それらを心配する必要はありませんでした。また、彼らがC ++またはJava開発者を望んでいると言っても安全でした。彼らがPerlやPythonのプログラマーを望んでいたなら、それは少し恐ろしいことでしょう-少なくとも技術的な側面が本物のハッカーによって運営されている会社のように聞こえ始めています さて、これは時代遅れのエッセイです。ただし、一般的ではない言語(C / C ++ / Java、C#)を使用することが「危険性が低い」ことを確認できません。組織のプログラマーが開発言語に非常に精通している場合、彼らはまともなペースでコードを作成するのに等しく熟練する必要があります。実際、一般的でない言語を使用しても、長期的にはあまり多くのプログラマーが利用できないので、メンテナンス/拡張の問題に直面することはありませんか? Quick-n-Dirtyシステムを作成する場合、一部の言語では他の言語よりも比較的早く離陸できることに同意します。しかし、ポール・グラハムのエッセイ/コメントは2012年以降に意味をなしますか?スタートアップが開発に典型的なIT言語を使用する場合、競争の心配を減らす必要があるのはなぜですか? 言語自体がどのように違いをもたらすのか、私は理解できません。私見では、重要なのは開発者の経験であり、フレームワークを利用できるので、特定の言語でコーディングするだけでなく、DRY(繰り返しはしない)です。 私が見逃しているのは何ですか?スタートアップがIT風味のない言語を選択した方がよいということを意味しますか(開発者が非常に熟練している場合でも)。この主張の背後にある(プログラミング)経済/市場力とは何ですか? PS:「lingua obscura」は誰かの気持ちを傷つけることを意図したものではありません:)


5
AndroidのDalvik VMにコンパイルされる関数型言語?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 プログラミングへの機能的アプローチに適合するソフトウェアの問題がありますが、ターゲット市場はAndroid OSになります。JavaのVMにコンパイルされる関数型言語がありますが、Dalvikバイトコード!= Javaバイトコードがあるためです。 あるいは、dxユーティリティが.classScalaのような関数型言語から生成されたファイルをインテリジェントに変換できるかどうか知っていますか? 編集:コミュニティにもう少し役立つものを追加するために、また私がより良い選択をするために、質問を少し洗練させることができますか? Dalvikで他の言語を使用しましたか?どれ? 遭遇する可能性のある「落とし穴」(問題)とは何ですか? パフォーマンスは許容範囲ですか?つまり、アプリケーションは依然としてユーザーに反応していると感じています。 私は携帯電話の開発を行ったことはありませんが、制約のあるデバイスで育ち、プラットフォームで非標準言語を使用するのにコストがかかるという幻想はありません。コストがデフォルト言語へのアプローチを靴磨きする必要があるかどうかを知る必要があるだけです(つまり、OOP言語で機能原理を適用します)。

9
キャリアアドバイス:プログラミング言語の理論の博士号[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 私はプログラミング言語の理論に非常に興味があり、このトピックで博士号を適用しますが、大学院教育後のキャリアについてもっと知りたいです。教授であることに加えて、どのような職業に就くことができますか?

7
Webフレームワークを使用することで得られる長所と短所は?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 この質問は、Cake PHP、Zend、jQuery、ASP.NETなどのWebベースのフレームワークを使用する利点と欠点を抽出することに焦点を当てています。この質問は完全に言語に依存しません。「巨人の肩に立つ」という概念から始めましょう。 利点: 開発者を支援 -以前は数百行のコードを使用していた機能を1つの単純な関数呼び出しに圧縮することにより、開発者はより複雑な機能をWebサイトに統合できます。 許可迅速化開発アプリケーションの-これは必要性のウェブサイトは非常に小さなウィンドウで作成した人のために非常に関連している(誰これのいずれかの例を持っています?) 低コスト -プログラマーはコスト削減を顧客に回すことができます。これは、まったく新しい顧客がウェブサイトを望んでいましたが、以前は高い開発コストを払うことができませんでした。 短所: 理解の喪失 -開発者は、フレームワークの機能に依存するため、物事がどのように機能するか(フードの下)の理解を失う危険にさらされています。 構成の限界-フレームワークの構成よりも先に進むと、生産性がすぐに低下するため、フレームワーク構成の外部で機能を実装することは困難です。 開発者のトラムライン -あなた(開発者)は、開発者があなたにしたいやり方で物事をしなければなりません。 人々は私の主張をどう評価しているのか、そして誰かがそれらに同意していないのだろうか?また、人々が追加のポイントを持っている場合、私は感謝するでしょう。

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