ホームページ  >  記事  >  バックエンド開発  >  Go 言語はオープンソースですか?

Go 言語はオープンソースですか?

青灯夜游
青灯夜游オリジナル
2022-11-29 18:42:496736ブラウズ

Go 言語はオープンソースです。 go 言語は 2009 年 11 月にオープン ソース プロジェクトとして正式に発表され、Linux および Mac OS X プラットフォームで実装されましたが、その後 Windows システムでの実装が追加され、BSD オープン ソース プロトコルが採用されました。 BSDオープンソースライセンスは、ユーザーが自由に使用したり、ソースコードを改変したり、改変したコードをオープンソースまたはプロプライエタリソフトウェアとして再公開したりすることができる、非常に自由なライセンスです。

Go 言語はオープンソースですか?

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

go 言語 -- オープン ソース プログラミング言語


Go (Golang とも呼ばれる) は、Google によって開発された、静的に強力に型付けされ、コンパイルされ、同時実行される型です。 . そしてガベージコレクション機能を備えたプログラミング言語。

Robert Griesemer、Rob Pike、Ken Thompson は 2007 年 9 月に Go の設計を開始し、その後 Ian Lance Taylor と Russ Cox がプロジェクトに参加しました。 Go は Inferno オペレーティング システムに基づいて開発されています。 Go は 2009 年 11 月に正式に発表され、オープン ソース プロジェクトとなって Linux および Mac OS X プラットフォームに実装され、その後 Windows システムでの実装が追加されました。

簡単に言うと、Go 言語はオープンソースであり、BSD ライセンスを採用しています。

BSD オープンソース契約は、ユーザーに大きな自由を与える契約です。自由に使用したり、ソース コードを変更したり、変更したコードをオープン ソースまたはプロプライエタリ ソフトウェアとして再リリースしたりすることができます。 BSD プロトコルを使用するコードを公開する場合、または BSD プロトコル コードに基づいて独自の製品の二次開発を行う場合は、次の 3 つの条件を満たす必要があります。ソース コードが含まれる場合、ソース コードには元のコードの BSD ライセンスが含まれている必要があります。

  • バイナリ クラス ライブラリ/ソフトウェアのみを再配布する場合は、クラス ライブラリ/ソフトウェアのドキュメントおよび著作権宣言内の元のコードに BSD プロトコルを含める必要があります。

  • オープンソース コードの作成者/組織の名前、および元の製品の名前をマーケティング目的で使用しないでください。

  • BSD コードではコードの共有が推奨されていますが、コード作成者の著作権は尊重される必要があります。 BSD は、ユーザーがコードを変更して再配布できるほか、BSD コードを使用または BSD コード上で開発した商用ソフトウェアをリリースおよび販売できるため、商用統合に適したプロトコルです。多くの企業は、オープンソース製品を選択する際に BSD プロトコルを好みます。これは、これらのサードパーティ コードを完全に制御でき、必要に応じて変更または再開発できるためです。

言語説明に行くGo 言語はオープンソースですか?

2007 年、Google の主任ソフトウェア エンジニア、ロブはうんざりしていました。 C の苦しみを抱えたパイクは、Robert Griesemer と Ken Thompson という 2 人の才能ある人材を集め、C に代わる新しい言語を作成することにしました。それが Golang です。 21 世紀に登場した GO 言語は、思ったように C を置き換えることはできませんが、C に近い実行性能、解析的な言語開発効率、完璧に近いコンパイル速度により、世界中で人気を集めています。特にクラウドプロジェクトではGolangを使って開発されることが多く、Golangは古くから人々の心に深く根付いていると言えます。歴史的な負担のない新しいプロジェクトには、Golang が最良の選択かもしれません。


GO 言語の父として知られるロブ・パイクは、GO 言語に同意するかどうかは、「少ないことは多いこと」、「少ないことは少ないこと」に同意するかどうかによって決まると述べました (「少ないことは多いこと、少ないことは少ないこと」少ない)。 Rob Pike は、GO 言語の設計哲学全体を非常にシンプルな方法で要約し、シンプルさと実用性を最大限に体現しています。


