Solidity es un lenguaje de alto nivel orientado a contratos. Su sintaxis es similar a la de JavaScript y está enfocado específicamente a la Máquina Virtual de Etehreum (EVM).
Contratos inteligentes
En primer lugar, la documentación oficial de Solidity es excelente.
En su web oficial puedes encontrar toda la información técnica que necesitas sobre las potencialidades y mejoras que presenta este lenguaje con cada nueva versión.
Además, el desarrollo y mejora al lenguaje es constante demostrando que la comunidad busca mejorar e implementar nuevas funciones para hacer más sencillo y seguro la programación de DApps.
Si lo que deseas es programar en Solidity y ya tienes conocimientos previos de programación y desarrollo en otros lenguajes, este es el primer lugar al que debes ir.
Si por el contrario, no tienes conocimientos en programación y desarrollo, primero deberás conocer las formas y operaciones básicas de los lenguajes de programación para entonces iniciar tu proceso de aprendizaje sobre Solidity.
Por otro lado, dos de los libros más importantes dedicados al desarrollo en Solidity son Solidity Programming Essentials de Ritesh Modi y Ethereum Smart Contract Development de Mayukh Mukhopadhyay.
Ambos libros han sido editados por Packt y están pensados para que interesados en el mundo de programación de Solidity pasen de ser principiantes a avanzados programadores en este lenguaje. Si quieres conocer aún más sobre Ethereum entonces puedes complementar tu lectura con Mastering Ethereum escrito por Andreas Antonopoulos y Gavin Wood.
Si unes todos estos elementos de lectura entonces comenzarás a comprender muy bien qué es Ethereum y cómo puedes usar Solidity de forma efectiva para programar tu primera DApp y tal vez, con suerte, cambiar el mundo a mejor.
Herramientas para programación y depuración
Para hacer posible esto deberás contar con herramientas para programar y depurar lo que escribas en este lenguaje.
En ese caso, los IDE o Entorno Integrado de Desarrollo (Integrated Development Environment, en inglés), serán tu herramienta para lograr esto.
Un IDE es un programa que cuenta de forma integrada con una serie de herramientas que harán más sencilla tu labor de programar en un determinado lenguaje.
El primero de ellos es Remix.
Remix es un IDE web que podemos usar desde nuestro navegador y con el cual podremos programar y probar nuestras aplicaciones escritas en Solidity sin necesidad de instalar nada.
Otra herramienta muy usada en el mundo del desarrollo sobre Ethereum y Solidity es Truffle.
De hecho, Truffle es por lejos la herramienta mejor integrada del mundo Ethereum para la programación en Solidity. Pero por otro lado, la cantidad de opciones de Truffle lo hace una herramienta compleja de usar, en especial, si estás comenzando a aprender, por lo que solo es recomendable para personas con conocimientos más avanzados.
Herramientas como MythX, Mythril o Alethio son algunas de las opciones más potentes en este sentido, permitiéndote potentes análisis de seguridad (para los casos de MythX y Mythril) y la monitorización de tus smart contracts (en el caso de Alethio).
una de las recopilaciones más completas de herramientas y recursos de aprendizaje para Ethereum y Solidity la puedes encontrar en este repositorio de ConsenSys.