これらのプロジェクトの1つにコードを提供したい–どうすれば始められますか?

ブロックチェーン専用に使用されている言語はありますか??

プログラミングの方法がわかりません–ブロックチェーンプログラミングに直接飛び込むことはできますか?

数か月前、サンフランシスコのNEO DevConferenceで4人のアクティブなNEOプログラマーのパネルをモデレートすることができました。パネルのトピックは一般的なブロックチェーンプログラミングでしたが、追加の警告により、この特定の参加者パネルは非常に興味深いものになりました。 4人のプログラマー全員が、NEOプロジェクトに取り組むために異なる言語を使用しました.

1つは古い学校のC#言語を支持し、もう1つはPythonスクリプトを作成し、3つ目は人気の高いJavascript実装を広めました & 4人目の参加者は、今後のドメイン固有のNEO言語について興奮して話し合いました.

パネル後の私には2つの考えがありました。

  1. NEOコンパイラは本格的な多言語開発をサポートしています
  2. ブロックチェーンプログラミングの学習曲線は、特に新しい開発者にとって、組織化されたリソースの不足によって残酷で非常に憤慨しています

この記事は、ポイント2に取り組むことを目的としています。このガイドの効果を最大化するには、予想される対象者を狭いニッチに縮小する必要があります。 & 特にブロックチェーンスペースに侵入しようとしているジュニアプログラマー。ベテラン開発者、プログラマー向け, & ソフトウェアエンジニアが熟読している—次のセクションはいくつかの利点を提供するかもしれませんが、それらは初歩的なものであることがわかるでしょう。上級エンジニアは、使い慣れた言語にスクロールすることで時間を最大限に活用できます, & 添付の学習リソースを分解し始めます & ドキュメンテーション.

それで、あなたはブロックチェーンプログラミングに侵入したいと思いますか?まず、ブロックチェーンプログラミングに必要なものを正確に定義することから始めましょう。.

新産業

一般的に、個人的に興味のあるトピック & あなたの価値観に合わせるのは、明確な賛同なしに何かを暗記するよりも学ぶのが簡単です。私はこの原則が適用されることを強く強調します ますます多く ブロックチェーンプログラミングなど、本質的に複雑で急速に進化する分野で。始める前に、急成長する業界でブロックチェーン開発者が直面するいくつかの課題を確認しましょう.

最初 & 何よりも重要なのは、まさに「ブロックチェーン」が行うことと行わないことの間の継続的な公の矛盾です。クリプトツイッターで時間を過ごす & 部族の暗号コミュニティがどのようになっているのかが明らかになります, & 一気に、彼らの開発コミュニティはになりました。チェックされていない部族主義は、当然、客観的なコンテンツであるべきものについての偏った会話につながり、次の開発者に難読化の別の層を追加します.

次に、プロジェクトの大部分がテストネットフェーズにあります & ライブプロジェクトは継続的に更新され、フォークされます, & ハッキングの犠牲になっているので、不完全なドキュメントを見るのは当然です & 未完成のチュートリアル。土地の敷設は急速に進化しており、一貫した反復が必要です。どのチームにとっても簡単な作業ではありません。.

最後は、ブロックチェーンプログラミングが完全に複雑であるという真の汚名です & 少なくとも次の基本的な理解を必要とする複数の交差するフィールドで構成されています:経済学、暗号化、通貨、データ構造、金融政策 & 物理。ブロックチェーンプログラミングに関連するこれらのフィールドの一部でさえ学ぶには、理解するのに十分な時間がかかります—ここにショートカットはありません.

部族主義、無計画な文書 & 複雑なファンダメンタルズ。急な上り坂のすべての警告サイン。これらの参入障壁を十分に乗り越えて自分自身をやる気にさせるために、正確に何を明確にするかを掘り下げるのに役立ちます ブロックチェーンプログラミング そもそも意味します。さらに、それは明らかにするのに役立つかもしれません…

なぜブロックチェーンプログラミングを学びたいのですか?具体的にどのプロジェクトに取り組みたいですか?どのような問題を解決しようとしていますか?

ブロックチェーンプログラミングの脱構築