GO 言語は、C のシンプルさとパフォーマンスを備えているだけでなく、21 世紀のインターネット環境におけるサーバーサイド開発に役立つさまざまな実用的な機能を備えているため、GO 言語は 21 世紀の C 言語と呼ばれています。開発者は言語レベルで必要なものを簡単に入手できます。

Go 言語は、2009 年に Google がリリースした 2 番目のオープンソース プログラミング言語です。 Go 言語は、マルチプロセッサ システム アプリケーションのプログラミング用に特別に最適化されており、Go を使用してコンパイルされたプログラムは、C または C コードと同じくらい高速で、より安全で、並列プロセスをサポートします。

1. 開発チーム

GO言語開発キャンプはかつてないほど強力と言え、主要メンバーが多数在籍コンピュータ ソフトウェア業界で、コンピュータ ソフトウェアの開発に大きな影響を与えた歴史上の人物。ベル研究所の Ken Thompson は、B 言語を設計し、Unix オペレーティング システムを作成しました (最初は B 言語で実装されました)。その後、Unix の開発中に、デニス リッチーと C 言語を設計し、C 言語を使用して再構築しました。言語、Unix オペレーティング システム。デニス・リッチーとケン・トンプソンは Unix と C 言語の父として知られており、コンピューター ソフトウェアの開発に対する顕著な貢献が認められ、1983 年にチューリング賞を共同で受賞しました。同じくベル研究所のロブ・パイクは、Unix チームの重要なメンバーです。彼はリンボ言語を発明し、ケン・トンプソンと共同で UTF-8 エンコーディングを設計しました。彼は、『Unix プログラミング環境』と『プログラミング』の著者の 1 人です。練習する"。

