Solidity puede considerarse un lenguaje de "nivel superior" que Serpent. ¿Hay características de "bajo nivel" en Serpent o que podrían implementarse en Serpent, que son imposibles o inviables de hacer con Solidity?
Si los hay, un orden de lo que es imposible, a lo que es inviable o poco probable de implementar en Solidity, nos ayudaría a determinar si uno debe usarse sobre el otro.
No creo que haya una "limitación" para que Solidity pueda implementar funciones/accesos de bajo nivel, como los tipos de cosas que Serpent puede hacer. Sin embargo, los dos idiomas pueden tener diferentes prioridades. Es probable que Serpent se centre en funciones de nivel inferior en comparación con el lenguaje insignia de alto nivel Solidity.
Lenguajes de alto nivel de Ethereum en orden por cercanía puedes llegar a acceder directamente a la EVM:
Serpent tiene acceso directo a los códigos de operación EVM (es un superconjunto del lenguaje de alto nivel LLL) , pero también tiene un montón de características de alto nivel. La desventaja de Serpent es que el compilador es más complejo y, en teoría, podría contener más errores.
Se puede argumentar que Solidity es más propenso a problemas relacionados con la profundidad de la pila:
Vitalik Buterin escribió este comentario en Reddit :
Solidity compila todas las variables en valores en la pila, y los métodos DUPN en Ethereum solo le permiten obtener el valor 2-16 de la pila en cualquier momento. La profundidad real de la pila es 1024. Las variables de serpiente se compilan en accesos de memoria, por lo que no tiene ese problema en serpiente; para sortearlo con solidez, le recomiendo que intente empaquetar las cosas en estructuras más.
Siendo el lenguaje insignia, Solidity se ha centrado en diferentes prioridades que Serpent. Solidity se ha centrado menos en agregar funciones de bajo nivel en favor de funciones de nivel superior, pero no creo que sea imposible agregar más funciones de bajo nivel a Solidity. De hecho, hay una historia sobre la hoja de ruta de desarrollo de Solidity para agregar ASM en línea a Solidity , lo que permitiría un acceso de nivel inferior a EVM.
Esto no es exactamente una comparación de los dos idiomas, pero es relevante para alguien que busca considerar uno sobre otro.
Una auditoría encontró errores críticos en Serpent, y los auditores llamaron al proyecto Serpent "de baja calidad" y "defectuoso".
Vitalik, quien escribió Serpent, dijo esto en un tweet : "PSA: ahora considero que Serpent es una tecnología obsoleta; no hay suficientes protecciones de seguridad para los estándares actuales".
También parece que Vitalik no continuará desarrollando Serpent, con su enfoque en Viper, que también tuiteó que no estará listo hasta después de una auditoría externa.
El informe de Zeppelin sugiere que Solidity es la mejor respuesta disponible en la actualidad, ya que más desarrolladores están trabajando en él y es el lenguaje principal. Habiendo dicho esto, todavía tienen que hacer la misma auditoría para Solidity.
La principal diferencia es una sintaxis. Serpent es más como python mientras que Solidity es como javascript cpp
Pero Solidity también está mejor desarrollado y tiene buenas características como plantillas.
Encontrará muchos más ejemplos de código de solidez en línea.
ética
hudson jameson