Ver la versión completa : Dudas, preguntas y respuestas sobre Pascal, Turbo Pascal, Free Pascal, etc
josepzin
08/10/2014, 02:37
Con motivo de este hilo (http://www.gp32spain.com/foros/showthread.php?136663-Programa-para-subastas), Ñuño Martínez comenta algunas cosas sobre Pascal:
¡Qué daño han hecho los profesores que enseñan a programar con Pascal sin tener ni put@ idea de programar en Pascal! Lo digo en serio. No hace tanto entró uno de una universidad en un foro a preguntar y no le servía nada de lo que le decíamos. Cuando le preguntamos que qué compilador usaba, nos dijo que el TurboPascal 1.0. Un compilador de casi treinta años (eso sí, fue el primer compilador de 32bit para MS-DOS). Evidentemente le dijimos que le dijera a su profesor que existía Free Pascal y Lazarus.
A ver si con esto os quito esa idea.
Aquí tenéis Throne3D: un pedazo motor 3D comercial completamente desarrollado en Object Pascal y que no veo que tenga nada que envidiar a ningún motor moderno:
https://www.youtube.com/watch?v=O1GjnzAGvgk
Y aquí, varios entornos y compiladores modernos y actuales que no son Dlephi (cuya última versión ha salido hace meses):
FreePascal (http://www.freepascal.org/): Compilador de Object Pascal multiplataforma (Intel, PowerPC, Motorola, ARM, máquina virtual Java, .NET ...), 32 y 64bit, compatible a nivel de código con Pascal, TurboPascal, Delphi y Teddy Pascal (y alguno más, posiblemente).
Lazarus (http://www.lazarus.freepascal.org/): RAD-IDE + biblioteca de componentes visuales que utiliza el compilador FreePascal y funciona en Window, Linux y MacOS.
Smart Mobile Studio (http://smartmobilestudio.com/): RAD-IDE + bibliotecas + compilador, genera aplicaciones basadas en HTML5 + JavaScript.
Oxygene (http://www.remobjects.com/elements/oxygene/): Compilador (y creo que también entorno) que genera ejecutables para la máquina virtual de Java
Todo esto me trajo recuerdos de mis épocas pascaleras y por curiosidad me surgen algunas preguntas que seguramente Ñuño Martínez responderá "gustosamente" a continuación :P
¿Que tan fácil o difícil es hacer estas cosas?
- Leer un joystick (uno generico, el de Xbox, un arcade, etc)
- Leer y hacer busquedas en bases de datos ODB (creo que es tipo Access)
- Leer y hacer busquedas en XML o CCV
- Pintar lineas, poligonos (¿transparencias, antialiasing?)
- Leer imagenes de disco (GIF, PNG, JPG)
- Pintar imagenes (¿transparencias, filtros?)
Me imagino que la mayoría sí, pero otras dependerán de librerias (por ejemplo las bases de datos o pintar poligonos e imagenes)
Ñuño Martínez
08/10/2014, 11:40
Todo lo que preguntas necesita de una biblioteca extra, ya que la RTL no permite hacer nada de eso (no es tan grave, porque la STDC tampoco permite hacer nada de eso :p ). Afortunadamente existen bibliotecas para todo ello, y algunas de ellas ya están incluidas junto con los compiladores modernos (al menos sí en Delphi y Free Pascal/Lazarus, nunca he usado Oxygene pero es muy probable que también).
Te cuento:
- Leer un joystick (uno generico, el de Xbox, un arcade, etc)
- Pintar imagenes (¿transparencias, filtros?)
- Pintar lineas, poligonos (¿transparencias, antialiasing?)
- Leer imagenes de disco (GIF, PNG, JPG)
Hay varias bibliotecas y motores dirigidos al desarrollo de juegos. Algunas no están escritas en Pascal pero pueden usarse igualmente. Te pongo unas pocas, no comerciales:
Castle Engine (http://castle-engine.sourceforge.net/) es, por lo que he visto, el motor libre y gratuito más completo.
GLScene (https://duckduckgo.com/l/?kh=-1&uddg=http%3A%2F%2Fglscene.sourceforge.net%2F), está a medio camino entre la biblioteca y el motor. Su principal característica es que permite el desarrollo RAD mediante componentes (ya sabes, arrastrar y soltar) tanto con Delphi como con Lazarus.
Allegro.pas (http://allegro-pas.sf.net/). La versión 5 está en stand-by, pero está bastante completa y a mi me da pocos problemas. La versión 4 puede considerarse completa, aun cuando no incluye absolutamente toda la funcionalidad de la versión C. Si vas a usar OpenGL deberás usar la versión 5.
ZenGL (http://zengl.org/). Nunca la he usado, pero en Pasgal Game Developers dicen maravillas de ella.
También puede usarse la omnipresente SDL, que por alguna razón no termina de tener tanto éxito en Pascal. Pero oye, ahí está.
Por otro lado, Free Pascal incluye unidades dentro de la RTL que reproducen la biblioteca gráfica, de sonido y entrada/salida del Turbo Pascal para MS-DOS, la cual funciona tanto en el susodicho MS-DOS (y FreeDOS) como en Windows, Linux, MacOS y AmigaOS como mínimo.
Evidentemente, si te van las emociones fuerte, también puedes usar OpenGL + GLUT. También está disponible MesaGL.
Y como digo, hay más (existen proyectos que han traducido varios motores id Tech a Pascal), pero los que he listado son los más utilizados (bueno, vale, quizá con Allegro no :rolleyes: ). También hay algún motor comercial, como el Throne3D cuyo vídeo demostración puse en el otro hilo.
- Leer y hacer busquedas en bases de datos ODB (creo que es tipo Access)
- Leer y hacer busquedas en XML o CCV
Tanto Free Pascal/Lazarus como Delphi incluyen bibliotecas para trabajar con casi cualquier base de datos del mercado (MySQL/MariaSQL, Access, SQL Server, Oracle, FoxPRO, Firebird/Interbase, DB2...) tanto de forma nativa como a través de ODBC y similares, y todo sin necesidad de instalar nada más.
Y con XML pasa más o menos lo mismo. Personalmente nunca he usado XML (salvo XHTML 1, supongo que no cuenta), pero en la wiki de Lazarus hay un tutorial (http://wiki.freepascal.org/XML_Tutorial) donde lo explican, así que sí, se puede.
Recuerdo que un profesor nos decia: El lenguaje es algo que hay que elegir en funcion del proyecto, algo que mucha gente no hace y elige primero el lenguaje y luego ve como hacer lo que necesita.
Recordais cuando se hablaba de lenguajes de "proposito general"?
Hoy dia casi todos los lenguajes tienen librerias para hacer de todo, por lo que la eleccion no esta tan clara, hasta el punto que la gente nisiquiera se plantea elegir un lenguaje diferente en funcion de las necesidades.
Aiken
josepzin
08/10/2014, 14:51
Ya tengo material para curiosear, gracias :)
¿Y como IDE/complilador qué usas? supongo que será Lazarus.
yo aprendí con Turbo Pascal, creo que fue un buen paso para alguien que no sabe programación.
De nada te sirve hacer cosas avanzadas de programación si no entiendes la mas **** idea de la base.
Yo siempre digo, solo usar una librería, si tenes una idea de como lo harías vos, pero la usas solo para ahorrarte el tiempo programando, si vas a usar algo solo porque leíste que anda, NO LO USES, HACERLO VOS, porque?? programando se van a dar cuenta....
Ñuño Martínez
08/10/2014, 20:06
Recuerdo que un profesor nos decia: El lenguaje es algo que hay que elegir en funcion del proyecto, algo que mucha gente no hace y elige primero el lenguaje y luego ve como hacer lo que necesita. Totalmente de acuerdo. Y hoy día, que hay compiladores libres de calidad de casi cualquier lenguaje, no hay escusas.
¿Y como IDE/complilador qué usas? supongo que será Lazarus. Depende. Si es para juegos, con Allegro, uso gVim, compilando con makefiles desde consola y depurando con GDB. Si son aplicaciones de escritorio, entonces sí, Lazarus, aunque sólo sea por la comodidad a la hora de crear los diálogos y definir los eventos.
josepzin
08/10/2014, 21:02
¿Entonces usas FreePascal como compilador?
Ñuño Martínez
09/10/2014, 16:08
Sip.
Eso sí, últimamente estoy experimentando con otros entornos, incluyendo el RHide que viene con Free Pascal, y me estoy haciendo uno para mi. Algún día lo publicaré. O no.
josepzin
09/10/2014, 18:25
Estuve trasteando un poco con el FPC.exe :P
No sé porque pero me parecía que Turbo Pascal usaba corchetes {...} pero no, son todos begin-end, o quizas se puede de las dos maneras.
Pregunta offtopic: ¿y tú para qué usas Pascal?
-----Actualizado-----
Madremia, que olvidado estaba del lenguaje...
Los {...} ni se usan para begin-end.
Y esto := era para asginar una variable! :D
Ñuño Martínez
10/10/2014, 10:47
¡Qué perdido te veo, muchacho! Échale un vistazo a este curso de Pascal (http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Indice.php). Si no recuerdo mal, es de lo mejor que he encontrado en la web en castellano. O este en Wikilibros (https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Pascal), que no está completo pero, si sabes ya de programación, sirve para quitarse las telarañas.
Pregunta offtopic: ¿y tú para qué usas Pascal? Hace años lo usé en el trabajo para desarrollar un Terminal Punto de Venta (que, por cierto, nunca se vendió y no entiendo por qué porque a todo el que se lo enseño quiere comprarlo) y también para hacer programas de utilidad y extensiones de otros programas para gestión de empresas (almacenes, contabilidad, correspondencia...). En esa época usaba Delphi 6.
Ahora mismo lo vamos a utilizar para desarrollar juegos. Estoy trabajando en un Motor de Aventuras Programables (aventuras de texto), porque AGE (http://wiki.caad.es/Aetheria_Game_Engine) no nos permite controlar ciertas características que queremos en el juego. Todo en Object Pascal. El editor de juegos (mapas, objetos, depurador, etc) necesita Lazarus porque es una aplicación de escritorio, pero el motor/ejecutor funciona(rá) con Allegro. Usamos Lazarus + Free Pascal principalmente porque el Delphi más barato que necesitamos para el proyecto sale por ~1.000 €uros, y Smart Mobile Studio no me convence para hacer la versión de escritorio.
[edito]
Olvidé contestar a esto.
yo aprendí con Turbo Pascal, creo que fue un buen paso para alguien que no sabe programación.
De nada te sirve hacer cosas avanzadas de programación si no entiendes la mas **** idea de la base.
Yo siempre digo, solo usar una librería, si tenes una idea de como lo harías vos, pero la usas solo para ahorrarte el tiempo programando, si vas a usar algo solo porque leíste que anda, NO LO USES, HACERLO VOS, porque?? programando se van a dar cuenta....
Totalmente de acuerdo. Por eso también me estoy currando un motor 3D (nada espectacular, muy simple, con OpenGL 1.1 ó 1.2 como mucho) aunque tenemos apalabrado con la empresa de Trhone3D para usarlo si finalmente hacemos un juego comercial en 3D.
josepzin
10/10/2014, 14:00
Me paso por ese curso, que mi memoria fue reiniciada :P
Anoche, cuando todo el mundo se fue a dormir, estuve mirando esa Allegro.pas.
Descargué un zip, ejecuté fix win32, copié lib a units, descargué el ejemplo l01.pas, abrí linea de comando, fpc l01 > proceso terminado con exito :O :O veo que hay un .exe, me pide que necesita alleg44.dll, lo descargo y copio en la carpeta, vuelvo a ejecutar y tengo un triangulo y un cuadrado en la pantalla!!
La verdad es que pensé que sería mucho mas complicado ver este primer holamundo :)
-----Actualizado-----
El editor de juegos (mapas, objetos, depurador, etc) necesita Lazarus porque es una aplicación de escritorio, pero el motor/ejecutor funciona(rá) con Allegro.
En alguna parte - CD/DVD - tengo el editor de sprites y de mapas que hice en Turbopascal4, para VGA... ¡cuantas horas le metí a eso! :D :D
Usamos Lazarus + Free Pascal principalmente porque el Delphi más barato que necesitamos para el proyecto sale por ~1.000 €uros, y Smart Mobile Studio no me convence para hacer la versión de escritorio.
Cierto, con esta curiosidad por el Pascal, estuve mirando Delphi y cuando vi que es de pago y el precio...
http://4.bp.blogspot.com/_gB8i9RgQMBM/SsdCGmVk2LI/AAAAAAAALz4/G4uJ7csOSMU/s400/ni%C3%B1a1.jpg
-----Actualizado-----
Acabo de probar los otros dos ejemplos l02.pas y l03.pas pero me saltan errores, ¿quizás haya que agregar algún parámetro al compilador?
Target OS: Win32 for i386
Compiling C:\FPC\2.6.4\examples\allegro.pas\l03.pas
l03.pas(185,73) Error: Incompatible type for arg no. 4: Got "Pointer", expected "Open Array Of AL_V3D_Fptr"
l03.pas(227,5) Error: Incompatible types: got "Boolean" expected "LongInt"
l03.pas(293,4) Fatal: There were 2 errors compiling module, stopping
Fatal: Compilation aborted
Error: C:\FPC\2.6.4\bin\i386-win32\ppc386.exe returned an error exitcode (normal if you did not specify a source file to be compiled)
Ñuño Martínez
10/10/2014, 21:07
Oye, esos ejemplos, ¿de dónde los has bajado? Y ya de paso, ¿qué archivo te has bajado con el Allegro.pas?
josepzin
10/10/2014, 21:21
Los ejemplos desde aquí: http://allegro-pas.sourceforge.net/wiki/doku.php?id=tutorials:3d_tutorials:start
Lo que descargué desde aquí: http://allegro-pas.sourceforge.net/wiki/doku.php?id=documentation:full_installation
Concretamente este:
If you're a Windows user you can get a pre-compiled version of Allegro from this repository. Note that this version might be older than the last released by Allegro, but it works fairly stable.
Ñuño Martínez
13/10/2014, 21:53
Ah, coñe, los ejemplos 3D del tutorial que nunca terminé de escribir... Debería ponerme y terminarlos.
[edito] Por cierto, acabo de instalarme el Lubuntu 14.04 en mi IBM Pentium IV, y atento al dato, porque Allegro 5 + OpenGL hace cosas raras. Los ejemplos de Allegro funcionan mal, pero el motor 3D que estoy haciendo funciona fetén. Cágate lorito. XD
josepzin
13/10/2014, 22:36
Que sepas que estas dejando tirada a tu "comunidad" :P
Ñuño Martínez
14/10/2014, 12:46
Si es que no doy abasto.
Precisametne hoy he recibido a través del foro oficial de Lazarus un informe de fallo. Es una chorrada, pero no veo cuándo podré arreglarlo.
josepzin
10/11/2020, 13:14
6 años tiene este hilo, vaya mierd4 como pasa el tiempo... :/
A lo que venía.
Recientemente me he reencontrado con un ex compañero de la carrera de informática, él siguió ese camino y ahora tiene muchos clientes que usan su sistema de gestión, facturación, stock, etc, sistema que tiene desarrollado en Delphi.
Estamos colaborando, yo haciendo la parte web de su sistema.
Una de las cosas que hay que hacer es subir a un servidor las imagenes del catálogo de productos para que Woocommerce las pueda importar, o sea, hacer una conexión FTP para subir archivos.
Y la cosa se ha complicado porque da errores de autenticación y no hay caso, hemos probado con otro servidor y se conectó bien pero no con el que debe. Los datos de conexión estan bien y la gente del servidor dicen que no hay restricción alguna.
Entonces me acordé de este FreePascal/Lazarus, asi que me puse a trastear a ver si puedo conectarme usando FreePascal por si el problema es cosa del modulo FTP de Delphi.
Y efectivamente, luego de liarme bastante hasta encontrar una libreria que pareciera simple de usar y de cómo usarla, finalmente pude conectar al FTP, asi que:
- Lazarus-FreePascal 1
- Delphi 0
:D :P :P
Mientras me liaba con esto, me acordé que entre las cientos de pestañas que tengo, había unas guardadas con Turbo Rascal SE, que es un IDE de Pascal orientado a Commodore 64 (o a hacer cosas retro) y lo he probado y va espectacularmente bien, asi que igual me lo quedo y me pongo a hacer cositas.
PD: Espero no leer este hilo dentro de unos años y no haber hecho nada... :(
fbustamante
10/11/2020, 16:06
Pues a mí me ha dado por aprender Basic del Spectrum :D
josepzin
10/11/2020, 16:24
Aprenda ensamblador, no sea tan básico!
fbustamante
10/11/2020, 17:51
XXXXDDDDD.
Es que no veo concursos de ensamblador. :D
Si quieres, nos ponemos con Bennu y terminamos el SBTime, que me he estado leyendo el hilo de desarrollo ¡que ya cumple 10 años el jueguecito y no está terminado! :D :D :D
fbustamante
11/11/2020, 08:29
Bufffff. Si es que estoy muy perro.
Iba a programar algo y acabé viendo vídeos del basic del Spectrum, y me he enganchado.
Pero sigo pensando lo mismo que cuando era pequeño: Programar un juego en basic del Spectrum es una tortura. Y el juego saldrá un churro sí o sí.
Prueba a programar una Pico-8, o usa la churrera, o haz algo para cpc usando la librería 8bits de poder, o usa AMOS en Amiga o STOS en el Atari ST, si no te ayudas de alguna librería o no usas nada mas potente saldrán cosas como los programas de las revistas que tenias que copiar.
fbustamante
11/11/2020, 10:36
¡Más cosas para mirar! :D
Gracias, lo tendré en cuenta. :brindis:
rafa-lito
11/11/2020, 10:40
Prueba a programar una Pico-8, o usa la churrera, o haz algo para cpc usando la librería 8bits de poder, o usa AMOS en Amiga o STOS en el Atari ST, si no te ayudas de alguna librería o no usas nada mas potente saldrán cosas como los programas de las revistas que tenias que copiar.
Perdona mi ignorancia. Qué es la churrera?[wei]
Perdona mi ignorancia. Qué es la churrera?[wei]
Lo que usan mojontwins para sacar juegos como churros XD
https://www.mojontwins.com/juegos_mojonos/la-churrera/
josepzin
11/11/2020, 13:28
La churrera para spectrum es una muy buena alternativa!
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.