Lenguajes de programación que necesitas en la Web3

En el mundo de la informática actualmente existen al menos unos 8900 lenguajes de programación distintos y muchos de ellos tienen usos en el mundo Web3. Se trata de una enorme cantidad de lenguajes, especialmente si tenemos en cuenta que la lista de lenguajes de programación más usados es bastante más corta (menos de 100). Esto nos da una idea clara de que los lenguajes de programación son una herramienta muy extendida en el mundo de la informática general y lo mismo pasa con el mundo Web3.

El mundo de los lenguajes de programación para Web3 se puede decir que empezó con Bitcoin Script, y esto es así por una simple razón: Web3 es la descentralización de la Web, y Bitcoin Script incluso con su limitada capacidad, permite construir dicha descentralización.

De hecho, desarrollos como las Colored Coins, proyectos como Counterparty o EPOBC de ChromaWay (que pasaría a formar parte de OpenAssets), son solo los primeros intentos en hacer de la Web3 una realidad más amplia construida sobre Bitcoin. En la actualidad, esos intentos se ven replicados en proyectos como RSK y Bisq, que dejan claro que la Web3 sobre Bitcoin es posible, y proyectos en construcción como RGB y Taro Protocol, reafirman esa idea.

Sin embargo, la llegada de Ethereum dio un enorme empujón a la idea de construir la Web3. Esto se debe a la llegada de los smarts contracts y a los lenguajes de programación del tipo Turing Completo, como Solidity. De esta forma, las posibilidades se ampliaron y ahora tenemos la capacidad de usar un enorme número de lenguajes de programación para construir la Web3.

Los 10 lenguajes de programación que necesitas saber para construir Web3

Ya hemos visto que la lista de lenguajes de programación es muy extensa, pero lo más utilizados para construir la Web3 son:

HTML5

HTML5 en realidad no puede definirse como un lenguaje de programación propiamente dicho (estrictamente es un lenguaje de marcado), sino como una unión de herramientas estandarizadas pensadas para construir entornos Web. Es, por decirlo de una forma más sencilla, el framework sobre el que construir la Web visual e interactiva que conocemos ahora.

HTML5 une a HTML, JavaScript y CSS para crear y diseñar aplicaciones tanto en Web2 como en Web3. Por ejemplo, cada vez que visitas Facebook, HTML5 está presente. Pero cuando visitas Uniswap, HTML5 también lo está, después de todo ambas son páginas web, solo las hace distintas su funcionamiento interno.

De ahí que el primer “lenguaje” que debas tener en cuenta a la hora de crear servicios en Web3 sea precisamente HTML5.

HTML5 es una de las herramientas a aprender para desarrollar en Web3

Solidity (o el lenguaje de smart contract de la blockchain)

El segundo lenguaje a tener en cuenta a la hora de programar en blockchain es Solidity, el lenguaje de programación de smart contracts de gran parte de las blockchains más utilizadas.

Solidity es el lenguaje por excelencia, ya que la mayoría de los proyectos Web3 se desarrollan sobre Ethereum o redes compatibles con la Ethereum Virtual Machine (EVM). Así que, saber Solidity te ayuda no solo a programar smart contracts en Ethereum, sino en una amplia selección de blockchains que usan Solidity y EVM para crear sus soluciones de smarts contracts.

Por ejemplo, Solidity es usado en:

  1. Polygon
  2. BNB Chain
  3. Avalanche
  4. Arbitrum
  5. Fantom
  6. Cronos
  7. Klaytn
  8. GNOSIS
  9. Kava
  10. Celo
  11. Moonbeam
  12. RSK
  13. Astar
  14. Moonriver
  15. Metis
  16. Oasis
  17. Telos
  18. Theta
  19. Wanchain
  20. Harmony

Y esta es una lista corta de las más de 100 blockchain compatibles con EVM, lo que deja claro el hecho de que saber Solidity abre enormes posibilidades en el desarrollo Web3.

