Plataforma educativa de escritorio para aprender programación estructurada con SL y relacionarla con Python.
📦 Descarga la última versión estable para Windows x64 desde GitHub Releases.
📌 Nomenclatura oficial: PySL es la plataforma. SL y Python son los lenguajes. El conversor trabaja en las direcciones SL → Python y Python → SL.
SL (Structured Language) es un lenguaje de programación educativo, imperativo, estructurado y de alto nivel, orientado a la enseñanza de algoritmos y programación estructurada. Su sintaxis prioriza la claridad mediante construcciones como inicio, fin, si, mientras, para, funcion, leer e imprimir.
Los programas SL utilizados por la plataforma se guardan con la extensión .pysl para conservar la compatibilidad histórica del proyecto.
PySL es una plataforma educativa de escritorio desarrollada con Python y PySide6. Incluye un IDE para programas SL, runtime seguro, conversor bidireccional SL ↔ Python, curso, laboratorios, juegos, documentación integrada y persistencia local con SQLite.
PySL no es un lenguaje de programación. Python es el lenguaje de propósito general utilizado como referencia y como destino u origen del conversor.
| Área | Capacidades |
|---|---|
| 🖥️ IDE de SL | Editor .pysl, numeración de líneas, resaltado, abrir, guardar, ejecutar y consola |
| 📘 Lenguaje SL | Variables, entrada/salida, decisiones, ciclos, vectores y funciones |
| 🛡️ Runtime | Validación AST, proceso aislado, llamadas autorizadas y límites de recursos |
| 🔄 Conversor | SL → Python y Python → SL para el subconjunto educativo documentado |
| 🎓 Aprendizaje | Curso integrado, laboratorio del menor número par y ejemplos ejecutables |
| 🎮 Juegos | Ahorcado, adivina el número, piedra/papel/tijera y tres en raya |
| 💾 Datos | Progreso, estadísticas y preferencias persistentes con SQLite |
| 🎨 Apariencia | Temas claro y oscuro, tamaño de fuente configurable y aplicación inmediata |
| 🧭 Experiencia | Login demostrativo local, dashboard, perfil, configuración y documentación |
Cada programa pasa por esta cadena antes de ejecutarse:
flowchart TD
A["📄 Código SL (.pysl)"] --> B["🔎 Parser y transpilador"]
B --> C["🛡️ Validación AST"]
C --> D["⚙️ Proceso aislado"]
D --> E["📤 Salida limitada"]
El runtime:
- 🔒 no expone los
builtinsgenerales de Python; - 🚫 rechaza imports, atributos, acceso al sistema y llamadas no autorizadas;
- 🧾 reserva los nombres internos y valida tipos y tamaños de valores;
- ⏱️ limita tiempo, pasos, iteraciones, entrada, salida, nodos AST y tamaño numérico;
- 🧠 aplica límite de memoria mediante el sistema operativo cuando está disponible;
- 🛑 finaliza el proceso aislado si el programa no responde;
- 🧵 se invoca desde un worker de Qt para mantener la interfaz fluida.
Este aislamiento está diseñado para ejercicios educativos locales. No debe utilizarse como sandbox para ejecutar código hostil de terceros. Consulta docs/SEGURIDAD.md.
inicio
leer(nombre)
imprimir("Hola", nombre)
fin
nombre = __leer__()
__imprimir__("Hola", nombre)for numero in range(1, 4):
if numero % 2 == 0:
print("par", numero)inicio
para numero desde 1 hasta (4) - 1
si numero % 2 == 0 entonces
imprimir("par", numero)
finsi
finpara
fin
Python → SL analiza el AST y rechaza construcciones sin equivalente soportado. No copia código Python arbitrario dentro de un archivo SL.
src/pysl/
├── core/ ⚙️ Configuración, sesión, errores globales y SQLite
├── language/ 📘 Parser/transpilador, validación AST y ejecución aislada
├── modules/ 🧩 Casos de uso y vistas organizados por funcionalidad
├── runtime/ ▶️ Utilidades educativas para ejemplos de consola
├── ui/ 🖥️ Ventana principal, temas y estilos compartidos
└── app.py 🚀 Composición y punto de entrada
La interfaz no ejecuta código SL directamente: delega en el servicio de lenguaje, que valida y crea un proceso con recursos acotados. La persistencia reside fuera del directorio de instalación para conservar los datos durante actualizaciones.
Más detalles en docs/ARQUITECTURA.md.
| Categoría | Tecnología |
|---|---|
| 🐍 Plataforma | Python 3.12+ |
| 🖥️ Interfaz | PySide6 / Qt 6 |
| 💾 Persistencia | SQLite |
| 🧪 Pruebas | Pytest |
| ✅ Calidad | Ruff |
| 📦 Distribución | PyInstaller |
| ⚙️ Automatización | GitHub Actions |
| 🛠️ Desarrollo | Visual Studio Code, Git y GitHub |
La forma más sencilla de probar PySL es descargar la última versión estable para Windows x64. No necesitas clonar el repositorio ni preparar un entorno de desarrollo.
- Abre la sección de Releases mediante el botón anterior.
- En Assets, descarga
PySL-Windows-x64.zip. - Extrae el contenido del archivo ZIP en una carpeta.
- Ejecuta
PySL.exe.
📦 PySL se distribuye de forma portable. Los datos y preferencias del usuario se almacenan fuera del directorio de instalación para conservarlos entre actualizaciones.
Si deseas revisar, modificar o contribuir al código fuente:
git clone https://github.com/Jairo0811/PySL.git
cd PySL
py -3.13 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".[dev,build]"🐧 En Linux o macOS, activa el entorno con
source .venv/bin/activate.
python -m pysl.app| Campo | Valor |
|---|---|
| 👤 Usuario | Jairo |
| 🔐 Contraseña | pysl2026 |
Estas credenciales pertenecen exclusivamente a la cuenta local de demostración. La aplicación compara la contraseña mediante PBKDF2 y no la almacena en texto plano. También puedes usar Continuar como invitado para explorar PySL sin introducir credenciales. Este acceso no representa un sistema de identidad para producción.
Los ejemplos se encuentran en examples/:
- 👋
hola_mundo.pysl; - 🔁
condicional_y_ciclo.pysl; - 🧩
funciones_y_vectores.pysl.
python -m ruff check .
python -m ruff format --check .
python -m pytest
python -m compileall -q srcLa suite contiene 33 pruebas automatizadas que cubren autenticación, parser/transpilador, límites del runtime, conversores, SQLite, utilidades, temas visuales, laboratorio y juegos. CI verifica Python 3.12 y 3.13; además genera y prueba el ejecutable en Windows.
Si deseas generar el ejecutable desde el código fuente:
Unblock-File .\scripts\build_windows.ps1
.\scripts\build_windows.ps1El script instala las dependencias, ejecuta Ruff, Pytest y compileall, y genera:
dist\PySL\PySL.exe
Las versiones etiquetadas como vMAJOR.MINOR.PATCH publican automáticamente un GitHub Release con PySL-Windows-x64.zip. Consulta docs/DISTRIBUCION.md o descarga la última versión estable.
| 🏠 Inicio | 🖥️ IDE de SL |
|---|---|
![]() |
![]() |
| 🔄 Conversor SL ↔ Python | 🔐 Acceso local |
|---|---|
![]() |
![]() |
Las capturas son reproducibles mediante python scripts/capture_screenshots.py y se verifican como artefacto de CI.
| Campo | Información |
|---|---|
| 🏫 Institución | Instituto Tecnológico de Las Américas (ITLA) |
| 📘 Materia | Fundamentos de Programación (SOF-001) |
| 📅 Período | 2016-C2 |
| 👨🏫 Profesor | Freidy Ramón Núñez Pérez |
| 👨💻 Autor | Francis Jairo Matías Rosario (2015-2984) |
La versión actual es una reingeniería del proyecto final original, preservado en legacy/web-original/ como memoria académica. Ese material histórico permanece en el repositorio, pero ya no forma parte de la navegación principal de la aplicación.
PySL y GameCore documentan dos proyectos académicos distintos cursados con el profesor Freidy Ramón Núñez Pérez durante el mismo período 2016-C2.
| Orden | Asignatura | Proyecto | Período |
|---|---|---|---|
| 1 | Fundamentos de Programación (SOF-001) | PySL | 2016-C2 |
| 2 | Introducción a las Bases de Datos (SOF-006) | GameCore | 2016-C2 |
La relación es académica y docente, no una dependencia técnica ni una secuencia de versiones. Ambos proyectos corresponden a asignaturas diferentes cursadas en paralelo dentro del mismo cuatrimestre.
PySL sigue versionado semántico. La rama main representa la versión estable y el historial se documenta en CHANGELOG.md.
La línea 1.x está cerrada funcionalmente. Se reservan para una eventual 2.0 el depurador paso a paso, autocompletado avanzado, proyectos multiarchivo, modo docente, internacionalización y una biblioteca estándar ampliada.
Distribuido bajo la licencia MIT.
Francis Jairo Matías Rosario · @Jairo0811




