La guía definitiva para la programación de blockchain para nuevos desarrolladores

Quiero contribuir con código a uno de estos proyectos. ¿Cómo puedo empezar??

¿Existe algún idioma que se use específicamente para blockchains??

No sé cómo programar, ¿puedo saltar directamente a la programación blockchain??

Hace unos meses, tuve el placer de moderar un panel de cuatro programadores NEO activos en la Conferencia de Desarrollo NEO de San Francisco. El tema del panel fue la programación general de blockchain, sin embargo, una advertencia adicional hizo que este panel particular de participantes fuera muy interesante: los cuatro programadores utilizaron un idioma diferente de elección para trabajar en el proyecto NEO.

Uno favoreció el lenguaje C # de la vieja escuela, otro produjo scripts de Python, un tercero evangelizó la siempre popular implementación de Javascript & el cuarto participante discutió con entusiasmo un próximo lenguaje NEO específico de dominio.

Dos pensamientos se quedaron conmigo después del panel:

  1. El compilador NEO tiene un importante soporte de desarrollo en varios idiomas.
  2. La curva de aprendizaje para la programación blockchain es brutal y muy exasperada por la falta de recursos organizados, especialmente para los nuevos desarrolladores.

Este artículo tiene como objetivo abordar el punto número 2. Para maximizar la eficacia de esta guía es necesario reducir la audiencia esperada a un nicho estrecho: nuevo & programadores junior que buscan irrumpir específicamente en el espacio blockchain. Para desarrolladores veteranos, programadores, & ingenieros de software que examinan detenidamente: la siguiente sección puede proporcionar algunos beneficios, sin embargo, es probable que los encuentre elementales. Los ingenieros superiores pueden maximizar su tiempo desplazándose a un idioma de elección familiar, & comenzando a destrozar los recursos de aprendizaje adjuntos & documentación.

Entonces, ¿crees que te gustaría entrar en la programación de blockchain, eh? Comencemos por definir más exactamente lo que implica la programación blockchain.

Nueva industria

En general, los temas que le interesan personalmente & alinearse con sus valores es más fácil de aprender que memorizar algo de memoria sin una clara aceptación; Hago mucho hincapié en que este principio se aplica cada vez mas en un campo innatamente complejo y de rápida evolución, como la programación blockchain. Antes de comenzar, veamos algunos de los desafíos a los que se enfrenta un desarrollador de blockchain en la floreciente industria..

Primero & Lo más importante es la discrepancia pública y continua entre lo que implica exactamente o no una “cadena de bloques”. Pasa un tiempo en crypto-twitter & quedará claro cómo las criptocomunidades tribales, & por un tramo, sus comunidades de desarrollo se han convertido. El tribalismo descontrolado naturalmente conduce a conversaciones sesgadas sobre lo que debería ser contenido objetivo, lo que agrega otra capa de ofuscación para los desarrolladores entrantes..

A continuación, con la mayoría de proyectos en su fase de testnet & con proyectos en vivo actualizándose continuamente, bifurcando, & siendo víctima de ataques, no es sorprendente ver documentación incompleta & tutoriales inconclusos. La disposición del terreno está evolucionando rápidamente, lo que requiere una iteración constante, una tarea que no es fácil para ningún equipo..

Por último, está el verdadero estigma de que la programación de blockchain es completamente complicada & compuesto de múltiples campos que se cruzan que requieren al menos una comprensión rudimentaria de lo siguiente: economía, criptografía, moneda, estructuras de datos, política financiera & física. Aprender incluso solo las partes de estos campos relevantes para la programación de blockchain requiere mucho tiempo para comprender, no hay atajos aquí.

Tribalismo, documentación al azar & Fundamentos complicados. Todas las señales de advertencia de una subida empinada más adelante. Para motivarse adecuadamente a través de estas barreras de entrada, es útil profundizar en algo de claridad sobre qué es exactamente programación blockchain significa en primer lugar. Además, podría ser útil descubrir …


¿Por qué quieres aprender a programar blockchain? ¿En qué proyecto quieres trabajar específicamente? Qué problemas estás intentando resolver?

Deconstruyendo la programación de Blockchain

