タグ付けされた質問 「syntax」

構文は、言語で正しく構造化されたプログラムを作成する方法を定義する一連の規則を指します。プログラムの意味や解釈は明示的には扱いません。

7
forループでセミコロンとコンマが交換されるのはなぜですか?
多くの言語(CからJavaScriptまでの幅広いリスト): ,引数をコンマで区切る(例func(a, b, c)) セミコロンで;区切られた順次命令(例instruction1; instruction2; instruction3)。 したがって、同じ言語のforループでこのマッピングが逆になっているのはなぜですか: for ( init1, init2; condition; inc1, inc2 ) { instruction1; instruction2; } 代わりに(私にとってより自然に見えるもの) for ( init1; init2, condition, inc1; inc2 ) { instruction1; instruction2; } ? 確かに、for(通常は)関数ではなく、引数(すなわちinit、condition、increment)より、関数の引数のような一連の命令よりも動作します。 それは歴史的な理由/慣習によるものですか、それともループの交換,と;ループの良い根拠がありますか?

9
「Syntax」と「Syntactic Sugar」の違いは何ですか
バックグラウンド Syntactic SugarのWikipediaページには次のように記載されています。 コンピューターサイエンスでは、構文シュガーは、読みやすく、表現しやすいように設計されたプログラミング言語内の構文です。これにより、人間が使用する言語が「より甘く」なります。物事をより明確に、より簡潔に、または一部の人が好む代替スタイルで表現できます。 私は、Syntactic SugarとSyntaxの違いが本当に理解できません。 私は、甘いバージョンがより明確で簡潔になり、おそらくいくつかの定型的なものがなくなる可能性があるという点に感謝します。しかし、ある程度のレベルでは、すべての構文が本質的にそれを行って、コードがコンパイルされるものを抽象化することを感じています。 同じウィキペディアのページから: コンパイラー、静的アナライザーなどを含む言語プロセッサーは、しばしば「デシュガー化」と呼ばれるプロセスの前に、シュガー化されたコンストラクトをより基本的なコンストラクトに拡張します。 思考演習として、このステートメントで「頻繁に」「常に」を意味する場合:コンパイラが次の段階に進む前に構文を「デシュガー」するかどうかだけでは、内臓を知らないコーダーはコンパイラの何がSugar'd Syntaxとは何かを知っている(または気にしている)? このサイトに関する非常に関連した質問「構文糖の厳密な定義?」始まる答えがあります: 私見私はあなたがフレーズがBSであり、「本当のオペレーティングシステム」で「本当のツール」を使用して「本当のプログラマー」について話す人々によって使用される可能性が高いので、構文糖の定義を持つことができるとは思わない おそらく、この言語を使用しているコーダーに大きな違いはないことを私に示すかもしれません。おそらく、違いはコンパイラの作者にしか認識できないのでしょうか?言語を使用するコーダーがSyntactic Sugarの内部にあるものを知ることが役立つ場合がありますか?(しかし、実際には、主題に関するどんな言説でも、炎の餌としてこの用語を使用する傾向がありますか?) 質問の核心 だから...質問の短いバージョン: SyntaxとSyntactic Sugarの間に本当の違いはありますか? 誰が重要ですか? 思考のための余分な食べ物 トピックの矛盾に関するボーナス: ウィキペディアのページに例を示します。 たとえば、C言語では、a[i]表記法は*(a + i) 上記のリンクされた質問に関する別の答えは、同じ例について語っています: 考えてみてくださいa[i] == *(a + i)。実質的な方法で配列を使用するCプログラムについて考えてください。 そしてそれを要約します: []表記は、この抽象化を容易にします。構文糖衣ではありません。 同じ例の反対の結論!