Por supuesto, también entra en juego la otra cara de esta situación: hay plataformas blockchain con capacidad Web3 que no son compatibles con Solidity. En este caso entran en juego otros lenguajes de programación como bien podrían ser:

  1. C++ usado en EOS y Ontology.
  2. Haskell usado en Cardano.
  3. MSIL usado en NEO y su NEO Virtual Machine, y con el que se ofrece soporte nativo a .NET (C#, VB.Net y F#) así como Python, Go, Java, Kotlin y JavaScript.
  4. Rust es usado en redes como Cosmos, por medio de CosmosWASM, aunque también hay soporte para otros lenguajes.

Tal como se puede ver el soporte a lenguajes de programación en blockchain es muy amplio, y las posibilidades de crear smart contracts usándolos son prácticamente infinitas.

Solidity es uno de los lenguajes de programación de smart contracts más usados para el desarrollo Web3 y DApps

Python

Python es un lenguaje de programación con enormes posibilidades, no solo para construir aplicaciones de escritorio, sino para campos tan diversos como la investigación científica, análisis de datos, IA y por supuesto blockchain.

En blockchain, Python se usa mucho para análisis de datos, desarrollar aplicaciones Web (usando frameworks como Django o Flask), aplicaciones de escritorio (Electrum Wallet, es un ejemplo) o simplemente para habilitar acceso a APIs Web3 usando este lenguaje tan ampliamente adoptado en el mundo de la informática (por ejemplo, Web3 Python permite crear aplicaciones descentralizadas compatibles con EVM).

Es precisamente la gran versatilidad de Python lo que lo hace tan usado en el ecosistema. Y de hecho, ahora con la llegada de potentes interfaces IA, la mayoría de ellas desarrolladas en Python, este lenguaje vivirá una enorme explosión de uso para integrar Web3 e IA de una forma más efectiva.

Rust

Rust es otro lenguaje de programación que está siendo usado en el mundo de la blockchain, ya que está diseñado para ser seguro por defecto a nivel de memoria (memory-safe). Esto significa que los programas creados en Rust cuentan con protecciones que por defecto le hacen más seguro sin perder velocidad.

Rust es muy usado en blockchain para generar las conocidas Máquinas Virtuales (VM) o para smart contracts que buscan evitar problemas relacionados con el manejo de espacios de memoria y manejo de variables. Además, es usado también en la implementación de nodos y software de infraestructura que busca ser más seguro para atender a los usuarios ansiosos de descentralización.

Un buen ejemplo de este uso lo podemos ver en Rust-Web3, una implementación de Web3 para Ethereum. También lo podemos encontrar en la construcción de SputnikVM, una EVM con capacidad WASM para redes basadas en Ethereum y que está implementada en Rust.

CosmosWasm o CosmWasm también es capaz de usar Rust para generar smart contracts con soporte multi-chain o multi-cadena. Solana y NEAR también usan Rust para la generación de sus smart contracts.

De hecho, Rust es uno de los lenguajes de programación más usados para construir sistemas de privacidad como lo es zk-SNARKs y zk-STARKs en distintas blockchain, lo que se considera el futuro de muchas de estas redes.

Rust se ha ido ganando espacios como un lenguaje de programación de carácter general y ha llegado incluso a la Web3

TypeScript

TypeScript es un superset de JavaScript, es decir, TypeScript es JavaScript con vitaminas en forma de ligeros cambios de sintaxis, tipado fuerte y una serie de añadidos pensados en mejorar la legibilidad y la pureza del código.

Al ser un superset, quien sabe JavaScript, rápidamente se adapta a TypeScript, y generalmente quien llega a TypeScript, no le abandona. Después de todo, lo que puedes hacer en JavaScript, lo puedes hacer en TypeScript, generalmente de forma mucho más fácil y con mejores herramientas si lo que te interesa es tener código más seguro.

Aquí no hablaremos de la típica flamewar de JavaScript vs TypeScript, ya que al final ambos son lenguajes de programación perfectamente capaces y que los desarrolladores pueden usar para sus proyectos.

Pero el crecimiento de TypeScript en la industria lo pone en la lista por una razón: muchos proyectos Web3 están migrando de JavaScript a TypeScript. Un buen ejemplo de esto es la mismísima librería web3.js, que inicialmente estaba escrita en JavaScript y desde 2020 comenzó la migración a TypeScript (desde la versión 1.3.0).

Go

Go o Golang, es otro lenguaje de programación que ha sufrido una rápida expansión en su uso debido a una situación muy parecida a la que vemos en Rust: la seguridad.

Go es un lenguaje de programación centrado en brindar un entorno de memoria seguro, un gran sistema de garbage-collector, facilitar la compilación cruzada (cross-chain, habilitando soporte multiplataforma de forma rápida), entre otras características que le hacen eficiente a nivel computacional.

En el mundo blockchain y P2P hay dos grandes proyectos que resaltan por su uso de Go como lenguaje de programación principal. El primer proyecto es Go Ethereum o GETH, el principal software de nodos de Ethereum y de redes compatibles. Mientras que el segundo proyecto es IPFS o Inter Planetary Filesystem, la principal plataforma de almacenamiento de datos descentralizados usados en DApps.

¿Suficientes razones para aprender Go? La verdad es que hay muchas más, especialmente si estás interesado en desplegar infraestructuras blockchain. Por ejemplo, Docker uno de los software de containers más usado en el mundo está escrito en Go, por lo que conocer el lenguaje ayuda a los programadores a crear herramientas personalizadas (soluciones puertas adentro) para su infraestructura si usan Docker.

Proyectos de la talla de Kubernetes, InfluxDB, OpenShift y lnd (una implementación de Lightning Network de Bitcoin), son otros proyectos relacionados con el mundo blockchain que también están construidos en Go.

Go o Golang, otro lenguaje especialmente útil en Web3 y blockchain

Ruby

Ruby es uno de esos lenguajes más incomprendidos en el mundo de la programación. Muchos te dirán que no vale la pena aprenderlo, que es complejo y difícil. La realidad es que Ruby es muy usado en la industria para crear soluciones confiables, de hecho, muchos exchanges confían en Ruby para desarrollar el software que hace funcionar sus plataformas, y no te confundas, lo mismo pasa en el mundo descentralizado.

Redes como Ethereum tienen todo lo necesario para usar este lenguaje en el desarrollo de Dapps. Lo mismo pasa en otras redes como NEO, Cosmos, Avalanche o Polkadot. Un proyecto muy conocido que usa este lenguaje es Peatio, considerado uno de los proyectos open-source más grandes para el desarrollo de exchanges y que puede ser usado para crear exchanges descentralizados (DEX).

GraphQL

GraphQL no es un lenguaje de programación como tal, sino un lenguaje para crear peticiones de datos por medio de APIs.

GraphQL te permite escribir esquemas de petición de datos que usan APIs de una plataforma para obtener acceso a dicha información. De esta manera, se facilita a los programadores acceder a los datos que están dentro de una plataforma, usando para ello una estructura estandarizada.

GraphQL empezó su vida como un desarrollo in-house de Facebook, y desde su liberación como software libre, ha sido usado en distintos proyectos con un mismo fin: hacerle la vida más simple a los desarrolladores.

En blockchain, GraphQL es usado para acceder a datos de terceros que están accesible por medio de APIs. Por ejemplo, Bitquery dispone de un acceso API compatible con GraphQL con el que puedes acceder a datos de blockchains como Bitcoin, Bitcoin Cash, Ethereum, Litecoin y otras criptomonedas y blockchains.

La utilidad de esto, es que puedes acceder a esa información sin contar directamente con esa infraestructura, reduciendo costes y acelerando el desarrollo. Si no te gustan las soluciones centralizadas, puedes ir a otros proyectos como The Graph, que también ofrecen este potencial pero usando soluciones descentralizadas.

SQL y noSQL

A esto último por supuesto, se le puede complementar con el conocimiento de lenguajes del tipo SQL y noSQL. Ambos lenguajes son útiles para desarrollar aplicaciones Web3 o aplicaciones no-Web3 pero que aún así son útiles en el espacio blockchain.

Por ejemplo, un explorador de bloques es especialmente útil para los usuarios de criptomonedas, pero estos no serían tan útiles de no ser por las bases de datos SQL que respaldan su funcionamiento.

En este mundo hay muchas opciones que tomar, pero las más importantes son:

  1. SQL: MySQL, MariaDB, MSSQL, OracleDB o PostgreSQL
  2. noSQL: MongoDB, Redis, Cassandra, Firebase, InfluxDB.

Conclusiones

Tal como ves en esta lista hemos nombrado más de 10 lenguajes (especialmente a la hora de programar smart contracts) pero aún así, hemos mencionado los principales espacios de interés que debes tener en cuenta a la hora de desarrollar aplicaciones Web3.

La realidad es que el mundo de la programación está en constante cambio, que existen herramientas que pueden ajustarse mejor o no a una determinada tarea, pero eso es algo que debes estudiar a la hora de comenzar con el desarrollo de una aplicación, con el fin de decidir finalmente qué lenguajes y herramientas usarás para hacer realidad tu proyecto.