言語学習初心者は1 ---行く言語の重要な機能と開発に行きます

初期の言語発達プログラミング言語ゴーの1.1及ぼす影響

言った「21世紀のC言語」として、囲碁言語は薄い空気から作られていないが、およびC ++、JavaやC#Cは、同じ部署に所属します。つまり、設計者はまた行くの言語にプログラミング言語の他の部分の本質を学んだだけでなく。

声明とパッケージデザイン面では、言語を行くパスカル、のModulaとオベロンシステム言語に影響を与え、同時原則の設計では、理論によって同じから言語を行くアントニー・ホーアのCSPに影響を与える(Squentialプロセスを伝える一連の処理を伝える)リンボのとNewsqueak実際はいくつかの経験、およびアーランと同様のメカニズムの使用を描きます。

それはBSDライセンスを使用していますので、これは、完全にオープンソースのプログラミング言語ですので、誰でも任意の手数料を支払うことなく、商用ソフトウェアを開発することができます。

主流の開発者はC言語での文法のGo言語の授業のために感じることができる可能にするために非常に友好的かつ簡単に移行ですが、それが大幅に構文を簡素化しますが、C / C ++の構文があるよりも、それらをより簡潔になりますそして、きれい。同時に、ゴー言語も囲碁の言語を使用するときに非常に使いやすい感じPythonとRubyの開発者を使用して作る動的言語の特性のいくつかを持っています。

下の図は、いくつかの他のプログラミング言語のGo言語の影響を示していますインパクト図1.3のGoプログラミング言語の他の言語で

なぜ1.2プログラミング言語を作成します

  • 人々はそのギャップを補うために、新しいシステムプログラミング言語を必要とするので、C / C ++は、コンピュータ開発の開発のペースに追いつくことができない、十年以上は特にで、時代に沿ったもので主流のプログラミング言語システムを表示されませんでしたコンピュータ情報時代。

  • パソコンのコントラスト性能を向上させ、ソフトウェアの開発は、アプリケーションのボリュームは常に拡大し続けている間、緊急の必要性1があり、十分に速くまたはハードウェアの開発(そこに多くのプロジェクトがあり、失敗した)よりも成功を開発しているとみなされていません現状を打破するために、より高いレベルの概念と低レベルの言語。

  • 言語が登場する前に行くと、開発者は常にどのような高速な実行速度を使用することがありますが、速度はコンパイル言語理想的ではない、非常に難しい選択に直面しています(例:C ++)、またはコンパイラを使用すると、高速ですが、言語の実装では効率が悪いです(例:.NET、Java)の、以下の困難開発するが、それ一般的には動的言語の実行速度?高速でコンパイル、効率的な実行、開発のしやすさ:明らかに、最適なバランスを達成するために、これらの三つの条件の間に言語を移動します。

1.3ゴー言語の開発目標

囲碁言語の主な目的は、開発のしやすさの静的および動的言語の安全性と効率性の言語が有機的にプログラムをより楽しくなるように、完璧なバランスを達成するために組み合わせることではなく、ラインに厳しい選択に苦しんで前にあります。

そのため、言語を行くタイプセーフとメモリの安全なプログラミング言語です。ゴー言語はまだポインタを存在しますが、ポインタ演算を許可していませんが。

もう一つの目標のGo言語は、より良いマルチコアを利用するネットワーク通信、同時実行性と並列プログラミングのための優れたサポートで、Googleの内部使用のためにある多数のコンピュータを、分散は非常に重要です。デザイナーゴルーチンこの軽量スレッドの概念によって、この目標を達成するために、その後、チャネルを介して様々なゴルーチン間の通信を実現します。彼らは、セグメンテーション・スタックは、スレッドごとに多重化技術を成長し、ゴルーチン自動化されました。

また、この機能では、この領域に存在する既存のプログラミング言語の不足を補う、マルチコア、マルチプロセッサコンピューターの重要性の高まりをサポートするだけでなく、明らかに囲碁言語の最も強力な部分です。

言語を別の非常に重要な特徴は、そのビルド速さ行く(の速さコンパイルされ、マシンコードにリンク)通常の状況下では、数秒に、わずか数百ミリ秒のプログラムを構築するために必要な時間を。グーグルのインフラを構築するために広範囲に使用C ++、基本的には非常に満足できない悪夢に構築するためのC ++のうちは間違いないとして。これは、大幅に開発者の生産性を向上するだけでなく、プログラム上で構築する際に待機している多くの時間を無駄にすることなく、よりコンパクトなソフトウェア開発プロセスのコード・テスト・フェーズになりません。

依存関係の管理は、今日のソフトウェア開発の重要な部分ですが、C言語の「ヘッダファイル」という概念は、依存関係のために、より多くのにつながったと大型プロジェクトは数時間かかることができ構築になりました。すぐにプログラミング言語をコンパイルすることができ、厳密な、簡潔な依存関係解析システムのための必要性が高まっています。これは、囲碁言語モデルを使用して、パッケージの根本原因であるこのモデルは、厳格な検査機構の依存関係によって構築された手順をスピードアップするために、非常に優れたスケーラビリティを提供します。