4
なぜC#開発者は括弧を開くのですか?[閉まっている]
私はここ数年のほとんどを主にC#とSQLで作業してきました。私がこれまでに取り組んできたすべてのプログラマーは、関数または制御フローステートメントの開始括弧を新しい行に配置する習慣がありました。そう ... public void MyFunction(string myArgument) { //do stuff } if(myBoolean == true) { //do something } else { //do something else } 特にif / elseステートメントでは、これがスペースの無駄であることに常に感銘を受けました。そして、C#の以降のバージョンには、次のような代替手段が存在することを知っています。 if(myBoolean == true) //do something on one line of code しかし、ほとんど誰も使用しませんでした。誰もが中括弧で改行をしました。 それから久しぶりにJavaScriptをやり直しました。私の記憶では、JavaScript開発者は以前とまったく同じ中かっこと改行を使用していましたが、ほとんどの開発者はすべての派手な新しいライブラリとものを使用して、宣言の後に開き中かっこを配置しました。 function MyJavaScriptFunction() { //do something } JavaScriptでクロージャーと関数ポインターを使用することが一般的になったため、多くのスペースを節約し、物事を読みやすくするため、この意味を理解できます。だから私はなぜそれがC#で完了したものとして見られなかったのだろうと思った。実際、Visual Studio 2013で上記のコンストラクトを試してみると、実際に再フォーマットされて、開き括弧が新しい行に追加されます。 今、私はコードレビューSEにこの質問を見た: https://codereview.stackexchange.com/questions/48035/questions-responses-let-me-tell-you-about-you これで私はJavaでそれを学んだ、A私があまり馴染みのない言語です。宣言の直後に中括弧を開くのは、最新のJavaScriptのように厳格であると考えられています。 …
44 java  c#  javascript  syntax 

18
プログラミング言語では構文は本当に重要ですか?[閉まっている]
私の教授の一人は、「構文はプログラミング言語のUIです」と言います。Rubyのような言語は読みやすく、成長していますが、C \ C ++で生産性の高いプログラマーが多いので、プログラマーは本当に構文が重要です受け入れられるべきですか? 私はあなたの意見を知りたいです。 免責事項:私は議論を始めようとはしていません。これは議論の良いトピックだと思いました。 更新:これは良いトピックであることが判明しました。みなさんが参加してくれてうれしいです。

12
ほとんどのプログラミング言語には、関数を宣言するための特別なキーワードまたは構文があるのはなぜですか?[閉まっている]
ほとんどのプログラミング言語(動的および静的に型付けされた言語の両方)には、関数を宣言するための変数の宣言とは大きく異なる特別なキーワードおよび/または構文があります。関数は別の名前付きエンティティを宣言するのと同じように見えます: たとえば、Pythonの場合: x = 2 y = addOne(x) def addOne(number): return number + 1 何故なの: x = 2 y = addOne(x) addOne = (number) => return number + 1 同様に、Javaのような言語では: int x = 2; int y = addOne(x); int addOne(int x) { return x + 1; } 何故なの: int x …

6
言語のテストが構文レベルでサポートされている機能ではないのはなぜですか?
ソースコードの単体テストの利点を宣伝するブログ、記事、ウェブサイトの無限のリストを見つけることができます。Java、C ++、C#、およびその他の型付き言語用のコンパイラをプログラムした開発者は、ユニットテストを使用して作業を検証したことがほぼ保証されています。 それでは、なぜその人気にもかかわらず、これらの言語の構文にテストがないのでしょうか? マイクロソフトはC#にLINQを導入しましたが、なぜテストも追加できないのですか? 私は、これらの言語の変更がどうなるかを予測するつもりはありませんが、そもそもなぜそれらが変更されないのかを明確にするつもりです。 例として:ステートメントのfor構文なしでループを書くことができることを知っていますfor。whileまたはif/ gotoステートメントを使用できます。誰かがfor声明がより効率的であると判断し、それを言語に導入しました。 テストがプログラミング言語の同じ進化に従っていないのはなぜですか?

