Skip to content
Jairo0811Public

About

Plataforma educativa con IDE, runtime y conversor para un lenguaje inspirado en SL, desarrollada con Python y PySide6.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Logo de PySL

ITLA SOF-001

Plataforma educativa de escritorio para aprender programación estructurada con SL y relacionarla con Python.

Estado de CI Python 3.12 o superior Versión 1.0.4 Estado estable Licencia MIT

Descargar PySL para Windows

📦 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.

📚 ¿Qué es 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.

🖥️ ¿Qué es PySL?

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.

✨ Funcionalidades

Á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

🛡️ Seguridad del runtime de SL

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"]
Loading

El runtime:

  • 🔒 no expone los builtins generales 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.

🔄 Conversor SL ↔ Python

📘 SL → Python

inicio
leer(nombre)
imprimir("Hola", nombre)
fin
nombre = __leer__()
__imprimir__("Hola", nombre)

🐍 Python → SL

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.

🏗️ Arquitectura

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.

🧱 Stack tecnológico

🐍 Lenguaje, interfaz y persistencia

Python, Qt y SQLite

Python 3.12 o superior PySide6 y Qt 6 SQLite

🧪 Calidad, pruebas y distribución

Pytest y GitHub Actions

Pytest Ruff PyInstaller GitHub Actions

🛠️ Desarrollo y control de versiones

Visual Studio Code, Git y GitHub

Visual Studio Code Git GitHub Compatible con Windows

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

⬇️ Descargar PySL para Windows

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.

Descargar última versión estable de PySL

  1. Abre la sección de Releases mediante el botón anterior.
  2. En Assets, descarga PySL-Windows-x64.zip.
  3. Extrae el contenido del archivo ZIP en una carpeta.
  4. 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.

🚀 Instalación para desarrollo

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.

▶️ Uso

python -m pysl.app

🔑 Credenciales predeterminadas

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.

🧪 Calidad y pruebas

python -m ruff check .
python -m ruff format --check .
python -m pytest
python -m compileall -q src

La 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.

📦 Crear una distribución para Windows

Si deseas generar el ejecutable desde el código fuente:

Unblock-File .\scripts\build_windows.ps1
.\scripts\build_windows.ps1

El 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.

📸 Capturas

🏠 Inicio 🖥️ IDE de SL
Dashboard de PySL IDE de SL
🔄 Conversor SL ↔ Python 🔐 Acceso local
Conversor SL y Python Inicio de sesión de PySL

Las capturas son reproducibles mediante python scripts/capture_screenshots.py y se verifican como artefacto de CI.

🎓 Información académica

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.

🧭 Continuidad académica

👨‍🏫 Continuidad por profesor

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.

📌 Estado y versionado

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.

📜 Licencia

Distribuido bajo la licencia MIT.

👨‍💻 Autor

Francis Jairo Matías Rosario · @Jairo0811

💡 Del algoritmo a la realidad.

⭐ Si este proyecto te resultó interesante, considera darle una estrella al repositorio.

About

Plataforma educativa con IDE, runtime y conversor para un lenguaje inspirado en SL, desarrollada con Python y PySide6.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages