Saya ingin menyumbang kod untuk salah satu projek ini – bagaimana saya boleh memulakannya?

Adakah terdapat satu bahasa yang digunakan khusus untuk blockchain?

Saya tidak tahu cara memprogram – bolehkah saya langsung masuk ke dalam pengaturcaraan blockchain?

Beberapa bulan yang lalu, saya dengan senang hati memantau panel empat pengaturcara NEO aktif di Persidangan Dev NEO San Francisco. Topik panel adalah pengaturcaraan blockchain umum, namun, peringatan tambahan menjadikan panel peserta ini sangat menarik: keempat-empat pengaturcara menggunakan bahasa pilihan yang berbeza untuk mengerjakan projek NEO.

Yang satu menyukai bahasa C # sekolah lama, yang lain menghasilkan skrip Python, yang ketiga menginjil pelaksanaan Javascript yang paling popular & peserta keempat dengan bersemangat membincangkan bahasa NEO khusus domain yang akan datang.

Dua fikiran melekat pada saya pasca panel:

  1. Penyusun NEO mempunyai sokongan pembangunan pelbagai bahasa yang serius
  2. Keluk pembelajaran untuk pengaturcaraan blockchain sangat kejam dan sangat dibebani oleh kekurangan sumber yang teratur, terutama untuk pembangun baru

Artikel ini bertujuan untuk mencapai titik nombor 2. Memaksimumkan keberkesanan panduan ini memerlukan pengurangan khalayak yang diharapkan ke ceruk yang sempit: baru & pengaturcara junior ingin masuk secara khusus ke ruang blockchain. Untuk pemaju veteran, pengaturcara, & jurutera perisian meneliti – bahagian berikut mungkin memberikan beberapa faedah, namun, anda mungkin menjumpainya di peringkat awal. Jurutera kanan dapat memaksimumkan masa mereka dengan menatal ke bahasa pilihan yang biasa, & mula merosakkan sumber pembelajaran yang dilampirkan & dokumentasi.

Oleh itu, anda fikir anda ingin memasuki program blockchain ya? Mari kita mulakan dengan menentukan dengan lebih tepat apa yang dimaksudkan dengan pengaturcaraan blockchain.

Industri Baru

Secara amnya, topik yang menarik minat anda secara peribadi & selaras dengan nilai anda lebih mudah dipelajari daripada hafalan menghafal sesuatu tanpa pembelian yang jelas; Saya sangat menekankan bahawa prinsip ini berlaku semakin banyak dalam bidang yang sangat kompleks dan berkembang pesat seperti pengaturcaraan blockchain. Sebelum kita mulakan, mari kita lihat beberapa cabaran yang dihadapi oleh pembangun blockchain dalam industri yang sedang berkembang.

Pertama & yang paling utama adalah perbezaan umum yang berterusan antara apa yang sebenarnya atau tidak diperlukan oleh “blockchain”. Luangkan masa di crypto-twitter & akan menjadi jelas bagaimana komuniti kripto suku, & secara berterusan, komuniti pembangunan mereka telah menjadi. Kesukuan yang tidak diperiksa secara semula jadi membawa kepada perbincangan yang berat sebelah mengenai apa yang seharusnya menjadi objektif, menambahkan lapisan kekaburan lain untuk pembangun yang masuk.

Seterusnya, dengan sebahagian besar projek dalam fasa testnet mereka & dengan projek langsung terus dikemas kini, forking, & menjadi mangsa peretasan, tidak menghairankan apabila melihat dokumentasi yang tidak lengkap & tutorial yang belum selesai. Lapisan tanah berkembang pesat yang memerlukan lelaran yang konsisten – tidak ada tugas yang mudah untuk pasukan mana pun.

Yang terakhir adalah stigma sebenar bahawa pengaturcaraan blockchain tidak rumit & terdiri daripada beberapa bidang yang bersilang yang memerlukan sekurang-kurangnya pemahaman dasar mengenai perkara berikut: ekonomi, kriptografi, mata wang, struktur data, dasar kewangan & fizik. Mempelajari hanya bahagian-bahagian bidang ini yang berkaitan dengan pengaturcaraan blockchain memerlukan banyak masa untuk difahami – tidak ada jalan pintas di sini.