20秒よりも一般的に少ない全体のコンパイル時の言語の標準ライブラリを移動し、他の定期的なプロジェクトがコンパイルを完了するために、唯一の半秒の時間を必要とします。さらに高速でもコンパイルCまたはFortran言語よりも、このコンパイル電光石火の速さは、このリンクのコンパイルを作ることは、ソフトウェア開発における開発者のために、もはや問題ではありません。これに先立ち、C ++言語のように静的なハイライトとして、迅速な動的言語のコンパイラ自体は、一般的には非常に長いコンパイルとリンク作業です。静的言語囲碁言語と同じで、優れた構築する独自の機構により、プログラムを正常に構築するプロセスは、スクリプト言語とそのようなの効率的な開発のような動的言語の能力を、無視できるようになる作り、欠点を取り除きます。

また、言語はまた、実行速度のC / C ++と比較することができます。

メモリの問題(多くの場合、メモリリークと呼ばれる)には、長い間、囲碁言語設計者は、メモリ管理は、開発者が考慮する必要がある問題ではないはずだと思うC ++開発者に関連付けられています。他の静的言語のような移動言語がネイティブコードを実行するが、それはまだ( - スイープアルゴリズムの単純なマークを使用して)迅速かつ効率的なガベージコレクションを達成するために、仮想マシンの意味で実行されているにもかかわらずそう。

ガベージコレクションは、達成することは容易ではありませんが、それは同時実行アプリケーションの将来の発展の重要な一部とみなされるであろうが、言語設計者は、まだこの困難な作業を完了します。

ゴーは、実行時に言語関連の操作を反映させることも可能です。

使用して、go install簡単にサードパーティ製のパッケージ上に展開することができます。

また、言語はまた、過去に急速に移行できるソフトウェアを開発したC言語(3.9節)で記述された膨大なライブラリファイルによる呼び出しをサポートしています。

1.4設計原理を導きます

キーワード(25)の数を減らすことにより、符号化処理の混乱と複雑さの言語を簡単にするために移動します。コンパイルプロセスにおけるこれらのキーワードは、数としても、シンボルテーブルを解決する必要がないため、クリーンきちんとして簡潔な構文は、コンパイル速度プログラムを増やすことができます。

これらの分野での仕事も、ジャワの簡素化の程度と比較することができ、エンコーディングの負荷を軽減することです。

それは開発者が読んで理解することは非常に簡単コーディングすることを可能にする問題を解決する唯一の1〜2の方法を提供しているため、言語はミニマリスト、アーティストのセンスを持って行きます。我々はすべて知っているように、コードの可読性が最も重要なソフトウェアエンジニアリングの一部である(翻訳者注:コードはポスターを書かされ、見るためにマシン宛ではありません)。

デザインコンセプトは、他の概念には確立されていないそれらの間の基本的な概念と概念の複雑さの一部は、独立しているので、そうではありません。

言語にコーディング標準の完全なセットを行く、あなたはゴー言語エンコーディングの指定ページを表示することができます。

それはコーディング標準の実装によって定義されていないとしてルビー。要件は、GCとgccgo(2.1節)とすることができ明確なコーディング標準を持つ言語として、よりよいコーディング標準は、言語自体に大きな助けを果たしている異なるコンパイラの仕事、してコンパイルされます。

LALR文法の標準言語を行く、あなたはまたにすることができますsrc/cmd/internal/gc/go.yビュー、この標準は、コンパイル時に解決を助けるために文法のシンボルテーブルを必要としません。

1.5機能言語

並行プログラミングを達成するために(手続きや構造)基本的に言語を移動します。

言語のクラスと継承の概念がないため移動し、それJavaやC ++には、同じようには見えません。しかし、それは、インターフェイス(インターフェイス)での多型の概念によって達成されます。明確かつ理解しやすい言語軽量型システムを持って行き、タイプのレベルとの間言いませんでした。そこで私たちは、これがハイブリッド言語であると言うことができます。

伝統的なオブジェクト指向言語では、オブジェクト指向プログラミング技術は非常に肥大化している、彼らは型の階層によって巨大な複雑なパターンを構築するために常にあり、プログラミング言語に反しては、生産性を向上することを目指すべきです。

メンバ関数を行くそれらの使用方法は非常に柔軟性があり、基本的な言語です。第6章では、関数型プログラミングに行くの基本的な概念が表示されます。

静的型付け言語を行くので、プログラムの実行速度が非常に高速で、地元の建築基準に加えることにより、タイプセーフな言語です。

強く型付けされた言語、暗黙の型変換が許可されていないとして、心の中で原則を維持する:すべてのものが明示されていること。

言語事実を行く、動的言語(キーワードのいくつかの機能がありvar、それはJavaと.NETの世界に逃げたように)、とPythonを使用し、ルビー、PHPやJavaScript開発者は、非常に魅力的です。