Si ya sabe en qué proyecto desea trabajar fervientemente, felicitaciones: le sugiero que se dirija al repositorio de GitHub de la organización o ctrl-Fing el idioma que elija aquí para leer más adelante. La siguiente sección beneficiará más a aquellos que no pueden precisar exactamente qué proyecto & el conjunto de habilidades / lenguaje requerido se adapta mejor a ellos como punto de partida para las posibles hojas de ruta de aprendizaje que se avecinan.

Generalmente, la programación de blockchain puede significar tres cosas diferentes:

  • Implementar una oferta inicial de monedas (ICO)
  • Creación de un contrato inteligente o una aplicación descentralizada (DAPP)
  • Contribuir a una cadena de bloques existente o implementar una nueva

Considere detenidamente las tres opciones descritas anteriormente, ya que cada una ofrece una variedad de idiomas diferentes & curvas de aprendizaje. Además, deberían ayudarlo a acercarse un paso más a aclarar su preferencia. Una mayor segmentación de los criterios lingüísticos está a la vuelta de la esquina; sin embargo, no olvide que la preferencia personal triunfa sobre todo para motivarse aprendiendo una nueva habilidad.

Suponiendo que un ingeniero de software desde el primer día esté igualmente interesado en aprender sobre los tres tipos de programación blockchain: ¿a qué otros criterios pueden recurrir para iluminar el camino más amigable a seguir??

  • Idiomas de uso general frente a idiomas específicos de dominio
  • Legibilidad de sintaxis & Curva de aprendizaje

Al revisar estos tres criterios, finalmente tendremos un marco de contexto sólido desde el cual aplicaremos a nuestra lista de idiomas..

Uso general frente a dominio específico

La categorización de herramientas a través de cualidades cualitativas rara vez es clara: los lenguajes de programación no son diferentes. Aquí, dividiremos todos los posibles lenguajes de programación de blockchain en dos categorías diferentes: lenguajes específicos de dominio & lenguajes de uso general.

Normalmente, un lenguaje específico de dominio (DSL) es un lenguaje informático diseñado & especialmente adecuado para una aplicación particular. Un lenguaje de propósito general (GPL), como su nombre lo describe acertadamente, es un lenguaje que es ampliamente aplicable en muchos dominios de programación..

Lenguaje de propósito general

Los lenguajes de uso general son los lenguajes de los que probablemente haya oído hablar, como Java, Javascript, Ruby, C++, & Pitón. Entre los lenguajes de propósito general, se pueden encontrar infinitas formas de categorizarlos aún más por criterios cualitativos. & diferencias cuantitativas & similitudes como legibilidad, compilación, mecanografía estricta, frontend / backend, etc. Una buena regla general sobre la facilidad de uso por primera vez es la siguiente:

Javascript, Python, & Ruby son generalmente más fáciles para los recién llegados, ya que tienen menos curva de aprendizaje, mientras que C++ & Java suele tomar más tiempo para aprender de inmediato.

Tenga en cuenta que el editor se abstiene de comentar el segundo & Consecuencias de tercer nivel de un recién llegado que comienza con un grupo de idiomas u otro. Hay múltiples debates sobre otras características de estos lenguajes, como obligar a los recién llegados a comprender primero los tipos de variables a través de un lenguaje estrictamente escrito que estamos eludiendo para maximizar el uso aquí para un nuevo desarrollador que se acerca estrictamente al espacio blockchain..

La mayor ventaja para los recién llegados que adquieren un propósito general es la capacidad inmediata de aplicar ese lenguaje en una gran cantidad de campos fuera de la programación blockchain. Desafortunadamente, la otra cara de esa misma moneda crea una estafa para aquellos recién llegados que buscan unirse al mercado laboral, ya que es probable que compitan directamente contra personas mayores. & ingenieros de software veteranos de otros dominios con años de experiencia en el manejo de dicho lenguaje de propósito general.

Lenguaje específico del dominio

Para proporcionar contexto, retrocedamos de la programación blockchain. Si bien es un campo de programación bastante nuevo, el concepto de un nuevo campo de programación en sí mismo no es tan nuevo; no tienes que mirar demasiado lejos de la palabra de moda gemela-reciente aprendizaje automático para ver esto. Algunos campos de programación adicionales que también han sido testigos de una evolución natural de uno o más lenguajes específicos de dominio son: estadísticas (R, MatLab), consulta de bases de datos (SQL), interfaz de usuario web (HTML, CSS).

