Conceptos básicos del código: Tutoriales gratuitos para principiantes

Hola Habr! En Hexlet lanzamos este año un proyecto abierto y gratuito para principiantes: code-basics.ru . Estos son cursos de práctica interactivos para aquellos que nunca han programado en absoluto. Enseñamos los conceptos básicos de programación y hablamos sobre el diseño básico de las computadoras.


Un curso completo de PHP y el primer módulo de JavaScript ya están disponibles. En el camino Racket and Python. El código fuente completo de la plataforma y las lecciones en sí están en código abierto.


Hoy quiero contarles un poco sobre la esencia de Code Basics, su interior y la pila tecnológica.



¿Por qué es esto?


La pregunta principal: "¿por qué necesita cursos básicos regulares, un millón de ellos?" Desafortunadamente, la mayoría de los materiales disponibles son más como guías o tutoriales regulares en el estilo de "hazlo, mira aquí, funciona, es genial, ¿verdad?".


En el proceso de trabajar en los principales programas de capacitación en Hexlet, encontramos un problema: si una persona comienza completamente, completamente desde cero, sin saber qué variables y funciones son, entonces un curso o tutorial básico típico no solo no puede ayudarlo, sino incluso dañarlo. Un principiante se acostumbrará fácilmente a la "magia", no a los mejores estándares de codificación, al enfoque de memorizar detalles en lugar de comprender los sistemas.


A primera vista, el proyecto puede parecerse a Codecademy, pero hay tres diferencias importantes:


1. Lecciones en ruso. Comenzamos con PHP, incluso por este motivo: no había lecciones de ruso de alta calidad, interactivas y gratuitas, y el idioma sigue siendo popular e importante en la industria.


2. No enseñamos superficialmente. Este es un dilema eterno: por un lado, debe cubrir muchas cosas e intereses en amplitud (y "palabras populares"), por otro lado, en Hakeslet seguimos nuestros principios de la importancia de la base y la comprensión de los sistemas, no de las características. Más fácil de entender con ejemplos:


a) Consideramos los efectos secundarios y la variabilidad: esto es increíblemente importante, pero casi nadie toca estos temas en los cursos básicos.


b) Con respecto a las cadenas, es importante hablar sobre el concepto mismo de codificación . Trabajar con símbolos no se convierte en "palabras mágicas y mágicas".


c) Cuando queda claro que el lenguaje le permite hacer cosas extrañas como 1 + '7' , es importante introducir al alumno a escribir y, en particular, a escribir débilmente .


d) Cuando se pasa la base y aparecen varias piezas diferentes en la misma línea de código al mismo tiempo, es muy importante que la persona entienda de inmediato cuál es la expresión y en qué se diferencia de la instrucción. Y cómo se pueden contener las expresiones en las definiciones .


e) Cuando comienza el trabajo con funciones, es útil seguir considerando expresiones, pero ya en el contexto de llamadas, devoluciones y argumentos.


Creo que entiendes el punto. Los programadores no pensamos mucho en cosas como foo(a+b) o return foo(x) , pero para los principiantes muy a menudo tales construcciones resultan ser mucho más complicadas que el estándar foo(a) o return x . Y aquí puede echar un vistazo a todos los casos individuales, pero es mejor explicar la esencia , el sistema de reglas básicas de los lenguajes de programación.


El contenido es granular y se sirve secuencialmente, aumentando gradualmente la profundidad. Por ejemplo, las mismas funciones y expresiones se dividen en varias lecciones, donde consideramos varios aspectos, combinándolos gradualmente en el panorama general.


3. Gratis e interactivo. Creamos Code-Basics también porque no había ningún lugar para enviar a los principiantes que se estaban preparando para nuestro programa principal, "La profesión del desarrollador de PHP". ¡Simplemente no hay un curso en línea gratuito! Más precisamente, ahora hay :)