Tribalisme, dokumentasi sembarangan & asas yang rumit. Semua tanda amaran curam naik ke depan. Untuk memotivasi diri sendiri melalui halangan-halangan masuk ini, ia membantu untuk mengetahui dengan jelas apa sebenarnya pengaturcaraan blockchain bermaksud di tempat pertama. Selain itu, ia dapat membantu mengungkap…

Mengapa anda ingin belajar pengaturcaraan blockchain? Projek apa yang anda mahukan? Masalah apa yang anda cuba selesaikan?

Membongkar Pengaturcaraan Blockchain

Sekiranya anda sudah mengetahui projek apa yang ingin anda jalankan, kudos – Saya cadangkan pergi ke repositori GitHub organisasi atau ctrl-Fing bahasa pilihan di sini untuk membaca lebih lanjut. Bahagian berikut akan memberi banyak manfaat kepada mereka yang tidak dapat menentukan projek apa & kemahiran / bahasa yang diperlukan sesuai dengan mereka sebagai titik tolak untuk hala tuju pembelajaran yang berpotensi di hadapan.

Secara amnya, pengaturcaraan blockchain boleh membawa tiga perkara yang berbeza:

  • Menggunakan tawaran syiling awal (ICO)
  • Membangun kontrak pintar atau aplikasi terdesentralisasi (DAPP)
  • Menyumbang kepada yang ada atau menggunakan blockchain baru

Pertimbangkan tiga pilihan yang dinyatakan di atas kerana masing-masing menawarkan pelbagai bahasa & keluk pembelajaran. Selain itu, mereka akan membantu membuat anda selangkah lebih dekat untuk menjelaskan yang tepat pilihan. Segmentasi lebih lanjut untuk kriteria bahasa tepat di sudut jalan; namun, jangan lupa bahawa keutamaan peribadi menjadi pilihan untuk memotivasikan diri anda melalui pembelajaran kemahiran baru.

Dengan mengandaikan jurutera perisian sehari-hari sama-sama berminat untuk belajar mengenai ketiga-tiga jenis pengaturcaraan blockchain – apa kriteria lain yang dapat mereka gunakan untuk menyinari cahaya ke jalan paling mesra ke depan?

  • Tujuan Umum vs Bahasa Khusus Domain
  • Kebolehbacaan sintaksis & Keluk Pembelajaran

Dengan melihat ketiga-tiga kriteria ini, akhirnya kita akan mempunyai kerangka konteks yang kukuh dari mana kita akan menerapkan senarai bahasa kita.

Tujuan Umum vs Domain-Khusus

Alat pengkategorian merentasi kualiti kualitatif jarang jelas – bahasa pengaturcaraan tidak berbeza. Di sini, kami akan membahagikan semua kemungkinan bahasa pengaturcaraan blockchain kepada dua kategori berbeza: bahasa khusus domain & bahasa tujuan umum.

Biasanya, bahasa khusus domain (DSL) adalah bahasa komputer yang direka & sesuai untuk aplikasi tertentu. Bahasa tujuan umum (GPL), seperti namanya yang tepat, adalah bahasa yang secara luas berlaku di banyak domain pengaturcaraan.

Bahasa-Tujuan Umum

Bahasa tujuan umum adalah bahasa yang mungkin pernah anda dengar seperti Java, Javascript, Ruby, C++, & Python. Di antara bahasa untuk tujuan umum, seseorang dapat mencari cara yang tidak terbatas untuk mengkategorikannya dengan kualitatif & perbezaan kuantitatif & persamaan seperti kebolehbacaan, penyusunan, penaipan tegas, frontend / backend, dan lain-lain … Peraturan praktikal mengenai keramahan kali pertama adalah seperti berikut:

Javascript, Python, & Ruby pada umumnya lebih mudah bagi pendatang baru kerana mereka mempunyai kurva pembelajaran yang kurang semasa C++ & Java biasanya memerlukan lebih banyak masa untuk belajar di luar kotak.

