¿Por qué empezar a aprender a programar con C?

Resumen: El autor del artículo explica por qué C es bueno en la etapa de entrenamiento y bombeo del cerebro de un futuro programador. Y después de un tiempo, o incluso en paralelo, puede aprender un lenguaje más moderno y hacer, por ejemplo, desarrollo empresarial o web.





Foto: Liam Briese en Unsplash Cada vez hay



más lenguajes de programación. Ahora hay alrededor de 700. Sin embargo, la mayoría de los desarrolladores usan 20. Aquí, como en muchas otras áreas, hay ratings, tendencias e incluso moda.



Vamos a nombrar algunos idiomas populares. Para el desarrollo empresarial, Java se usa activamente (pronto Kotlin también se arreglará allí), C #, para el desarrollo web - JavaScript, Go, Python y PHP, para el desarrollo móvil - Swift, Java / Kotlin, bueno, me atrevo a llamar a JavaScript (porque tal vez, porque React Native). Los desarrolladores de juegos suelen utilizar C # y C ++. Todos ellos tienen demanda por varias razones:



  • sintaxis simplificada (en su mayor parte) y semántica clara, en el contexto del lenguaje C;
  • conjunto completo de API estándar;
  • apoyo comunitario activo;
  • un ecosistema creciente de marcos y bibliotecas.


El lenguaje C se utiliza en el desarrollo de soluciones de software y hardware. En C, también puede implementar parcialmente la funcionalidad de productos de software que exigen rendimiento. Aunque no todos los programadores quieren y pueden trabajar en tales proyectos. Pero volvamos a la etapa de aprendizaje.



Por lo general, los futuros desarrolladores comienzan a codificar en la escuela, la universidad o los cursos de cambio de carrera. La última opción, por cierto, está ganando popularidad.



Tarde o temprano, se preguntan: ¿qué lenguaje de programación es mejor aprender primero? En la escuela y la universidad, esta pregunta puede ser respondida por usted: la mayoría de las veces, aprender allí comienza con el lenguaje C / C ++ (así, a través de "/"). Pero en sitios de entrenamiento alternativos, es poco probable que alguien también le sugiera que simplemente estudie C para expandir sus horizontes o bombear sus cerebros. Todos quieren ingresar rápidamente, como dicen, a TI. Entonces, como ves, aquí y allá tendrás que demostrar voluntad e independencia si decides empezar a aprender de la lengua C.  



En este artículo te hablaremos de la etapa de formación y formación de un futuro especialista. Por lo tanto, permítame ahora exponer mis argumentos y luego usted puede exponer los suyos.



C te obliga a profundizar en la solución del problema.



Los lenguajes más modernos ofrecen varias abstracciones integradas (o abstracciones de bibliotecas estándar) a la vez para todas las ocasiones comunes. Esto se aplica principalmente a problemas algorítmicos estándar. Por ejemplo, si necesita copiar elementos específicos de la primera matriz a la segunda, puede usar el método filter () incorporado en JavaScript. Si está escribiendo en Java, tiene a su disposición el método filter () del paquete java.util.stream. 



JavaScript: Array.filter ()



const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
//     6,     
const result = words.filter(word => word.length > 6);  
console.log(result);
//    : Array ["exuberant", "destruction", "present"]
      
      





Java: stream (). Filter ()



List<String> lines = Arrays.asList("spray", "limit", "elite");

//  List  Stream
List<String> result = lines.stream()              
//   elite  
       .filter(line -> !"elite".equals(line))     

//      List
       .collect(Collectors.toList());   

//   :  spray, limit
        result.forEach(System.out::println);   
      
      





En el lenguaje C, especialmente con fines educativos, puede ofrecer la siguiente implementación (para no complicar el ejemplo, cambié las cadenas a números y cambié la condición de "filtrado"):



#include <stdio.h>
#define SIZE 5

void copy_aka_filter_arr(double trg[], double src[], int n);

int main(void){
    int i;
    double source[SIZE] = {1.1, 2.2, 3.3, 4.4, 5.5};
    double target[SIZE];
   
 printf("Source:  ");
    for (i = 0; i < SIZE; i++){
        printf("%5.1f ", source[i]);
    }
    putchar('\n');
    copy_arr(target, source, SIZE);   
    return 0;
}

void copy_aka_filter_arr(double trg[], double src[], int n){
//  i-      ,    3.3. 
//    i-    0.0 
    int i;
    for (i = 0; i < n; i++){
            if (trg[i]) > 3.3){     
                trg[i] = src[i];
            }
            else{
                trg[i] = 0.0;
            }
    }       
    printf("Target: ");
    for (i = 0; i < SIZE; i++){
        printf("%5.1f ", trg[i]);
    }
    putchar('\n');
}
      
      







Al intentar implementar estas funciones a mano, se encontrará con principios y matices fundamentales que deberá comprender en profundidad. En particular, la implementación independiente de algoritmos para procesar estructuras de datos en el lenguaje C es una excelente manera de aprender a resolver problemas y no buscar soluciones listas para usar. 



