母国語はコードの品質に影響を与えますか?


9

言語学には、問題解決は自分の母国語の言語の構文、意味論、文法、柔軟性に非常に関連しているという考え方の学派があります。

さまざまな国際開発チームと協力して、コードベースにメンタルカルチャー(あるとすれば)をはっきりと見ることができます。プログラミング言語は別として、ドイツ語のコーディングは、私のインドの同僚とはかなり異なります。同様に、コードは中米では沿岸アメリカとは明らかに異なります(実際、IBMはこの数年前に気づきました)。

コーディングスタイルと問題解決が母国語と一致していることに気づきましたか?


多少の違いはあるかもしれませんが、私が知っていることは、すべての国から悪いプログラマーがいるということです。
ozz '31年

違いが母語によるのか、文化的背景によるのか、どうやってわかりますか?
mouviciel 2011年

@ mouviciel、2つはほとんど不可分ですが、話された言語の構文がプログラミング言語のセマンティクスを駆動するのを事例的に見ます。以下のドイツ語の例は私のコメントで1つだけです。文化の違いによるものだとおっしゃったように、ほとんど同じような言語にもかかわらず、米国の地域間でもコーディングスタイルの違いがはっきりとわかります。
Jキュー、2011

回答:


5

これまでのところ、私の経験から、ネイティブの留学生が非ネイティブの学生と同じ仕事をしていることに気づきました。問題は、彼らが概念や要件を説明しようとしたときに発生します。それ以外の場合、構文名が何をしているかを読むまで、構文名はあまり役には立ちません。プログラマーが構文の知識を習得すると、構文に使用される単語の実際の意味が何であるかはカウントされません。


1
参照してください。ネイティブの話し言葉(および思考プロセス)を別のプログラミング言語に翻訳すると、重要な結果が異なることがわかりました。どちらにしても良くも悪くもない、ただまったく異なる。多くのヒープ/グローバル変数の宣言とデータの準備、そしてドイツ人による一連の手続き呼び出しと、必要に応じて変数/関数をインライン化または匿名で使用する傾向があるアメリカ人とを比較します。最終結果=同じ、異なるアプローチ。
J 'Queue

スマートサマリーの+1最終結果=同じ、異なるアプローチ
Zerotoinfinity

3

コードのコメント以外はあまり違いがありません。このビットは、母国語が英語ではない人によって書かれたものであることがはっきりとわかる場合があります。


6
私も、スペルミスがないことが強力な手がかりです。:)
biziclop '30年

3

コーディングスタイルと問題解決が母国語と一致していることに気づきましたか?

もちろんです。これは難しい事実です。ただし、因果関係の連鎖はより複雑です。

地域、その生態系、気象条件、動植物の生活は、その一部である地元の文化宗教の発展に影響を与えてきました。

文化と宗教は、現地語の形成と発達に影響を与えました。

文化と言語は、この特定の民族グループの社会モデルにその痕跡を残しています。

社会モデルは、行動モデル-ライフスタイル、仕事の態度、社会的関係、優先順位、個人の価値観を定義しています。それが私たちが望む部分です。

異文化の人々は、彼らの文化遺産の手荷物で問題を解決するためにアプローチします-彼らはそれについてどう考えるか、彼らが仕事にどのような態度をもたらすか、どの方法論と問題解決パターンを適用するか、彼らが設定する優先順位と値。


