PDA

Ver la versión completa : Sobre programación en ANSI C...



Wonder Boy
21/04/2003, 17:07
Sé que ésta pregunta que ahora hago puede parecer que no tiene que ver directamente con la GP32, pero no es así, ya que sí tiene que ver además de con otros sistemas... ;-)

A ver pogramadores de mundo... ;-D

¿Qué compiladores C usais o usan los buenos programadores cuando quieren hacer un emulador o software de cualquier tipo escrito en ANSI C con fines de que en el futuro sea facilmente portable?

Yo he manejao Turbo C de Borland pero sé de otros muchos que tambien están bien...

Supongo que dará lo mismo emplear uno u otro pues como digo, es para escribir programas que unicamente empleén el juego de funciones que forman el estándar ANSI C.

Hombre, supongo que portabilidad no implique ANSI C necesariamente, pero yo es que quiero escribir mis programas (y quizás algún día emuladores si me dá la zepa para tanto jeje porque por ganas desde luego que no es :-D) sin salirme de éste estándar.

Venga gracias y a ver si me dais vuestras opiniones que tengo curiosidad por ésto...

Un saludo!
;-)

- Wonder Boy -

Nigel
21/04/2003, 19:50
Se supone q Watcom era de lo mejorcito para compilar juegos.... Pero yo siempre he usado Turbo C++, aunque claro nunca he programado juegos, de todos modos ahora se tiende mucho a Visual C++..... De todos modos puedes comprobar por ti mismo los resultados, ponte un contador cuando redibujes pantallas y ves los Frames por segundo q te da cada compilador.... es una manera de empezar..... creo q tengo q ponerme yo tb a ver si nos vemos por el IRC y me vas comentando.

Wonder Boy
21/04/2003, 21:53
Efectivamente colega, el Watcom...

me acuerdo que decían que generaba un código objeto acojonantemente rápido con optimizaciones en velocidad empleando XORs en lugar de MOVs para poner registros a 0 y cosas así, si no recuerdo mal...

y Visual C++ si he visto que se utiliza mucho sí por muchos desarrolladores de emuladores...

Y macho, la Programación Orientada a Objetos...
que me puse hace un huevo de tiempo a aprenderla y dije:
¡a tomar por culo! ¡qué lío! jaja X-D pero bueno era más chavalillo y quizás por ello me costaba más asumir los conceptos quizás ahora... jeje

Pero es que la verdad es que estoy cómodo con la metodología modular de toa la vida Dios y la voy a seguir utilizando al menos de momento... yo incluso diría que hay código fuente de emus de micros como el Z80 que están escritos integramente en C y no utilizan C++ para nada... creo! por favor. corregidme si no es así :-)

Por ejemplo, el fuente del emu del Z80 del amigo Marat ¿no está escrito unicamente en C?

Me gustaría mucho hacer software portable y lo que más emuladores, pero es que son muy complejos los jodíos... X-D pero pienso tambien, que resultarían MUCHO más fácil de llevar a cabo si te ayudase algún compañero y si son varios pues ya no te digo :-D

Es que de ésta manera, como es lógico, es mucho más fácil de detectar los bugs además de que lo que no se te ocurre a tí se le ocurre al otro...

¡Hay que ser generoso y compartir el trabajo! jeje X-D

Y bueno Nigel, que haber si nos vemos como dices por el IRC y con el ZaXeR que tambien se le vé inquieto al muchacho con éstos líos y gusman50 si quiere y el Anarchy y el que quiera e intercambiamos cosas.

Bueno pos luego más y ahora un saludete!
;-)

- Wonder Boy -

pakopakopako
21/04/2003, 23:04
...el gcc y C hacen maravillas :P (sin necesidad de usar C++), claro que no es muy descriptivo con los errores en tiempo de ejecución... pero con un poco de práctica es muuuuy potente

Nigel
21/04/2003, 23:52
Tengo el codigo fuente de un emulador de Lynx y de otro de Megadrive, lo q me pasa a mi es q me da mogollon de pereza poner el ordena a tono para empezar a programar.... pero bueno estoy instalando Solaris en otro equipo y como viene con el compilador gcc lo mismo las librerias de la gp32 van.... ya os contare voy a ver si consigo algo intentando portar el emulador de lynx....

Esta semana empezare, a ver q sale....

mortimor
22/04/2003, 01:23
Si lo que se pretende es hacer un buen emulador.... no te m
puedes limitar a ANSI C, obviando los requisitos de cada sistema.

C, C++ y ensamblador a saco; esto es lo mejor, pero... no lo mas sencillo. Para Windows Visual C++ es lo mejor, es lo mas completo y tiene muchas posibilidades a la hora de optimizar codigo. Mucha gente empieza con Turbo C++, yo lo hice, pero eso ya esta anticuado. Fuera de Windows... GCC, lo mejor para aprender y programar con libertad.