No importa en qué lenguaje genial y avanzado escriba, de vez en cuando aparecen problemas complejos que no se pueden resolver utilizando bibliotecas estándar y abstracciones integradas. En estos casos, dicha habilidad es simplemente necesaria.



Por cierto, los desarrolladores que participan en hackatones competitivos a menudo entrenan esta habilidad, resolviendo problemas no estándar solo en C.



C le permite tocar la programación de "bajo nivel"



Es conveniente escribir en lenguajes modernos de alto nivel (Python, C #, Java o lo que quieras). Sin embargo, estos lenguajes son muy limitados en su interacción con el hardware. En otras palabras, no obtendrá la experiencia completa del hardware hasta que comience a programar en C. Los lenguajes de programación modernos ocultan los detalles de implementación dependientes del hardware y en su lugar emulan algún tipo de abstracción. En la mayoría de los casos, se crea mediante una máquina virtual.



Desafortunadamente, los principiantes no tienen la menor idea acerca de la administración de memoria, manejo de archivos y optimización de código, porque nunca han visto siquiera ejemplos de programación de "bajo nivel" en C. Desde este punto de vista, los lenguajes de programación modernos automatizan y ocultan demasiado . El lenguaje C te obliga a hacer mucho con tus manos y escribir código altamente optimizado.



En cuanto a mí, esto es algo que todo desarrollador profesional debe probar. Bueno, al menos un traficante.



C enseña libertad y responsabilidad



Cuando un lenguaje de programación ofrece un conjunto de abstracciones amigables con los humanos, se vuelve menos flexible. Cada método integrado o de biblioteca actúa como una caja negra codificada. En otras palabras, los lenguajes de programación modernos ocultan los detalles de implementación y le dicen al desarrollador que simplemente se refiera a un conjunto de interfaces. El control manual de la asignación de memoria dinámica en los lenguajes de programación modernos es imposible en la mayoría de los casos. Mientras tanto, C le brinda libertad real, permitiéndole elegir cómo implementarlo en un nivel inferior.



Los compiladores de C, cuando se optimizan adecuadamente, producen un código ensamblador increíblemente rápido. Es cierto que, además de configurar los indicadores de optimización necesarios para la compilación, también debe escribir usted mismo el código fuente de alto rendimiento. En C, debemos declarar cuidadosamente las variables, asignar y limpiar la memoria a tiempo, acceder a los recursos y recordar liberarlos. Si C fue su primer idioma, se acostumbrará a usar la memoria y los recursos de manera racional, y se acostumbrará a elegir estructuras de datos óptimas. Este hábito continuará a medida que empiece a escribir en otros idiomas.



C te motiva a escribir código limpio



A diferencia de los lenguajes de programación modernos, tendrá que escribir muchas veces más código para implementar las mismas tareas en C. Esto se debe al hecho de que en C hay que implementar muchas cosas en un nivel inferior, en lugar de utilizar envoltorios integrados y abstracciones de bibliotecas estándar que ocultan los detalles de la implementación. A medida que aumenta el número de líneas en el código, también aumenta la complejidad del código. Para compensar este efecto y mantener el orden en el proyecto, debe intentar escribir un código limpio y comprensible.



Escribir código limpio es una habilidad especialmente demandada cuando se trabaja en grandes proyectos comerciales. Si puede aprender a escribir código C limpio, le resultará más fácil hacerlo en otro lenguaje más simple.



¿Aún no estás convencido?



Con el desarrollo activo de C ++, el lenguaje C ha dejado de ser percibido por muchos como un lenguaje independiente. Parece haberse convertido en un subconjunto del lenguaje C ++. Está claro que, de hecho, este no es el caso. C ++ es un lenguaje de programación verdaderamente moderno con un conjunto completo de bibliotecas estándar. En mi opinión, C ++ no debería ser el primer idioma para aprender. Es cierto que hay una salvedad: si quieres especializarte en él en el futuro, adelante. En este caso, estos dos lenguajes se pueden enseñar en paralelo, pero en algún momento se "cruzarán", y la transición de C a C ++ será orgánica y casi instantánea. 



Casi todos los lenguajes de programación modernos compiten entre sí, introduciendo nueva sintaxis, semántica y ampliando bibliotecas y marcos estándar. Como dicen, todo es para las personas. Esto es cautivador. Pero si los futuros desarrolladores comienzan a aprender estos lenguajes desde cero, se perderán las valiosas oportunidades que brinda C. En algún momento, simplemente no pueden dar un nuevo paso en su desarrollo, sin saber cómo funciona el código en un nivel inferior. , sin siquiera saber cómo se implementan en su interior sus frameworks y bibliotecas favoritos.



Así que elija C como su primer lenguaje de programación. Le llevará más tiempo aprenderlo, pero lo ayudará a convertirse en un experto en idiomas más modernos muy rápidamente en el futuro.






Los servidores en la nube de Macleod son excelentes para desarrollar en C y otros lenguajes de programación.



Regístrese usando el enlace de arriba o haciendo clic en el banner y obtenga un 10% de descuento durante el primer mes de alquiler de un servidor de cualquier configuración.






All Articles