Perhatikan, editor tidak akan memberikan komen kedua & akibat tahap ketiga pendatang baru bermula dengan satu kumpulan bahasa atau yang lain. Terdapat banyak perdebatan mengenai ciri-ciri lebih lanjut dari bahasa-bahasa ini, seperti memaksa pendatang baru untuk memahami jenis pemboleh ubah terlebih dahulu melalui bahasa yang ditaip ketat yang kami hadapi untuk memaksimumkan penggunaan di sini untuk pemaju baru yang menghampiri ruang blockchain dengan ketat.

Pro terbesar bagi pendatang baru yang menggunakan tujuan umum adalah kemampuan langsung untuk menerapkan bahasa itu dalam sebilangan besar bidang di luar pengaturcaraan blockchain. Malangnya, sisi duit syiling yang sama menimbulkan keburukan bagi mereka yang baru ingin memasuki pasaran pekerjaan kerana anda mungkin akan bersaing secara langsung dengan senior & jurutera perisian veteran dari domain lain dengan pengalaman bertahun-tahun menggunakan bahasa tujuan umum.

Bahasa Khusus Domain

Untuk menyediakan konteks, mari kita mundur dari pengaturcaraan blockchain. Walaupun bidang pengaturcaraan yang agak baru, konsep bidang pengaturcaraan baru itu sendiri tidak baru – anda tidak perlu melihat terlalu jauh melewati kata kunci kembar-baru-baru ini pembelajaran mesin untuk melihat ini. Beberapa bidang pengaturcaraan tambahan yang juga menyaksikan evolusi semula jadi satu atau lebih bahasa khusus domain adalah: statistik (R, MatLab), pertanyaan pangkalan data (SQL), UI Web (HTML, CSS).

Pengaturcara blockchain bahasa khusus domain mempunyai permintaan yang sangat tinggi dengan penawaran yang sangat sedikit: bahasa-bahasa muda ini, yang satu-satunya tujuannya adalah satu atau lebih daripada tiga pilihan pengaturcaraan blockchain yang disenaraikan di atas, tidak diragukan lagi menawarkan jalan paling jelas untuk mendarat penempatan industri kerjaya.

Oleh kerana bahasa-bahasa ini dirancang dari bawah ke atas dengan blockchain & dalam kejuruteraan kontrak pintar, pemaju yang berpengalaman mungkin sukar untuk menyesuaikan semula rujukan sebelumnya dari bahasa lain.

Walaupun pendatang baru, dengan kebiasaan pemrograman batu tulis baru, bersandar semua yang diperlukan untuk mula menggunakan kod dalam projek semasa atau masa depan.

Sekali lagi, dengan mengelakkan asas pengaturcaraan yang sangat nyata yang terdapat dalam bahasa tujuan umum, seseorang mungkin mendapati dirinya berada pada kelemahan yang ketara sekiranya bahasa khusus domain pilihannya entah bagaimana tidak digunakan lagi.

Gambar rajah berikut menguraikan kumpulan kemungkinan jalan masuk pengaturcaraan blockchain dari segmentasi DSL / GDL; bahasa yang telus / jauh adalah bahasa tidak diliputi panjang:

Kebolehbacaan sintaksis & Keluk Pembelajaran

Bahasa pengaturcaraan yang berbeza menawarkan tahap kebolehbacaan yang berbeza berdasarkan seberapa mudah atau kompleksnya sintaksis adalah. Sintaks merujuk kepada ejaan yang ditentukan & peraturan tatabahasa bahasa pengaturcaraan. Lazimnya, kesediaan sintaksis berkorelasi dengan kecuraman keluk pembelajaran; kod sukar dibaca menjadikan kod sukar dipelajari. Sekali lagi, tentu ada pengecualian untuk peraturan ini, namun untuk tujuan kita hubungan linear ini berlaku.

Kami akan menggunakan dua ciri sintaks bahasa pengaturcaraan, namun biasa, untuk mewujudkan pemahaman kebolehbacaan khusus untuk pembangun baru & bahasa pengaturcaraan blockchain. Konsep yang paling umum adalah ketiadaan pembolehubah longgar berbanding ketat.

Penaipan Longgar vs Ketat

