プログラミングによって思考を論理的に表現する方法





プログラムは、埋め込まれた一連のコマンドのみを実行でき、それ以上は実行できないと広く信じられています。 これは本当にそうですか?



MIT Media Labの創設者の1人であるMarvin Minskyは、彼の記事の 1つでこの質問をしてます。 彼は、このプログラムは厳密な規則と指示のセットに過ぎないという神話を払拭しようとしています。 ミンスキーは次のように書いています。「この誤った考えは、人々がフォームをコンテンツと混同するという事実に起因します。



1964年にパロアルトリサーチセンターの従業員であるダニエルボブロウが開発したSTUDENTプログラムは、代数の学校問題を次の形式で解決しました。



マーシャがアーニャと同じくらい古いとき、マーシャはアニより2倍年上でした。 マーシャが24歳の場合、アーニャは何歳ですか?



このプログラムは、問題から一連のデータを多少正確に抽出し、それに基づいて方程式を構成および解決できるため、ほとんどのタスクに対処します。



さらに、ミンスキーは別の一般的な誤解に注意を向けています。 当然、プログラムを作成するときは、その構文を厳密に守る必要があります。 しかし、これはあなたのプログラムが何をするかを完全に理解しているという意味ではありません。



Fortranでプログラムを作成していて、既存のプロシージャを呼び出す場合は、GO TOなどの厳密に固定されたコマンドのいずれかを使用する必要があります。 別のチームに置き換えることはできませんが、プログラム内の任意の場所に移動するために使用できます。つまり、特定の行動の自由があります。



さらに悪いことに、そのような深刻度の理由がコンピューター自体にあると考えている場合。 実際、その理由はプログラミング言語にあります。 プログラミング言語の本質は、思考をコンピューターが理解できるゼロとゼロのセットに変換することです。つまり、言語は、プログラマーが任意の、場合によっては最も複雑なアイデアを表現できる手段です。



Sepir-Whorf 理論を思い出すことが適切であり、それに従って、使用する言語が思考を決定します。 この理論はプログラミング言語に適用されます。 プログラミング言語はツールであり、さまざまなタスクのためにさまざまなツールを使用します。



テスラトラクター、自転車、車は乗り物ですが、それらは異なる目的に使用されます。 言語でも同じです。 RubyとJavaScriptはサイトの作成に最適であり、JavaとC ++は取引アルゴリズムの作成によく使用されます。PythonとRは統計タスクと情報処理で優れた仕事をします。



多くの場合、言語は、現在のタスクに従って、利便性、安全性、および輸送のような速度に基づいて選択されます。 したがって、通常、私たちは自分に最も適した言語を選択します。 一部の開発者は柔軟性のためにRubyを選択し、他の開発者はJavaの厳密さを好む。 しかし、オブジェクト指向プログラミングを好まない人もいることがあります。これらの人々は、手続き型言語のメソッドをより多く使用したからといって、その利点を利用していません。



このように、言語の機能は本当に私たちの思考を制限します。 しかし、私たち自身がこれらの制限を克服できます。 たとえば、「cons」、「sexp」、「car」、「cdr」などのLispの式には、他の多くの言語で類似物がない場合があります。 それでも、Lispはこの言語の枠組みの中でアイデアを表現する自由を与えてくれます。



デザインパターンのは、C ++で考えを表現する方法を示しています。 本のパターンの半分以上は、言語の構造を変更せずに表現できるため、Lispにはありません。 プログラミング言語は私たちの思考のコースを形成し、それぞれが独自の方法で形成されていることがわかります。



これを確認するには、同じプログラムを異なる言語で記述し、どのような結果が得られるかを確認するだけで十分です。 次に、プログラムをある言語から別の言語に翻訳します。 同じLispとC ++など、大幅に異なる言語を選択する必要があるという事実にもかかわらず。 その結果、言語はすべての考えを表現するものではないことを理解できますが、最も重要なことは、実装しやすいものと困難なものを評価できることです。



すべての言語は、ほとんどすべての人間の考えやアイデアを表現できるという事実によって統一されています。 コンピューターの教室にUSBフラッシュドライブを常に置いている生徒は、Pythonでクラウドにファイルを保存するためのアプリケーションのクライアントとサーバーの部分を書くことで問題を解決できます。 そのため、たとえば、Dropboxが登場しました。



Pythonテーマを続けると、それに書かれたオープンソースのDjangoプロジェクトを思い出すことができます。 2003年、ワールドオンライン通信社は、開発者の時間を節約するWebフレームワークの開発を開始することを決定しました。 2年後、プロジェクトはオープンになりました。 Pythonはシンプルであり、最も重要なことは、開発者が実用的なプロトタイプをすばやく作成できることです。



したがって、多くの場合、スタートアップで使用され、過去数年間の人気は天国にまで成長しました。 その他のPython製品には、BitTorrent、MyPait、MoinMoinなどが含まれます。 この言語は、あなたのアイデアを提示するのに役立つJavascriptで補うことができます。 その結果、Python + Javascriptバンドルは、ビジネスアイデアの実装と表示、およびそれらのスケーリングに最適です。







元Microsoft社員のマイク・ボロジンは、Business Insider とのインタビューで、あなたの考えを表現する能力の重要性について語っています。 プログラマーは、(プログラミングに加えて)最も普通のアイデアでも書面で正しく表現できなければなりません。



これは、経営陣とより効果的にコミュニケーションするだけでなく、彼らの仕事の結果に対する権利を主張するのにも役立ちます。 ボロジンは、ある日、彼らが仕事への貢献を認めなかったことを思い出します。「私はそれが私の考えだと主張し、彼らはそれに気づかずにはいられないことを知っていました。」 アイデアをより明確に提示することで、このような状況を回避できます。



さらに、優れたソフトウェアを作成する場合は、おそらく他の人とより多くのコミュニケーションを行う必要があります。 Bolodzinによると、良い結果を示した場合、通常はJavaまたはObjective Cで書くのと同じくらい母国語で書く必要があります。これを行うには、定期的に書く習慣を身に付けるだけで十分です。



PSイベントでは定期的にこのような(およびその他の)問題を分析します。創業者は経験を交換し、同僚や専門家に助けを求めることができます。 ここでは、全国で実施しているセミナーのカレンダーを見つけることができます。



トピックに関する追加の読み物として、Habréに関する2つの出版物:






All Articles