熱心に取り組みたいプロジェクトをすでに知っている場合は、称賛に値します—組織のGitHubリポジトリにアクセスするか、ここで選択した言語をctrl-Fingして先読みすることをお勧めします。次のセクションは、どのプロジェクトを正確に特定できない場合に最も役立ちます & 必要なスキルセット/言語は、今後の潜在的な学習ロードマップの出発点として最も適しています.

一般に、ブロックチェーンプログラミングは3つの異なることを意味します。

  • イニシャルコインオファリング(ICO)の展開
  • スマートコントラクトまたは分散型アプリ(DAPP)の構築
  • 既存のブロックチェーンへの貢献または新しいブロックチェーンの展開

上記の3つのオプションはそれぞれ異なる言語の配列を提供するため、強く検討してください。 & 学習曲線。さらに、彼らはあなたがあなたの正確なものを明確にすることに一歩近づくのを助けるはずです 好み. 言語基準のさらなるセグメンテーションはすぐそこにあります。ただし、個人的な好みは、新しいスキルを学ぶことで自分自身をやる気にさせるためにすべてを切り札にすることを忘れないでください.

初日のソフトウェアエンジニアが、3つのタイプのブロックチェーンプログラミングすべてについて学ぶことに等しく興味を持っていると仮定すると、最も友好的な道に光を当てるために、他にどのような基準に目を向けることができますか??

  • 汎用言語とドメイン固有言語
  • 構文の読みやすさ & 学習曲線

これらの3つの基準を概説することにより、最終的に、言語のリストに適用するためのコンテキストの強固なフレームが得られます。.

汎用vsドメイン固有

質的な品質にまたがるツールの分類が明確になることはめったにありません—プログラミング言語も例外ではありません。ここでは、考えられるすべてのブロックチェーンプログラミング言語を2つの異なるカテゴリに分割します。ドメイン固有言語 & 汎用言語.

通常、ドメイン固有言語(DSL)は、設計されたコンピューター言語です。 & 特定のアプリケーションに特に適しています。汎用言語(GPL)は、その名前が適切に説明しているように、多くのプログラミングドメインに広く適用できる言語です。.

汎用言語

汎用言語は、Java、Javascript、Ruby、Cなどの聞いたことがあると思われる言語です。++, & Python。汎用言語の中で、定性的にそれらをさらに分類するための無限の方法を見つけることができます & 量的な違い & 読みやすさ、コンパイル、厳密に型指定された、フロントエンド/バックエンドなどの類似点…初めての使いやすさに関する大まかな目安は次のとおりです。

Javascript、Python, & Rubyは一般的に、Cの学習曲線が少ないため、初心者にとっては簡単です。++ & Javaは通常、箱から出して学ぶのにもっと時間がかかります.

編集者は2番目にコメントすることを控えていることに注意してください & ある言語グループまたは他のグループから始めた新参者の第3レベルの結果。これらの言語のさらなる機能については、複数の議論があります。たとえば、厳密にブロックチェーンスペースにアプローチする新しい開発者のために、ここで使用を最大化するために回避している厳密に型指定された言語を通じて、最初に変数型を理解するように新規参入者に強制します。.

汎用を選択する初心者にとっての最大の利点は、ブロックチェーンプログラミング以外の膨大な数の分野でその言語をすぐに適用できることです。残念ながら、同じコインの裏側は、シニアと直接競争する可能性が高いため、求人市場への参加を検討している新規参入者にとっては短所となります。 & 上記の汎用言語を使用した長年の経験を持つ他のドメインのベテランソフトウェアエンジニア.

ドメイン固有言語

コンテキストを提供するために、ブロックチェーンプログラミングから離れましょう。これはかなり新しいプログラミング分野ですが、新しいプログラミング分野の概念自体はそれほど新しいものではありません。最近の流行語をはるかに超えて見る必要はありません。 機械学習 これを見るために。 1つまたは複数のドメイン固有言語の自然な進化を目撃したいくつかの追加のプログラミングフィールドは、統計(R、MatLab)、データベースクエリ(SQL)、Web UI(HTML、CSS)です。.