2. Go 言語の機能

  • 自動ガベージ コレクションにより開発の難易度が軽減されます
    メモリとリソースの管理は常に非常にイライラする問題です。他の言語 (C や C など) では、このメモリは使用前に割り当てられ、使用後に解放される必要があるため、ちょっとした見落としによってメモリ リークが発生し、プログラムやシステムがクラッシュする可能性があります。 Go 言語の最新のガベージ コレクション メカニズムにより、開発の難易度が大幅に軽減され、興味のないメモリ管理はプロのコンパイラに任せられるため、プログラマーはより興味深いことに集中できるようになります。

  • 関数の複数の戻り値をサポート
    現在、Python を除く主流言語は基本的に関数の複数の戻り値をサポートしていませんが、開発者がこれを必要とする場合が多くあります非常に特徴があります。 Go 言語の複数の戻り値関数を使用すると、開発者は複数の値を返すためだけに特定の値を定義する必要がなくなります。 defer キーワード これは標準エラー処理プロセスに使用され、例外のスローとキャッチを完了するための組み込み関数パニックおよびリカバリを提供します。 C や Java などの言語の例外キャッチ メカニズムと比較して、

    Go 言語のエラー処理メカニズムはコード量を大幅に削減でき、開発者は大量の try-catch を追加する必要がなくなりました。プログラムの安全性を目的としたステートメントです。
  • Golang は、try...catch などの構造化例外解決メソッドをサポートしていません。これは、コード量が増加し、悪用される可能性があると考えられるためです。例外がどんなに小さくてもスローされます。 。 golang が提唱する例外処理メソッドは次のとおりです。


    通常の例外: 呼び出し先はエラー オブジェクトを返し、呼び出し元はエラー オブジェクトを決定します。
    重大な例外: 割り込みパニック (0 による除算など) を指し、遅延...回復...パニック メカニズムを使用してキャプチャおよび処理されます。重大な例外は通常、golang によって内部的に自動的にスローされ、ユーザーが積極的に例外をスローする必要がなく、従来の try...catch があらゆる場所に記述される状況を回避します。もちろん、ユーザーは、panic(‘xxxx’) を使用して積極的にスローすることもできますが、これにより、このメカニズムが構造化例外メカニズムに退化します。

    • 同時プログラミング
    • Go 言語は、同時プログラミングという点では、ほとんどの言語よりもはるかに単純です。これは、その最大のハイライトの 1 つであり、そのエントリーでもあります高同時実行性および高パフォーマンスのシナリオにおける重要な交渉の材料。
    従来のマルチプロセスやマルチスレッドとは異なり、golang の同時実行単位は goroutine と呼ばれるコルーチンです。
  • 今日のマルチコア時代では、同時プログラミングの重要性は自明です。もちろん、多くの言語はマルチスレッドおよびマルチプロセスプログラミングをサポートしていますが、残念ながら、その実装と制御はそれほど簡単で楽しいものではありません。 Golang との違いは、言語レベルがコルーチン (ゴルーチン) の同時実行をサポートしていることです (コルーチンはマイクロスレッドとも呼ばれ、スレッドに比べて軽量、低コスト、高パフォーマンスです)。操作は非常に簡単です。キーワード (go) コルーチンの開始に使用され、同じマシン上で数千のコルーチンを開始できます。


  • ネットワーク プログラミング
    golang はインターネット時代に誕生したため、本質的に分散型であり、その具体的な現れの 1 つは、豊富で便利なネットワーク プログラミングを提供することです。ソケットの net.Dial (tcp/udp に基づいており、従来の connect、listen、accept、その他のインターフェイスをカプセル化)、http の http.Get/Post()、rpc の client.Call('class_name.method_name', args) など、&返信)など。

  • コンパイル
    コンパイルされた Go プログラムを実行するには、Java の jdk や js のノードなどの実行環境を追加インストールする必要はありません。同時に、Go はネイティブのクロスコンパイル サポートを提供します。 、クロスコンパイル このプラットフォームは、開発と展開に非常に便利です。

    もちろん、コンパイルと実行も操作効率の向上を実現するのに簡単ですが、この点に関して迷信深いわけにはいきません。ますます多くの「解釈された」プログラミング言語の動作環境が JIT をサポートし始めており、Go のようなコンパイルは、パフォーマンス上の利点が目立たなくなります。


  • 3. Go 言語の使用シナリオ

Go 言語の特性とその設計本来の意図を考慮すると、Go 言語はサーバー プログラミング言語であり、ログの処理、データ パッケージ化、仮想マシン処理、ファイル システム、分散システム、データベース エージェントなどに非常に適しています。ネットワーク プログラミングの観点からは、Go 言語は Web アプリケーション、API アプリケーション、ダウンロードで広く使用されています。データベースやクラウドプラットフォームの分野では、現在、海外のクラウドプラットフォームの多くがGoを使って開発されています。

