Curso Programación, Entrega Nº 2

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Piluex
    Away
    • 10-10-2004
    • 3038

    #1

    Curso Programación, Entrega Nº 2

    Temas a ser tratados en esta entrega:
    1) Un pantallazo de paradigmas.
    2) Un pantallazo de los lenguajes de programación utilizados en la actualidad.
    3) El lenguaje C.

    1) Un pantallazo

    a) Que es un paradigma?

    Me pareció interesante incluir esta definición ya que muchos dicen "seh seh los paradigmas bla bla" y no saben ni lo que es un paradigma.

    Paradigma:

    Nota: Utilizen google cuando no saben lo que es algo de la siguiente manera: "define:<lo que no saben aca>"

    Originalmente publicado por wiki
    Un paradigma está constituído por los supuestos teóricos generales, las leyes y las técnicas para su aplicación que adoptan los miembros de una determinada comunidad científica.
    Nota 2: Nunca se queden con una sola definición existiendo muchas, es bueno leer varias y con el "sentido común" adoptar la que más nos parezca, o una mezcla entre ellas.

    Originalmente publicado por www.fac.mil.co/pag_interiores/provisionales/glosario.htm
    aspecto o situación que se toma como patrón, ejemplo o modelo en forma esquemática.
    Originalmente publicado por www.ucsm.edu.pe/rabarcaf/vofici07.htm
    Modelo fundamental desde el cual se piensa o se realizan hechos y teorías predominantes. En nuestros días se hace necesario retomar nuevos paradigmas.
    Creo que con esas tres es suficiente, no es nada muy complicado, podríamos decir que un paradigma es en nuestro caso un "modelo" a seguir que en muchos casos nos ayudará a "pensar" las cosas de manera tal para poder luego expresarlas como código y nos ayudará a que nuestro programa este ordenado y sea entendible (aveces).

    b)Paradigmas de la programación:

    Cabe destacar que ningún paradigma es el "IDEAL" sino que como casi todo en la vida, cada uno tiene sus ventajas y desventanas que tendrá que cada uno evaluar a la hora de elegir. Tampoco hace falta que en un programa se utilize un solo paradigma (aunque es recomendable si es posible y no afecta al rendimiento), se puede utilizar dos o más si es necesario.

    Existen muchos paradigmas, vamos a tomar los ejemplos que hay en la wiki:
    • El paradigma imperativo es considerado el más común y está representado, por ejemplo, por el C o por BASIC.
    • El paradigma funcional está representado por la familia de lenguajes LISP, en particular Scheme.
    • El paradigma lógico, un ejemplo es PROLOG.
    • El paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk.


    Originalmente publicado por WIKI
    La programación imperativa, es un paradigma de programación que describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea.
    Originalmente publicado por WIKI
    La Programación funcional es un paradigma de programación declarativa basado en la utilización de funciones matemáticas.
    Originalmente publicado por WIKI
    La programación lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación; no debe confundirse con la disciplina de la lógica computacional.
    La programación lógica comprende dos paradigmas de programación: la programación declarativa y la programación funcional.
    Originalmente publicado por WIKI
    La Programación Orientada a Objetos es un paradigma de programación que define los programas en términos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos), comportamiento (esto es, procedimientos o métodos) e identidad (propiedad del objeto que lo diferencia del resto). La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.
    Nota 3: Verán que utilizo mucho definiciones de la wiki, podría reescribirlas pero me parece que estan bastante bien, y además en todo el curso es mi intención demostrarles que la información esta al alcance de sus manos.

    Quedando definidos estos paradigmas voy a aclarar un par de cosas; La primera es que no vamos a ver ni el lógico ni el funcional (por lo tanto veremos en parte programación imperativa y más adelante orientada a objetos ^^). La segunda es que estaría bueno que entren a la wiki y lean un poco más de estos dos ultimos, no voy a incluir aca más datos, "mi idea es que tengan una idea" y que lleguen a leer hasta el final de la entrega =).

    2) Otro pantallazo

    a) Que es un lenguaje? y que es un lenguaje de programación?

    Nuevamente caemos en definiciones, quizá esta parezca más simple aún pero echemosle un vistazo.

    Abstracto:
    Originalmente publicado por WIKI
    Lenguaje se refiere a cualquier estructura abstracta usable para comunicar simbólicamente y que tiene interpretación semántica.
    Más concreto:
    Originalmente publicado por WIKI
    En la matemática y en la informática, los lenguajes artificiales son llamados lenguajes formales (incluyendo lenguajes de programación). Un lenguaje de programación es un conjunto finito de cadenas de símbolos.
    Aún más concreto:
    Originalmente publicado por WIKI
    En matemáticas, lógica, y ciencias de la computación, un lenguaje formal es un conjunto de palabras (cadenas de caracteres) de longitud finita formadas a partir de un alfabeto (conjunto de caracteres) finito. El nombre lenguaje se justifica porque este tipo de estructuras tienen reglas de buena formación (gramática) e interpretación semántica (significado) en una forma muy similar a las lenguas naturales.
    Simplístico:
    Un lenguaje de programación es un conjunto de palabritas, numeritos y simbolitos raros utilizados para hablar con la pc de manera que esta lo entienda y no se mande fruta.

    Aclaración:
    Pepito dice: "Ah pero che no era que la pc solo entendía unos y ceros?"
    Toby dice: "Si es así, pero como el humano es pajero por naturaleza se inventaron los compiladores, un compilador es un programa que se encarga de interpretar el lenguaje de programación y traducirlo a lenguaje maquina, más conocido como Assembler. También existen programas llamados Intérpretes que realizan un trabajo parecido al de un compilador pero lo realizan cada vez que se ejecuta el programa, esto quiere decir que el programa nunca es realmente compilado a lenguaje de maquina."

    b) Algunos lenguajes de programación

    Vamos a nombrar un par de lenguajes:
    • C
    • C++
    • Java
    • Basic
    • Pascal
    • Python
    • C#
    • SmallTalk
    • PHP


    Bueno, notarán que nombré algunos de los más conocidos, si quieren saber sobre más lenguajes visiten la wiki =).

    Ahora se preguntarán:

    Nota (creo q 4 no?): El nivel de un lenguaje vendría a ser un indicador de "que tan lejos" está de ser assembler. También podriamos decir que se refiere a el nivel de abstracción que tiene el lenguaje.

    Para que existen TANTOS lenguajes de programación?

    Es cierto que "podría decirse" que existen un par de lenguajes demás, sin embargo cada uno tiene una particularidad que lo hace destacarse y ser afin para ciertas aplicaciones, por ejemplo:

    (voy a describir un toke los lenguajes (voy a ser medio subjetivo) si quieren salteenselo)
    • C es un lenguaje de "casi" bajo nivel, muy utilizado cuando se busca perfomance o contacto directo con la maquina en proyectos medianos o grandes.
    • C++ es C pero con la posibilidad de programar orientando a objetos y muchas más facilidades, lo cual nos sigue dando la misma flexibilidad que C pero con más facilidades a la hora de mantener y realizar proyectos de gran embergadura.
    • Java es un lenguaje de alto nivel, nos ahorra mucho tiempo a la hora de programar es portable y ahora va a ser OPEN SOURCE (guau (??)), es una buena opción para programar orientando a objetos y para aprender a programar.
    • Basic es un lenguaje de alto nivel, bastante antiguo ya (ahora existe el visual basic) es normalmente el lenguaje con el que los autodidactas aprendern a programar, es imperativo a diferencia de java que es orientado a objetos, por lo tanto se podría decir que es "más fácil", sin contar que es muy flexible.
    • Pascal es un lenguaje parecido al basic (por asi decirlo) permite colocar código en assembler, es más estructurado y durante mucho tiempo fue (y es (??)) la elección de los profesores para enseñar a programar.
    • Python es muy utilizado en la actualidad para realizar "scripting", no es muy popular en windows, sin embargo en linux si. Lo utilizan mucho los hackers para escribir exploits.
    • C# es como un C++ para maricones, más que nada se usa con ".net" (una mierda porque tiene toda una maquina virtual de la cual pasas a ser independiente) java siempre le hizo sombra, y ahora que será open source aún más.
    • SmallTalk es un sistema informático que permite realizar tareas de computación mediante la interacción con un entorno de objetos virtuales. Se puede considerar que un Smalltalk es un mundo virtual donde viven Objetos que se comunican mediante el envio de mensajes.
    • PHP (no me cae bien ASP por eso no lo nombré) es un lenguaje de programación multiparadigma MUY completo y con mucho desarrollo, es utilizado más que nada para la parte web ya que así nació. Es interpretado. Y es lo que utiliza el foro en el que lees para ser un foro.


    Bueno doy por finalizado esto, quería poner más cosas pero quiero terminar con la entrega.

    3) El lenguaje C


    a) Porque C?

    Porque es el lenguaje más universal (paracticamente cualquier cosa programable tiene un compilador de C) y el que más posibilidades te da, practicamente TODO se puede hacer en C. Sin contar que es la mejor base para todo programador y que a partir de C te podés ir a cualquier lenguaje. Igualmente iremos mezclando con C++ de a poco ya que están muy relacionados y con C no podemos aprender nada de programación orientada a objetos. Además C++ nos da cierta flexibilidad, a algunos les cae mal esta flexibilidad ya que puede producir código difícil de mantener, pero eso es responsabilidad de cada uno, además el que dice "con c++ haces código difícil de mantener" es por una razón:
    Es un programador de manteniento. (En otras palabras no sabe más que leer el codigo de a más que el tamaño de un trozo de papel higienico).


    b) Intro al C

    De la wiki (saque partes no reelevantes):

    C es un lenguaje de programación creado en 1969 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

    c) Estandar de C

    La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portable entre plataformas y/o arquitecturas. En la práctica, los programadores (agregado por piluex: esto lo hacen los de windows que usan visual c) suelen usar elementos no-portables dependientes del compilador o del sistema operativo.

    C99

    Tras el proceso de estandarización de ANSI, la especificación del lenguaje C permaneció relativamente estable durante algún tiempo, mientras que C++ siguió evolucionando. Sin embargo, el estándar continuó bajo revisión a finales de la década de 1990, lo que llevó a la publicación del estándar ISO 9899:1999 en 1999. Este estándar se denomina habitualmente "C99". Se adoptó como estándar ANSI en marzo de 2000.

    d) Hola mundo en C

    Código:
    #include <stdio.h>
    
    int main(int argc, char **argv)
    {
            printf("Hola, Mundo\n");
            return 0;
    }
    No te preocupes si no entendés NADA de eso, sería la gracia (??). Es como en las novelas cuando te dan un adelanto choto de lo que se viene.

    Fin de la entrega.

    Esta entrega como notarán fue todo teoría. Por eso se abre la discución par a todo el material expuesto. Se buscan criticas constructivas.

    Artiuclo sin revisar. Propenso a cambios (se avisarán).
  • MoaLaiSkirulais
    ^^(V)^^
    • 08-07-2003
    • 23268

    #2
    buen tiro

    Comentario

    • Analrapist
      Blackbolt
      • 07-05-2004
      • 18929

      #3
      Me gusta el curso, porque est&#224; dado como si fuera algo personal, con comentarios algo divertidos para que no se aburra el lector y todo pero TODO bien complicado.

      Mi pregunta es, un compilador es como un programa donde "pasas" tu codigo y crea un executable de este?
      O eso es el assembler?
      Editado por última vez por Analrapist; 12-12-2006, 11:22 PM.
      Le problème de nos jours c'est que le futur n'est plus ce qu'il était.

      Comentario

      • Piluex
        Away
        • 10-10-2004
        • 3038

        #4
        Los compiladores son programas bastante complicados, pero podr&#237;amos explicar su funcionamiento as&#237; (en realidad ser&#237;a parte del mismo y obviando pasos):
        Primero revisa la sintaxis, como tu profesora de lengua cuando corrije una redacci&#243;n.
        Despu&#233;s empieza a convertir todas las funciones de cada uno de tus archivos fuente en c&#243;digo de m&#225;quina guardando la referencia de donde se ubica cada una de las funciones (osea quedan 1 y 0, en realidad son conjuntos de 1 y 0 con bastante l&#243;gica, es mi idea m&#225;s al final de este curso explicar un poco de esto (assembler)).
        Y al final enlaza las referencias de cada una de las funciones entre s&#237;, crea las cabeceras necesarias para el que S.O. lo tome como ejecutable y escribe el ".exe".

        Comentario

        • Analrapist
          Blackbolt
          • 07-05-2004
          • 18929

          #5
          Gracias capo
          Le problème de nos jours c'est que le futur n'est plus ce qu'il était.

          Comentario

          • MoaLaiSkirulais
            ^^(V)^^
            • 08-07-2003
            • 23268

            #6
            taria weno armar un esquema tan completo como claro para visualizar como un source code

            Código PHP:
            #include <stdio.h>
            
            int main(int argc, char **argv)
            {
                    printf("Hola, Mundo\n");
                    return 0;
            } 
            
            Se convierte por ejemplo en:

            [img]/carne/diablo/media/hworld.jpg[/img]

            Tal vez otro trid.....

            Comentario

            • Riff Raff
              Egelito muy adictivo
              • 01-08-2006
              • 1571

              #7
              C# es como un C++ para maricones

              jaujau

              Viene bien tu curso
              Brought to you by the letter R-r-r-r

              Comentario

              • zxcvbs
                ►▲◄
                • 09-12-2005
                • 1254

                #8
                Aca te dejo Asm X86 32-64 bit.
                Un ebook que baje recien asi que ni idea que tal es.
                Change return success.
                Going and coming without error.
                Action brings good fortune...
                Sunset.
                Sunrise.
                Berserker
                Adios.

                Comentario

                • Piluex
                  Away
                  • 10-10-2004
                  • 3038

                  #9
                  No estamos hablando de asm, gracias igual. En el caso hay un book FREE que es "el mejor" y se llama the art of assembly.

                  Comentario

                  • zxcvbs
                    ►▲◄
                    • 09-12-2005
                    • 1254

                    #10
                    No, pero te lo deje por un thread que decias que al final querias apuntar a asm, que mejor que un libro x86 64
                    Change return success.
                    Going and coming without error.
                    Action brings good fortune...
                    Sunset.
                    Sunrise.
                    Berserker
                    Adios.

                    Comentario

                    • Piluex
                      Away
                      • 10-10-2004
                      • 3038

                      #11
                      un final que est&#225; dentro de 123123 entregas, osea MESES



                      Ahi ten&#233;s un libro que te ense&#241;a a programar en asm bien con todo lo conceptual necesario, despu&#233;s solo le agregas el set de 64 bit q es una pavada.

                      Comentario

                      • zxcvbs
                        ►▲◄
                        • 09-12-2005
                        • 1254

                        #12
                        Si lo tengo, soy un leecher de mierda.
                        Change return success.
                        Going and coming without error.
                        Action brings good fortune...
                        Sunset.
                        Sunrise.
                        Berserker
                        Adios.

                        Comentario

                        • Zak
                          pito~
                          • 03-10-2006
                          • 2282

                          #13
                          muy genial, otra vez lo hiciste, piluex.
                          zak zak zak zak zak zak

                          Comentario

                          • Gareth
                            Mega Egelito
                            • 19-12-2003
                            • 4282

                            #14
                            te salen bien los cursos, segui por favor
                            [e-mail/msn/gtalk] garethfc at gmail d0t c0m
                            soundtracks de videojuegos re lindos

                            Comentario

                            • Analrapist
                              Blackbolt
                              • 07-05-2004
                              • 18929

                              #15
                              Lo bueno que sean cursos es que mientras que esperas que salga el proximo podes leerlo una y otra vez
                              Le problème de nos jours c'est que le futur n'est plus ce qu'il était.

                              Comentario

                              Trabajando...