例といえば、2つあげます。私が現在住んでいるドイツを取り上げると、私が観察した特定のパターンがあります。

  1. すべてを事前に、そして長期的に計画することが、生き方です。友人との夜の会議は、数週間から数か月前に計画することができます。若者はすでに退職(保険など)に関心を持っています。気分変動、即興、意欲、および随時調整能力は非常に低いです。当然それは仕事のやり方に移されます。計画と注文は大きな役割を果たします。アジャイルであることは、進歩的な思考を持つ現代の人/チームを説明するための例外的な特性であると考えられています。しかし、ドイツのチームで私が観察したほとんどのアジャイルプロセスは、事前定義されたステップのマシン実行のように見えます(たとえ人々が本当にアジャイルになろうとしても)、そのようなアジャイルの精神はありません。

  2. すべての予測可能性は人生の規範です。人々は、何が、いつ、どこで起こるかを知ることに慣れています。それは、日常生活から働き方、個人的な関係にまで及びます。たとえば、人々が道路を横断するときにそれを見ることができます。彼らは青信号を待ち、車が実際に停止したかどうかを見ずに動き始めます。人々は自分の生活のあらゆる面を制御できることを誇りに思っています。ところが、人生が思いがけない出来事に立ち戻ったとき、物事が制御不能になったとき、人々はちょっと変わってしまいます。プログラミングに移行した場合、コーディングはかなり楽観的に行われ、執着はありません。入力のチェック、データの整合性を検証するための外部キーなど。また、コードを障害に対してある程度の耐性を持ち、特定の将来の変更に適応できるようにするための特別なエンジニアリングはありません。

  3. 文化の中でお金を節約し、支出を最適化することは非常に重要です。作品のアーティファクトに反映されます。特性と品質は計画に一致しますが、突然それを超えることはありません(涼しくするため、または単に「念のため」に)。ゲームのもう1つの側面は、最新のハードウェアとソフトウェアに投資したり、作業コードをリエンジニアリングしたり、リファクタリングしたり、物事の現在の状態に合わせるだけで物事を改善したり、将来に備えたりすることを望まないことです。すぐに勝つことはできず、誰も変更の代金を払っていないので、実際には誰も動きません。

  4. 起業家精神と創造性は文化ではかなり低いです。自分のアカウントでリスクを取る気がありません。仕事の成果は、珍しい、予想外の、創造的な印象をほとんど持ちません。人々は踏み込んだ道をたどる傾向があり、少しの実験や「好奇心から外れた」珍しい設定です。人々は、特に責任と対になっているときに、自分の手で主導権を握ることを好まない。また、オランダに上陸するドイツ人は、厳しい指導なしに独立して仕事をしている人がいるため、困難を感じることもあると聞きました。プログラミングに関しては、新しい言語、ツール、ライブラリの実験はほとんど行われず、変更を恐れて新しいバージョンは採用されていません。人々はデザインパターンを取り入れ、盲目的にそれらを適用します。なぜなら、彼らは大学でそのように教えられたので、それらの適用可能性を疑わないからです。

  5. ファッションよりも機能。日常生活で見られます。一般的な都会的なスタイル、建物のデザイン、街路の装飾など、機能するために最低限必要なものはすべて揃っていますが、通常はスタイル、美しさだけのためのものではありません。プログラミングに関しては、美しいUIデザインの欠如に見られます。ほとんどの企業や個人のサイトはかなり古風で退屈です。また、上司や同僚に具体的なメリットが見られないため、多少の磨きをかけるように説得することもできません。

  6. 複雑さと官僚主義はライフスタイルの一部です。人々はそれをさらに取り入れ、どこにでも適用します。個人的な関係。作業の詳細、決定、および解決策は、多くの場合、何が行われたかを文書化するための複数の成果物になります。多くの場合、プログラミングコードは、不必要な要素、抽象化レベル、および構成を伴って出てきます。KISSの原則はあまり普及していません。

  7. 「顔を救うこと」は非常に重要で、成功したように見え、他人に弱点や失敗の兆しを見せないようにしています(もし持っているなら、それはほぼ間違いなくあなたに対して使用されます)。失敗を認める仕事の実践では、人々は「顔を失う」ことを防ぐためにあらゆることをします。批評家を取ることも困難になります。(正当な理由があるかどうかにかかわらず)誰かを批判することは、敵を作る確実な方法です。心にあるものを言うことは実践されておらず、そのため誰がどこに立っているかを理解することはかなり困難です。

一番下の行は、良い執行者、計画とスケジュールのトップ、精度は良いです。ただし、革新と創造性は期待できません。


