Visual FoxPro es un lenguaje de programación desarrollado por Microsoft . Es un lenguaje de programación procedimental y centrado en datos , con características de programación orientada a objetos (POO).
Se derivó de FoxPro (que a su vez descendía de FoxBASE), desarrollado por Fox Software a partir de 1984. Fox Technologies se fusionó con Microsoft en 1992, tras lo cual el software adquirió más funciones y el prefijo "Visual". [ 5 ] FoxPro 2.6 funcionaba en Mac OS , DOS , Windows y Unix .
Visual FoxPro 3.0, la primera versión "Visual", limitó la compatibilidad a plataformas Mac [ 6 ] y Windows, y las versiones posteriores 5, 6, 7, 8 y 9 solo estaban disponibles para Windows. La versión actual de Visual FoxPro se basa en COM y Microsoft ha declarado que no tiene intención de crear una versión para Microsoft .NET .
La versión 9.0, lanzada en diciembre de 2004 y actualizada en octubre de 2007 con el parche SP2, fue la versión final del producto. El soporte finalizó en enero de 2010 y se extendió en enero de 2015. [ 7 ]
Historia
Visual FoxPro se originó como un miembro de la clase de lenguajes comúnmente conocidos como lenguajes " xBase ", cuya sintaxis se basa en el lenguaje de programación dBase . Otros miembros de la familia de lenguajes xBase incluyen Clipper y Recital (base de datos).
Visual FoxPro, comúnmente abreviado como VFP, está estrechamente integrado con su propio motor de base de datos relacional, que amplía las capacidades de xBase de FoxPro para admitir consultas SQL y manipulación de datos. A diferencia de la mayoría de los sistemas de gestión de bases de datos , Visual FoxPro es un lenguaje de programación dinámico y completo que no requiere el uso de un entorno de programación de propósito general adicional. Puede utilizarse para escribir no solo aplicaciones tradicionales de cliente pesado , sino también middleware y aplicaciones web .
A finales de 2002, se demostró que Visual FoxPro podía ejecutarse en Linux bajo el paquete de compatibilidad Wine para Windows. En 2003, esto provocó quejas por parte de Microsoft: se alegó que la implementación del código de tiempo de ejecución de FoxPro en máquinas que no fueran Windows infringía el Acuerdo de Licencia de Usuario Final . [ 8 ]
Visual FoxPro tuvo un rápido ascenso y caída en popularidad según lo medido por el Índice de la Comunidad de Programación TIOBE . [ 9 ] En diciembre de 2005, VFP entró por primera vez en el top 20. En junio de 2006 alcanzó su punto máximo en la posición 12, lo que lo convirtió (en ese momento) en un lenguaje "B". A mayo de 2025 Visual FoxPro ocupa la posición 29 en el índice TIOBE. [ 10 ]
En marzo de 2007, Microsoft anunció que no habría VFP 10, [ 11 ] convirtiendo así a VFP9 (lanzado a fabricación el 17 de diciembre de 2004) en el último lanzamiento comercial de VFP de Microsoft. El Service Pack 2 para Microsoft Visual FoxPro 9.0 se lanzó el 16 de octubre de 2007. [ 12 ] El soporte para la versión 9 finalizó el 13 de enero de 2015. [ 7 ]
En el momento del anuncio del fin de vida útil, el trabajo en la siguiente versión, cuyo nombre en clave era Sedna (en honor a un planeta enano descubierto recientemente ), que se construyó sobre el código base de VFP9, ya había comenzado. "Sedna" es un conjunto de complementos para VFP 9.0 de componentes xBase para admitir varios escenarios de interoperabilidad con diversas tecnologías de Microsoft, incluyendo SQL Server 2005, .NET Framework , Windows Vista, Office 2007, Windows Search y Team Foundation Server (TFS). Microsoft publicó Sedna bajo la licencia de código fuente compartido en el sitio CodePlex . Microsoft ha aclarado que el núcleo de VFP seguirá siendo de código cerrado. Sedna se publicó el 25 de enero de 2008. [ 13 ] A partir de marzo de 2008, todos los componentes xBase de VFP 9 SP2 (incluido Sedna) estaban disponibles para el desarrollo de la comunidad en CodePlex.
A finales de marzo de 2007, la comunidad hispanohablante de FoxPro inició una campaña popular en MásFoxPro [ 14 ] ("MoreFoxPro" en inglés ) para firmar una petición a Microsoft para que continuara actualizando Visual FoxPro o lo liberara a la comunidad como software de código abierto . El 3 de abril de 2007, la prensa técnica se hizo eco del movimiento. [ 15 ]
El 3 de abril de 2007, Microsoft respondió a la petición con esta declaración de Alan Griver: [ 15 ]
"Somos muy conscientes de la comunidad de FoxPro y eso influyó mucho en lo que anunciamos el 13 de marzo. Nunca es una decisión fácil anunciar que no vamos a lanzar otra versión de un producto y es una decisión que consideramos con mucho cuidado."
No estamos anunciando el fin de FoxPro: obviamente, las aplicaciones de FoxPro seguirán funcionando. Según algunas de nuestras estimaciones internas, hay más aplicaciones ejecutándose en FoxPro 2.6 que en VFP, y FoxPro 2.6 lleva muchos años sin soporte. Microsoft seguirá ofreciendo soporte para Visual FoxPro 9 hasta 2015.
Para que Microsoft continúe desarrollando la base de FoxPro, necesitaríamos crear un entorno de desarrollo de 64 bits, lo que implicaría una reescritura casi completa del producto principal. También hemos invertido en la creación de una base de datos escalable con SQL Server, incluyendo la edición gratuita SQL Server Express Edition. En cuanto a la posibilidad de asociarnos con un tercero, varios clientes importantes de FoxPro nos han comentado que esto les impediría seguir utilizando FoxPro, ya que dejaría de ser un proveedor homologado. Consideramos que publicar el entorno como código abierto en CodePlex , lo que equilibra las necesidades tanto de la comunidad como de los grandes clientes, era la mejor opción.
Cronología de versiones
Todas las versiones enumeradas son para Windows. [ 16 ]
Ejemplos de código
El lenguaje FoxPro contiene comandos bastante similares a otros lenguajes de programación como BASIC.
Algunos ejemplos de sintaxis básica:
PARA i = 1 a 10 x = x + 6.5 SIGUIENTE && En lugar de "SIGUIENTE" también se puede usar "FIN PARA"SI i = 25 i = i + 1 SINO i = i + 3 FIN SIx = 1 HACER MIENTRAS x < 50 x = x + 1 FIN HACERx = 1 HACER MIENTRAS .T. x = x + 1 SI x < 50 BUCLE SINO SALIR FIN SI FIN HACERnMes = MES ( FECHA ()) HACER CASO CASO nMes <= 3 CUADRO DE MENSAJE ( "Q1" ) CASO nMes <= 6 CUADRO DE MENSAJE ( "Q2" ) CASO nMes <= 9 CUADRO DE MENSAJE ( "Q3" ) DE LO CONTRARIO, CUADRO DE MENSAJE ( "Q4" ) FIN DE CASOPARA CADA o Control EN ESTE FORMULARIO .Controles MESSAGEBOX (o Control .Name ) FIN PARAf = Factorial(10) FUNCIÓN Factorial(n) LOCAL i, r r = 1 PARA i = n HASTA 1 PASO -1 r = r * i SIGUIENTE && También se puede usar "FIN PARA" aquí en lugar de "SIGUIENTE" DEVOLVER r FIN FUNCIÓNEjemplos de "Hola Mundo":
* ¿Salida en la ubicación actual ? "Hola Mundo"* Salida en una ubicación específica @ 1,1 DI "Hola Mundo"* Salida en una ventana separada, borrada al introducir WAIT WINDOW "Hola Mundo"* Salida en un cuadro de diálogo estándar, borrado al aceptar MESSAGEBOX ( "Hola Mundo" ) Objeto