Semua pengaturcaraan secara meluas menggunakan pemboleh ubah; namun, tidak ada satu jenis pemboleh ubah biasa – terdapat banyak, masing-masing mempunyai sifat unik. Anda mungkin pernah mendengar beberapa jenis pemboleh ubah seperti rentetan, bilangan bulat, & boolean. Setiap bahasa pengaturcaraan memanfaatkan jenis semula jadi ini dalam sintaksisnya; namun, setiap bahasa meletakkan jenis pemboleh ubah ini dengan logik rujukan pemboleh ubahnya sendiri. Beberapa bahasa, seperti Python & Javascript, membolehkan pembangun hanya menggunakan satu variabel “var”: var contoh = “Kebetulan.” Fleksibiliti ini membolehkan pemaju menghindari proses yang membosankan untuk memastikan setiap jenis pemboleh ubah ditetapkan dengan tepat di setiap baris. Bahasa yang menyembunyikan penetapan pemboleh ubah peringkat rendah dikenali sebagai bahasa yang ditaip longgar.

Kategori terakhir, bahasa yang ditaip ketat, terdiri daripada sintaks yang lebih verbose, walaupun lebih deskriptif. Menyatakan pemboleh ubah dalam bahasa yang ditaip ketat terdiri daripada menyatakan secara khusus jenis pemboleh ubah asal yang ingin digunakan oleh pembangun: tali contoh = “Kebetulan.” Sekiranya anda membandingkannya dengan deklarasi pemboleh ubah sebelumnya, perhatikan “string” yang tebal. Penaipan tegas pemboleh ubah ini adalah perbezaan utama dalam sintaks antara bahasa yang ditaip longgar & bahasa yang ditaip ketat. Perbezaan sintaks sama sekali tidak dipersempit hanya dengan menyatakan pemboleh ubah, itu adalah ciri reka bentuk bahasa utama yang meluas di seluruh bahasa.

Kedua-duanya ditaip longgar & bahasa yang ditaip ketat menawarkan banyak kelebihan & kerugian kontra. Salah satu pertukaran yang paling penting untuk dipertimbangkan untuk pendatang baru adalah keluk pembelajaran yang berkaitan dengan kedua-dua jenis. Secara umum, bahasa yang ditaip secara longgar menawarkan sintaks yang lebih mesra untuk pendatang baru & oleh itu penghalang masuk yang lebih rendah; namun, kelemahan segera yang perlu dipertimbangkan adalah jurang serius dalam pengetahuan kejuruteraan perisian asas ketika berinteraksi dengan jenis yang berubah-ubah.

Manfaatkan maklumat ini walaupun anda sesuai, kami secara visual memisahkan kumpulan bahasa pengaturcaraan blockchain kami dengan menaip secara longgar & sintaks yang ditaip ketat di bawah:

Landskap Bahasa

Kami akhirnya berada di bahagian inti artikel ini, yang merupakan katalog peringkat tinggi & tinjauan bahasa pengaturcaraan blockchain yang ada. Untuk setiap bahagian, kami akan memperkenalkan bahasa secara ringkas, meringkaskan tujuannya dalam lingkungan blockchain, melihat keseluruhan projek atau kerangka kerja yang sedang dalam pengeluaran, & akhirnya senaraikan sumber pembelajaran untuk maklumat lebih lanjut.

C++

C ++

Mari mulakan dengan bahasa tertua dalam senarai terlebih dahulu: C ++. Diperkenalkan pertama kali oleh Mr.Bjarne Stroustrup pada tahun 1985, C ++ dibuat sebagai lanjutan dari bahasa C yang asli. Ideanya adalah untuk menjaga kelenturan, keamanan & kecekapan C, tetapi untuk menyelaraskan bahasa untuk proses yang lebih berorientasikan objek. Oleh itu, menyebabkan C ++ menjadi bahasa berorientasikan objek sementara C tetap berorientasikan proses.

C ++ adalah bahasa domain-umum yang sangat kuat, lama, yang cukup popular untuk pengaturcaraan blockchain teras.