たとえば、Linuxを実行しているコンピュータ上で実行するWindows上で動作するアプリケーションを開発することができ、言語サポートクロスコンパイラを移動します。これはあっても、そのソース・ファイル・フォーマットは、UTF-8エンコーディングを使用している、完全なプログラミング言語のUTF-8だけではUTF-8エンコーディングを使用して扱うことができる文字列に反映されていない支持された第1のドアです。ゴー言語は、真に国際的でした!

言語の1.6を使用

ゴーシステムのプログラミング言語は、ストレージクラスタ又は類似の巨大な中央サーバに搭載されているWebサーバーに適用されるように設計されました。高性能分散システムの分野では、他のほとんどの言語よりも囲碁言語は確かに高い開発効率を持っています。これは、サーバー側のゲームの開発のための最高のものである超並列、サポートを提供します。

言語を行く、いわゆる複合イベント処理(CEP)、超並列、高い性能と抽象度の高いサポートするために必要な技術を達成するための非常に良い目標です。私たちは、物事の時代に入ると、CEPは、必然的に注目の的になります。

言語だけでなく、このような処理のために、一般的な目標を達成するために使用することができ、言語、フロントエンドの表示テキスト、または同じスクリプトを使用して、それを使用して行きます。

理由は自動ガベージコレクションとメモリ割り当ての、囲碁言語はリアルタイムソフトウェアを要求の開発のために適切ではない、ということは注目に値します。

Googleの内部の大規模な分散アプリケーションが増えて開発するのGo言語を使用し始めている、例えば、Google Earthは囲碁言語によって行われたコードの一部です。

あなたはプロジェクトが言語発達を行く、実際のアプリケーションを使用して他の組織の数を知りたい場合は、組織のページビューに移動を使用することができます。プライバシー保護の理由から、会社のプロジェクトの多くは、このページには表示されません。私たちは、言語開発した大規模なストレージ・エリア・ネットワーク(SAN)の場合に移動を使用して、第21章で説明します。

クロームOSの[移動言語で開発されたアプリケーションを実行するために使用される可能性があるローカルクライアント(NaCl)で、用ビルトインクロームブラウザの言語コンパイラを移動します。

言語はIntelまたはARMプロセッサ上で実行することができます行くので、そのような製品のネクサスファミリーとして、Androidの下で実行することができます。

Google App Engineの中言語の使用に行く:2011年5月5日、Google App Engineの上で実行されているWebアプリケーションを開発するために行くSDKの正式リリース、およびその前に、開発者は、PythonやJavaを使用するように選択することができます。これは主に、デビッド・シモンズとナイジェル・タオの努力の成果です。最新の安定版は2015年2月18日リリースで、SDK 1.9.18のゴー1.4に基づいています。囲碁言語の現在の安定版は1.4.2ゴーです。

行方不明約1.7特性

多くのプロパティは、ほとんどのオブジェクト指向言語で使用できる言語がサポートしていない行くが、それらのいくつかは、将来的にサポートすることができます。

  • 設計を簡素化するため、および関数のオーバーロード演算子のオーバーロードをサポートしていません。

  • C / C ++開発に混乱し、バグを回避するため、および暗黙的な変換をサポートしていません。

  • 別の方法で、クラスや継承のGo言語のオブジェクト指向設計(章10-11)の種類を放棄します

  • 機能のバリアント型と同様、インタフェース(11章)を使用することで達成することができるが、変異の種類をサポートしていませんが

  • これは、動的ロードコードをサポートしていません。

  • ダイナミックリンクライブラリをサポートしていません。

  • ジェネリックはサポートされていません。

  • よる  recover と、  panic 代わりに例外メカニズム(セクション13.2-3)

  • それは主張をサポートしていません。

  • これは、静的変数をサポートしていません。

あなたが行くよくある質問でページを表示することができ、これらの側面を議論するために、言語の開発チームに移動します。

1.8囲碁のプログラミング言語を使用して

あなたが他の言語(のようなオブジェクト指向プログラミング言語:Javaの、C#の、オブジェクト-C、PythonやRubyの)でのプログラミングの経験をお持ちの場合は、世界の囲碁言語を入力した後、あなたはXの言語に取りつかれようになることはできません自分自身を救い出します。異なるデザインパターンの他の言語と言語を行く、あなたが行くの言語にあなたのXの言語コードを移行しようとするときに、あなたは熟考してくださいアイデアをゼロからスタートする必要があるので、非常に失望されます。

あなたは、問題の最高点での移動の概念と分析の使用を再検討するようになっている場合は、通常、適切な言語がエレガントな解決策を行くでしょう。

1.9まとめ

ここではいくつかの涅槃のGo言語は以下のとおりです。

  • シンプル、簡単に学習します

  • 使いやすいメモリ管理、単純な構文、

  • 高速コンパイル、効率的な開発

  • 効率的な実行

  • 管理が容易な同時実行のサポート、

  • 静的タイプ

  • 標準ライブラリ、均一な規制

  • 展開の容易

  • 完全なドキュメント

  • 無料のオープンソース

 

おすすめ

転載: www.cnblogs.com/sunweiye/p/11318450.html