Hola,
Antes de comenzar, quiero dejar algo en claro, cada cosa a lo suyo. No puedes transportar camiones en un auto, y no puedes manejar camiones si no tienes licencia para eso ;) .
El siguiente post va por un comentario, la mayor parte de la información y su inspiración, fueron obtenidos de un slide escrito y hecho por elizabeth marie smith (AKA auroraesrose). EL slide original voy a traducirlo y publicarlo, si quieren el original (en ingles) pueden obtenerlo aca http://elizabethmariesmith.com/slides/
[...]
Las personas no SIEMPRE están en linea, algunas aplicaciones ó equipos tienen prohibiciones de ancho de banda o conexión, existe información muy delicada para ser transportada en linea, los sistemas operativos embedidos no siempre funcionan bien con todos los sitios, los navegadores son un dolor de cabeza (IE6, IE7, IE8, Firefox 2.x, 3.x, Chrome, Opera, Safarí), debes preocuparte que tu aplicación funcione y lo haga bien en cada uno de ellos. Las herramientas para utilizar RIA en el escritorio aun son jovenes (AIR, Xulrunner, Mozilla Prism) y presentan problemas, no siempre tienes acceso a un servidor, si el servidor cae todos caen, necesitas combinar lenguajes de programación y marcado (xml, html, css, javascript, php, etc), etc.
Lo anterior son unas de las muchas razones que hay para, a veces, optar por una aplicación de escritorio y no una en la web (sea de internet o intranet). La gente se olvida por que quieren una aplicación de escritorio. Ahora bien existen muchos muchos lenguajes de programación para el escritorio... ¿por que php?(ojo estamos tratando solo PHP, no involucres GTK en nada de esto)
Velocidad es la gran razón para no elegir PHP, e irse por algo como C o parecido. Aunque comparandolo con Python o Ruby, velocidad es la gran ventaja de PHP.
A PHP no le interesa ni le importa HTML, PHP funciona a traves de SAPIS (Server Application Programming Interface - Interfaz de Programación de la Aplicación [en el] Servidor), y para el caso de la programación en el escritorio la SAPI CLI (Command Line Interface - Interfaz por Linea de Comandos). CLI no tiene cabezeras (http) ni responde a pedidos (http request). Ahora bien necesitamos alguna forma para crear GUIs (Graphic User Interface - Interfaz Grafica de Usuario), y tal como php utiliza envoltorios o encapsuladores (Wrappers) de funciones para C/C++, puede utilizar envoltorios para GUIs.
*A tu computador no le preocupa ni le importa el HTML, a tu shell (CMD para windows) no le preocupa ni le importa el HTML, a PHP no le preocupa ni le importa HTML, por esto a ti no debiera preocuparte ni importarte HTML.
PHP y GTK no usan HTML, PHP y GTK no crean paginas WEB, PHP y GTK no crean aplicaciónes WEB, PHP y GTK crean programas de ordenador.*
-bob Majdak
Estables
PHP-GTK http://gtk.php.net (Multiplataforma) (activo, soporta PHP 5.2.x, CVS: PHP 5.3 con soporte para cairo)
WINBINDER http://winbinder.org (Solo soporta MS Windows)(Al parecer estancado, soporta PHP 4)
Funcionan, pero no 100%
PHP-QT http://www.php-qt.org (no tiene soporte para MS Windows) (activo, soporta PHP 5)
WxWidgets http://www.wxwidgets.org (solo soporta MS Windows) (Al parecer estancado)
WIN::GUI (es parte de WIN::API) (activo)
En pocas palabra, para soluciones multiplataforma PHP-GTK funciona!
Gtk era Gimp Tool Kit, Gtk es GUI Tool Kit, es una libreria para GUIs escrita en C, es multiplataforma (Linux, Windows, Mac) si usas Gnome ya lo tienes ;).
C
#include <gtk/gtk.h>
void
hello (void)
{
g_print ("Hello World\n");
}
void
destroy (void)
{
gtk_main_quit ();
}
int
main (int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *button;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC (destroy), NULL);
gtk_container_border_width (GTK_CONTAINER (window), 10);
button = gtk_button_new_with_label ("Hello World");
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (hello), NULL);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (gtk_widget_destroy),
GTK_OBJECT (window));
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (button);
gtk_widget_show (window);
gtk_main ();
return 0;
}Python
imp ort pygtk
pygtk.require('2.0')
import gtk
class HelloWorld:
def hello(self, widget, data=None):
print "Hello World"
def delete_event(self, widget, event, data=None):
print "delete event occurred"
return False
def destroy(self, widget, data=None):
print "destroy signal occurred"
gtk.main_quit()
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("delete_event", self.delete_event)
self.window.connect("destroy", self.destroy)
self.window.set_border_width(10)
self.button = gtk.Button("Hello World")
self.button.connect("clicked", self.hello, None)
self.button.connect_object("clicked", gtk.Widget.destroy, self.window)
self.window.add(self.button)
self.button.show()
self.window.show()
def main(self):
gtk.main()
if __name__ == "__main__":
hello = HelloWorld()
hello.main()PHP-GTK
<?php
class HelloWorld extends GtkWindow
{
private $_label;
private $_button;
public function __construct()
{
parent::__construct();
$this->_label = new GtkLabel("Hello World");
$this->_button = new GtkButton("Click Me");
$this->_button->connect_simple('clicked', array ($this, 'sayHello'));
$vbox = new GtkVBox();
$vbox->pack_start($this->_label);
$vbox->pack_start($this->_button);
$this->add($vbox);
}
public function sayHello()
{
echo "Hello World\n";
}
}
$window = new HelloWorld();
$window->connect_simple('destroy', array ('Gtk', 'main_quit'));
$window->show_all();
Gtk::main();
?>Como notaras son similares, intente reproducir el codigo de C y python lo mas parecido posible, por que en realidad puedes hacer un simple Hello World en 5 lineas:
<?php
$window = new GtkWindow();
$window->add(new GtkLabel("Hello World"));
$window->connect_simple('destroy',array('Gtk','main_quit'));
$window->show_all();
Gtk::main();
?>En conclusión:
¿Por que usar PHP-GTK?
R: Ya sabes PHP, solo te falta GTK ;), no necesitas : HTML, CSS, JavaScript, Apache o IIS, es mas rapido (que la web), no necesitas un navegador, funciona offline.
¿Para que usar PHP-GTK?
R: Vamos, si realmente te preguntas esto, o tienes falta de creatividad o aun no lees el post completo xD, pero como ejemplo puedes hacer desde una Calculadora, un cliente para Twitter, hasta un reloj analogo con cairo, diras pero esas cosas no sirven, entonces eres un bruto, esas cosas no sirven mas que para mostrar el potencial, y para que te imagines lo que puedes hacer con PHP-GTK, despues de todo, tu eres el creador, PHP es solo la herramienta .
Saludos
./XeKtRuM
Este usuario no ha completado su perfil.
Oscar escribió
hace 10 meses
Luix escribió
hace 10 meses
Qué bueno el artículo, aunque hay algunos detalles que no me gustan:
Pero me gusta lo directo que eres, lo fácil que es leer el artículo y lo entretenido que ha sido; me ha gustado que expresas tu opinión de una forma muy clara (puedo estar de acuerdo o no, pero esa es otra cosa).
El debate sobre si son mejores las aplicaciones web o las de escritorio es un poco rocambolesco y absurdo, entre otras cosas porque depende de la solución que se desee adoptar, por la razón que sea.
Lo de que PHP+GTK mole porque sí es una opinión tuya muy respetable y todo lo que tú quieras (XD) pero después de estar unos años programando en PHP e incluso programar un compilador para PHP te das cuenta de que su flexibilidad a la hora de manejar tipos, variables, etc. es un arma de doble filo a tener en cuenta, sobre todo en aplicaciones gordas y serias, no en la web del municipio de Villalba de Castroviejo. Por otra parte es sencillo, es relativamente rápido (comparado con ASP, aunque no viene con ajax de serie, o atlas, véase en el caso de ASP.NET 2.0).
Mi opinión es que PHP está bien para la web, hay mucho código que se puede reutilizar, y sobre todo es útil en sistemas de tamaño pequeño o pequeño-medio. Para sistemas grandes o aplicaciones de escritorio yo utilizaría Java o .NET, que proporcionan un soporte de debugging, bibliotecas y demás mucho mayor.
Me reitero en lo dicho: muy entretenido el artículo.
qwertyuiop escribió
hace 10 meses
ajam.
excelente articulo, ahora me deja mucho mas claro (sobre todo que a PHP no le importa nada...jajaj), a pesar de que PHP tiene el arma de doble filo (variables), es mas rapido y facil que JAVA, ademas supongo que se pueden usar los multiples frameworks de desarrollo para PHP, claro con algunas modificaciones, para implementar la vista con GTK.
vamos a probar PHP-GTK para ver que se puede hacer.
saludos y gracias por el articulo.
XeKtRuM escribió
hace 10 meses
@Oscar no funciona como applet, es para ejecutarlo en el escritorio.
@Luix : "Cuida un poco más la escritura, hay alguna errata (thread no es un verbo, es un substantivo), faltan algunas comas y puntos y alguna falta de ortografía."
thread si es un verbo, ademas de ser un "substantivo" (¿o sustantivo?) (http://translate.google.cl/translate_t#en|es|thread http://en.wikipedia.org/wiki/Thread_(computer_science)) de ahi su gerundio ingles "threading" o la palabra "multithreading" (multiples procesos o multihilo)
El significado del verbo puede ser:
Por la ortografia... nunca me gusto el kasteyano XD.
Por todo lo demas gracias ;)
PD: estoy al tanto de lo que significaria un programa "gordo" escrito en php, por eso mi frase celebbre, "no puedes transportar camiones en un automovil, y no puedes manejar camiones si solo tienes licencia para automovil"
© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |
#1
Se puede ver como un applet ? o es solo para el scritorio?---