Anuncio

Colapsar
No hay ningún anuncio todavía.

Lenguajes de Programación y Física

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

  • Lenguajes de Programación y Física

    Cualquier sugerencia sobre algún otro que me haya dejado y que estiméis útil será más que bienvenida.
    Saludos.
    12
    C
    50,00%
    6
    Matlab
    41,67%
    5
    Fortran
    8,33%
    1
    Modula 2
    0,00%
    0
    Maple
    0,00%
    0
    $devMdtK

  • #2
    Yo conozco...

    Hola, yo sólo puedo hablar de lo que conozco y también al nivel que conozco.

    Empezemos por el viejo Fortran, yo sólo he trabajado con la versión "light", es decir, la de fortran 77 y aunque al principio, pues venía de C, me parecía una "cutrez capada" luego he llegado a apreciar la mayor sencillez frente a otros "más completos", como C, a la hora de hacer cuentas, que es al fin y al cabo lo que un físico quiere. También el hecho de que pueda manejar números complejos(ahora mismo no recuerdo si el Ansi C también lo hace) es una ventaja.

    Dentro de los inconvenientes está el hecho de que los DO WHILE y otro montón de bucles "estándar" de los lenguajes de alto nivel de hoy día no sean propios del estándar Fortran 77; pero solucionar eso es tan fácil como usar la versión del 90. Yo no lo utilizaba por que el profesor quería usar Fortran 77.

    El C, pues... es un lenguaje PARA TODO; Puedes hacer muchas más cosas que con Fortran(77), pero como precio tienes que es algo más complicado, de aprender al menos.

    Otra opción que he leído por ahí, aunque no he probado, es C++ o Fortran 95 o versiones más modernas que introducen la programación orientada a objetos; de esto y su aplicación a la resolución de los problemas que se resuelven por métodos numéricos(que supongo es para lo que quieres el lenguaje) pues no tengo conocimientos. Por lo que agradecería que si alguien los tiene nos diera su opinión.

    Para cosas más "light" o más versátiles, es decir, que tengan que modificarse de una semana para otra y demás: léase: funciones para escribir los datos en formato LaTeX, para hacer una regresión simple y escribir LaTeX directamente y cosas así yo uso Python que es sencillo y rápido de aprender(al menos para lo que yo lo uso) y potente. También hay una librería de visualización en 3-D que no he probado mucho pero que creo sería interesante para visualizar los datos de salida de los programas escritos en C o Fortran. La librería es VPython.

    Comentario


    • #3
      Si los fisicos nos motivaramos por la facilidad, no seriamos físicos. Debe tenerse en cuenta que normalmente en física lo que uno quiere es hacer calculos. Y cuando digo calculos, digo MUCHOS calculos. Es normal empezar calculos que duran horas, semanas, incluso meses.

      La razón de que se utilizen ampliamente fortran es que muy eficiente. Su aparente cutrez consigue que los programas compilados a "lenguaje maquina" sean mucho más rápidos. Esta especialmente diseñado para hacer cálculos. De hecho intel suele tener compiladores especiales para cada procesador, que reducen el tiempo de ejecución notablemente.

      El C es muy eficiente también según lo que hagas, y en ocasiones es imprescindible por su mayor maniobrabilidad general, por ejemplo, si necesitas comunicaciones o manejar dispositivos. De nuevo uno debe usar un compilador adecuado.

      De lenguajes orientados a objetos, olbidaos. C++ es inusable. Un calculo que en C dura t, puede durar 5t.
      La única alternativo a ser Físico era ser etéreo.
      @lwdFisica

      Comentario


      • #4
        Yo lo decía por...

        Escrito por pod
        De lenguajes orientados a objetos, olbidaos. C++ es inusable. Un calculo que en C dura t, puede durar 5t.
        Yo lo decía por que el otro día hablando con un profesor nos decía que todo lo que pudieramos aprender sobre métodos numéricos y de simulación por ordenador nos vendría bien; que ahora había mucha oferta de asignaturas de ese tipo y que usaban C, C++, etc... además, cuando te metes a ver(los hay que se aburren) ofertas de trabajo y tésis y Summers Students Programs en muchos te piden o recomiendan conocimientos de Fortran 77,90, C o C++.

        A lo que dices de intel, ¿son gratuitos los compiladores o hay que apoquinar?

        Escrito por pod
        Si los fisicos nos motivaramos por la facilidad, no seriamos físicos. Debe tenerse en cuenta que normalmente en física lo que uno quiere es hacer calculos. Y cuando digo calculos, digo MUCHOS calculos. Es normal empezar calculos que duran horas, semanas, incluso meses.
        Yo en ningún momento he proclamado la busqueda de la facilidad, simplemente he dicho que a la hora de programar métodos numéricos "simples"(entiéndase los que se aprenden en la troncal de la carrera) Fortran 77 te simplica las cosas(siempre que el compilador te deje meter DO WHILE's y equivalentes para no tener que usar GOTO's).

        Aunque esto puede deberse a mi torpeza como programador(o pereza, según se mire).

        Sobre la eficiencia no sé, es que aún no he tenido que poner algún cálculo, práctico, de esos burros. Lo más "bestia" que he tenido es mi PIII buscando números amigos durante tres días para añadir un apéndice a las memorias de numéricos.

        Comentario


        • #5
          Re: Yo lo decía por...

          Escrito por Ghiret
          A lo que dices de intel, ¿son gratuitos los compiladores o hay que apoquinar?
          Juraría que son gratuitos, estan en su misma página web. Hay un amigo mio aqui en barcelona que estudia membranas biologicas con montones de simulaciones en fortran. Un dia me pidió ayuda para compilar en su nuevo compilador obtimizado, pues se ve q la orden para compilar es mas extensa (se tiene q introducir el modelo exacto o algo asi). El programa se le ejecutaba aproximadamente en la mitad de tiempo real.

          De hecho no se me ocurre ningún estupido que se intente hacer rico vendiendo compiladores de fortran. Oh, calla, no fue Microsoft quien hizo algo así como VisualFortran?
          La única alternativo a ser Físico era ser etéreo.
          @lwdFisica

          Comentario


          • #6
            Escrito por pod
            De hecho no se me ocurre ningún estupido que se intente hacer rico vendiendo compiladores de fortran. Oh, calla, no fue Microsoft quien hizo algo así como VisualFortran?
            Esto... nosotros nos veíamos "obligados" a usar el compilador de Mierdoshoft para las prácticas... aunque yo lo tenía algo chungo... No había versión de la Mierdoshoft Developer Suite para debian :P. El g77 no va mal.

            Comentario


            • #7
              Escrito por pod
              Juraría que son gratuitos, estan en su misma página web. Hay un amigo mio aqui en barcelona que estudia membranas biologicas con montones de simulaciones en fortran.
              Mmm, he estado mirando(esto de tener que estudiar hace que tengas mucho tiempo libre) y los de intel los ponen free for non-commercial use para Linux. Lo que ocurre es que non-commercial use es hacerte cosas sólo para tí; en el momento en que tu obtengas algún tipo de retribución por usarlos ya no puedes :s. Pero claro, ¿eso importa? :P

              Escrito por pod
              De hecho no se me ocurre ningún estupido que se intente hacer rico vendiendo compiladores de fortran. Oh, calla, no fue Microsoft quien hizo algo así como VisualFortran?
              Hombre, pues para commercial use sí que te cobran. Y esos precios son para usos académicos, para la industria... . En fin..., la putada de todas formas es que ahora en casa lo que hay es un AMD... ¬¬

              Comentario


              • #8
                ¿Desde cuándo c++ es más lento que c? Me refiero cuando lo usas sin orientarlo a objetos, así tipo c pero en c++. Lo digo porque siempre he usado c++ y no veo que mis programas sean más lentos que los de los demás. Más bien me parecía lo contrario...

                Ah, y respecto a compiladores Intel, creo haber visto en algún sitio que si usas compiladores gcc 3.3 o superior ya estos son más rápidos que el propio intel. (bajo ciertas condiciones, claro). Además, los compiladores intel, gratis para linux, no están preparados para ser compatibles con gcc4 que yo sepa. Eso es un problema porque entonces si usas gcc4 el compilador intel no se te instalará bien.

                Para añadir lenguajes útiles a la física, ¿qué tal OpenGL, que además se implementa en casi cualquier lenguaje? Poner las cosas de forma visual y en movimiento puede a veces ayudar mucho. Este es un buen sitio para echarle un vistazo y además tiene tutoriales.
                http://nehe.gamedev.net/


                Saludos.
                aleix

                Comentario


                • #9
                  Escrito por aleix
                  ¿Desde cuándo c++ es más lento que c? Me refiero cuando lo usas sin orientarlo a objetos, así tipo c pero en c++. Lo digo porque siempre he usado c++ y no veo que mis programas sean más lentos que los de los demás. Más bien me parecía lo contrario...
                  Por un lado, no es posible usar c++ sin orientarlo a objetos. En C++ hasta una variable de tipo entero es un objeto, cuando tu la declaras hay una llamada a su constructor y tal. Todos los tipos de variables son en realidad objetos. Por otro lado, si en el bucle principal de tu programa no se declaran ni se destruyen variables (por ejemplo, si todas estan declaradas antes), es posible que no haya mucha diferencia con C antiguo, incluso que el compilador esté más optimizado. De todas formas, deberías realizar una compilación en C estándar para comprobarlo "experimentalmente".

                  Escrito por aleix
                  Ah, y respecto a compiladores Intel, creo haber visto en algún sitio que si usas compiladores gcc 3.3 o superior ya estos son más rápidos que el propio intel. (bajo ciertas condiciones, claro). Además, los compiladores intel, gratis para linux, no están preparados para ser compatibles con gcc4 que yo sepa. Eso es un problema porque entonces si usas gcc4 el compilador intel no se te instalará bien.
                  Puede que sea verdad. Las grandes empresas con grandes cuotas de mercado no son muy de fiar. Se podrían hacer experimentos...

                  Escrito por aleix
                  Para añadir lenguajes útiles a la física, ¿qué tal OpenGL, que además se implementa en casi cualquier lenguaje? Poner las cosas de forma visual y en movimiento puede a veces ayudar mucho. Este es un buen sitio para echarle un vistazo y además tiene tutoriales.
                  http://nehe.gamedev.net/
                  No se que decirte, eh? :P
                  La única alternativo a ser Físico era ser etéreo.
                  @lwdFisica

                  Comentario


                  • #10
                    Re: Lenguajes de Programación y Física

                    Diré mi opinión con respecto al tema, ya que soy estudiante de ing. electrónica y conozco de programación, y con respecto a lenguajes conosco C y C++.

                    ¿Cuál es el lenguaje de programación más apto? no es una respuesta concreta. En general los lenguajes de programación tienen pro y contras con respecto a los otros. La pregunta tiene que ser ¿cual es el más apto para cierto fín? Porque sin duda si necesitamos hacer un programa, teniendo los suficientes recursos (informáticos) y sin necesidad de manejar el sistema en bajo nivel, como los registros del procesador, gestión de la memoria, y porque tenemos un sistema operativo que realiza la mayoría de las tareas necesarias para el funcionamiento y la integración del sistema. Lo más conveniente es un lenguaje de programación de alto nivel. Con los actuales microcontroladores, ya es posible utilizar por completo lenguajes como C o C++, si necesidad de programar en ensamblador.
                    En cambio si tenemos que programar sistemas embebidos como microcontroladores, estos no tienen los recursos como una computadora. Obiamente, dependiendo del tipo de micro, tenemos un set de instrucciones, memoria límitada en comparación a las tarjetas de memoria ram de las pcs. Y lo más importante no tenemos un SO que nos facilita la tareas y se encargue por nosotros del control de tareas y funciones. Asi que en los micros si nos colgamos de ir borrando la memoria que no es necesaria seguramente va a llegar a un punto que no tengamos más espacio, para dar un ejemplo.
                    En estos casos lo mejor es un lenguaje de bajo nivel, mas cercano a la circuitería del sistema.

                    Asi que si nos referimos al decir física, en hacer programas de simulación, o de calculos. Lo mejor es utilizar un lenguaje de alto nivel, sin duda. Porque nos permiten hacer un código mas simple y comprensible para nosotros, además de que no necesitamos realizar tareas como gestión de memoria, etc.
                    En cambio si necesitamos programar un microcontrolador conectado a algun sensor para que valla registrando mediciones (de temperatura, velocidad, etc) y que las vaya procesando y no lo muestre en un display. En este caso dependiendo del microcontrolador podremos usar unos pocos lenguajes. Si es posible lo mejor sería utilizar C, para mi.

                    Por un lado, no es posible usar c++ sin orientarlo a objetos. En C++ hasta una variable de tipo entero es un objeto, cuando tu la declaras hay una llamada a su constructor y tal. Todos los tipos de variables son en realidad objetos. Por otro lado, si en el bucle principal de tu programa no se declaran ni se destruyen variables (por ejemplo, si todas estan declaradas antes), es posible que no haya mucha diferencia con C antiguo, incluso que el compilador esté más optimizado. De todas formas, deberías realizar una compilación en C estándar para comprobarlo "experimentalmente".
                    Dejame orientarte Pod. Si es posible utilizar C++ sin el paradigma de la programación orientada a objetos. Pero si usamos C++, lo lógico es que lo hagamos orientado a objetos porque no estariamos utilizando los beneficios de este. Es posible escribir en C++, en forma de programación estructurada al igual que C, cambiaría algunas funciones solamente.
                    En C++, no todo es un objeto, como en los lenguajes de Java. Una variable simple en C++ (por la definición de objeto en este lenguaje) no es un objeto, como en el caso de un int o float. Y no se necesita llamar al constructor, al comienzo del programa este reserva en la memoria el sector donde se ubicarán (si no son creadas dinámicamente en el transcurso de la ejecución).
                    Cuando hablamos de objetos, lo hacemos en un nivel de abstracción, fijate que en la memoria, un objeto no es más que una porción de memoria, al igual que una estructura o una simple variable. La diferencia entre estos es que en esta nosotros definimos los metodos, es decir, las manera de modificar y acceder a los datos. Asi que a diferencia de las variables, los datos de las clases no pueden ser accedidos por cualquier funcion o en cualquier parte del programa, por esto lo llamamos objetos, porque tiene atributos por los datos (que pueden ser variables, vectores, matrices, estruccturas) y métodos, es decir funciones propias de este y que forman la interfaz de este con las demás partes del programa. Esto es más que importante, porque este tipo de programación, además de una encapsulación, estos objetos contituyen como partes o sectores que se relacionan, comunican y modifican entre ellos. Y la forma de relacionarse no se da de cualquier forma sino que depende de los métodos de las clases.
                    En cambio en java todo sería definido como un objeto y esa es la gran discrepancia entre los que usan estos lenguajes
                    Última edición por Julián; 28/04/2012, 01:23:30.
                    Por más bella o elegante que sea la teoría, si los resultados no la acompañan, está mal.

                    Comentario


                    • #11
                      Re: Lenguajes de Programación y Física

                      Escrito por julian403 Ver mensaje
                      Dejame orientarte Pod. Si es posible utilizar C++ sin el paradigma de la programación orientada a objetos
                      Tienes razón en que eso que escribí hace... ¡6 años! (récord de reflotación de hilos...)
                      Última edición por pod; 28/12/2014, 16:38:18.
                      La única alternativo a ser Físico era ser etéreo.
                      @lwdFisica

                      Comentario

                      Contenido relacionado

                      Colapsar

                      Trabajando...
                      X