Como ya dijera algun ilustre: "Si tuviera que venderle un perro a un informatico, hoy dia, lo primero que le diria es que es orientado a objetos". La potencia que nos da la orientacion a objetos es impresionante a la hora de diseñar sistemas informaticos de todo tipo. A mi me encanta personalmente, es toda una filosofia, pero he de reconocer que para realizar un emulador suelen ser mas optimos el C clasico o el ensamblador (el primero por lo asentado que esta, hay mucha experiencia, y el segundo por ser lo mas rapido, si se sabe usar).

Nunca he hecho un emulador (ya me gustaria controlar tanto), pero en lo que respecta a multimedia si que entiendo un poco, lo suficiente para saber que conocer bien el sistema en el que se trabaja es el secreto del rendimiento en cualquier aplicacion multimedia y esto es mas facil en una consola (te ahorras las comprobaciones tediosas de dispositivos hardware presentes y el tener que atender todas las posibilidades). Para PC Windows lo mejor es Visual C++ y Direct X (esto es lo mio, je, je). Para PC Linux no sabria si declinarme por programar X a pelo (esto es para mentes muy abiertas, no como la mia) o GTK, todo aderezado con MesaGL. En GP32... no lo tengo muy claro, hasta ahora desarrollo en Visual C++ y luego compilo la version final para GP32 con GCC (minigp32); creo que no es la mejor opcion.

(_=*ZaXeR*=_)
22/04/2003, 02:08
<Wonder Boy> en el tutorial que he puesto de programacion de emuladores, el autor dice que los mejores compiladores para hacer emuladores son gcc y turbo C (yo diria que son los mejores para todo) dice que para programar emuladores no es bueno hacer uso de C++ osea de programacion orientada a objetos porque generan mucho codigo en ensamblador que relentiza la emulacion, por lo tanto te obliga a tener maquinas mas potentes, y realmete estoy con el porque el Visual C++ genera tela de codigo basura al compilar que luego tienes que eliminar con un debugger y esto es un coñazo del copon, ademas que el Visual C++ por experiencia se que tiene muchos problemas para gestionar direcciones de memoria y esos temas que son esenciales para los emuladores, mas de una vez que ha jodido programas por usar punteros (ya se que los programadores de ahora tienden a usar el menor numero posibles porque se quitan de problemas pero para mi es el mejor metodo, el mas eficaz y si estas atento sabes realmente que hay en memoria cada momento y en que sitio y eso para un emulador es esencial) Yo desaconsejo el Visual C++ por completo, gcc o Turbo C de borland es lo mejor.(realmente estoy encontra de todo lo que sea usar ventanas, porque suelen ser tipos de programas para la programacion que no estan depurados al maximo ya que en las maquinas que funcionan las velocidades que pueden mejorar con esa depuracion es inapreciable, los recursos de esas maquinas estan sobrados, pero luego a la hora de la verdad los programas hechos con estos compiladores no se pueden portar a maquinas inferiores y cosas por el estilo, por ejemplo el Visual basic genera una de codigo de mierda que lo flipas, cuando quieres añadir cualquier control lo toma de un DLL que ha hecho otro tio que suele ser de microsoft el cual no esta depurado al maximo porque no es necesario y si tu tambien pasas de la depuracion de tu codigo pues esto se va amontonando y provoca que la maquina final para la que se haga ese programa tenga que tener ciertos recursos. Lo que quiero decir es que todo eso realmente es producto de microsoft y las grandes empresas de hardware que lo que pretende es que se vendan mas ordenadores, y eso lo consiguen haciendo que los nuestros se queden obsoletos, y esto se hace gracias a la necesidad de recursos, que se necesitan por culpa de una programacion que no es eficiente y depurada, tambien es cierto que ese tiempo de depuracion es dinero que ellos pierden pero la verdad es que tampoco les interesa. Si los programas se depuraran y se usara mas el ensamblador entonces nadie tendria que comprar nuevos ordenadores aunque el avance tecnologico tambien seria mas lento lo reconozco pero la pela es la pela) en conclusion el mejor de todos los compiladores a mi parecer y por experiencia es el Turbo C porque ademas te ayuda muy bien con sus mensajes de error no como los del Visual C++ que te vuelven loco. Un saludo

(_=*ZaXeR*=_)
22/04/2003, 02:19
***** lo de la GP32 el compilador,.....pos el mejor compilador para la GP32 es el oficial (creo que es el oficial) que te puedes bajar de la pagina de darkfader en version de evaluacion se llama ads1_2_eval.ZIP. Un saludo