ドメイン固有言語のブロックチェーンプログラマーは非常に需要が高く、供給もほとんどありません。これらの若い言語は、上記の3つのブロックチェーンプログラミングオプションの1つ以上を唯一の目的としており、間違いなく、キャリアと業界の配置を上陸させるための最も明確な道を提供します。.

これらの言語はブロックチェーンでゼロから設計されたため & スマートコントラクトエンジニアリングを念頭に置いて、経験豊富な開発者は他の言語からの参照の以前のフレームを再調整するのに苦労するかもしれません.

新しいスレートプログラミングの習慣を持つ新参者は、現在または将来のプロジェクトでコードのデプロイを開始するために必要なすべてを身に付けます.

繰り返しになりますが、汎用言語に見られる非常に現実的なプログラミングの基礎を回避することにより、彼または彼女が選択したドメイン固有言語が何らかの形で非推奨になった場合、将来的に重大な不利益を被る可能性があります。.

次の図は、DSL / GDLセグメンテーションからの可能なブロックチェーンプログラミングエントリポイントのプールを分類しています。透明/遠い言語は言語です ない 長さでカバー:

構文の読みやすさ & 学習曲線

プログラミング言語が異なれば、その単純さまたは複雑さに基づいて、さまざまなレベルの読みやすさが提供されます。 構文 です。構文は指定されたスペルを参照します & プログラミング言語の文法規則。通常、構文の可読性は学習曲線の急勾配と相関しています。読みにくいコードは、コードを学ぶのを難しくします。繰り返しますが、このルールには確かに例外がありますが、私たちの目的では、この線形関係が当てはまります.

2つの重要でありながら一般的なプログラミング言語の構文機能を使用して、特に新しい開発者向けの読みやすさの理解を深めます。 & ブロックチェーンプログラミング言語。これらの概念の最も一般的なものは、緩い変数と厳密な変数の型付けです。.

緩いタイピングと厳密なタイピング

すべてのプログラミングは変数を広範囲に使用します。ただし、単一の通常の変数タイプだけではありません。それぞれが固有のプロパティを持つ多くのタイプがあります。文字列、整数など、これらの変数タイプのいくつかを聞いたことがあると思います。, & ブール値。すべてのプログラミング言語は、構文でこれらの自然な型を利用しています。ただし、各言語は、これらの変数タイプを独自の変数参照ロジックで階層化します。 Pythonなどの一部の言語 & Javascript、開発者が単一の「var」変数を使用できるようにします:var =「coincentral」。この柔軟性により、開発者は、各変数タイプがすべての行に適切に設定されていることを確認するという面倒なプロセスを回避できます。. 低レベルの変数の割り当てを隠す言語は、緩く型付けされた言語として知られています.

後者のカテゴリである厳密に型指定された言語は、より説明的な構文ではありますが、より冗長な言語で構成されています。厳密に型指定された言語で変数を宣言することは、開発者が使用する予定の元の変数型を具体的に宣言することで構成されます。 ストリング =「coincentral」。これを前の変数宣言と比較する場合は、太字の「文字列」に細心の注意を払ってください。変数のこの厳密な型付けは、緩く型付けされた言語間の構文の主な違いです。 & 厳密に入力された言語。構文の違いは、変数を宣言するだけに限定されるわけではありません。これは、各言語全体に普及している主要な言語設計機能です。.

どちらも緩く型付けされている & 厳密に型指定された言語は、多くの長所を提供します & 短所のトレードオフ。新規参入者にとって考慮すべき最も重要なトレードオフの1つは、両方のタイプに関連する学習曲線です。一般に、緩く型付けされた言語は、初心者にわかりやすい構文を提供します & したがって、参入障壁が低くなります。ただし、考慮すべき最大の直接的な欠点は、変数タイプとの対話に関して、基本的なソフトウェアエンジニアリングの知識の深刻なギャップです。.

この情報を適切と思われる方法で活用し、ブロックチェーンプログラミング言語のプールを大まかに型付けすることで視覚的に分離します & 以下の厳密に型指定された構文:

言語の風景

ついに、この記事の中心的なセクションである高レベルのカタログにたどり着きました。 & 利用可能なブロックチェーンプログラミング言語の調査。セクションごとに、言語を簡単に紹介し、ブロックチェーン環境内でのその意図された目的を要約し、現在本番環境にあるプロジェクトまたはフレームワークの概要を説明します。, & 最後に、詳細について学習リソースをリストアップします.

C++

C ++

最初にリストの最も古い言語であるC ++から始めましょう。 1985年に1人のMr.BjarneStroustrupによって最初に導入されたC ++は、元のC言語の拡張として作成されました。アイデアは、柔軟性とセキュリティを維持することでした & Cの効率ですが、よりオブジェクト指向のプロセスのために言語を合理化します。したがって、C ++はオブジェクト指向言語であり、Cはプロセス指向のままです。.

C ++は、コアブロックチェーンプログラミングで非常に人気のある、特に強力なオールドスクールのドメイン一般言語です。.

ただし、新しい開発者には警告があります。厳密に型指定された言語であり、他の言語に比べて構文が比較的古いため、学習曲線は次のようになります。 非常に 急な。新しい開発者が飛び込むのは、言語を話すのが最も難しいでしょう。それでも、C ++の学習曲線を推し進めることによって得られる基本的な知識は他に類を見ないものであると言わなければなりません。前に述べたように、ブロックチェーンの世界はC ++に大きく依存しているため、学習リソースが不足することはありません。

ビットコインコア: https://github.com/bitcoin/bitcoin

リップルデーモン: https://github.com/ripple/rippled

C ++チュートリアル: https://www.cplusplus.com/doc/tutorial/

Javascript

Javascript

JavaScriptは、すべての主要なブラウザーでサポートされているWeb用の緩く型付けされたスクリプトプログラミング言語です。静的HTMLを拡張するために使用される主要言語です & CSSページから本格的なUIへ。これらの一般的なWebUIには、アニメーション、ページの更新、ユーザーメニューなどがあります。 & ダイアログボックス、インタラクティブマップなど…

最新のブラウザーでのすべてのWebページの動作を強化するこの言語であるJavascriptは、Webアプリの最高レベルのプレゼンテーション層を離れることは想定されていませんでした。それでも、Javascriptが、特に新参者にとって、前例のない方法で普及したことは否定できません。 Node.JSが最初にJavascriptをサーバー側に配置し、次にAngular / React / Vueが基本的にHTML / CSSスタックをクライアント側に書き換えることで、フルスタックのJavascriptが大流行しました。深く掘り下げることなく、少なくとも一握りのベテラン開発者がこの推奨事項にうめき声を上げると言っても過言ではありません。これらの苦情にはいくつかのメリットがあるかもしれませんが、次の文を誤りにすることはありません。

Javascriptは非常に初心者にやさしく、成熟しています, & 現在、最新のWebスタックのすべての部分に定着しています.

Javascriptの場合、ブロックチェーンサポートの最前線はLiskブロックチェーンプロジェクトです。彼らのランディングページは、Javascriptでブロックチェーンエコシステム全体を構築するという信念の観点からボリュームを語っています。「Liskを使用すると、開発者はJavaScriptでブロックチェーンアプリケーションを簡単に構築およびデプロイできます。」

学習リソース

Lisk: https://lisk.io/

Python

Python

比較的現代的なプログラミング言語であるPythonは、多くの場合、初心者に人気があります。それには正当な理由があります。 PythonはGuidovanRossumによって設計されました 構文の単純さ & 読みやすさ 何よりも。リリース以来、Pythonはシンプルでありながら強力な言語として爆発的に発展し、大規模なコミュニティサポートにより、FlaskなどのウェブUIライブラリからNumPyなどの機械学習の必需品まで文字通りどこにでもPythonを統合できるようになりました。.

ネイティブPythonでは、既存のブロックチェーンに技術的に貢献したり、分散型アプリを作成したり、最初のコインオファリングを保持したりすることはできませんが、ほとんどすべてのブロックチェーンエコシステムに1つ以上のパブリックがあるため、Pythonをこのリストから除外するのは間違いです。で書かれたツール & Python用.

学習リソース

IBM Blockchain Foundationsチュートリアル– https://developer.ibm.com/courses/all/ibm-blockchain-foundation-developer/

