Como ChocoPy usa python utiliza un lenguaje y una plataforma modernos y conocidos para la instrucción en ciencias de la computación, evitando el legado de las plataformas CISC obsoletas. Si bien los lenguajes de alto nivel como C ++, Go y Python simplifican enormemente la programación en el día a día, estas son abstracciones fundamentalmente necesarias: los procesadores fundamentalmente solo funcionan en un ensamblador, con compiladores necesarios para reducir el código fuente de alto nivel al ensamblaje.
Si bien la capacidad de escribir en ensamblado es un requisito menos práctico en el hardware moderno, la capacidad de leer ensamblado y una comprensión práctica de los compiladores pueden ayudar enormemente a los programadores a comprender el funcionamiento interno de los procesadores y usar esa información para escribir programas más eficientes, incluyendo los desarrollos en Python.
En el caso de ChocoPy, que es un subconjunto restringido de Python 3, fue diseñado para su uso en CS164 (Lenguajes de programación y compiladores) en UC Berkeley. Si bien ChocoPy es un subconjunto de Python, los diseñadores utilizaron un toque ligero: el objetivo era que el lenguaje "fuera lo suficientemente expresivo para escribir programas no triviales", según el documento técnico del proyecto. También menciona que, en particular, querían apoyar un paradigma orientado a objetos con la complejidad suficiente para ilustrar los matices importantes de la verificación de tipos estáticos y la generación eficiente de código.
Por esa razón y muchas otras más no menos importantes, es que te recomendamos este curso de python profesional, el cual lo imparten de manera presencial o en linea, con instructores expertos en este lenguaje de programación.
Empezaremos por mencionar que Python se usó como base ya que los creadores querían usar un lenguaje cuya sintaxis, reglas de verificación de tipos y semántica operativa estabueran formalmente especificadas, ya que estos conceptos vinculan el componente teórico enseñado en clase con aspectos prácticos del desarrollo del compilador. Al usar la sintaxis de Python, los editores de código con soporte para resaltado de sintaxis ya deberían ser compatibles con ChocoPy para una máxima legibilidad.
Por otro lado, RISC-V, específicamente RV32IM, es el lenguaje ensamblador de destino para ChocoPy. El uso de un lenguaje ensamblador moderno es mucho más práctico para los estudiantes fuera del aula. El ensamblaje Z80, 6502 o 68K en el que las generaciones anteriores de programadores cortaron sus dientes no son relevantes para la informática moderna, mientras que el ensamblaje x86 está sujeto a décadas de cambios para incorporar instrucciones adicionales. (Los cuatro, como conjuntos de instrucciones CISC, son herramientas de aprendizaje menos que óptimas en términos de programación de aprendizaje en lugar de aprender una arquitectura).
Para mostrar la versatilidad de Python, un simulador de RISC-V basado en la web proporciona un entorno de prueba y un depurador paso a paso. El simulador está escrito en Kotlin y se puede compilar en JavaScript (para la versión de la GUI web) y en la JVM, para que lo utilice nuestro autocalificador basado en Java.
Como ChocoPy usa python conservando el soporte para enteros, booleanos, cadenas, clases definidas por el usuario, listas (incluidas las listas anidadas), herencia de clases y sobrecarga de métodos, y funciones anidadas que pueden acceder a variables no locales, características comunes en Python. El proyecto estuvo fuertemente influenciado por COOL, un proyecto anterior para enseñar la construcción de compiladores.
Diseño Web Grupo Codesi