Anuncio

Colapsar
No hay ningún anuncio todavía.

Dudas sobre programación en C/C++

Colapsar
X
 
  • Filtro
  • Hora
  • Mostrar
Borrar todo
nuevos mensajes

  • Dudas sobre programación en C/C++

    Hola, últimamente me estoy aficionando mucho a la programación, me gusta mucho el tema de lenguajes de alto nivel y esas cosas. El post en si lo pongo para saber con qué se recomienda empezar a programar. Por ahora he usado MATLAB, pero como supongo que sabréis, es bastante "sencillo" en comparación a otros lenguajes de alto nivel.

    Ayer estuve en el Fnac y me dio por ojear los libros de informática, y había de programación en C/C++, Java, Python... Pero como sólo he oído hablar de un uso "práctico" (no digo que los demás no lo tengan, digo lo que he oído) de lenguaje C, me decidí a ojear un libro y me surgieron algunas dudas.

    1.- ¿La programación en C se dedica básicamente al "printf" y a imponer condiciones? Observando los ejercicios, la mayoría los sé realizar con MATLAB, debido a que son del estilo de: "Crea un programa que pida una contraseña y hasta que no la aciertes esté repitiéndose".

    2.- ¿Hasta dónde puede llegar la programación en C? Me refiero, ¿qué se puede hacer programando en C? Esta pregunta es similar a la primera, pero me refiero a algún ejemplo destacable de programación en C.

    3.- Qué opináis que es mejor: ¿Python ó C?

    Un saludo!
    'Como físico, no temo a la muerte, temo al tiempo.'
    'Bene curris, sed extra vium.'
    'Per aspera ad astra.'

  • #2
    Re: Dudas sobre programación en C/C++

    Escrito por gdonoso94 Ver mensaje
    Hola, últimamente me estoy aficionando mucho a la programación, me gusta mucho el tema de lenguajes de alto nivel y esas cosas. El post en si lo pongo para saber con qué se recomienda empezar a programar. Por ahora he usado MATLAB, pero como supongo que sabréis, es bastante "sencillo" en comparación a otros lenguajes de alto nivel.

    Ayer estuve en el Fnac y me dio por ojear los libros de informática, y había de programación en C/C++, Java, Python... Pero como sólo he oído hablar de un uso "práctico" (no digo que los demás no lo tengan, digo lo que he oído) de lenguaje C, me decidí a ojear un libro y me surgieron algunas dudas.
    Primero de todo, creo que no estás utilizando de forma correcta el concepto de "alto o bajo nivel". Matlab es un lenguaje de muy alto nivel, más que ninguno otro que hayas mencionado

    Decimos que un lenguaje es de "bajo nivel" cuando "hace menos cosas para ti" a la hora de tratar con el hardware. El lenguaje de más bajo nivel posible es el propio de la CPU (ensamblador). Si te pones a programar con ensamblador, tendrás que gestionar los registros, la memoria, la comunicación con cada componente del sistema a tu cuenta y riesgo; y tu programa será válido únicamente para CPUs compatibles. A cambio, tus programas serán bastante más rápidos y eficientes.

    Probablemente C es el lenguaje mayoritario de más bajo nivel que no requiere programar directamente para un hardware concreto. De hecho, el compilador C lo que hace es traducir tu código a ensamblador específico para tu ordenador. No obstante, aún hay que gestionar a mano gran parte de los recursos (un programador C se hincha a usar malloc y free para reservar y liberar memoria), y a la práctica acabas dependiendo en muchas circunstancias de las librerías disponibles en tu sistema operativo.

    C++ es mi lenguaje favorito, ya que representa el punto intermedio entre el bajo y el alto nivel. La liberación de memoria sigue siendo manual, pero mucho más sencilla. Y, si la necesitas, toda la potencia del C "plano" sigue estando disponible.

    Java es el primero de los lenguajes mencionados que no se compila directamente a ensamblador, si no a un formato intermedio que luego es interpretado por una "máquina virtual". Eso hace que la compatibilidad entre sistemas operativos sea total, pero también hace que la eficiencia sea generalmente peor (no obstante, para muchas finalidades es más que suficiente). La gestión de memoria es completamente automática: la máquina virtual se da cuenta de cuándo el programa ya no está utilizando un objeto y lo "marca para borrado". Después, a intervalos más o menos regulares dependiendo de la carga del sistema, el recolector de basura libera los recursos marcados para borrado.

    Python está más o menos al mismo nivel que java; yo diría que incluso es un poco de mayor nivel, pero si alguien piensa lo contrario tampoco discutiría con él. Toda la gestión de memoria es automática. No tiene un compilado intermedio, sino que el interprete python directamente lee el código que tú escribe y lo ejecuta al mismo tiempo.

    Hay muchas otras cosas a considerar en cada lenguaje, por ejemplo si es de fuertemente tipado o no (de los enumerados, python es el único que no lo es). Y, por supuesto, hay muchos más lenguajes que aprender.


    Escrito por gdonoso94 Ver mensaje
    1.- ¿La programación en C se dedica básicamente al "printf" y a imponer condiciones? Observando los ejercicios, la mayoría los sé realizar con MATLAB, debido a que son del estilo de: "Crea un programa que pida una contraseña y hasta que no la aciertes esté repitiéndose".
    Obviamente no, pero los ejercicios y ejemplos de los libros probablemente si se limiten a eso. Básicamente, porque printf es la mejor manera de que veas lo que está pasando en el programa. El libro te enseñará las bases del lenguaje, después como lo uses ya es cosa tuya.

    Para que te hagas una idea, probablemente el sistema operativo que estás usando esté escrito sobre todo en C o alguna de sus variantes (además de las partes que tiene que ver directamente con el hardware, que probablemente estén escritas en ensamblador). Yo no describiría un sistema operativo como "printf e imponer condiciones".

    Escrito por gdonoso94 Ver mensaje
    2.- ¿Hasta dónde puede llegar la programación en C? Me refiero, ¿qué se puede hacer programando en C? Esta pregunta es similar a la primera, pero me refiero a algún ejemplo destacable de programación en C.
    Puedes escribir un sistema operativo. O drivers de hardware. O videojuegos. En general, código que requiera de gran velocidad y eficiencia.

    Para aplicaciones no tan exigentes, programar a bajo nivel es demasiado tedioso.

    Escrito por gdonoso94 Ver mensaje
    3.- Qué opináis que es mejor: ¿Python ó C?
    Son bestias completamente diferentes, y sus usos son muy diferentes. Todos los lenguajes pueden hacer lo todo (es un teorema de Turing), pero está claro que hay unos más apropiados que otros para cada situación.

    Yo no empezaría a programar en C. Empieza a más alto nivel, y si alguna vez tienes la necesidad ya bajarás. C++ o Java parecen mejores opciones, con la ventaja de que su sintaxis es muy similar (de hecho, la sintaxis de ambos proviene de la "familia C", como tantos otros).

    Python también es un gran lenguaje para empezar a programar, el problema (para mi gusto, a la hora de aprender) es que su sintaxis es muy diferente a la del resto de idiomas. Yo creo que es más útil empezar por a programar por la sintaxis más común, y después aprender la específica, que hacerlo al revés. En cualquier caso, lo importante a la hora de aprender a programar es entender las estrategias usuales (patrones de diseño, "idioms", estructuras de datos, algoritmos básicos, etc.). Aprender la sintaxis de un lenguaje es importante, claro; pero como en las lenguas humanas, hablar un idioma no te garantiza poder usarlo para decir cosas inteligente.
    La única alternativo a ser Físico era ser etéreo.
    @lwdFisica

    Comentario


    • #3
      Re: Dudas sobre programación en C/C++

      Mil gracias por la aclaración en cuanto a alto/bajo nivel. No conocía tal diferencia. Una duda sobre esto, cuanto más alto es el nivel, ¿más "superficial" es? Superficial en el sentido de que menos profundiza a la hora de programar.

      Después de leer tu respuesta, saco en conclusión que lo mejor es empezar a programar en C++... ¿Conoces algún manual que tenga las tres B? (Bueno, bonito y barato :P)
      'Como físico, no temo a la muerte, temo al tiempo.'
      'Bene curris, sed extra vium.'
      'Per aspera ad astra.'

      Comentario


      • #4
        Re: Dudas sobre programación en C/C++

        Escrito por gdonoso94 Ver mensaje
        Mil gracias por la aclaración en cuanto a alto/bajo nivel. No conocía tal diferencia. Una duda sobre esto, cuanto más alto es el nivel, ¿más "superficial" es? Superficial en el sentido de que menos profundiza a la hora de programar.
        No, para nada. A mayor nivel, el lenguaje hace parte del trabajo para ti (sobre todo, la gestión de memoria), por lo que puedes centrarte a programar realmente la funcionalidad que necesitas. De hecho, el único motivo por el que uno "baja de nivel" es si necesita extrema eficiencia o acceso directo al hardware.

        A nadie se le ocurriría escribir una página web en C o C++, sería una pesadilla estar borrando punteros todo el día; en vez de eso, se suele utilizar PHP (lenguaje de muy alto nivel, con orientación opcional a objetos, y diseñado para poder mezclarse con el código HTML de forma sencilla). Igualmente, a nadie se le ocurriría escribir un motor gráfico en 3D para un videojuego en python o java (un juego más light quizá si, de hecho yo he visto un tetris escrito en rubi -lenguaje de muy alto nivel- que iba perfectamente).

        Escrito por gdonoso94 Ver mensaje
        Después de leer tu respuesta, saco en conclusión que lo mejor es empezar a programar en C++... ¿Conoces algún manual que tenga las tres B? (Bueno, bonito y barato :P)
        http://c.conclase.net/
        La única alternativo a ser Físico era ser etéreo.
        @lwdFisica

        Comentario


        • #5
          Re: Dudas sobre programación en C/C++

          El tutorial de C++ con clase está realmente bien. Si te manejas con el inglés también está muy bien éste: http://www.cplusplus.com/doc/tutorial/
          A mi amigo, a quien todo debo.

          Comentario


          • #6
            Re: Dudas sobre programación en C/C++

            Muchísimas gracias por las respuestas. En cuanto a Python... ¿A dónde puedes llegar con él? ¿Qué limitaciones tiene? Resulta que un profesor de la facultad que es bastante conocido (gracias a terceros) recomienda enormemente el uso de este.
            'Como físico, no temo a la muerte, temo al tiempo.'
            'Bene curris, sed extra vium.'
            'Per aspera ad astra.'

            Comentario


            • #7
              Re: Dudas sobre programación en C/C++

              Python es un lenguaje interpretado. Lo que tiene de bueno es que es multiparadigma. En cuanto a las palabras (léxico) a mi parecer es muy parecida al C++ pero con más simplicidad y en cuanto a la lógica es muy parecido a Java, ya que todo es una clase.

              Si preguntas a ¿donde se puede llegar con un cierto lenguaje de programación? esa pregunta tendrá mil respuestas porque la verdad depende de qué es lo que quieras hacer y cual te resulte más cómodo.
              Así por ejemplo java al ser un lenguaje interpretado por una máquina virtual da una gran portabilidad pero eso tiene costo en potencia del programa y el manejo del hardware. En cambio C/C++ es simple, potente ya que es capaz de trabajar a un bajo nivel por lo que te da mayor manejo del hardware y tiene una gran cantidad de compiladores para programar cualquier cosas desde pcs hasta microcontroladores.
              Por más bella o elegante que sea la teoría, si los resultados no la acompañan, está mal.

              Comentario


              • #8
                Re: Dudas sobre programación en C/C++

                Depende de lo que quieras hacer en el momento , puedes optar por programarlo con lenguajes específicos.
                Si quieres hacer un driver para algo , no te queda otra que hacerlo con C.
                Si quieres hacer un motor grafico 3d , lo mejor sería hacerlo en C
                Ahora , si quieres simplemente hacer un programa donde tu ingresas valores y por un medio de condiciones te resuelve algo , yo te recomiendo que te estires por python , VB ,pascal , delphi que es son mas flexibles a la sintaxis.

                A lo que quiero ir es que depende el criterio de programacion. No vas a hacerte una calculadora de raices cuadradas en C , con python unas simples sentencias y ya basta.

                Si te interesa muchísimo el tema te puedo pasar algunos pdfs sobre Criptografia , Programacion , Desarrollo de juegos , etc ...

                Saludos !

                Comentario


                • #9
                  Re: Dudas sobre programación en C/C++

                  Escrito por julian403 Ver mensaje
                  Python es un lenguaje interpretado. Lo que tiene de bueno es que es multiparadigma.
                  ¿A qué te refieres con multiparadigma?


                  Escrito por facundoM
                  Si te interesa muchísimo el tema te puedo pasar algunos pdfs sobre Criptografia , Programacion , Desarrollo de juegos , etc ...


                  Mil gracias, pero yo creo que eso son palabras mayores. Por ahora conseguiré el libro que encontré de lo básico y con los tutoriales de internet y eso aprenderé poco a poco el léxico y algoritmos típicos de C++ y a ver si consigo algo sobre Python.

                  Un saludo!
                  'Como físico, no temo a la muerte, temo al tiempo.'
                  'Bene curris, sed extra vium.'
                  'Per aspera ad astra.'

                  Comentario


                  • #10
                    Re: Dudas sobre programación en C/C++

                    En esta página podrás encontrar todo lo relacionado a programación , son jóvenes entusiastas.Gs-Zone

                    Saludos espero que te sirva la web !

                    Comentario


                    • #11
                      Re: Dudas sobre programación en C/C++

                      Digamos que el paradigma es el modelo o estructura de la programación. Así tenemos el paradigma de la programación estructurada que se centra en las funciones y rutinas, es decir, en este paradigma se ejecutan las instrucciones y funciones en secuencia, una instruccion detrás de otra. Es lo que la mayoría de gente conoce como programación.
                      Pero también hay otros paradigmas como la programación orientada en objetos. Que se centra en módulos encapsulados de datos con ciertas pautas y métodos para modificarlos y interacctuar con otros (objeto). Permite modularidad, encapsulamiento y abstracción. En este caso la programación no es una secuencia de pasos finitos que se ejecutan uno detrás del otro sino que se tiene mayor abstracción y se centra en estas entidades llamadas objetos que realizan tareas, interacctúan (lo que en C++ se llama evento), etc.
                      Por más bella o elegante que sea la teoría, si los resultados no la acompañan, está mal.

                      Comentario


                      • #12
                        Re: Dudas sobre programación en C/C++

                        Escrito por julian403 Ver mensaje
                        Digamos que el paradigma es el modelo o estructura de la programación. Así tenemos el paradigma de la programación estructurada que se centra en las funciones y rutinas, es decir, en este paradigma se ejecutan las instrucciones y funciones en secuencia, una instruccion detrás de otra. Es lo que la mayoría de gente conoce como programación.
                        Pero también hay otros paradigmas como la programación orientada en objetos. Que se centra en módulos encapsulados de datos con ciertas pautas y métodos para modificarlos y interacctuar con otros (objeto). Permite modularidad, encapsulamiento y abstracción.
                        La mayoría de lenguajes de programación soportan diferentes paradigmas. Podemos distinguir hasta cuatro paradigmas más o menos conocidos (aunque yo, personalmente, algunos de ellos los veo casi como versiones del mismo paradigma): programación "espagueti", procedural, funcional y orientada a objetos. La mayoría de ellos soportan varios de estos estilos directamente, y en prácticamente todos los lenguajes es posible utilizar el resto de estilos con un poco de esfuerzo.

                        Por ejemplo, C++ ofrece soporte directo para los estilos procedural y orientado a objeto. Con especial énfasis en el segundo, ya que está diseñado para ello; pero el lenguaje permite crear funciones fuera de clases, así que el estilo procedural (heredado de C) sigue siendo igual de viable. El código espagueti se puede emular simplemente poniendo todo el código en la función "main" (para que fuera código espagueti "puro", no tendría que ser necesario meterlo dentro de una función; pero C/C++ obliga que todo el código esté en funciones. En cuanto al estilo funcional, existen punteros a funciones, "functores" y el último estándar C++11 incluye soporte básico para closures. Se puede usar el estilo funcional, pero con algo de sufrimiento.

                        Java, por poner otro ejemplo, está aún más orientado a objetos; no permite crear funciones fuera de clases. Pero se puede seguir utilizando algo que recuerda al estilo procedural simplemente definiendo cada subrutina como un método estático de una clase. Java 8 introduce closures, lo que empieza a hacer viable programar java con estilo funcional. El estilo espagueti, de nuevo, se puede emular metiendo todo el código en el método main.

                        Python, como último ejemplo, trae soporte para todos estos paradigmas: es perfectamente posible escribir código fuera de funciones, permitiendo hacer código espagueti (ahora, que cualquier programa que se vaya a utilizar más de dos minutos jamás debería ser programado así), permite definir funciones por si solas (paradigma procedural), incorpora prácticamente todas las opciones del paradigma funcional (con python2.5 incluso permite la aplicación parcial de funciones, aunque el soporte para funciones anónimas es mejorable); y por último permite definir clases para la programación orientada a objetos (aunque, a mi personalmente, no me acaba de gustar la syntaxis que han elegido).

                        Escrito por julian403 Ver mensaje
                        En este caso la programación no es una secuencia de pasos finitos que se ejecutan uno detrás del otro sino que se tiene mayor abstracción y se centra en estas entidades llamadas objetos que realizan tareas, interacctúan (lo que en C++ se llama evento), etc.
                        C++ como lenguaje no tiene nada llamado "evento", que yo sepa Probablemente te referirás a alguna librería. El concepto evento (o, más general, "mensaje") no pertenece a ningún lenguaje de programación, si no a un patrón de diseño llamado "publicador-subscriptor". Es un patrón muy común en las librerías de elementos de la interfaz de usuario (botones, cuadros de texto, etc.), por lo que si has usado C++ en algún entorno GUI es probable que te hayas encontrado con eventos. Pero no es una característica del lenguaje, es una forma de utilizarlo.

                        Eso es lo que le decía a gonadoso al principio: lo que importa realmente es aprender los estilos y patrones de diseño, independientemente del lenguaje. Como se escribe un condicional (if, switch, case), como se hace un bucle (for, do, while, etc.), como se representan los datos (clases, tipos, etc); todo eso depende del lenguaje.

                        Utilizar eventos, subscriptores, observadores; usar ordenación por burbuja (bubble-sort) o rápida (quick-sort), etc. Todo eso es saber es común a todos los lenguajes, y es lo que realmente importa.
                        La única alternativo a ser Físico era ser etéreo.
                        @lwdFisica

                        Comentario


                        • #13
                          Re: Dudas sobre programación en C/C++

                          Hola...
                          en mi opinión... python es el lenguaje ideal para inicial a programa por iniciativa propia.
                          Es un lenguaje muy practico y potente de alto nivel.
                          Concuerdo con algunos, que python es la iniciativa ideal... en programación.
                          En mi universidad, en mi carrera(ingeniería civil), nos enseñaron visual basic pero para su momento la programación no era mi mayor atractivo(ni lo es ahora),
                          sin embargo, hace unos meses estoy interesado y después de averiguar mucho... opte por iniciar con python y sin duda fue la mejor decisión...
                          creo que después podrías seguir con C/C++ y después algo de HTML o SQL o porque no... PERL.
                          Espero tengas éxitos en la programación...
                          [FONT=comic sans ms]"La ausencia de prueba no es prueba de ausencia"
                          "El primer pecado del hombre fue la fe; la primer virtud fue la duda"
                          Carl Sagan
                          [/FONT]

                          Comentario

                          Contenido relacionado

                          Colapsar

                          Trabajando...
                          X