プラットフォームと「言語文化史」はどのような役割を果たしますか?


15

私は最近これに出くわしました数年前の記事。言語の実際の違いではなく、VBとC#を取り巻く文化の大きな違いが、C#コーダーが一般にVBコーダーより才能があることに貢献すると主張します。明らかに、それは多くの火炎戦争を引き起こし、C#ersとVBersのどちらが愚かであるかという質問には答えられません。そうは言っても、特定のプラットフォームを取り巻く文化がチームの質に貢献していると、作家は主張しています。たとえば、現時点ではJavaでアプリを開発する方が効率的ですが、Google Go開発者のチームは、Java開発者のチームよりも平均して高い能力を持っているようです。超初期の採用者であり、フロンティアハッキングの達人になること。簡単に言えば、あるプラットフォームまたは別のプラットフォームを取り巻く文化は、そのプラットフォームの平均的な開発者の品質に、もしあれば、どのような影響を与えますか?


C#対VB.NETの日ですか?

@ DeveloperArt-それは私の意図ではありません。実際、私が持っていた質問は、記事が今日非常に古くなっているように見えるという事実のために興味深いものでしたが、概念は救済可能かもしれません。この記事では、C#開発者はすべて天才のように見えます。私は1人ですから、気分が変わったとき、私たち全員が同じようにずさんなことができることを直接知っています。
モーガンハーロッカー

1
@Developer Art:私は昨日その記事を読みましたが、それがここへの回答に投稿されたリンクだったと確信しています。たぶんそれが、Plum教授がそれをヒットした理由かもしれません-1つのC#対VB.NETの質問が別の質問につながります。:-)
Carson63000

回答:


8

本当に興味深い質問です。私の個人的な意見は、それはあまりにも頻繁に尋ねられるものであり、実際には全く水を含まないというものです。

スクリプトキディ(およびそれらを雇う企業)により、選択した言語が「プログラマー」の階層の中で彼らのステータスを決定します。優れたエンジニアは、選択する言語についてあまり気にすることはできませんでしたが、与えられた問題を最も最適な方法で解決することに集中できました(明らかに最適は一般的な記述であり、多くの異なる要因に適用できます)。これがC#、VB、C ++、Python、または手書きアセンブリのいずれであっても、問題を解決するためにそのテクノロジーを使用することには明確な利点があるため、問題ではありません。

つまり、問題を解決するためにどの言語を使用するかではなく、定期的に解決する問題の複雑さを見るほうが価値があると思います。

主題に関するちょうど私の2セント:)


2
+1:さらに、何らかの形で会社の境界を超えるVB文化があるという考えはばかげています。この文化はどのようにそれ自体を保存しますか?仕事以外でのVBプログラマー間の秘密の会議?この「文化」を強化するためのVBプログラマーの「組合」または「ギルド」?数百のITショップを30年間振り回してきた私は、これまでに見た唯一の文化は純粋にローカライズされていると言えます。言語の選択は、質問で参照されるこの「他の」文化を作成しません。
-S.ロット

1
面白い。+1した場合、誰がダウン投票したのか、なぜだろうか:P
デミアンブレヒト

1
@ S.Lott:私はその時訂正します(仮定の副産物が大好きです;))。ないより多くの時間が、私は実際に時々価値があると私は:)以前に気づかれたその情報を私に提供することができます任意のフィードバック、取得せずにこのようなトピックに関するdownvotesを受けてきました
デミアンブレヒト

1
@prof:DOESの自動化は本当に彼らがどのようなショートカットを理解するために1が劣って作る、またはあなたが優れ思うだろうことができ、より効率的に同じ出力を達成するために取る、しかし?:)もちろん、これは過剰な一般化であり、正確に答えることはほとんど不可能です。Goのコーダーがより情熱的であるということについて、私はある種のフェンスにいます。Fortranに情熱を傾けている人を見つけることはできます。これでしょう、しかし、囲碁プログラマは詳細については情熱的であると信じて私をリード新しい :)良いことの私見である技術と実践、
デミアンブレヒト

1
@Prof Plum:「プラットフォーム/言語の選択は、開発者の平均的な品質とは関係ありません」。正しい。それ以外の場合はどうなりますか?何よりも、組織の文化が重要です。Google Goのコーダーは、それ自体が単なる人間です。この組織は、人々をVBに制限するか、Goの使用を奨励しています。人はすべて人です。
-S.ロット

4

これらの各言語で開発されたコードの品質は、これらの基本的な哲学に基づいており、個々の開発者には依存していません

各言語には、その言語がなぜ上手になろうとしているのかという基本的な哲学とアジェンダを持つ理由により開発されたため、各言語には文化があります。 当時存在していたものよりもものにがあります。

宗教と同様に、プログラミング言語は、言語作成者の中核となる原理と哲学に対してすでに同じ傾向を持っている人々を引き付ける傾向があります。

知覚されるソリューションの品質の例

マイクロソフトのあるキャンプでは、次のことができます。

C#の哲学は、より純粋にオブジェクト指向であり、より現代的なイディオムを促進し、それを正しく行うためにより多くの知識を必要とするため、より高品質のソリューションを提供する必要があるということです。これが、VBを介して人々を惹きつけるものです。

他のマイクロソフトキャンプ:

VBの哲学は、私が迅速に、ほとんど知識や努力なしに、誰かがボタンをクリックして有用でビジネス価値のあることをできるようなものを構築できるということです。これが、C#を介して人々を引き付けるものです。

舌と頬が言語とその哲学を引き継いでいます。

Perlの人々は、Pythonの人々が気にするのとまったく逆のことを気にする傾向があります。

Javaの人々はお金を稼ぐことに関心があります。