* Salida en una ventana definidaloForm = CREATEOBJECT ( "HiForm" )loForm . Mostrar ( 1 )DEFINIR CLASE HiForm COMO FormularioAutoCentro = . T .Leyenda = "Hola, mundo"AÑADIR OBJETO lblHi como etiqueta ;CON Leyenda = "¡Hola, mundo!"FIN DEFINIRloMine = CREAROBJETO ( "MiClase" ) ? loMine.cProp1 && Esto funcionará. (El doble ampersand marca un comentario de fin de línea)? loMine.cProp2 && Error de programa: No se encuentra la propiedad CPROP2 porque está oculta externamente.? loMine.MyMethod1() && Esto funcionará.? loMine.MyMethod2() && Error del programa: No se encuentra la propiedad MYMETHOD2 porque está oculta externamente.DEFINIR CLASE MyClass COMO PersonalizadacProp1 = "Mi propiedad" && Esta es una propiedad públicaOCULTO cProp2 && Esta es una propiedad privada (oculta)dProp3 = {} && Otra propiedad públicaPROCEDIMIENTO Init() && Constructor de claseEste .cProp2 = "Esta es una propiedad oculta."PROCEDIMIENTO dProp3_Access && Property GetterFECHA DE RETORNO () PROCEDIMIENTO dProp3_As sign (vNewVal) && El Setter de la propiedad utiliza la etiqueta "_assign" en el nombre de la propiedad.SI VARTYPE (vNewVal) = "D"ESTO .dProp3 = vNewVal FIN SIPROCEDIMIENTO MiMétodo1() * Este es un método público que llama a un método oculto que devuelve* el valor de una propiedad oculta.DEVOLVER Este .MyMethod2() PROCEDIMIENTO OCULTO MyMethod2() && Este es un método privado (oculto)DEVOLVER Este .cProp2 FIN DEFINIR- VFP tiene una extensa biblioteca de clases y objetos visuales predefinidos a los que se accede en el IDE mediante una hoja de propiedades (incluidos métodos ), [ 17 ] por lo que el código como el anterior que define clases y objetos solo es necesario para propósitos especiales y el marco de sistemas grandes.
Manejo de datos
El lenguaje también cuenta con comandos extensos para la manipulación e indexación de bases de datos. El índice de comandos de "ayuda" en VFP 9 describe varios cientos de comandos y funciones. Los ejemplos a continuación muestran cómo programar la creación e indexación de tablas; sin embargo, VFP dispone de pantallas de creación de tablas y bases de datos que permiten crear tablas e índices sin necesidad de escribir código.

