User Tag List

Página 2 de 2 PrimerPrimer 12
Resultados 16 al 22 de 22

Tema: ¿Qué lenguaje utilizo?

  1. #16

    Fecha de ingreso
    Jul 2006
    Mensajes
    427
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    8
    Agradecer Thanks Received 
    14
    Thanked in
    Agradecido 9 veces en [ARG:2 UNDEFINED] posts
    No me parece que fenix o cualquier otro lenguaje sea malo para empezar, bueno el perl porque programar con jerogrificos no es muy intuitivo pero por lo demas...

    fenix no es concurrente, no se ejecuta ninguna funcion de forma concurrente. NO hay ningun proceso que se ejecute a la vez que otro, hay un planificador que ejecuta secuencialmente los procesos. No me parece ni mucho menos un mal lenguaje para empezar.

    Si os parece que fenix es malo y el problema es la organizacion en base a procesos, usas la forma habitual usando funciones y listos. Asi no usarias los procesos y no habria problema de aprender a programar de lo que suponeis es una mala forma.

    El unico problema que le veo a fenix es el tema de que no sea nativo, eso significa mayor portabilidad pero menor rendimiento.

    ¿Porque estais en contra de c y a favor de c++? Si Torvals os leyese seguro que os montaba aqui el pitoste padre ^^.

    Yo por mi parte para aprender usaria cualquier lenguaje, la verdad es que le tengo mucho apego a c y me parece lo mejor del mundo, pero la gente lo suele odiar a muerte sobre todo lo que mencionan de punteros(si te pones con c yo le hecharia un vistazo a las herramientas valgrind y gdb que ayudan un monton).

    La verdad es que aprendiendo en cualquiera pasarte a otro no va a ser problema. Al final los algoritmos que uses para solucionar las cosas van a ser los mismos en todos. y solo variaran un poco los tags.

    El unico problema que puedes tener es al pasar de unos estructurado a otro orientado a objetos, que con el tema de encapsular y esos rollos la organizacion puede variar un poco, pero vamos que una vez cogido el concepto es simple.

    Es solo una opinion, espero que te haya ayudado algo de lo que he dicho, si no pues nada ^^
    In the very beginning it was an angelical society but Eve took a “Byte” from the “Apple” and then mistrust was born.

  2. #17

    Fecha de ingreso
    Sep 2006
    Ubicación
    Malaga
    Mensajes
    7,559
    Mencionado
    47 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,663
    Agradecer Thanks Received 
    1,931
    Thanked in
    Agradecido 1,295 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por loixartx Ver mensaje
    ¿Malos hábitos? Es un lenguaje procedural, como puede ser C. Sin los clásicos quebraderos de cabeza que puede dar los punteros para alguien que aún no domina la programación.
    Lo digo porque he visto codigos que no estaban muy estructurados, pero claro eso depende de como programe cada uno.

    El fallo que le veo es que en los procesos tienes que poner un bucle infinito e ir llamando a frame en cada iteracion. Creo que hubiera estado mejor si tuvieras unos metodos por defecto y si te interesa se reescriben.

    Yo el fenix / DIV lo hubiera hecho asi, tal vez tambien hubiera añadido cosas como eventos para disparar sonidos u otros procesos... no se...
    Código:
    Process foo
    Begin
    OnInit()
    Begin
    // codigo que se ejecuta al crear un proceso
    End
    
    OnDestroy()
    Begin
    // codigo que se ejecuta al destruir un proceso
    End
    
    OnFrame()
    Begin
    // codigo que se ejecuta en cada iteracion del bucle del juego, aqui se pondria el codigo
    // para mover el proceso (IA), 
    End
    
    OnDraw()
    Begin
    // despues de OnFrame se llama a OnDraw para dibujar el proceso, si se deja vacio se
    // dibuja el sprite asociado al proceso, tiene la ventaja de que podemos dibujar mas sprites por
    // procesos, por ejemplo el escudo de una nave
    End
    
    End // del proceso
    De esta forma te obligaria a tener todo mas estructurado.

    Editado:

    Tal vez de esta forma en vez de interpretar el lenguaje seria mas facil de hacer un traductor a C++, y despues compilar este... asi ganarias en velocidad...
    Última edición por swapd0; 30/12/2008 a las 13:26

  3. #18

    Fecha de ingreso
    Jul 2006
    Mensajes
    427
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    8
    Agradecer Thanks Received 
    14
    Thanked in
    Agradecido 9 veces en [ARG:2 UNDEFINED] posts
    pero ese tipo de estructura la puedes hacer en fenix si quieres. Hace el proceso que responda a señales y manejadores y listos. De todas formas yo no soy muy fan de la programacion orientada a eventos. Yo creo que un programa esta bien programado si sigue un patron funcional y el analisis se ha hecho con cabeza. No hace falta que siga un patron especifico.

    Aparte no creo que esa fuese la estructura optima para programar un juego, pero es solo una opinion. Simplemente que yo no me sentiria comodo con ella ^^. ***** patrones de diseño para GUIs :P Dejad de mirar codigos en .NET!!!! (Es broma eh!!)
    In the very beginning it was an angelical society but Eve took a “Byte” from the “Apple” and then mistrust was born.

  4. #19

    Fecha de ingreso
    Sep 2006
    Ubicación
    Malaga
    Mensajes
    7,559
    Mencionado
    47 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,663
    Agradecer Thanks Received 
    1,931
    Thanked in
    Agradecido 1,295 veces en [ARG:2 UNDEFINED] posts
    Pero en fenix lo tendrias que hacer a mano, la idea es que se llamen a esos metodos de forma automatica al crear, destruir, mover o dibujar un proceso.

    Yo el .NET no lo he mirado, de hecho lo ODIO...

  5. #20

    Fecha de ingreso
    Aug 2004
    Ubicación
    Madrid, Spain
    Mensajes
    353
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por animanegra Ver mensaje
    fenix no es concurrente, no se ejecuta ninguna funcion de forma concurrente. NO hay ningun proceso que se ejecute a la vez que otro, hay un planificador que ejecuta secuencialmente los procesos. No me parece ni mucho menos un mal lenguaje para empezar.
    Se ve que tienes algunos fallos de concepto... La multiprogramación es programación concurrente pura y dura, y ahí no se ejecutan en ningún momento varios procesos a la vez (ya que no es posible en una única CPU), sólo se intercalan.

  6. #21

    Fecha de ingreso
    Jul 2006
    Mensajes
    427
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    8
    Agradecer Thanks Received 
    14
    Thanked in
    Agradecido 9 veces en [ARG:2 UNDEFINED] posts
    Bajo mi punto de vista la programacion concurrente requiere que haya varios procesos a la vez en ejecucion theads o forks accediendo a recursos y que no controles su ejecucion ya que quien se encarga de controlar dicha ejecucion es el SO. Aqui no hay varios procesos en ejecucion si no que cada vez que se requiere, hay un cambio de contexto controlado por el usuario. No hay ningun problema de concurrencia (no hay que usar ni semaforos ni ningun tipo de monitor) asi que yo al menos no considero que sea concurrente. Entiendo que mi forma de pensar no es un fallo de concepto simplemente que discrepamos ^^.
    In the very beginning it was an angelical society but Eve took a “Byte” from the “Apple” and then mistrust was born.

  7. #22

    Fecha de ingreso
    Aug 2004
    Ubicación
    Madrid, Spain
    Mensajes
    353
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    La defición de la programación concurrente deja poco lugar para la discrepancia. Genios como Dijkstra ya hablaron largo y tendido sobre ello. A grandes rasgos, en Wikipedia hay información sobre el tema:

    http://es.wikipedia.org/wiki/Computa...3n_concurrente
    http://es.wikipedia.org/wiki/Multiprogramaci%C3%B3n

    Pero en resumen, cuando el nacimiento o muerte de un proceso se produce entre el nacimiento y muerte de otro, es concurrente, incluso aunque uno de ellos no hubiese ejecutado una sola instrucción durante todo el tiempo de existencia del otro.

    Tampoco es requisito que el sistema operativo gestione los hilos o procesos del programa. Lenguajes como PascalFC implementan la gestión de procesos por software.

    Los monitores y los semáforos son el modo en el que hoy día se sigue enseñando en las universidades la gestión de acceso a recursos concurrente, por la razón obvia de que obliga al programador a entender la concurrencia para que sea capaz de implementarlo correctamente. En la práctica muchos lenguajes tienen soluciones de alto nivel para gestionar estas cosas. Supongamos un hipotético lenguaje que permite marcar funciones como "mutex". Esto quiere decir que sólo un proceso podrá estar ejecutando el código de esa función cada vez (supongamos que por ejemplo esa función escribe en el log del programa, y no queremos que se mezclen líneas que mandan varios procesos a la vez). En este tipo de lenguaje, cuando se accede a una función mutex, si hay otro proceso en el método, los demás se ponen a la espera, y todo es gestionado limpiamente por el propio compilador. Incluso hay lenguajes con concurrencia que soportan un cambio de contexto "manual", que en el caso de Div/Fenix es la sentencia "frame" (en otros, como Java, es el método "yield").

    La pega que se le podría poner a Div/Fenix como ejemplo de concurrencia es la misma que muchos lenguajes concurrentes modernos: la existencia de un "yield" o "frame" que de control al programador sobre los cambios de contexto han hecho que se pierda una característica de la programación concurrente que tradicionalmente se ha considerado inherente a la misma: su indeterminismo.
    Última edición por Jedive; 31/12/2008 a las 02:33

Página 2 de 2 PrimerPrimer 12

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •