Siempre me han interesado diferentes ideas sobre la programación de aprendizaje. Quizás esto se deba a que sigo siendo un estudiante eterno en este campo. Pero hoy conocí una
idea inesperada para mí: comenzar a aprender con Java. Y no pude guardar silencio.
No soy un gran especialista en pedagogía, tal vez en ciencias de la computación, es costumbre tirar a los estudiantes al agua, elegir un lugar más profundo y allí, a aquellos que están destinados a subir. Pero todavía me parece que la capacitación será más efectiva si el maestro presenta al alumno varios conceptos de programación, uno a la vez, a medida que aumenta la complejidad. Por lo tanto, el requisito principal para un PL de "entrenamiento" es la capacidad de utilizar sus funciones de forma aislada, comenzando por las más básicas.
Nuevamente, en mi opinión de aficionado, es fácil verificar si el lenguaje de programación cumple con este requisito. Simplemente abra
la sección "Hola Mundo" en el Código de Rosetta .
Intentemos enumerar los conceptos necesarios para comprender estos programas elementales.
Se complementa a petición de los oyentes de radio. Brainfuck, PHP, C, Julia.
Python 2
print 'Hello world!'
Al analizar este código, el maestro debe explicar al menos brevemente a sus alumnos qué
palabras clave ,
operadores y
tipo de datos de cadena son . Por supuesto, incluso sin tal explicación, algunos estudiantes (¡pero no todos!) Pueden desarrollar rápidamente una comprensión intuitiva de estas características. Sin embargo, es mejor lograr inmediatamente la certeza.
Ruthon 3
print('Hello world!')
El concepto de una
función se agrega
a palabras clave y
líneas . Sí, la función de
print
es una ventaja de Python 3 como lenguaje industrial. Pero al mismo tiempo, una función es una característica de nivel superior que un operador, y esto complica el estudio de Python 3 como el primer PL. Sí, usted como maestro puede posponer la explicación de la necesidad de usar paréntesis para una de las siguientes clases, pero esto seguirá siendo un dolor en el cerebro de sus alumnos.
Julia
println("Hello world!")
Los mismos conceptos básicos que en el caso de Python 3. Pero Julia es una Java dinámica de alto rendimiento compilada en código nativo. Bravo!
Básico
10 PRINT "Hello world!"
Palabras clave ,
cadena AP ,
operadores ,
numeración de líneas de código. La numeración de líneas en Basic es un concepto de bajo nivel bastante complejo que imita el dispositivo de memoria física de una computadora. Puede convertirse en un obstáculo para un estudiante si el maestro no le presta atención.
En dialectos posteriores, como VisualBasic, las líneas de código se convierten en
etiquetas simples, no computables. En el primer programa, no se necesitan etiquetas. El lenguaje, por lo tanto, se vuelve más fácil para el aprendizaje elemental.
Pascal
program HelloWorld(output); begin writeln('Hello, World!'); end.
Palabras clave ,
cadena TD ,
operadores ,
funciones y ¿qué más? Dado que el programa toma varias líneas,
bloques ,
delimitadores (¿o
terminadores ? Siempre los confundo) y se agregan
sangrías a los primeros conceptos. Y la declaración del
program
no es tan simple ... Parece que la amabilidad de Pascal es algo exagerada.
C
#include <stdlib.h> #include <stdio.h> int main(void) { printf("Hello world!\n"); return EXIT_SUCCESS; }
Palabras clave ,
cadenas AP ,
operadores ,
funciones ,
bloques ,
delimitadores y
sangría , así como
directivas y
macros de preprocesador . En este ejemplo, fue posible prescindir de las macros, pero
return EXIT_SUCCESS
en este caso es muy indicativo: C es un lenguaje de programación de sistema tradicional, por lo tanto, es recomendable estudiarlo sobre la base de una buena comprensión del funcionamiento de
los sistemas operativos y con un enfoque en la
portabilidad . De lo contrario, este PL parece un poco más complicado que Pascal.
Php
<?php echo "Hello world!\n"; ?>
Además de comprender
palabras clave ,
AP de cadena ,
operadores y
delimitadores (¿o
terminadores ?), Este ejemplo no se puede aprender sin una comprensión básica de tecnologías web específicas como
lenguajes de marcado (HTML) y
motores de plantillas . En realidad, PHP es el lenguaje de plantilla, una especie de DSL. Como resultado, PHP es un gran lenguaje de aprendizaje para un proveedor front-end que quiere profundizar en la tecnología de back-end. Pero aprender PHP desde cero es bastante difícil.
C ++
#include <iostream> int main () { std::cout << "Hello world!" << std::endl; }
Palabras clave ,
cadena AP ,
operadores ,
funciones ,
bloques ,
delimitadores y
sangría , así como un
preprocesador con sus directivas,
alcance ,
entrada / salida de transmisión ... Uf, ¿eso es todo?
Java
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }
Palabras clave ,
AP de cadena (incluso dos AP de cadena, pero puede guardar silencio al respecto),
AP vacío ,
matrices ,
bloques ,
delimitadores e
indentación , así como
clases ,
objetos (implícitamente, pero de lo contrario no explicará
static
),
atributos ,
métodos ,
modificadores acceso ... Dios, ya quiero ver todo esto! Después de todo, ¡solo quería escribir mods para Minecraft!
C #
namespace HelloWorld { class Program { static void Main(string[] args) { System.Console.WriteLine("Hello world!"); } } }
El mismo Java, menos
modificadores de acceso , más
espacios de nombres . Nada interesante, pasamos de largo.
Brainfuck
No quiero enumerar aquí, es demasiado voluminoso y monótono. Solo enumeraré los conceptos básicos que deben aprenderse para comprender este ejemplo:
palabras clave ,
operadores ,
variables ,
punteros ,
condiciones ,
bucles ,
representación numérica de caracteres (tabla ASCII). Sí, Brainfuck no es el idioma más accesible para principiantes.
Conclusión
Por supuesto, además de la "entrada rápida" (facilidad para comprender los programas elementales), hay una serie de factores que influyen en la elección de PL para la capacitación. Esta es la disponibilidad de entornos y herramientas convenientes para la codificación, y la calidad de la documentación y, finalmente, la aplicabilidad práctica. Pero si los primeros pasos en el aprendizaje están relacionados con el dolor y la incomprensión, esto puede ser mayor que todos los otros argumentos. ¡En general, aprende fácilmente y no te molestes!