Los programadores de blockchain de lenguajes específicos de dominio tienen una gran demanda con muy poca oferta: estos lenguajes jóvenes, cuyo único propósito es una o más de las tres opciones de programación de blockchain enumeradas anteriormente, sin duda ofrecen el camino más claro para conseguir una ubicación profesional en la industria.

Dado que estos lenguajes fueron diseñados desde cero con blockchain & Teniendo en cuenta la ingeniería de contratos inteligentes, los desarrolladores experimentados pueden tener dificultades para reajustar los marcos de referencia anteriores de otros idiomas.

Mientras que los recién llegados, con hábitos de programación nuevos, aprovechan todo lo necesario para comenzar a implementar código en proyectos actuales o futuros..

Una vez más, al eludir los fundamentos de programación muy reales que se encuentran en el lenguaje de propósito general, uno puede encontrarse en una desventaja significativa en el futuro si el lenguaje específico del dominio de su elección está de alguna manera en desuso..

El siguiente diagrama desglosa el grupo de posibles puntos de entrada de programación de blockchain de una segmentación DSL / GDL; Los idiomas transparentes / distantes son idiomas no cubierto en profundidad:

Legibilidad de sintaxis & Curva de aprendizaje

Los diferentes lenguajes de programación ofrecen diferentes niveles de legibilidad según lo simple o complejo que sea su sintaxis es. La sintaxis se refiere a la ortografía designada & reglas gramaticales de un lenguaje de programación. Por lo general, la legibilidad de la sintaxis se correlaciona con la inclinación de la curva de aprendizaje; el código difícil de leer hace que el código sea difícil de aprender. Una vez más, ciertamente hay excepciones a esta regla, sin embargo, para nuestro propósito, esta relación lineal es cierta..

Usaremos dos características de sintaxis del lenguaje de programación clave, aunque comunes, para crear un entendimiento de legibilidad específicamente para los nuevos desarrolladores. & lenguajes de programación blockchain. El más común de estos conceptos es la tipificación de variables vaga frente a estricta.

Escritura suelta vs estricta

Toda la programación utiliza ampliamente variables; sin embargo, no hay un solo tipo de variable regular, hay muchos, cada uno con propiedades únicas. Probablemente hayas escuchado algunos de estos tipos de variables, como cadenas, enteros, & booleanos. Cada lenguaje de programación aprovecha estos tipos naturales en su sintaxis; sin embargo, cada idioma superpone estos tipos de variables con su propia lógica de referencia de variables. Algunos lenguajes, como Python & Javascript, permite a los desarrolladores usar simplemente una única variable “var”: var ejemplo = “Coincentral”. Esta flexibilidad permite a los desarrolladores eludir el tedioso proceso de asegurarse de que cada tipo de variable se establezca correctamente en cada línea.. Los idiomas que ocultan la asignación de variables de bajo nivel se conocen como idiomas de escritura flexible.

La última categoría, lenguajes de tipificación estricta, consta de una sintaxis más detallada, aunque más descriptiva. La declaración de variables en lenguajes estrictamente tipados consiste en declarar específicamente el tipo de variable original que el desarrollador pretende usar: cuerda ejemplo = “Coincentral”. Si compara esto con la declaración de variable anterior, preste mucha atención a la “cadena” en negrita. Esta escritura estricta de una variable es la diferencia clave en la sintaxis entre el lenguaje de escritura flexible & lenguaje mecanografiado estrictamente. La diferencia en la sintaxis no se reduce en absoluto a solo declarar variables, es una característica clave del diseño del lenguaje que se generaliza en la totalidad de cada idioma..

Ambos escritos libremente & Los lenguajes estrictamente mecanografiados ofrecen un montón de ventajas. & contras compensaciones. Una de las compensaciones más importantes a considerar para los recién llegados es la curva de aprendizaje asociada con ambos tipos. En general, los lenguajes de tipo flexible ofrecen una sintaxis más amigable para los recién llegados & por lo tanto, una barrera de entrada más baja; Sin embargo, el mayor inconveniente inmediato a considerar es una seria laguna en el conocimiento fundamental de la ingeniería de software cuando se trata de interactuar con tipos de variables..