* Crear una tablaCREAR TABLA randData (iData I) * Rellenar con datos aleatorios utilizando comandos xBase y SQL DML.PARA i = 1 A 50 ADJUNTAR EN BLANCO REEMPLAZAR iData CON ( ALEATORIO () * 100) INSERTAR EN randData (iData) VALORES ( RANDG () * 100) FIN DE LA FUERZA* Colocar un índice estructural en los datosÍNDICE EN iData ETIQUETA iData CERRAR DATOS && No cerrar bibliotecas abiertas, etc.* Mostrar datos ordenados mediante comandos de estilo xBaseUSE randData ESTABLECER ORDEN A iData LOCALIZAR && En lugar de IR AL PRINCIPIO. Obliga a usar el índice para encontrar AL PRINCIPIO LISTA DE LOS SIGUIENTES 10 Y LOS PRIMEROS 10IR AL FONDO SALTAR -10 LISTA RESTO && Últimos 10CERRAR DATOS * Explore los datos ordenados mediante comandos SQL DML.SELECCIONAR * ;DE datos aleatorios ;ORDENAR POR iData DESCENDENTE Acceso ODBC mediante paso directo de SQL
PRIVATE cAuthorID, cAuthorName && Las variables privadas reemplazan cualquier variable global o privada anterior del mismo nombre.LOCAL nHnd, nResult && Las variables locales solo son visibles aquí.* Conectarse a una fuente de datos ODBCnHnd = SQLCONNECT ( "ODBCDSN" , "usuario" , "contraseña" ) * Introducir un bucle para poder salir al código de cierre de conexión si hay un error.HACER MIENTRAS .T.* Ejecutar un comando SQLnResultado = SQLEXEC (nHnd, "USE master" ) SI nResultado < 0 MESSAGEBOX ( "¡La base de datos MASTER no existe!" ) SALIR && Para cerrar la conexiónFIN SI* Recupera datos del servidor remoto y los almacena en un cursor de datos local.nResultado = SQLEXEC (nHnd, "SELECT * FROM authors" , "QAUTHORS" ) SI nResultado < 0 MESSAGEBOX ( "¡No se puede ejecutar el comando SQL SELECT remoto!" ) SALIR && Para cerrar la conexiónFIN SI* Actualizar un registro en una tabla remota usando parámetroscAuthorID = "1001"cAuthorName = "Nuevo nombre"nResult = SQLEXEC (nHnd, "UPDATE authors SET auth_name = ?cAuthorName WHERE auth_id = ?cAuthorID" ) SI nResultado < 0 MESSAGEBOX ( "¡No se puede ejecutar el comando SQL UPDATE remoto!" ) SALIR && Para cerrar la conexiónFIN SI* Si llegamos aquí, habremos recuperado todo correctamente.SALIDA && Salida incondicionalENDO* Cerrar la conexiónSQLDISCONNECT (nHnd) Véase también
Referencias
- ↑ "Actualizaciones de Visual FoxPro 9.0" . Centro para desarrolladores de Visual FoxPro . Microsoft . Consultado el 7 de junio de 2013 .
- ↑ "Descargar Microsoft Visual FoxPro 9.0 Service Pack 2.0" . Centro de descargas . Microsoft. 16 de octubre de 2007. Consultado el 7 de junio de 2013 .
- ↑ "Requisitos del sistema" . Centro para desarrolladores de Visual FoxPro . Microsoft . Consultado el 7 de junio de 2013 .
- ↑ "Preguntas frecuentes" . Centro para desarrolladores de Visual FoxPro . Microsoft . Consultado el 7 de junio de 2013 .
- ↑ Pollack, Andrew (25 de marzo de 1992). "Microsoft intentará entrar en un nuevo mercado adquiriendo Fox Software" . The New York Times . pág. D1.
- ↑ Microsoft Visual FoxPro 3.0 para Power Macintosh ya está disponible , 25 de julio de 1996, news.microsoft.com
- 1 2 "Microsoft Visual FoxPro 9.0" . learn.microsoft.com .
- ↑ Visual FoxPro para Linux: ¿Una violación del EULA?, 13 de mayo de 2003, por Ed Leafe, Linux Journal
- ↑ Historial del índice Tiobe para FoxPro
- ↑ "Índice | TIOBE - la empresa de calidad de software" .
- ↑ Un mensaje a la comunidad
- ↑ Microsoft Visual FoxPro 9.0 Service Pack 2.0
- ↑ Descarga de Microsoft SEDNA
- ↑ Más FoxPro - Visual FoxPro Wiki
- 1 2 Los desarrolladores solicitan a Microsoft que reconsidere la eliminación gradual de FoxPro Publicado por Mary Jo Foley (3 de abril de 2007) - Todo sobre Microsoft - ZDNet.com
- ↑ La historia de FoxPro
- ↑ "Herramientas de productividad para el desarrollo visual de FoxPro" . Microsoft . Consultado el 20 de diciembre de 2014 .
Enlaces externos
Páginas de Microsoft
- Página principal de Visual FoxPro en Microsoft
- Foro de soporte de MSDN FoxPro
- Ayuda en línea de VFP
Otras páginas
- Un sitio web dedicado a la historia de FoxPro.
- VFPx: Un esfuerzo de la comunidad de Visual FoxPro para crear complementos de código abierto para VFP 9.0.
- Página de inicio del clon en línea de Fox In Cloud
- Software de 1984
- Lenguajes de programación centrados en datos
- Herramientas de desarrollo de aplicaciones de bases de datos de escritorio
- Herramientas de desarrollo de Microsoft descontinuadas
- Software de Microsoft descontinuado
- Lenguajes de programación de cuarta generación
- Lenguajes de programación de alto nivel
- Software de base de datos de Microsoft
- Herramientas de desarrollo de Microsoft
- Lenguajes de programación de Microsoft
- Lenguajes de programación multiparadigma
- Lenguajes de programación orientados a objetos
- Lenguajes de programación procedimental
- Lenguajes de programación
- Lenguajes de programación creados en 1984
- Programación orientada a tablas
- Familia de lenguajes de programación XBase