2番目の例は、私が属しているロシア文化を扱っています。かなり違います。

  1. スケジュールと計画は特に価値があるとは思われません。マイナーな逸脱は、それがより大きな結果を脅かし始めるまで/までは、人々に関係しません。人々は計画に従って生きるのが好きではなく、一種の精神的な自由を好み、好きなことを何でもし、自分がやりたいと思ったときに好きです。プログラミングに関しては、ドキュメントを書いたり、事務処理を行ったりするなど、「本質的でない」ことを無視するかもしれません。人々は、プロジェクトに飽きていたり、雰囲気を嫌ったりしている場合など、行き来がずっと楽になります。人生ごとの長期的な約束は期待されるべきではありません、人々は縛られたくありません、彼らが一度来て、退職するまでとどまることを期待しないでください。これは携帯電話市場でよく見られます。欧州/米国では2年間の契約がユビキタスですが、ロシアではこれは行われていません。人々はしない

  2. 人々は官僚主義を嫌い、非公式な関係を好む。紙の仕事はほとんどないか、できるだけ少ないディスカッションや会議で、仕事をするだけです。コードの複雑さは好まれず、単純な決定と直接的な方法が好まれます。退屈なルーチンは好まれません。コメントやドキュメントなどの一部の「重要でない」タスクは無視される場合があります。人々は特定の退屈なことを先送りして、代わりにもっと面白いことをしたり、意外な方法で退屈な部分をしたりして、やる気を維持します。

  3. コストはそれほど重要ではありません。人々は、ビジネスケースなしで、より新しく、よりクールで、より興味深く、よりモダンなものを手に入れたいと思っています。それが満足を提供する場合、彼らは通常、発生した追加のコストについて不満を抱くことはありません。

  4. 人々はすべてに非常に熱心です。さまざまな国や文化の食べ物、音楽、衣服、工芸品、アイデアが扉を通り抜けます。プログラミングに関する人々は、好奇心から、ビジネスケースの有無にかかわらず、新しい言語、ツール、またはライブラリを試します。さまざまな哲学と方法論がすべて、喜んで取り入れられ、触れられ、噛まれ、実験され、ファンキーな方法で混ぜ合わされます。

  5. 美しさとスタイルは非常に重要です。目に見えるメリットは何もないものの、芸術的な感覚だけを満足させるものには、人々は余分な時間とお金を費やすでしょう。多くの場合、より機能的なものよりもスタイリッシュなものを好みます。美しいUIデザインは高く評価されています。以前は完全に機能していたとしても、プログラミングに慣れていない人々は、コードをリエンジニアリングして、単にスタイルを追加するだけで構造化されていないため、余分な時間を費やすことになります。

  6. 処方箋やルールはしばしば無視され、軽視されることさえありますが、人々はそれがより良くなる(または冷たく、それに抵抗できない)と説得された場合、まったく違うことをするかもしれません。上からの多くの決定が疑問視され、議論されます。そして、はい、誰もがすべてについて強い意見を持っています。

  7. 生命の予測可能性は非常に低いため、人々は常に不測の事態に備えています。同じことが、ダブルチェックとフォールバック計画を使用して、むしろ悲観的な態度でコードに反映されることがよくあります。アーキテクチャは、将来起こり得る変更への準備を反映しているかもしれませんが、宇宙飛行士のようなオーバーアーキテクチャではありません。アジャイルは現代の方法論ではなく、生き方です。また、人々は変化に慣れており、自分の人生のあらゆる面をコントロールしようとはしません。思いがけないことが起こったとき、人々はうなずき、「次回はもっと良くなるだろう」と言って、精神的に行くことなく、飲酒や薬物などを始めずに進みます。プロジェクトの失敗は自殺につながりません。

  8. 政治的正しさは低いので、人々はあなたがそれを期待していないとき、彼らは前もって考えることをただ言うかもしれません。準備して。

別のボトムラインは、予期しない、何か異常でクリエイティブなものを期待していますが、マシンの精度、スケジュール、ルールに従うことを期待していません。


どちらが優れているかは簡単には答えられません。1つの作業タイプは1つの作業者カテゴリでより適切にカバーされ、もう1つは別の作業者カテゴリでカバーされます。人々が彼らのメンタリティのために間違ったタスクを割り当てられている場合は悪い。国際チームのマネージャーがその問題を認識することは難しいと思います。IT業界への応用について議論されたことがあるかどうかはわかりません。


1
事例のコメントをありがとう。スタイルが大きく影響を受けているので、コメントを読むのは興味深いです。
Jキュー、2011

