Contenido

Comparación contra Karel.js

Ú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.jsReKarelNotas
Lenguaje ( Breaking change)
Karel.js usa Karel Java 1 y Karel Pascal 1ReKarel utiliza ReKarel Java 2.0.0 y ReKarel Pascal 2.0.0Pueden ver los cambios de java aquí
Los de pascal aquí
Editor del mundo
Karel mueve la vista con clic y arraste y flechitasReKarel utiliza el scroll del navegador, lo que le da compatibilidad con touch
Karel edita de celda en celdaReKarel usa una selecciónShift+tecla es similar a Karel.js
El editor de Karel tiene mejor UX cuando solo usas el ratónEl editor de ReKarel tiene mejor UX si se utiliza el ratón junto con los atajos del tecladoCreo 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 zumbadoresReKarel 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 mundoEl 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 aleatoriaReKarel permite configurar el rango
Karel.js pierde calidad al aumentar el zoom del navegadorReKarel 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 stackHay 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 5ReKarel usa Codemirror 6Esto mejora la experiencia táctil
-ReKarel ofrece cambiar el tamaño del código, incluyendo atajos de tecladoSi necesitas esto, pero no puedes migrar. Puedes lograr lo mismo en Karel.js con extensiones que carguen CSS personalizado
Soporte del navegador de ctrl+fAgrega 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 indentaEl 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 colorReKarel usa Lezer para hacer syntax highlight, una palabra clave en el lugar incorrecto no sé coloreaEsto permite detectar errores más rápido
Karel.js muestra los tabs como flechasReKarel no muestra los tabs como flechasEn la experiencia del creador de ReKarel, estas confunden a los estudiantes
Karel.js ofrece 50 temas para el editor de códigoReKarel ofrece 5 temas para el editor del código, 3 de estos tienen variantes en el modo oscuroPara los que extrañen el azul de KarelOmi
-ReKarel puede cambiar el lenguaje del código entre Java y PascalAunque se borran los comentarios
Ejecución
Karel.js ofrece ejecutar el código paso a pasoReKarel 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 futuroReKarel 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 breakpointsReKarel sí actualiza la pila si se ve al futuro aunque no haya breakpointsEsto 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 pilaReKarel deja de actualizar la pila si se ejecutan muchas instruccionesYa 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 consolaSi se termina en error, te muestra un mensaje en consola y el mundo cambia de colorAl 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 vezAl ejecutar paso a paso, ReKarel se detiene en la condición del ciclo mientras/while cada vez que se evalúaEsto 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áticamenteEjemplo
// @autoSkip
void giraDerecha() [...]
Compatibilidad
Karel.js es compatible con navegadores antiguos como IEReKarel no es compatible con navegadores antiguos
Karel.js usa Codemirror 5ReKarel 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.2ReKarel usa Bootstrap v5.3
Karel.js usa Jquery v1.12.0ReKarel usa Jquery v3.6.1
Karel.js usa Jison 0.4.18ReKarel usa Jison 0.4.17Ups, aquí hay un downgrade accidental
Errores
Karel.js tiene un error al cambiar el retraso de ejecución mientras esta en pausaReKarel no tiene este errorArreglado 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 recursivaReKarel no tiene este errorArreglado 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 pierdeReKarel no tiene este errorAmbos 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 anchaReKarel no tiene este error
Karel.js no tiene este errorReKarel tiene algunos problemas de syntax highlightVer issue en github
Karel.js ha sido usado por más gente y más tiempo, lo que implica que sus errores son conocidosReKarel aún está en pre-release y no ha tenido tanto uso por terceros, lo que conlleva un riesgo de errores desconocidosDicho 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 predefinidoPuedes cambiar el nombre del archivo a descargar
-Soporta modo oscuroPuedes 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 verticalDiseñ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ódigoPregunta 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 lenguajeEsto 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 controlCambiar el tamaño del mundo se hace desde el menú mundoEsto 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.jsLa documentación fue hecha desde cero para ReKarel
La documentación tiene ejercicios para el lector y está redactada como un tutorial de KarelLa 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 limitadoEn 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 KarelOmiDocumentación incompleta de ReKarelAl momento de escribir esto, solo tiene una información de migración desde Karel.js a ReKarel