見出し画像

Go言語をちょっと触って調べてみた!

友人が月曜日、「Goいいかも!」と言っていて、かつて私自身が仕事で使っていたC言語にも似ているとも書かれていたので、面白そうだなと思い週末ちょっとコードを触ってみたり、特長を調べたりしてみました。


1. 使った教材

友人が紹介していた以下。ちょっと視聴してみると、25年前位に一応仕事で使っていたC言語とかなり似ていて、とっつきやすい!

かつていまいちちゃんと分からなかったメモリ確保・ポインタ・アドレス・値渡や参照渡も改めて理解!また、C++のような継承がないのも私にはGood!無名関数自体を戻り値で返す関数とかちょっと複雑だけど面白い。テストを自動で作る機能もあるのか。。ただ、並行処理のところに入ると、素人にはなかなか難しくざっと流し聞き。

また、英語の勉強かねて以下も少しだけ視聴。

2. C言語・Go言語・Pythonの比較

Go言語がどんな特長があるのか、昔使ったC言語、最近よく使われているPythonとの比較において知りたくなり、ChatGPTに聞いてみたところ、こんな感じ。

(私の質問)C言語とGo言語、Pythonの文法的な違い、性能や用途上の違いを表でまとめてください
(ChatGPT回答)
以下の表は、C言語、Go言語、Pythonの文法的な違いと、性能や用途上の違いをまとめたものです。これらの違いを考慮して、プロジェクトの要件に合った言語を選択することが重要です。

C言語、Go言語、Pythonの比較(by ChatGPT.色付けは私自身)

Go言語は、C言語に似ている構文で、高速で並列処理ができ、システムやサーバー・クラウドに利用しやすいが、Pythonに比べるとやや難易度が高くコミュニティ規模が小さくエンジニアはまだ少ないよう。(確かに私も最初Pythonを知ったときに、変数定義も不要、ポインタもなく、なんて初心者に易しい言語なんだろうと思ったのですが、GoはCに似ているのでそこはちょっと難易度が高いところなんだろうなと思いました)

3. GoとPythonの併存

また、GoとPythonそれぞれ部分的に使うことで問題ないかちょっと気になり以下も、ChatGPTに聞いてみた。

(私の質問)GoとPythonを組み合わせてコーディングすることで問題は起こりませんか?(バッグエンドの中同士、バングエンドとフロントエンド間で)

(ChatGPT回答)

GoとPythonを組み合わせてコーディングすること自体に問題はありませんが、いくつかの考慮事項があります。
1. 相互運用性の確保: バックエンドのGoとフロントエンドのPython(たとえば、DjangoやFlask)を組み合わせる場合、データのやり取りやAPIの定義など、両方の言語間での相互運用性を確保する必要があります。通信プロトコル(JSONやRESTなど)を使用して、両者が互いに通信できるようにします。
2.メンテナンスの複雑性: 複数の言語を使用することで、コードベースが複雑になり、メンテナンスが困難になる可能性があります。特に、チームメンバーが異なる言語の専門知識を持っていない場合、問題が発生する可能性があります。
3.性能の最適化: システム全体の性能を最適化するために、適切な言語を選択することが重要です。たとえば、高負荷のバックエンド処理はGoで実装し、データ処理や分析はPythonで実装するなど、それぞれの言語の強みを活かすことが求められます。
4.セキュリティの考慮: 異なる言語で開発されたコンポーネントを組み合わせる場合、セキュリティ上の脆弱性が発生する可能性があります。特に、データのやり取りや入力の検証など、セキュリティに関連する部分に注意を払う必要があります。

総括すると、GoとPythonを組み合わせてコーディングすること自体に問題はありませんが、十分な計画と検討が必要です。また、適切な設計とコミュニケーションを通じて、開発チーム全体が協力して問題を解決することが重要です。

by ChatGPT

併存させる場合、Go言語の高速処理などのメリットを生かしつつ、セキュリティ面、ソースコードの管理、エンジニア数含めた開発体制面を担保できるかが、ポイントになりそう。


この記事が気に入ったらサポートをしてみませんか?