Última actualización 29 Sep 2024
(Karel 1.2.8 vs ReKarel 1.0.0-beta.2.1)
A continuación se muestra una lista de comparativa contra Karel.js. A diferencia de la guía de migración, aquí no se entra en mucho detalle en como trabajar al rededor de estas diferencias, pero se muestran más de estas.
Como nota, esta sección puede quedar desactualizada debido a que ReKarel y Karel.js se actualizan a diferentes velocidades que está página.
Karel.js | ReKarel | Notas |
---|---|---|
Lenguaje ( Breaking change) | ||
Karel.js usa Karel Java 1 y Karel Pascal 1 | ReKarel utiliza ReKarel Java 2.0.0 y ReKarel Pascal 2.0.0 | Pueden ver los cambios de java aquí Los de pascal aquí |
Editor del mundo | ||
Karel mueve la vista con clic y arraste y flechitas | ReKarel utiliza el scroll del navegador, lo que le da compatibilidad con touch | |
Karel edita de celda en celda | ReKarel usa una selección | Shift+tecla es similar a Karel.js |
El editor de Karel tiene mejor UX cuando solo usas el ratón | El editor de ReKarel tiene mejor UX si se utiliza el ratón junto con los atajos del teclado | Creo que esto significa una curva un poco más empinada de aprendizaje, pero que permite más |
- | ReKarel ofrece dos modos de selección optimizados para el uso de mouse y touchscreen | |
Karel.js ofrece atajos de teclado para colocar zumbadores | ReKarel ofrece atajos de teclados de paredes, zumbadores, mover Karel, desplegar | |
- | ReKarel permite modificar el zoom con botones y pinch-zoom en entradas táctiles | |
- | Permite deshacer y rehacer los últimos cambios al mundo | El historial de ReKarel es limitado según cuantas casillas afecten los cambios, el último cambio siempre se puede deshacer |
- | ReKarel permite configurar completamente el color del mundo de Karel y ofrece temas predefinidos como modo obscuro | |
Karel.js al presionar r coloca entre 1 y 100 zumbadores de forma aleatoria | ReKarel permite configurar el rango | |
Karel.js pierde calidad al aumentar el zoom del navegador | ReKarel incrementa la resolución del mundo para que siempre se vea bien, incluso con zoom del navegador | |
- | Puedes configurar los límites de instrucciones y tamaño del stack | Hay un error heredado desde Karel.js que hace que los límites de instrucciones no se guarden en el mundo.in que descargues |
Editor del código | ||
Karel.js usa Codemirror 5 | ReKarel usa Codemirror 6 | Esto mejora la experiencia táctil |
- | ReKarel ofrece cambiar el tamaño del código, incluyendo atajos de teclado | Si necesitas esto, pero no puedes migrar. Puedes lograr lo mismo en Karel.js con extensiones que carguen CSS personalizado |
Soporte del navegador de ctrl+f | Agrega un panel de buscar y reemplazar accesible por ctrl+f | |
- | Da soporte a ctrl+d y multi cursor con alt+clic | |
- | Resalta la pareja de llaves seleccionada, incluyendo inicio y fin en pascal | |
- | Auto indenta | El autoindentado de ReKarel aun no es perfecto |
Karel.js provee syntax highlight basado en palabras claves, es decir, las mismas palabras siempre se colorean del mismo color | ReKarel usa Lezer para hacer syntax highlight, una palabra clave en el lugar incorrecto no sé colorea | Esto permite detectar errores más rápido |
Karel.js muestra los tabs como flechas | ReKarel no muestra los tabs como flechas | En la experiencia del creador de ReKarel, estas confunden a los estudiantes |
Karel.js ofrece 50 temas para el editor de código | ReKarel ofrece 5 temas para el editor del código, 3 de estos tienen variantes en el modo oscuro | Para los que extrañen el azul de KarelOmi |
- | ReKarel puede cambiar el lenguaje del código entre Java y Pascal | Aunque se borran los comentarios |
Ejecución | ||
Karel.js ofrece ejecutar el código paso a paso | ReKarel ofrece ejecutar el código paso a paso, saltarse una llamada a una función o salir de la función actual | |
Karel.js se congela hasta terminar la ejecución de Karel cuando se ve al futuro | ReKarel muestra un throbber después de 1 segundo de ejecución que ayuda al usuario saber que ReKarel no está congelado | |
Karel.js no actualiza la pila si se ve al futuro y no hay breakpoints | ReKarel sí actualiza la pila si se ve al futuro aunque no haya breakpoints | Esto es para que sea más fácil depurar si hay un error de ejecución, aunque hace más lento la ejecución en esta condición, para esto el siguiente punto. |
Si se ejecuta al futuro y hay breakpoints, Karel.js siempre actualiza la pila | ReKarel deja de actualizar la pila si se ejecutan muchas instrucciones | Ya que actualizar el DOM es significativamente lento. Por defecto se activa esto con 200,000 instrucciones, pero se puede configurar |
Si se termina en error, te muestra un mensaje en consola | Si se termina en error, te muestra un mensaje en consola y el mundo cambia de color | Al enseñar Karel al inicio, el creador de ReKarel notó que los estudiantes no se dan cuenta cuando su mundo termina en error |
Al ejecutar paso a paso, Karel.js solo se detiene en la condición del ciclo mientras/while una vez | Al ejecutar paso a paso, ReKarel se detiene en la condición del ciclo mientras/while cada vez que se evalúa | Esto afecta el paso a paso y los breakpoints, no afecta al conteo de instrucciones para límite de instrucciones excedido, ambos Karel cuentan igual |
- | Agrega @saltatela o @autoSkip en comentario arriba de la definición de una función para que la ejecución con retraso se la salte automáticamente | Ejemplo // @autoSkip void giraDerecha() [...] |
Compatibilidad | ||
Karel.js es compatible con navegadores antiguos como IE | ReKarel no es compatible con navegadores antiguos | |
Karel.js usa Codemirror 5 | ReKarel usa CodeMirror 6 | |
Karel.js usa Split.js aprox 1.0.6 (66076e5) | ReKarel usa Split.js 1.6.5 | |
Karel.js usa Bootstrap v2.3.2 | ReKarel usa Bootstrap v5.3 | |
Karel.js usa Jquery v1.12.0 | ReKarel usa Jquery v3.6.1 | |
Karel.js usa Jison 0.4.18 | ReKarel usa Jison 0.4.17 | Ups, aquí hay un downgrade accidental |
Errores | ||
Karel.js tiene un error al cambiar el retraso de ejecución mientras esta en pausa | ReKarel no tiene este error | Arreglado en la version 1.2 (Jun 17, 2024) Uno de los motivos de crear ReKarel fue arreglar este bug :P |
Karel.js tiene un error al crear un nuevo mundo que duplica las llamadas en la pila recursiva | ReKarel no tiene este error | Arreglado en la version 1.2.8 (Jul 6, 2024) Al momento de escribir esto el Host oficial está en la 1.2.7 |
Karel.js tiene un error al recargar la pestaña actual y reiniciar el mundo, este se pierde | ReKarel no tiene este error | Ambos Karel guardan el código y el mundo en la sesión actual (pestaña del navegador) al compilar el código |
Karel.js esconde la barra de control si la pantalla no es lo suficientemente ancha | ReKarel no tiene este error | |
Karel.js no tiene este error | ReKarel tiene algunos problemas de syntax highlight | Ver issue en github |
Karel.js ha sido usado por más gente y más tiempo, lo que implica que sus errores son conocidos | ReKarel aún está en pre-release y no ha tenido tanto uso por terceros, lo que conlleva un riesgo de errores desconocidos | Dicho eso, ReKarel se creó en parte para arreglar errores conocidos en Karel.js. Puedes ver github para ver cuales errores se han identificado actualmente en ReKarel |
Misceláneo | ||
Karel.js siempre descarga los archivos con un nombre predefinido | Puedes cambiar el nombre del archivo a descargar | |
- | Soporta modo oscuro | Puedes cambiar el modo en la configuración |
Karel.js tiene soporte para importar MDO/KEC | - | En el futuro, ReKarel piensa incorporar esto |
- | Desde configuración se puede cambiar el layout a uno vertical | Diseñado para celulares, todavía requiere mejoras |
- | Revisa la versión actual de ReKarel desde la sección de acerca | |
- | Da clic en la linea del error en la consola para ir a él | |
- | Da clic la línea desde que se llamó un función en la pila para ir a está | |
No pregunta y borra la información directamente al crear un nuevo mundo o código | Pregunta si estás seguro de crear un nuevo código o nuevo mundo | |
- | Abrir un mundo .in ofrece filtro para buscar solo .in | |
- | Abrir un código ofrece un filtro para buscar solo .kj y .kp | |
- | Al descargar un código, te sugiere guardarlo con .kj o .kp dependiendo el lenguaje | Esto se podría mejorar ya que solo lo hace la primera vez que presionas descargar código |
Cambiar el tamaño del mundo se hace desde la barra de control | Cambiar el tamaño del mundo se hace desde el menú mundo | Esto es porque hacer un mundo pequeño puede ser muy destructivo, queremos que el usuario lo haga conscientemente |
Documentación | ||
La documentación es de Karel.exe, no de Karel.js | La documentación fue hecha desde cero para ReKarel | |
La documentación tiene ejercicios para el lector y está redactada como un tutorial de Karel | La documentación esta redactada para consultar dudas rápidas, como olvidar todas las condiciones que Karel puede revisar o como se escribe alguna keyword. Aunque tiene ejemplos para explicar los temas y podría funcionar como un tutorial muy limitado | En la sección de ayuda se dan enlaces a cursos de omegaup de Karel |
Los códigos ejemplo tienen syntax highlight | ||
Karel.js tiene un tutorial de recursión para contar | - | Si la comunidad lo quiere, lo puedo agregar, pero se sentía un poco como tutorial de un tema y no documentación del lenguaje |
- | En la documentación de Pascal, se explica que es un prototipo | |
Técnicamente tiene, pero de KarelOmi | Documentación incompleta de ReKarel | Al momento de escribir esto, solo tiene una información de migración desde Karel.js a ReKarel |