Aproveche esta información como mejor le parezca, visualmente separamos nuestro grupo de lenguajes de programación blockchain por tipos sueltos & sintaxis estrictamente escrita a continuación:

El paisaje del lenguaje

Finalmente estamos en la sección principal de este artículo, que es un catálogo de alto nivel. & Encuesta de lenguajes de programación blockchain disponibles. Para cada sección, presentaremos brevemente el lenguaje, resumiremos su propósito previsto dentro del entorno de blockchain, presentaremos una descripción general de los proyectos o marcos actualmente en producción., & finalmente enumere los recursos de aprendizaje para obtener más información.

C++

C ++

Empecemos con el lenguaje más antiguo de la lista primero: C ++. Introducido por primera vez por un tal Bjarne Stroustrup en 1985, C ++ fue creado como una extensión del lenguaje C original. La idea era mantener la flexibilidad, la seguridad & eficiencia de C, pero para optimizar el lenguaje para procesos más orientados a objetos. Por lo tanto, lo que lleva a C ++ a ser un lenguaje orientado a objetos mientras que C permanece orientado a procesos.

C ++ es un lenguaje de dominio general de la vieja escuela particularmente poderoso que es bastante popular para la programación básica de blockchain.

Sin embargo, se advierte al nuevo desarrollador. Como lenguaje estrictamente tipado con una sintaxis relativamente desactualizada en relación con sus pares, la curva de aprendizaje es muy empinado. Es probable que sea el lenguaje más difícil de utilizar para un nuevo desarrollador; sin embargo, debe afirmarse que el conocimiento fundamental obtenido al impulsar la curva de aprendizaje de C ++ es insuperable. Como se dijo anteriormente, el mundo blockchain se apoya en gran medida en C ++, por lo que no encontrará escasez de recursos de aprendizaje:

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

Demonio de ondulación: https://github.com/ripple/rippled

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

Javascript

Javascript

JavaScript es un lenguaje de programación de secuencias de comandos de tipo flexible para la web compatible con los principales navegadores; es el idioma principal utilizado para mejorar HTML estático & Páginas CSS a interfaces de usuario completas. Algunas de estas interfaces de usuario web comunes incluyen animaciones, páginas refrescantes, menús de usuario & cuadros de diálogo, mapas interactivos, etc.

Este lenguaje que impulsa todos los comportamientos de las páginas web en los navegadores modernos, Javascript, nunca debió dejar la capa de presentación de más alto nivel de una aplicación web. Sin embargo, es innegable que Javascript despegó, especialmente para los recién llegados, de una manera sin precedentes. Con Node.JS colocando primero Javascript en el lado del servidor, luego Angular / React / Vue básicamente reescribiendo la pila HTML / CSS del lado del cliente, Javascript de pila completa se ha convertido en furor. Sin profundizar demasiado, es seguro decir que al menos un puñado de desarrolladores veteranos se quejarán ante esta recomendación. Si bien estas quejas pueden tener algún mérito, no hacen que la siguiente oración sea falsa:

Javascript es muy amigable para los recién llegados, madura, & ahora arraigado en todas las partes de la pila web moderna.

Para Javascript, el corredor de vanguardia en el soporte de blockchain es el proyecto Lisk blockchain. Su página de destino dice mucho en términos de su creencia en la construcción de un ecosistema blockchain completo en Javascript: “Lisk facilita a los desarrolladores la creación e implementación de aplicaciones blockchain en JavaScript”.

Recursos de aprendizaje

Lisk: https://lisk.io/

Pitón

Pitón

Python, un lenguaje de programación relativamente moderno, es a menudo el favorito de los recién llegados, ¡y por una buena razón! Python fue diseñado por Guido van Rossum con simplicidad de sintaxis & legibilidad sobre todo. Desde su lanzamiento, Python se ha convertido en un lenguaje simple pero poderoso con un apoyo masivo de la comunidad que lleva a la integración de Python literalmente en todas partes, desde bibliotecas de interfaz de usuario web como Flask hasta elementos esenciales de aprendizaje automático como NumPy..

