Motivación
Cuando trabajaba como científico de datos en Quora, solían pedirme recursos para aprender SQL. Me costaba encontrar algo en lo que realmente pudiera confiar porque un buen recurso debía ser gratuito, no requerir registro y cuidar la pedagogía; tenía que importarle sinceramente a sus usuarios y no había nada así disponible.
Al superar algunos pequeños obstáculos técnicos, creo que Select Star SQL cumple ese estándar. Mi esperanza es que, como hicieron Learn You a Haskell for Great Good! y Beautiful Racket para Haskell y Racket, Select Star SQL se convierta en el mejor lugar en Internet para aprender SQL.
Pedagogía
Estos principios han guiado el diseño de este proyecto:
-
Programar se aprende mejor haciendo.
Una gran parte del material consiste en ejercicios, y esforzarse con ellos debería ocupar la mayor parte de tu tiempo. -
Los ejercicios deben ser realistas y sustanciales.
Como dijo Alan Kay: "Nunca permites que el aprendiz haga algo que no sea lo real; pero tienes que esforzarte mucho para averiguar cuál es la cosa real en el contexto del nivel de desarrollo de su mente." -
Aprender a programar es aprender un modelo mental.
Nuestro objetivo no es aprender las reglas deGROUP BYo cuándo elegir unLEFT JOINsobre unINNER JOIN. Sabemos que hemos tenido éxito si, después de escribir una consulta SQL, puedes imaginar lo que la computadora hará y qué salida producirá. Solo entonces podrás resolver problemas reales con SQL.
Conjunto de datos
Nuestro conjunto de datos documenta a los reclusos ejecutados en Texas desde 1976 hasta la actualidad. Se extrajo del sitio de la Texas Department of Criminal Justice usando medios automáticos cuando fue posible. Sin embargo, muchos datos previos a 1995 solo estaban disponibles como imágenes y requirieron una extracción manual laboriosa.
Los datos crudos están disponibles como csv para descarga. Debido a la extracción y limpieza manual, probablemente sea el conjunto de datos de ejecuciones de Texas más completo en Internet. También puedes explorar un subconjunto preparado para este libro:
Aspectos técnicos
-
Bases de datos del lado cliente. Uno de los desafíos para mantener el sitio gratuito fue evitar pagar por alojamiento con backend. Para ofrecer una experiencia práctica con una base de datos (ver Pedagogía), sería necesario alojar y pagar por un backend. Afortunadamente existen bases de datos del lado cliente. Esto me permite usar el alojamiento estático gratuito de Github Pages y ejecutar una base de datos SQLite en tu navegador. Alon Zakai y otros lo hicieron posible portando el código C de SQLite a Javascript con Emscripten.
-
Matthew Butterick. Conocí a Matthew en la Racket Summer School y quedé impresionado por su trabajo en Beautiful Racket y Practical Typography. Como quizás notes, tomé muchas ideas de diseño de allí.
-
Jekyll. Si no fuera por Jekyll, habría terminado escribiendo todo el HTML a mano. Menos mal por Jekyll.
-
Web Components. Pude reutilizar mucho código escribiendo los ejercicios interactivos y los componentes de cuestionario como etiquetas HTML personalizadas (Web Components). Es un desarrollo relativamente nuevo y espero que el W3C fomente su adopción.
Créditos y Contacto
Para correcciones y sugerencias, escríbeme (Kao) a zichongkao@gmail.com. Puedes encontrar más sobre mí en Kaomorphism.
Muchas gracias a Noam Castel y Jowan Vogel por sus traducciones al hebreo y neerlandés, respectivamente, y a todos los que han ayudado con comentarios y revisiones.