Walau bagaimanapun, pemaju baru diberi amaran. Sebagai bahasa yang ditaip ketat dengan sintaks yang agak ketinggalan zaman berbanding rakan sebayanya, keluk pembelajaran adalah sangat curam. Kemungkinan paling sukar untuk digunakan oleh pemaju baru; namun harus dinyatakan bahawa pengetahuan asas yang dicapai melalui penekanan kurva pembelajaran C ++ tidak ada duanya. Seperti yang dinyatakan sebelum ini, dunia blockchain sangat bergantung pada C ++ sehingga anda tidak akan kekurangan sumber pembelajaran:

Teras Bitcoin: https://github.com/bitcoin/bitcoin

Ripple Daemon: https://github.com/ripple/rippled

Tutorial C ++: https://www.cplusplus.com/doc/tutorial/

Javascript

Javascript

JavaScript adalah bahasa pengaturcaraan skrip yang diketik secara longgar untuk web yang disokong oleh semua penyemak imbas utama; ia adalah bahasa utama yang digunakan untuk meningkatkan HTML statik & Halaman CSS ke UI lengkap. Beberapa UI web biasa ini merangkumi animasi, halaman yang menyegarkan, menu pengguna & kotak dialog, peta interaktif, dll …

Bahasa ini menguatkan semua tingkah laku laman web dalam penyemak imbas moden, Javascript, tidak pernah seharusnya meninggalkan lapisan persembahan peringkat tertinggi dari aplikasi web. Namun tidak dapat dinafikan bahawa Javascript dilancarkan, terutama untuk pendatang baru, dengan cara yang belum pernah terjadi sebelumnya. Dengan Node.JS pertama kali meletakkan Javascript di sisi pelayan, kemudian Angular / React / Vue pada dasarnya menulis semula HTML / CSS stack pelanggan-sisi, Javascript tumpukan penuh telah menjadi kemarahan. Tanpa meneliti terlalu dalam, adalah selamat untuk mengatakan sekurang-kurangnya segelintir pemaju veteran akan merintih cadangan ini. Walaupun ada kelayakan untuk aduan ini, kalimat berikut tidak salah:

Javascript sangat mesra pengguna baru dan matang, & kini bertapak di semua bahagian timbunan web moden.

Untuk Javascript, pelari barisan hadapan dalam sokongan blockchain adalah projek blockchain Lisk. Halaman pendaratan mereka menyatakan banyak hal dari segi kepercayaan mereka dalam membangun keseluruhan ekosistem blockchain di Javascript: “Lisk memudahkan para pembangun untuk membina dan menggunakan aplikasi blockchain dalam JavaScript.”

Sumber Pembelajaran

Kerugian: https://lisk.io/

Python

Python

Bahasa pengaturcaraan yang agak moden, Python sering menjadi kegemaran para pendatang baru – dan dengan alasan yang baik! Python direka oleh Guido van Rossum dengan kesederhanaan sintaksis & kebolehbacaan di atas segalanya. Sejak dilancarkan, Python telah meledak sebagai bahasa yang mudah namun kuat dengan sokongan komuniti yang besar yang membawa kepada integrasi Python secara harfiah di mana-mana sahaja – dari perpustakaan UI web seperti Flask hingga keperluan pembelajaran mesin seperti NumPy.

Walaupun dengan Python asli, seseorang tidak dapat secara teknikal menyumbang kepada blockchain yang ada, menulis aplikasi yang terdesentralisasi, atau mengadakan tawaran duit syiling awal, adalah menjadi kesalahan untuk meninggalkan Python dari senarai ini kerana hampir setiap ekosistem blockchain mempunyai satu atau lebih awam alat yang ditulis dalam & untuk Python.

Sumber Pembelajaran

Tutorial Yayasan Blockchain IBM – https://developer.ibm.com/courses/all/ibm-blockchain-foundation-developer/

Pembungkus Web Ethereum – https://web3py.readthedocs.io/

PERGI

PERGI

Bahasa pengaturcaraan GO (singkatan dari GOLang) adalah bahasa umum-domain yang agak moden yang dikembangkan di Google pada tahun 2007 & dilancarkan untuk kegunaan awam pada tahun 2012. Direka sebagai bahasa serba guna yang mantap, GO adalah usaha menggabungkan sintaks & keramahan pengguna bahasa moden seperti Python & Javascript, dengan persembahan & kelebihan keselamatan bahasa yang lebih lama dan disusun seperti C.