Si bien con Python nativo uno no puede contribuir técnicamente a una cadena de bloques existente, escribir aplicaciones descentralizadas o mantener una oferta inicial de monedas, sería un error dejar a Python fuera de esta lista, ya que casi todos los ecosistemas de cadenas de bloques tienen uno o más herramientas escritas en & para Python.

Recursos de aprendizaje

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

Envoltorio web Ethereum – https://web3py.readthedocs.io/

VAMOS

VAMOS

El lenguaje de programación GO (abreviatura de GOLang) es un lenguaje de dominio general relativamente moderno desarrollado en Google en 2007 & presentado para uso público en 2012. Diseñado como un lenguaje robusto y de usos múltiples, GO fue un intento de combinar la sintaxis & facilidad de uso de lenguajes modernos como Python & Javascript, con el rendimiento & ventajas de seguridad de los lenguajes compilados más antiguos, como C.

GO es un lenguaje compilado, lo que significa que se ejecuta directamente dentro de un sistema operativo. Esta característica permite la máxima flexibilidad cuando se trata de usar GO para múltiples partes de un proyecto de blockchain. ¿Quiere contribuir directamente a una cadena de bloques existente? Ethereum tiene un SDK de protocolo escrito en GO. ¿Quiere escribir un contrato inteligente? La cadena de bloques de Hyperledger Fabric de Linux-Foundation tiene eso cubierto.

Recursos de aprendizaje

Ir a la documentación – https://golang.org/doc/

Ir a Ethereum – https://github.com/ethereum/go-ethereum

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

Solidez

Solidez

La solidez es similar a javascript idioma específico del dominio hecho por el equipo de Ethereum (Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai & otros) para crear aplicaciones descentralizadas en la plataforma Ethereum. Es de lejos el más adaptado & DSL convencional que ha tenido una amplia adopción dentro de la comunidad Ethereum & industria blockchain.

Para cualquiera que busque construir una dApp o mantener una ICO, Solidity es sin duda una de las formas más sencillas de sumergirse directamente en el corazón de todo. Dado que el desarrollo de Solidity comenzó antes de la bifurcación de Ethereum, afortunadamente evitó cualquier efecto de ingeniería en parte del desacuerdo civil, como lo demuestran tanto Ethereum Classic & Ethereum soporte continuo de Solidity. Además, el equipo de Cardano también anunció recientemente el soporte de Solidity, lo que convierte a Solidity en el DSL de programación de cadena de bloques única compatible con múltiples cadenas de bloques..

El lenguaje en sí fue creado priorizando la adopción por parte de los desarrolladores, lo que condujo a una sintaxis similar a la del siempre popular Javascript con, por supuesto, algunos cambios..

Recursos de aprendizaje

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

Documentación de solidez: https://solidity.readthedocs.io/en/v0.4.24/

Para concluir

Bitcoin & La tecnología blockchain continuará revolucionando la forma en que los datos & los activos se transfieren: está claro que el impacto será global & agnóstico de la industria. No importa por dónde empiece, dar el primer paso para aprender uno de estos idiomas ya es un primer paso sustancial. El desajuste en la oferta y la demanda de este conjunto de habilidades no se puede subestimar.

Las mejores estimaciones sitúan el número de desarrolladores activos en todo el mundo, alrededor de ~ 20 M. Sin embargo, las estimaciones de la industria indican que menos de 1 en una enorme 1000 los desarrolladores activos se sienten seguros de sus habilidades para considerarse programadores de blockchain & se postulan activamente para puestos vacantes. Para los menos inclinados a la aritmética, eso significa que hay aproximadamente alrededor de 20 mil programadores de blockchain.

programación1

Si eso parece mucho, echemos un vistazo a Microsoft: con una plantilla de aproximadamente 100.000 – Supongamos que tienen al menos un personal de soporte por ingeniero de software, lo que nos deja con alrededor de 50 mil programadores. En el otro lado, El gigante bancario Goldman Sachs cuenta actualmente con ~ 9 mil programadores & ingenieros.

El punto es que esta escasez de programadores de blockchain es muy real & la respuesta a tu diálogo interior pero es demasiado tarde para empezar a aprender desde cero? es NO. Para desarrolladores, inversores, & reguladores y todos los demás involucrados, todavía es muy pronto.

La única pregunta es en qué proyecto quieres empezar a trabajar & que problema quieres empezar a resolver?

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map