pakopakopako
22/04/2003, 15:23
Bueno... C no es orientado a objetos, pero con un poco de maña puede utilizarse casi como si lo fuera, y ahorra un montón de trabajo. Se puede hacer usando estructuras con punteros a funciones, yo lo utilizo bastante. VC++ caca :D

mortimor
22/04/2003, 18:45
Teneis razon en casi todo lo que decis. Pero quiero romper una lanza por los programadores que no podemos perder el tiempo en depurar codigo, mejor dicho en conseguir el mejor codigo posible. Razones:

--->> Optimizar con codigo en ensamblador es inviable hoy dia y se hace en muy contadas ocasiones. Se tarda mucho y el tiempo es dinero, no solo para la gente de Microsoft.
--->> Si el codigo funciona a la perfeccion en un ordenador medio-bajo, hoy por hoy un PIII o un K7 a 500 Mhz, no merece la pena optimizarlo ya que la mayor parte del mundo puede utilizarlo. (ya se que es la pescadilla que se muerde la cola...)
--->> La orientacion a objetos no es la panacea, pero ha supuesto una revolucion en el mundo del desarrollo de software. Esta revolucion gira entorno al desarrollo utilizando repositorios software, la tan mencionada reutilizacion del codigo. A mayor reutilizacion menor tiempo de desarrollo, a menor tiempo de desarrollo menos gastos y mas barato tambien para el cliente (esto no es siempre asi). La reutilizacion nos permite aprobechar el trabajo de otras personas o el nuestro en los nuevos proyectos y los componentes utilizados pueden ser actualizados con optimizaciones sin alterar los proyectos que ya hicieran uso de ellos. Cuanto mas se reutilice mas facil sera el desarrollo de un proyecto (si el diseño es bueno claro esta) y mas optimos sus componentes. La orientacion a objetos aparece para facilitar la reutilizacion, es nuestra amiga no nuestra enemiga, el problema reside en su mala utilizacion y en la ausencia de buenos ingenieros del software que realicen los diseños. Hay compiladores de C++ bastante buenos (no generan tanta basura) como el G++.

Es cierto mucho de lo que habeis dicho sobre Visual C++, pero ofrece una cantidad de recursos al programador que no ofrecen otros IDEs y facilita mucho las cosas.

Pensar que si una empresa se dedicara a optimizar todo el codigo utilizando llamadas a funciones escritas en ensamblador, sacaria un producto cada 2 o 3 años (seguramente mas, depende del sistema a desarrollar). Paga a los programadores ese tiempo sin tener ingresos... Una empresa menos.

(_=*ZaXeR*=_)
23/04/2003, 02:15
La verdad es que yo tambien comprendo que el tiempo es dinero y que usar ensamblador es tedioso aparte de que no todos saben hacerlo, pero es que se ha llegado a un momento que actualmente hay gente programando que no sabe lo que es JMP MOV... no saben ensamblador, y las aplicaciones no se revisan para depurar el codigo, lo he vivido con varios proyectos, y la verdad es que aunque puede que sea mas rapido hace que sea necesario que se vayan actualizando tambien los hardware, y eso tambien es muy caro, ejemplo si una empresa encarga un programa de gestion que deben tener instalado en 100 ordenadores, y solo 20 de los que tienen pueden ejecutar esta aplicacion, pues tienen que comprar 80 equipos nuevos y eso puede llegar a ser mas caro que el tiempo de trabajo extra que podian haber invertido los programadores en depurar el codigo (ya se que esto es un caso limite, y que por ejemplo en programas como el SAP de meta4 que su precio es de mil y pico millones de pesetas "lo se porque trabaje en correos y lo usan" eso es inportante). Pero lo que yo digo es que con llevar un termino medio seria perfecto, pero ahora estamos en el extremo que obliga a hacer desembolso en hardware (siendo el software caro tambien) y no el desenbolso importante en el proyecto derivado de las horas de trabajo. (de eso tenemos que hablar en otra ocasion, poque los programadores ganamos una mierda se lo llevan todos los ******es de las empresas, ya os contare mi historia con SERVINFORM).
<pakopakopako> es de los mios, con el C se pueden hacer maravillas sin tener que acudir al C++ con los tipos de datos abstractos y mierdas,(aunque reconozco que es necesario que no digo que no solo que me gusta mas C ya esta) eso de hacer listas con C aunque es jodio por los dos punteros que hay que usar en una estructura que apuntan a la misma estructura.... bueno que lo que quiero decir que para hacer emuladores es lo mejor vamos ya esta que me lio la ostia creo que mis post son los mas jodios de leer mas de uno se los saltara por lo que me enrollo :P:P:P:P. Un saludo

mortimor
23/04/2003, 19:21
Veo que en el fondo todos estamos deacuerdo.