サーバー プログラミング。これまで C または C を使用してこれらの作業を行っていた場合、ログ処理、データ パッケージ化、仮想マシンなどの作業には Go を使用するのが非常に適しています。処理、ファイルシステムなど。

  • 分散システム、データベース エージェント、ミドルウェアなど (Etcd など)。

  • ネットワーク プログラミング。この領域は、Web アプリケーション、API アプリケーション、ダウンロード アプリケーションなど、現在最も広く使用されています。Go の組み込み net/http パッケージには、基本的に通常私たちが使用するネットワーク機能が統合されています。全て実現しました。

  • データベース操作

  • クラウド プラットフォームの開発 現在、多くの海外クラウド プラットフォームで Go 開発が使用されています。

  • サーバー側サービスのビジネス ロジックを実装し、C、Java、Ruby、Python、Php の優れた代替手段となります。また、同時実行性の高いミドルウェアの実装にも使用できます。

    Go 言語と他のオープンソース言語の比較


    • 開発効率 GO 言語は使いやすいおよびコードの説明 効率が高く、コーディング標準が統一されており、すぐに開始できます。

    ##1. Go 言語設計の本来の意図

    開くgo 05. Go 言語と他の言語の比較

    参考URL: https://studygolang.com/articles/24885

    Go はインターネット時代の C 言語になることを目指しています。

    ほとんどのシステムレベル言語 (Java や C# を含む) の基本的なプログラミング哲学は C に由来しており、C のオブジェクト指向アプローチをさらに発展させています。しかし、Go 言語の設計者は異なる見解を持っており、C 言語は学ぶ価値があると信じています。 C 言語の根強い人気の根源は、そのシンプルさです。したがって、Go 言語は非常にシンプルです。 Go は大規模システムを開発する人によって、また開発者のために設計されました。言語設計を研究するためではなく、エンジニアリングの問題を解決するためのものです。プログラミングをより快適で便利にするためのものです。 **

    ただし、多くのエンジニアが C 部門出身であるなど、当時の Google の内部事情を考慮すると、新しく設計された言語は習得しやすいものでなければならず、できれば C に似た言語でなければなりません。言語は 20 年間新しい言語がなかったので、新しく設計された言語は最新のもの (組み込み GC など) およびその他の状況でなければなりません。最後に、実践的な経験に基づいて、目標に向かって Go 言語を設計しました。

    2. Go 言語と JAVAコンパイル言語、中程度の速度 (2.67 秒)、

    現在Taobao、JD.com などの大規模な Web サイトのほとんどは Java で書かれています。その主な特徴は、安定性、優れたオープンソース、独自の記述仕様セット、適度な開発効率であり、現在最も主流の言語です。

    3. Go 言語と C/C

      C
    • 実行速度は速く (4.28)、学習の難易度は中程度で、開発速度は中程度です。ただし、C# には多くの欠点があるため、JD.com や Ctrip などの大規模 Web サイトの前身はすべて C# で開発されていましたが、現在は Java に移行されています。


    • C/C
    • 既存のプログラミング言語の祖先であり、他のすべての言語はそこから生まれました。最速の実行速度は比類のないものです。しかし、これは作成が最も複雑で、開発が困難です。


    • 言語の特徴という点では、Java と C は大きく異なりますが、go と C は近いものです。

    4. Go 言語と Python2019 年に Python、golang、Java、C のどれを選択するか?

    参考URL: https://zhuanlan.zhihu.com/p/65177007

    比較学習: Golang VS Python3
    参考URL: https://zhuanlan.zhihu.com/p/65613337

    Golang と Python はどちらも、現在、それぞれの分野で最も人気のある開発言語の 1 つです。

    Golang の効率的で使いやすい構文は多くのバックエンド開発者の支持を得ており、同時実行性の高いネットワーク プログラミングに最も適した言語の 1 つです。

    言うまでもなく、TIOBE ランキングにおける Python の永住者トップ 10 は現在、トップ 5 内で安定しています。機械学習、AI、データ分析の分野で学習が必須の言語となっています。

      Python と比較すると、インタプリタ言語とコンパイル言語の実行速度が同じではないため、Go は
    • パフォーマンス

      の点で明らかに有利です。さらに、go は構文が簡潔で、型システムの設計が Python よりも優れています。

    • パフォーマンスは強力ですが、
    • 開発効率

      は Python などの動的言語と比べても劣りません。通常、ネイティブ Python アプリケーションよりも 1 桁高く、ボトルネック サービスの作成に適しています。メモリ使用量も非常に経済的です。

    #Python
    スクリプト言語、最も遅い (258 秒)、コードが単純、学習の進捗が短く、開発速度が速い。 Douban は Python で書かれています。 Python の有名なサーバー フレームワークには、django や flask などがあります。ただし、Python は大規模なプロジェクトでは安定していないため、Python を使用していた一部の企業は後に Java に移行しました。


    【関連する推奨事項:
    Go ビデオ チュートリアル

    ]

以上がGo 言語はオープンソースですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。