イーサリアムウェブラッパー– https://web3py.readthedocs.io/

GO

GO

GO(GOLangの略)プログラミング言語は、2007年にGoogleで開発された比較的最新のドメイン一般言語です。 & 2012年に公開されました。堅牢な多目的言語として設計されたGOは、構文を組み合わせる試みでした。 & Pythonなどの現代言語の使いやすさ & Javascript、パフォーマンス & Cなどの古いコンパイル言語のセキュリティ上の利点.

GOはコンパイルされた言語です。つまり、オペレーティングシステム内で直接実行されます。この機能により、ブロックチェーンプロジェクトの複数の部分にGOを使用する場合に最大限の柔軟性が得られます。既存のブロックチェーンに直接貢献したいですか?イーサリアムには、GOで記述されたプロトコルSDKがあります。スマートコントラクトを書きたいですか? Linux-Foundation HyperledgerFabricブロックチェーンはそれをカバーしています.

学習リソース

ドキュメントに移動– https://golang.org/doc/

イーサリアムに行く– https://github.com/ethereum/go-ethereum

Hyperledgerファブリック– https://github.com/hyperledger/fabric-sdk-go

堅牢性

堅牢性

SolidityはJavaScriptのようなものです ドメイン固有言語 イーサリアムチーム(Gavin Wood、Christian Reitwiessner、Alex Beregszaszi、Yoichi Hirai & その他)イーサリアムプラットフォームで分散型アプリを作成するため。圧倒的に最も適応しています & イーサリアムコミュニティ内で十分に採用されている主流のDSL & ブロックチェーン業界.

dAppの構築やICOの保持を検討している人にとって、Solidityは、そのすべての中心に直接飛び込むための最も簡単な方法の1つです。 Solidityの開発は、Ethereumハードフォークの前に開始されたため、Ethereum Classicの両方で証明されているように、市民の意見の不一致の一部に対するエンジニアリングの影響をありがたく回避しました。 & イーサリアムはSolidityのサポートを継続しています。さらに、Cardanoチームは最近、Solidityのサポートも発表しました。Solidityを複数のブロックチェーンでサポートされる単一のブロックチェーンプログラミングDSLにします。.

言語自体は、開発者の採用を優先して作成されました。これにより、人気の高いJavascriptと意図的に類似した構文になりましたが、もちろん、いくつかの工夫が加えられています。.

学習リソース

コンセンシスアカデミー– https://consensys.net/academy/

Solidityドキュメント– https://solidity.readthedocs.io/en/v0.4.24/

最後に

ビットコイン & ブロックチェーンテクノロジーは、データの方法に革命をもたらし続けます & 資産が譲渡されます—影響がグローバルになることは明らかです & 業界にとらわれない。どこから始めても、これらの言語の1つを学ぶための最初の一歩を踏み出すことは、すでに実質的な最初の一歩です。このスキルセットの需給のミスマッチは誇張することはできません.

最良の見積もりでは、アクティブな開発者の数を示します 世界中で約2,000万. しかし、業界の推定では、なんと1つ未満であると述べています 1000 アクティブな開発者は、自分自身をブロックチェーンプログラマーと見なすスキルセットに自信を持っています & 募集職種に積極的に応募しています。算術的傾向が少ない場合、それは およそ2万人のブロックチェーンプログラマー.

プログラミング1

それが多くのように思われる場合は、Microsoftを見てみましょう– 約10万人の人員 –ソフトウェアエンジニアごとに少なくとも1人のサポートスタッフがいて、約5万人のプログラマーがいると仮定しましょう。裏側に, 銀行大手のゴールドマンサックスは現在、約9000人のプログラマーを配置しています & エンジニア.

重要なのは、このブロックチェーンプログラマーの不足は非常に現実的です。 & あなたの内なる対話への答え しかし、私が最初から学び始めるには遅すぎますか? です 番号. 開発者、投資家向け, & 規制当局、そして関係者全員がまだ非常に初期の段階です.

唯一の質問は、どのプロジェクトに取り組み始めたいかということです。 & どのような問題を解決し始めたいですか?