A mi tambien me gusta el C, he pasado muchas horas delante de mi terminal de linux con el VI y el GCC programando y a veces se olvida todo el trabajo que hay debajo de las plantillas y los TDAs.

Ya me harte en la carrera a hacer TDAs, pero la verdad es que fueron de los mejores ratos que pase: implementando grafos, arboles, arboles B+, colas hash, ... y sus correspondientes algoritmos de ordenacion, busqueda, ... que tiempos..... aaaahhh!!

(_=*ZaXeR*=_)
24/04/2003, 02:12
***** que suerte tienes mortimor pos yo todavia estoy liao con essas mierdas, ***** con lo facil que son las colas las listas y las pilas en C porque liarlo con el C++? (yo estoy asi de jodido porque es la segunda vez que me dan por culo con estas cosas primero en el modulo y luego en la carrera). Un saludo

pakopakopako
24/04/2003, 13:02
bueno... todo eso está ya más que hecho, es cuestión de buscar un poco... ;)

Hokutoy
25/04/2003, 09:38
Yo lo unico que se sobre C y C+ es que lo lleva el zumo de naranja que me tomo por las mañanas... :D

Ya que hay tanto entendido a ver si os coordinais y haceis algunas demos u algo pa la GP32...

Saludos!!!

PD: Aunke el emu de Lynx molaría... XDDD

pakopakopako
25/04/2003, 12:30
Imagino que el problema es el tiempo, al menos en mi caso, imagino q tb en el caso de los demás. Si estás durante el día estudiando/trabajando, en clase o lo que sea, tienes q tener la moral muuuuuuuy alta para ponerte a programar cuando llegues a casa (aún así conozco a gente q es capaz). Me bajé el sdk y el compilador del ARM, pero no he tenido tiempo ni de echarle un vistazo :( en fin, un saludo ;)

(_=*ZaXeR*=_)
26/04/2003, 04:02
La verdad es que lo que dice pakopakopako es cierto, es por tiempo y ganas, porque si despues de estar to el dia en la facultad programando, luego estudiando, y dando clases, y llegas a las 10 como yo a casa, la verdad es que ni tiempo ni ganas te entran para hacer na (lo cachondo es que tengo una de proyectos en mente que ni yo me los creo, tambien me baje el SDK de GP y el compilador los instale e incluso comence a hacer un clone del juego del pacman que es sencillito, pero la verdad que comenzar a hacer sprites, y a programar rutinas y... ***** que na, y tambien comence a estudiar los emuladores y ha implementar uno para ordenador, pero no hice ni 40 lineas de codigo, y eso ha sido a lo unico que he podio llegar). Mira que me gusta la cosa pero... ***** no puede ser. Un saludo

mortimor
26/04/2003, 04:47
Yo tengo varios proyectos entre las manos y en lo que respecta a GP32 estoy iniciando un juego inspirado en D&D Shadow Over Mystara (y tan inspirado, capturo los sprites de el...), por ahora ya tengo las rutinas de representacion y el personje de mago a medias de hacer (pero ya se pueden tirar enjambres de meteoros); tambien estoy trabajando en una calculadora cientifica para GP32, con graficas y resolucion de ecuaciones.

Tanto que hacer y tan poco tiempo....

(_=*ZaXeR*=_)
26/04/2003, 05:19
<Mortimor> estoy deseando que termines este juego porque es de los generos que mas me gustan sin duda, los D&D, el The King Of Dragons, los Golden AXE, Dungeons and Guarder,y una lista interminable de juegos mezcla de rol y Beat'em all. Me parece que esto me da otra idea para comenzar y abandonar al poco tiempo:P :D:D(portar el Golden AXE para la GP32).
Por cierto la calculadora sera una en especial o solo quieres que la GP32 funcione como calculadora?, porque si haces una emulacion de la HP48g HP49G Texas intrument o CASIO lo la que sea pos creo que seria mejor porque hay tela de programas ya hechos para estas calculadoras que rulan por internet, como programas que sintetizan fotos para verlas en la pantalla, resoluciones de ejecicios... Un saludo

mortimor
26/04/2003, 14:36
Pues la verdad es que lo de la calculadora esta uy en pañales y la idea que tenia es realizar una desde cero, no emular una de las que has mencionado.

Siento desillusionarte, pero el juego de D&D va ha ser mas bien una mezcla entre rol y juego de lucha tipo "street fighter" (eso si con algunos extras: inventario, equipacion, nivel de experiencia,...)

(_=*ZaXeR*=_)
26/04/2003, 22:20
Pos espero tu juego con ilusion porque necesito ver algo nuevo en mi GP32 los juegos de los emuladores los tengo ya un poco vistos aunque no me canso de jugar a ellos. Un saludo