すべてのプログラミング言語には、奇妙な構文、独自の関数、標準的でない実装方法など、独自の「癖」があります。プログラマーにも独自の習慣があり、そのため多くのプログラマー、一部の経験豊富な開発者さえも、新しい言語に直面すると気が狂ったように感じます。これらの言語の機能は、プログラマーにとって障害となる場合があり、プログラマーがこれらの機能をゆっくりと理解し、徐々に適応して気に入っていく場合もあります。すべての言語には無数の機能がありますが、プログラマーが常に議論する機能はそれほど多くありません。この記事では、プログラマーを最も夢中にさせるプログラミング言語の奇妙な機能トップ 10 をリストしました。
1. JavaScript の「+」は連結演算子です
奇妙な機能: JavaScript では、「+」は数値と文字列の間のプラス記号 (+) です。 「+」演算でオペランドの一方が文字列の場合、JavaScript はもう一方のオペランドを文字列に変換します。このとき、「+」は連結演算子であるため、「1」+1 の結果は「11」になります。 '。
原因分析: この問題の根本原因は、JavaScript が弱い型付け言語であることです。ただし、Python と同様、「+」も文字列間の接続演算子ですが、Python は厳密に型指定された言語です。プログラマーが文字列と整数を加算しようとすると、プログラムはエラーを報告します。
2. Perl のクラスは TRUE を返さなければなりません
奇妙な特徴: Perl 言語のクラスは、多くの場合 return 1 ステートメントで終了します。クラス内の最後のステートメントが TRUE 値を返さない場合、TRUE 値はミスが生じた。
原因分析: Perl のクラスには、いくつかの初期化作業とサブルーチンが含まれる場合があります。ファイルがロードされると、Perl は戻り値 TRUE を探してプログラムが正常に実行されたかどうかのチェックを開始します。クラスに初期化コード部分がない場合でも、Perl はクラスが最後に TRUE 値を返すことを期待します。そうでない場合は例外がスローされます。
3. C および C++ のトライグラム
奇妙な機能: C および C++ は 9 つのトライグラムをサポートしており、これにより後続の処理の前にトライグラムが / に変換されます。ソースコードが読みにくくなり、予期せぬ問題が発生する場合があります。
原因分析: 3 文字グループは元々、初期の C プログラマーが中括弧など、キーボードでは使用できない文字を入力するのに役立つために使用されていました。
4. PHP の大文字と小文字の区別
奇妙な機能: 多くのプログラミング言語の識別子は大文字と小文字を区別しますが、PHP の関数名とクラス名では大文字と小文字が区別されません。それは問題ありませんが、プログラマーを最も混乱させるのは、PHP の変数名、定数、およびクラス属性が大文字と小文字を区別することです。
原因分析: おそらく、PHP は CGI スクリプトから徐々に発展したプログラミング言語です。
5. Ruby の 0 は TURE を表します
奇妙な特徴: Ruby では、値 0 は C や Python などの他の言語とは完全に反対であり、FALSE を表します。これは、Ruby を初めて使用する多くの開発者を混乱させます。
原因分析: Ruby では、ブール値 FALSE と nil のみが FALSE に等しく、その他はすべて TRUE で、0 は他の数値と同じです。
6. Python で「ブロック」を区切るにはスペースを使用します
奇妙な機能: Python は、コードの特定の行がどの部分に属するかを決定するために、句読点もキーワードも使用しません。スペースの数が間違っていたり、スペースとタブ キーが混在していたりすると、エラーが発生する可能性があります。
原因分析: これは、より読みやすいコードを生成し、入力を減らすための Python の取り組みに関連している可能性があり、多くのコード エディターが自動インデントをサポートするようになりました。
7. C 言語での配列の添字付けは、ポインタ演算を行うことに似ています
奇妙な機能: i を配列 a の添字として扱い、a[i] として表現することに加えて、C では同じ要素を i[a として表現することもできます。 ]。
原因分析: C 言語では、配列はメモリ内のポインタのようなものであるため、a[i] = *(a+i) = *(i+a) = i[a] となります。
8. Perl の定義済み変数
奇妙な機能: Perl には特殊変数の長いリストがあり、それらはすべて紛らわしい名前を持っています。 Perl の専門家ではない人は、これらのコードの意味を理解するために Perl のドキュメントを参照する必要があることがよくあります。
原因分析: これらの変数は通常、プロセス ID ($$)、エラー メッセージ ($@)、正規表現の一致 ($^R) など、プログラムの実行に関する情報を提供します。
9. JavaScript はセミコロンを自動的に挿入します
奇妙な機能: JavaScript は、改行文字の後になどにセミコロンを自動的に挿入するため、オプションとしてステートメントの最後にセミコロンを使用することのみを考慮します。ただし、これは通常、例外がスローされない場合にエラーを生成します。
原因分析: プログラマ、特に初心者プログラマが JavaScript 構文を非常に簡単に見つけられるように、セミコロンは便宜上挿入されています。
10. Java の Integer に関連する型変換
奇妙な機能: Java は、int 型を Integer オブジェクトに変換するなど、元の型をオブジェクトに自動的に変換します。Integer オブジェクトのデフォルト値は -128 から 128 までです。 127.これにより、「==」を使用して同じ値を持つ 2 つの整数を比較するときに問題が発生する可能性があります (-128 ~ 127 の場合のみ TRUE を返し、それ以外の場合は FALSE を返します)。
原因分析: この変換により、プログラマーのコード量が削減され、パフォーマンスが向上します。