Plan de desarrollo para desarrolladores de Python que aprenden C#

C# y Python comparten conceptos similares. Estas construcciones conocidas le ayudan a aprender C# cuando ya conoce Python.

  1. Orientados a objetos: tanto Python como C# son lenguajes orientados a objetos. Todos los conceptos relacionados con las clases de Python se aplican en C#, incluso si la sintaxis es diferente.
  2. Multiplataforma: tanto Python como C# son lenguajes multiplataforma. Las aplicaciones escritas en ambos lenguajes se pueden ejecutar en muchas plataformas.
  3. Recolección de elementos no utilizados: ambos lenguajes emplean la administración automática de memoria a través de la recolección de elementos no utilizados. El runtime reclama la memoria de los objetos a los que no se hace referencia.
  4. Fuertemente tipado: Python y C# son lenguajes fuertemente tipados. La coerción de tipos no se produce implícitamente. Hay diferencias que se describen más adelante, ya que C# se escribe estáticamente, mientras que Python se escribe dinámicamente.
  5. Async y Await: la característica async y await de Python se inspiró directamente en la compatibilidad con async y await de C#.
  6. Coincidencia de patrones: la expresión match de Python y la coincidencia de patrones es similar a la expresión switch de coincidencia de patrones de C#. Los usa para inspeccionar una expresión de datos compleja para determinar si coincide con un patrón.
  7. Palabras clave de la instrucción: Python y C# comparten muchas palabras clave, como if, else, while, for y muchas otras. Aunque no toda la sintaxis es la misma, hay suficiente similitud como para que pueda leer C# si sabe Python.

A medida que empiece a aprender C#, aprenderá estos conceptos importantes en los que C# se diferencia de Python:

  1. Sangría frente a tokens: en Python, las líneas nuevas y la sangría son elementos sintácticos de primera clase. En C#, el espacio en blanco no es significativo. Los tokens como ; separan instrucciones, y los tokens { y } controlan el ámbito de bloque de if y otras instrucciones de bloque. Sin embargo, para mejorar la legibilidad, la mayoría de los estilos de codificación (incluido el estilo usado en estos documentos) usan sangría para reforzar los ámbitos de bloque declarados por { y }.
  2. Escritura estática: en C#, una declaración de variable incluye su tipo. La reasignación de una variable a un objeto de un tipo diferente genera un error del compilador. En Python, el tipo puede cambiar cuando se reasigna.
  3. Tipos que aceptan valores NULL: las variables de C# pueden admitir un valor NULL o no aceptar valores NULL. Un tipo que no acepta valores NULL es uno que no puede ser NULL (o nada). Siempre hace referencia a un objeto válido. Por el contrario, un tipo que acepta valores NULL puede hacer referencia a un objeto válido o null.
  4. LINQ: las palabras clave de expresión de consulta que componen Language Integrated Query (LINQ) no son palabras clave en Python. Sin embargo, las bibliotecas de Python como itertools, more-itertools y py-linq proporcionan una funcionalidad similar.
  5. Genéricos: los genéricos de C# usan la escritura estática de C# para realizar aserciones sobre los argumentos proporcionados para los parámetros de tipo. Es posible que un algoritmo genérico necesite especificar restricciones que un tipo de argumento debe satisfacer.

Por último, hay algunas características de Python que no están disponibles en C#:

  1. (Duck) typing estructural: en C#, los tipos tienen nombres y declaraciones. A excepción de tuplas, los tipos con la misma estructura no son intercambiables.
  2. REPL: C# no tiene un read–eval–print loop (REPL) para crear rápidamente prototipos de soluciones.
  3. Espacio en blanco significativo: debe usar correctamente llaves { y } para anotar el ámbito del bloque.

Aprender C# si sabe Python es un recorrido sencillo. Ambos lenguaje tienen conceptos y expresiones similares.