7
ほとんどの主流言語が、3者間ブール比較の「x <y <z」構文をサポートしないのはなぜですか?
2つの数値(または他の適切に配列されたエンティティ)を比較したい場合は、で比較しx &lt; yます。それらのうち3つを比較したい場合は、高校の代数の生徒が試してみることをお勧めしx &lt; y &lt; zます。私のプログラマーは、「いいえ、それは無効です、あなたはしなければなりませんx &lt; y &amp;&amp; y &lt; z」と答えます。 私が出会ったほとんどの言語はこの構文をサポートしていないようです。これは数学でどれほど一般的であるかを考えると奇妙です。Pythonは注目に値する例外です。JavaScript は例外のように見えますが、実際には、演算子の優先順位と暗黙の変換の単なる残念な副産物です。node.jsでは、と1 &lt; 3 &lt; 2評価されtrueます(1 &lt; 3) &lt; 2 === true &lt; 2 === 1 &lt; 2。 だから、私の質問はこれです:なぜx &lt; y &lt; z期待されるセマンティクスで、プログラミング言語で一般的に利用できないのですか?

5
自分の言語を最初にCコードにコンパイルするのが理にかなっているのはいつですか?
独自のプログラミング言語を設計するとき、gccなどの既存のコンパイラを使用してマシンコードを作成できるように、ソースコードを取得してCまたはC ++コードに変換するコンバーターを記述するのはいつ意味がありますか?このアプローチを使用するプロジェクトはありますか?


9
「for」ループの条件としての「<」と「!=」
次のforループがあるとします*: for (int i = 0; i &lt; 10; ++i) { // ... } 一般に次のように書くこともできます。 for (int i = 0; i != 10; ++i) { // ... } 最終結果は同じですので、一方を他方に対して使用するための実際の議論はありますか?個人的には、i何らかの理由で問題が発生して値10をスキップする場合に前者を使用します。 *マジックナンバーの使用は許されませんが、これは単なる例です。
31 syntax 

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

10
ほとんどのプログラミング言語に '!>'(より大きくない)および '!<'(より小さくない)演算子がない理由はありますか?
何か理由があるのか​​、それとも単なる歴史の偶然なのか、ほとんどのプログラミング言語には演算子!&gt;と!&lt;演算子がないのだろうか? a &gt;= b (大きいOR Bに等しい)のように書くことができた!(a &lt; b) (より少ないNOT b)に等しくなります、a !&lt; b。 この質問は、私が自分の式ツリービルダーをコーディングしている最中に思いつきました。ほとんどのプログラミング言語は持っていないa != bためにオペレータを!(a=b)、なぜ何!&gt;と!&lt;? 更新: !&lt;(ないより少ない)で発音しやすくより&gt;=(大きいまたは等しいです) !&lt;(ないより少ない)で入力するより短いより&gt;=(大きいまたは等しいです) !&lt;(以上ではない)理解するのが簡単です&gt;=(以上) * OR2つのオペランド(grater、equals)を操作するために必要なバイナリ演算子であるのに対しNOT、単項演算子であり、1つのオペランド(より小さい)でのみ操作する必要があるためです。

22
なぜVBはそんなに人気があるのですか?[閉まっている]
私にとって、Visual Basicは不器用で、見苦しく、エラーが発生しやすく、読みにくいようです。他の人にその理由を説明 させます。VB.netは明らかに言語の機能面で大きな進歩を遂げてきましたが、なぜC#を介してVBでコーディングすることを選択するのか理解できません。 ただし、「MSショップ」の商用Webアプリの大部分はVBで構築されているようです(と思われます)。私はこれについて訂正することができますが、VBはそれが値するよりも人気があるようです。 誰でもこれらの質問のいずれか(またはすべて)に答えることができますか? VBで何か不足していますか?学ぶのは簡単ですか、それともC#より「友好的」ですか?知らない機能はありますか? VB / VB.netが今日特にWebプロジェクトで頻繁に使用されるのはなぜですか?

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

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