ドイツ人についてのあなたの観察にはある程度の真実がありますが、これらはあなたが言及している広大な一般化であるため、-1にしなければなりませんでした(すべてのドイツ人があなたがそれらを説明した方法ではない-ロシア人についても同じだと思います)。
Jas

まあ、それは本「Zen and the Art of Motorcycle Maintenance」から「クラシック」と「ロマンティック」の概念を2つの集団全体に具体化したように聞こえます!すごい。

2

コードの品質についてはわかりませんが、プログラマーごとに作業が異なることは確かです。

自然言語が私たちの思考に影響を与えたと言われているので(私はそれがプログラミングに影響を与えると思います)、この一群の思想は、それを証明するためにさまざまなパラダイムを持つ人工言語の開発につながりました:たとえば、ログラン。それから多くが出てきたかどうかはわかりません。

しかし、私が確信しているのは、教育(言語は役割を果たすが、他のことも果たす)は確かに、専用の問題に対する自分の視点に影響を与えるということです。

私は「技術」学校に通い、学校でC / C ++の根本を学ぶ同僚がいて、彼らは問題に対して技術的なアプローチをとる傾向があり、私は後ろに座る傾向があります。十分な時間)理解するのに十分なほど深く理解する前に...それでも私たちは同じ国で育ち(ほとんど)、同じ言語を話し、多かれ少なかれ同じ文化を持っています(ちょうど別の学歴)。

「外国人」の同僚との私の唯一の経験は、スペイン語(2年前)とイタリア語(今日まで)であり、どちらもチームの他のメンバー(フランス語)とほぼ同じように働いています。おそらく、ラテン語以外の背景のどこかで遭遇した場合、違いを見つけることができます。

したがって、言語がスタイルの違いの主な原因であるかどうかはわかりません。教育と性格は、少なくとも同じくらいの影響を与えると思います。


+1は、個性が国籍よりもはるかに重要であることを指摘します。
Jas

1

言語ではなく、ある種の文化的背景である「国民性」です。これは全体的にはうまくいくようです(たとえば、イギリス人はクールで、ドイツ人は正確です)。

とにかく、測定システムを見つけ、オープンソースリポジトリからプロジェクトを選び、コードを調べて、統計を作成するのはあなた次第です。

著者のその他の属性(年齢、教育、業界など)を収集できれば、さらに良いでしょう。


あなたの発言のいくつかの意味がわかりません。ネイティブの話し言葉がプログラミングの問題解決アプローチに影響を与えないと信じていますか?
J 'Queue

1
ええ、私は言語が影響するとは思わない。「国民性」はもっと重要だと思います。そして、私は、この「国民性」は良い名前ではないと思います、「文化的影響」はより良いはずです(そして少なくとも、人種差別主義者ではないようです)。村と大都市のことを考えてみてください。私たちは、共産主義の40年からわずか200年という悪夢の対民主主義です。
ern0

彼はあなたが他のものすべてを除外して言語のセマンティクスだけでなくすべてのものを取り入れなければならない、と述べました。少なくとも一部の人々の無知を打ち消すために男を賛成する。
FilipDupanović、2011年

+1。私はオーストリアに住んでいます。ここではドイツ語を話しますが、私のドイツの同僚の典型的なコーディングスタイルは、私のオーストリアの同僚とは根本的に異なります。
user281377 2011年

0

自分の母国語は、コーディング方法に影響を与えません。ただし、ほとんどのプログラミングブック、ブログ、SOなどのQAサイトは英語で書かれていることが多いため、英語を理解できることは非常に重要です。

ただし、文化の違いが要因になる場合があります。異なる国の大学は異なる視点から教えるかもしれません。一部の国では、他の国よりも機敏な動きが強い場合があります。たとえば、日本の工場は無駄のない製造で知られ、多くの人が模倣しようとしていますが、根本的な根本的な価値を理解していないために失敗しています。


0

教育(質よりもそのスタイルを意味する)の方がはるかに強い要素だと思う。基本的な数学(かなり普遍的だと思われる)でさえ、問題解決のような無形で曖昧なものは言うまでもなく、世界中で完全に異なる方法で教えられています。

したがって、言語の影響がある場合(個人的には自分の経験に基づいて疑っています)、それは教育のスタイルに隠れています。

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