JVM言語(Groovy、Scala)は、Javaの言語ではなくJMVを重視します。

Microsoft固有のすべての言語(VB、C#、F#、マネージC ++)は、Windowsで収益を上げることに関心を持つ傾向があります。

Erlangの人々は、他の人々が気にする必要のないものすべてに関心を持ち、知らないことには感謝しません。

Lispの人々は、他の誰かが自分が気にしていることを気にしません。

これらのグループが関心を持っていることは、言語、その開発、およびコミュニティを形作ります。

哲学は経験とニーズによって変化します

1983年に ASMとBASICを採用しましたそれがすべてだったからです。ゲームとデモを作成したかったのですが、それらはそれを行うためのツールでした。主にデモ用のASM。

3Dレンダリングなど、空間と時間の面で重要なことを書く唯一の方法であったときに、Cを採用し、その後C ++を採用しました。ASMではなかったので、私はそれを学びました。

私はお金を稼ぐためにVBを採用しました。これはAmigaで慣れ親しんでいたScala、Director、CanDo開発環境に最も近いものでした。 迅速な開発哲学に同意しました

お金を稼ぐために、私は早くからJavaを採用しました。1999年までVBでお金を稼いでいたが、Java 1.2が安定して成熟し、それまでにWebが完全に動き始めたときに取り残された。コードを実行する場所が多くなればなるほど、コードを簡単に販売できるという点で、一度だけ書くことに同意しました。哲学。

2005年のタイムラインの後半でPythonを採用しました。これは、Javaにはなかった悩みを掻き立てたからです。Cでしか利用できないライブラリを使用するコードをすばやく作成する必要がありました。また、Javaで同じことを行うためにPythonがより高速で少ないコードだったため、迅速な Webサービスプロトタイプを作成する必要がありました。JavaがPythonのままであるため、何かが実稼働に移行しました。私はそのバッテリーが含まれていることに同意しました、単一のイディオム哲学と他のもの。

Luaを採用したのは、C ++およびJavaプログラムに軽量のスクリプトエンジンを組み込む必要があったときです。これは、JavaでJSR233をサポートする前の方法でした。私は、使いやすいフル機能のスクリプト言語を組み込むことは単純なLua哲学であることに同意しました。

2006年にErlangを採用したのは、高度な並列性の問題で大規模なスケーラビリティと比較的簡単なマルチコア実行が必要になり、クロスプラットフォームで実行できるようになったときです。**共有されていない状態、メッセージの受け渡し、不変の状態哲学に同意します。* 8

OSXおよびiOSアプリケーションの構築が必要になったとき、Objective-Cを採用しました。私は、オブジェクト指向をより良い哲学にするために、オブジェクト指向をCに正しく追加することに同意します。また、より良いお金を稼ぐために。

CouchDBの哲学に同意し、JavaScriptを使用しているため、2009年にJavaScriptを公式に採用しました。それでもDOMを処理する必要がある場合はJavaScriptが好きではありません。

私はまだ公式にLispを採用していませんが、最終的にはそうするつもりです!Lispを知らない人は、その哲学を再発明したと非難されます。


0

興味深い質問です。潜在意識レベルで答えを理解しているが、それを言葉にしようと努力している人の一人です。

これは、因果関係ループとして最もよく見られます。

この文化は、プラットフォームに魅了された開発者の「民族」構成に責任があります。その構成は、順番に「平均的な」プログラマーの資質を定義します。現在プラットフォームを使用している開発者の質は、文化や外部の認識に影響を与え、その結果、プラットフォームに参加するか、プラットフォームを離れる開発者に影響を与えます。その結果、「品質」の値が変化します。

私は特定のルールを考案しようとしてきましたが、一般化するのは難しいと思います。各プラットフォームを個別に調査する必要があります。私が行ったいくつかの観察:

  • 特定のプラットフォームが開発、拡張、改善される速度は、開発者の質と直接的な相関関係があります。新しい光沢のある機能とツールの絶え間ない流れは、熱心な開発者(平均して質の高い仕事ができる)を引き付け、絶え間ない学習努力に苛立っている保守的な心をはじきます。

  • プラットフォームが提供する制限が少ないほど、足で自分自身を撃つリスクが高くなりますが、同様に熱狂的な実験的な心を引き付けます

  • プラットフォームを使用するために理解し習得する必要があるものがより複雑になると、解決された個人を等しく引き付け、怠laな開発者を怖がらせる


この文化は企業の境界をどのように超えていますか?
S.Lott

1
@Lott Technologyは、ほとんどの場合、文化的な境界を越えています。異なるOSユーザーの間には、文化的に大きな隔たりがあります。私が知っている多くのグラフィックデザイナーやオーディオエンジニアは、Mac以外のものを使用している会社に行くのは契約違反だと思うでしょう。Macは、特にこれら2つのグループを中心に、完全に具体的な文化を育んでいます。プログラミング言語は、PhotoshopやGIMPのようなツールであるため、それらの周りに文化が構築されていることを驚くことではありません。そうでなければ、火炎戦争は起こらないでしょう。
モーガンハーロッカー

@Prof Plum:あなたの例は、ツールに基づいた「文化」に対応していません。あなたの例は正反対です。実際の文化(オーディオエンジニア)は、一般的なツールを選択します。Logic Proのすべてのユーザーがオーディオエンジニアになることを余儀なくされているわけではありません。LogicProが何らかの形で文化を生み出しているからです。あなたのコメントの例(同じ仕事->同様のツール)は、「言語文化史」がないという優れた証拠だと思います。むしろ、一般的なユースケース文化または一般的なエンドユーザーの仕事文化があります。
-S.ロット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.