Otras características importantes:


  • Le enseñamos a nombrar correctamente las funciones y seguir los estándares de codificación.
  • Compartimos nuestra experiencia y mejores prácticas.
  • En cada ejercicio hay una decisión del maestro, que está disponible después de una decisión independiente o después de media hora de intentarlo :) Al mismo tiempo, su decisión se puede comparar con la decisión del maestro en una página.
  • Cada lección se puede discutir con otros estudiantes. Tratamos de limpiar las discusiones de los "spoilers"
  • Las misiones se basan en Game of Thrones :) (ver la pantalla de arriba, por ejemplo)

Autorización, que le permite acceder a los ejercicios y guardar el progreso de las lecciones, hasta ahora solo a través de Github. Aprovechamos esta oportunidad para provocar a los recién llegados a crear una cuenta en Github lo antes posible :)


Debajo del capó


Hakeslet está escrito en Rails. Escribimos sobre el interior de Hakeslet hace tres años (¡Dios mío, tres años!) En el artículo " Bajo el capó del proyecto educativo de Hakeslet ", y desde entonces mucho ha cambiado, pero fundamentalmente todo es lo mismo: Rails, PostgreSQL, todo gira en AWS y en parte en Azure , utilizó activamente docker, despliegue y orquestación a través de Ansible. Debajo de cada ejercicio de cada usuario, se levanta un contenedor, que le permite hacer ejercicios de casi cualquier complejidad: con marcos, servidores y acceso web.


Code-Basics inicialmente decidió probar algo nuevo y más liviano que Rails. Por ejemplo, nodejs + mecanografiado + algo de microframework. Pero, preferiblemente, no menos expresivo que Rails. Dado nuestro amor por Erlang, la elección naturalmente recayó en el Fénix , especialmente porque la picazón fue mucho tiempo para probar Elixir.


El marco inesperadamente sorprendido. A pesar del número significativamente menor de características, está hecho de manera muy sólida. Integración con JavaScript, infraestructura de prueba desarrollada, excelente ORM (pero inusual, necesita acostumbrarse), muchas contrapartes ferroviarias (por ejemplo, soporte para slim o gon).


Incluso hubo una cosa que se hizo mucho mejor que en otros marcos: crear un conjunto de middleware para rutas específicas o un grupo de rutas. Incluso si no va a usar Phoenix, le recomendamos que se familiarice con la tubería .


Y dada la presencia de actores (y canales prefabricados en Phoenix), definitivamente podemos decir que Elixir supera al Nodo JS en casi todas las situaciones. Y en igualdad de condiciones, elegiremos Phoenix para el desarrollo.



En el frente, usamos React + Redux. El diseño se basa en Bootstrap 4, como todos nuestros sitios (hexlet.io, guides.hexlet.io). El editor de ejercicios interactivos utiliza Mónaco , que es la base de VS Code. También cambiamos a Mónaco en el propio Hexlet.


La infraestructura y la implementación son Terraform, Ansible y un montón de atajos para los equipos más populares. Las fuentes de Code Basics están disponibles en Github , y aceptamos solicitudes de extracción.


Lecciones y ejercicios prácticos también . Incluyendo aceptamos solicitudes de extracción para la traducción de lecciones al inglés. Hasta ahora, hay un número limitado de lecciones de inglés disponibles aquí .


Quién debe usar los conceptos básicos del código


  • Principiantes con cero experiencia.
  • Programadores principiantes que "nadan" un poco en temas básicos y no entienden completamente cómo funcionan las cosas que van más allá de los simples ejemplos de los libros de texto.
  • Profesores que trabajan con principiantes.

Planes


Los siguientes cursos básicos de código son JavaScript, Racket y Python. Ahora hay 63 lecciones en PHP y pronto se lanzarán algunas más: sobre funciones de biblioteca, trabajar con fecha y hora, y Unicode. JavaScript tiene el primer módulo, y el contenido en su mayor parte será similar a PHP: desde aritmética hasta funciones.


Otros planes incluyen la traducción al inglés. Puedes ayudar con esto :) Todos estos cursos básicos de código también serán completamente gratuitos.


Estaremos encantados de responder sus preguntas en los comentarios. Gracias

Source: https://habr.com/ru/post/es415301/


All Articles