GO adalah bahasa yang disusun – yang bermaksud ia berjalan secara langsung dalam sistem operasi. Ciri ini membolehkan fleksibiliti maksimum ketika menggunakan GO untuk beberapa bahagian projek blockchain. Ingin menyumbang terus ke blockchain yang ada? Ethereum mempunyai SDK protokol yang ditulis dalam GO. Ingin menulis kontrak pintar? Blockchain Linux-Foundation Hyperledger Fabric telah menutupinya.

Sumber Pembelajaran

Pergi Dokumentasi – https://golang.org/doc/

Pergi Ethereum – https://github.com/ethereum/go-ethereum

Fabrik Hyperledger – https://github.com/hyperledger/fabric-sdk-go

Ketahanan

Ketahanan

Ketahanan seperti javascript bahasa khusus domain dibuat oleh pasukan Ethereum (Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai & yang lain) untuk membuat aplikasi yang terdesentralisasi di platform Ethereum. Sejauh ini adalah yang paling disesuaikan & DSL arus perdana yang telah banyak diterima pakai dalam komuniti Ethereum & industri blockchain.

Bagi sesiapa yang ingin membina dApp atau memegang ICO, Solidity adalah salah satu cara paling mudah untuk menyelami terus ke jantung semuanya. Sejak pengembangan Soliditi bermula sebelum garisan keras Ethereum, dengan senang hati ia mengelakkan sebarang kesan kejuruteraan pada sebahagian perselisihan sivil, seperti yang dibuktikan oleh kedua Ethereum Classic & Sokongan Ethereum berterusan. Tambahan pula, pasukan Cardano juga baru-baru ini mengumumkan sokongan Soliditi – menjadikan Solidity sebagai DSL pengaturcaraan blockchain tunggal yang disokong dalam beberapa rangkaian blok.

Bahasa itu sendiri diciptakan dengan diprioritaskan penggunaan-pengembang, yang membawa kepada sintaks yang mirip dengan Javascript yang selalu popular dengan, tentu saja, beberapa kelainan.

Sumber Pembelajaran

Akademi Consensys – https://consensys.net/academy/

Dokumentasi Soliditi – https://solidity.readthedocs.io/en/v0.4.24/

Dalam Penutup

Bitcoin & teknologi blockchain akan terus merevolusi cara data & aset dipindahkan – jelas bahawa kesannya akan global & industri-agnostik. Tidak kira di mana anda bermula, mengambil langkah pertama dalam mempelajari salah satu bahasa ini sudah menjadi langkah pertama yang penting. Ketidaksesuaian permintaan-penawaran untuk kemahiran ini tidak dapat dilebih-lebihkan.

Anggaran terbaik meletakkan bilangan pemaju aktif di seluruh dunia, sekitar ~ 20 juta. Namun anggaran industri menyatakan bahawa kurang dari 1 dalam jumlah besar 1000 pembangun aktif berasa yakin dengan kemahiran mereka untuk menganggap diri mereka sebagai pengaturcara blockchain & secara aktif melamar kedudukan terbuka. Bagi yang kurang aritmetik, itu bermakna ada kira-kira sekitar 20 ribu pengaturcara blockchain.

pengaturcaraan1

Sekiranya itu kelihatan banyak mari kita lihat Microsoft – dengan jumlah kira-kira 100k – anggap mereka mempunyai sekurang-kurangnya satu staf sokongan setiap jurutera perisian, yang menjadikan kita sekitar 50 ribu pengaturcara. Di bahagian lain, syarikat gergasi perbankan Goldman Sachs kini mempunyai ~ 9 ribu pengaturcara & jurutera.

Maksudnya ialah – kekurangan programmer blockchain ini sangat nyata & jawapan untuk dialog dalaman anda tetapi adakah sudah terlambat untuk saya mula belajar dari awal? adalah TIADA. Bagi pemaju, pelabur, & pengawal selia, dan semua orang yang terlibat masih terlalu awal.

Satu-satunya soalan ialah projek apa yang anda mahu mulakan & masalah apa yang anda mahu mula selesaikan?