Lenguajes de propósito general

La Wikipedia, define a los lenguajes de propósito general, como: Los lenguajes de propósito general, son lenguajes que pueden ser usados para varios propósitos, acceso a bases de datos, comunicación entre computadoras, comunicación entre dispositivos, captura de datos, cálculos matemáticos, diseño de imágenes o páginas.

Era una filosofía completamente válida en la época (dorada) de los 8 bits. Teníamos ensamblador y código máquina para los programas de alto rendimiento, y BASIC para el aprendizaje, y tareas más sencillas.

Siguió siendo válida con DOS y los 16 bits, pero ampliando la variedad. Se usaba ensamblador para programas pequeños y de alto rendimiento, C en aquellos que requerían acceso al hardware de bajo nivel, y también buena eficiencia, BASIC en programas de gestión, y otros más sencillos, y Pascal en un punto medio. En este punto, empezamos a contar con herramientas específicas diseñadas para tareas concretas: dBase/xBase, Derive, …

Con la aparición de Windows se siguió ampliando la oferta, Visual BASIC, que construía sobre un dialecto de BASIC una herramienta capaz de desarrollar aplicaciones Windows de forma sencilla, Delphi que haría lo propio sobre Object Pascal, Visual C++ para software eficiente, Mathlab o Maple para cálculos matemáticos, Fortran para entornos científicos, …

A día de hoy, con tantas plataformas disponibles, seguimos aplicando esa misma filosofía. Así por ejemplo, podemos usar C# en Windows (.NET Framework), Windows Phone, Windows Mobile (.NET Compact Framework), Web (ASP.NET), X-Box (XDK), …

Podemos usar asimismo Java, para aplicaciones de escritorio, applets de navegador, servlets en web, páginas JSP, apps para dispositivos Android, móviles (J2ME), …

Sin embargo, son normalmente tantas las diferencias entre una y otra plataforma, que el basarse en un lenguaje común, apenas nos ayuda, y necesitamos aprender muchas veces nuevos IDE, nuevas clases o jerarquías de clase, nuevos componentes, y a veces, hasta nuevas filosofías de desarrollo.

Es decir, volvemos a utilizar los mismos lenguajes de programación generalistas, para tareas cada vez más concretas, de modo que los dialectos se amplían, y ocurre que digamos un desarrollador Android, no sea capaz de crear una página JSP o viceversa.

La explicación que le doy, es en mi caso sencilla. A nivel de mercado, es mejor basarse en un lenguaje existente, que otros desarrolladores puedan ya conocer, lo que les animará a crear para la nueva plataforma pensando que la curva de aprendizaje será más suave. Aunque como hemos visto, no es del todo cierto. Eso explica porque a ECMAScript, se le rebautizó como Javascript, a pesar de no tener nada en común con él.

Mientras las plataformas sean tan diferentes, y no se cuente con una plataforma que se adapte a ellas, ¿no sería mejor usar un lenguaje específico optimizado para cada tarea?

12 comentarios en “Lenguajes de propósito general”

  1. Buenas tardes Sr. (Javier)

    Le agradezco el blog que tiene, ha sido muy entretenido navegar por él, la verdad.

    He llegado a su blog, buscando sobre compresores de archivos ejecutables en win y mac.

    Y aquí viene la pregunta/s, consejo/s que le pido, si usted es tan amable.

    Al igual que usted, empecé con esto de la programación, hace muchos años y en BASIC (el spectrum y luego powerbasic concretamente, una maravilla por cierto)…ha llovido!!!

    Luego empecé muy en serio con el VB5 y VB6 que me costó lo suyo programar a buen nivel con el, incluso con el uso de punteros para gestión de imágenes. Me gustaba bastante, aunque el tema de el redimensionado de ventanas y el p-code eran sus puntos débiles. Era lo que no me gustaba, pero bueno, se podian hacer virguerias, cuando lo conocias bien.

    Luego vino NET, y ya no seguí más…a la mierda! aquello no era VB, ni basic ni nada (opino lo mismo que usted en este aspecto).

    Tiré a MS por la borda y ya no he confiado mas en ella y los caprichos de sus desarrolladores y dirigentes. aunque reconozco que MS ha hecho soft muy bueno, las cosas claras.
    en fin…con la de horas que me costó aprender Basic,C, y VB…naturalmente, eso nunca lo tuvieron en cuenta en MS.

    Pudieron hacerlo mucho mejor (la transición de VB a VB-NET), pero me dà que no les dió la gana, y que el CAPULLO! de Ballmer y sus capulletes estava detrás de esas decisiones.

    La pregunta es la siguiente:
    NOTA: Por cierto soy Ingeniero de 46 años…6 mas que usted

    Tengo, no pocas ideas en cuanto a desarrollo de soft, temas relacionados con la ingenieria.
    Pero… no se hacia donde decantarme…
    He visto y evaluado Xojo y me gusta, pero….es de esas empresas que no me acaba de encajar, he hecho mis pinitos con él y bueno, creo que de nativo puro nada, y muchas cosas corren por debajo, en otros lenguajes, no lo acabo de ver completo del todo, aunque se pueden hacer aplicaciones, para Win, Mac, Linux, IOS y…WebAPPs con tecnologia CGI, la mas antigua de todas, pero no por ello menos fiable.
    El hecho es que hablando con otros profesionales del sector, todos me aconsejan, que haga lo que haga, lo haga con tecnologia Web, HTML, CSS3 y JS, que es un estándar REAL!. Ms, Apple, Google tienen que obedecer si o si al W3C.

    Y buscando he visto aplicaciones Open Source que «compilan aplicaciones Web en ejecutables para Win, DMG para mac, LZh para Linux, y….además para IOS, y Android y WinPhone
    (al q no le veo mucho futuro…)…
    Hay de todo en CSS3 y JS y HTML 5 ha mejorado mucho…y en cuanto a librerias públicas…una maravilla.

    Lo que me encuentro es que al compilar esas aplicaciones, en realidad lo que hacen es «adjuntar una versión de Chromium» y empaquetar la webapp junto con él.
    El resultado es un ejecutable, que el mas pequeñin, no baja de los 60MB,(70MB normalmente-> de ahí la búsqueda de compresores de ejecutables) y el consumo de RAM, ni le cuento…bueno usted ya lo sabe.

    Ahora bien,… mis compañeros, me comentan que no me preocupe demasiado por esas cosas…
    Los móviles son cada vez mas potentes en proceso y en capacidad RAM y almacenamiento.
    y que para WebAPPs en linea, tampoco me preocupe, ya que cada vez es mas extendido el uso de fibra y demás…
    Con NODE.js ya se puede acceder a io, y a ficheros en disco.
    Con ANgular, ya se puede proteger el código, ejecutando Js desde el servidor…

    de HTML y CSS3 voy bien, no tanto en JS, pero es que llevo sólo 2 semanas estudiándolo. No me cuesta demasiado, de momento…en cuanto la cosa se complique ya veremos, que se complicará…

    Bueno, ¿usted que haria?

    Un saludo y gracias por adelantado, por su punto de vista sobre el tema.

    Albert

  2. Muchas gracias Albert.

    Parece que hemos tocado cosas parecidas en cuanto a Basic, admiramos el Spectrum y PowerBasic, y pensamos que VB.NET no es Basic. Supongo que lo habrás leído también en mi blog: http://www.javiergutierrezchamorro.com/visual-basic-net-no-es-basic/503

    Sobre tu proyecto, desconozco exactamente lo que pretendes hacer, pero no te obsesiones con que funcione en todas las plataformas. No tiene sentido ejecutar la misma aplicación en un PC, que en un iPhone.

    Si que es verdad que HTML5+CSS+JS es una combinación habitual. Como dices, con herramientas tipo nw.js, puedes empaquetarlo (que no compilarlo), en un ejecutable para varias plataformas, y que corre sobre Chromium. En general, esto te ahorra problemas de traspaso, tu capa base, o sistema operativo, es Chromium, así que si funciona ahí, funcionará al 99% en cualquier plataforma.

    Lógicamente, y aunque el intérprete/JIT de Javascript ha mejorado mucho, el rendimiento no es comparable a soluciones nativas. Aunque te sorprendería saber que es más rápido que el pcode de VB4. Por supuesto, los ejecutables son grandes, requieres el motor de Chromium, y otros añadidos muy útiles como los runtimes de Node.js, que permiten que desde Javascript, accedas a ficheros, conectes a servidores etc.

    Como ves, una alternativa fácil. Ya has visto que en 2 semanas te manejas con JS, es un lenguaje pequeño, tipo VB, en 4 semanas más lo dominarás.

    Ahora bien, si quieres hacer algo que aproveche mejor los recursos de la máquina, a costa de tener cuidado con cada plataforma que quieres soportar, a mi me gusta mucho Lazarus. Un entorno visual, de código abierto, que dibujas las ventanas como en VB, que genera código nativo relativamente eficiente, y que puede generar ejecutables para Win32, Win64, OS/X, Linux, etc. Como digo, en esos casos, deberás limitarte a lo mínimo soportado por todas las plataformas, pero está muy bien. Como es gratis, échale un vistazo y a ver que te parece. El lenguaje es Object Pascal, vamos como era Delphi (que por cierto aún se usa).

    Y si quieres aún más potencia, a costa de más esfuerzo, lógicamente el camino es C/C++ con una librería portable como Qt.

    Espero haberte aclarado un poco las ideas. Si tienes más dudas, aquí estoy. Aunque si no te importa, preferiría que si es posible, lo pusieras como comentario en algún post de temática similar en mi blog. Así nos facilitamos que otras personas con dudas similares, puedan enriquecerse con la discursión en público.

    Saludos.

  3. He estado trasteando Lazarus y la verdad es que el IDE es FENOMENAL!
    Compila nuy bien, en nativo, muy raidito, pero…

    El lenguaje es FEO a mas no poder. Que cosa mas fea. Puede que influya mucho que no estoy acostumbrado a verlo, y la primera impresión es de dolor de OJOS.

    Hasta HTML, CSS y Js es mas bonito…

    Si Lazarus se pudiera codificar en basic, o VB….
    QUE TIEMBLEN TODOS!!

    Y se podria, seguro, pero debe de ser un trabajo…aunque el CF está disponible…

    Gracias por la información y tu criterio profesional.
    Un Saludo desde Barcelona
    Albert

  4. Ya te decía que es muy majo el Lazarus, aunque el lenguaje como tal, pues Object Pascal que nunca me gustó.

    Bueno, Qupzilla en realidad usa el mismo motor: Chromium, aunque desde el componente de Qt, aunque es casi lo mismo. Lo que hace incrementar el tamaño, es que puedas empaquetarlo con tu app, que te deje hacer operaciones de archivos, etc.

    Podrías utilizarlo, pero tendrías que programar tu mismo en C++, la interacción con tu HTML. Si nw.js no te convence, hay bastantes opciones más, también basadas en Chromium. Por ejemplo http://electron.atom.io/ (antes llamado Atom Shell).

  5. Dialectos de BASIC, además de PowerBasic, y sus herederos (PBCC y PBWin), hay gran variedad. He probado FreeBasic, DarkBasic, RealBasic y sinceramente les faltaba bastante para llegar a Lazarus/FreePascal.

    Es curioso que nadie haya optado por hacer un clon actualizado de VB6, similar a lo que hizo la gente de Lazarus con Delphi 7.

    Aunque me quedo con ganas de sacar tiempo, y probar TrueBasic. Por cierto que Gambas, me consta que ha mejorado muchísimo, e incluye un compilador JIT.

  6. Lo diré mas claro… Si Lazarus se pudiera codificar en VB…la que iban a liar…y SI es muy curioso, que no se haya hecho, el compilador de Lazarus funciona muy bien.

    Lazarus VB, para LINUX, MACOSX, WIN, IOS, ANDROID, WINPHONE,…todo a la vez???

    EXITO ROTUNDO!!! ostias habrian!!!
    aunque el avance de HTML, CSS3 y JS es imparable.

    Java me desilusionó mucho. Lentoooooo de narices. Aunque ha mejorado mucho, no lo quiero ni ver, además por ser un lenguaje, a mi parecer FEO.
    No es mal lenguaje, pero pienso que puede llegar a ser mas dificil que C.
    Objective C de MacOSX, tampoco me gusta, pienso que Apple lo impuso, ya que se MacOSX no deja de ser un Linux MUY bien vestido y se desarrollo en Objective C, y de ahí la cojonada, de meterlo si o si en todo.

    También es cierto que los programadores de VB, eran menospreciados por algunos programadores de Visual C++.
    Se codificaba mas rápido en VB que en C++ y era mas inteligible…
    Aunque el Compilador de C++ funcionaba a la perfección…

    Visual C++ era duro de aprender, hice mis pinitos en Borland C, pero los punteros me arrodillaron…luego me comentaron que había alguna versión de Borland C, que no manejaba bien los punteros (la mia), y ahí fue donde dejé C, a TPC.

    En realidad me gusta C, pero al ser lento desarrollar con él, y tener que lidiar con muchos detallitos del sistema, me distraían de lo que quería lograr al programar y lo dejé, no era un lenguaje para mi.

    En fin, que siempre he buscado algo que no sea demasiado difícil, para centrarme mucho mas en lo que quiero conseguir. Si no lo hace así, te pierdes…

    Un Saludo y buenas noches.

  7. Tienes razón en lo de Gambas Albert, estaba convencido de haberlo usado sobre Windows, pero tal vez era Linux.

    De Visual C++, es verdad que es mucho más lento para programar que VB, o Lazarus, pero para mi el problema no es el lenguaje. Es decir, una vez te acostumbras a los conceptos de C, incluyendo punteros, es equivalente a C#, Java o lenguajes similares. El problema de Visual C++, siempre ha sido el manejo de interfaces de usuario. Debiendo hacerse todo a mano sobre la API de Windows, o como mucho con MFC. Nada que ver con el arrastrar un control a un formulario y ajustar sus propiedades y eventos como ocurre en Visual Basic o Lazarus.

    Creo que esta limitación, siempre ha sido algo artificial. A Microsoft no le interesaba que Visual C++ fuera fácil, y así potenciaba primero VB, y especialmente luego, .NET.

    Lo que si hay, y yo soy un gran fan, es C++ Builder, un concepto como el de Delphi, Lazarus o VB, pero sobre C++. Es decir, dibujar la interfaz, ajustar sus propiedades y codificar en C++. Debo reconocer que el potencial y la idea, era increíble. Pero ni Borland, ni Inprise, ni luego Codegear, ni ahora Embarcadero, se lo tomaron nunca en serio, dejándolo de lado sobre Delphi.

    Al final se equivocaron, de hecho muchas de las aplicaciones profesionales que estaban escritas en Delphi (como Total Commander), se migraron a Lazarus, así que aunque Delphi tenga algunas cosas mejor que Lazarus, y sean casi compatibles, Delphi ha ido descendiendo.

    No obstante, y sin intención de crearte más dudas, es algo que puedes probar, Delphi y C++ Builder.

  8. Del lenguaje Pascal, también te digo que me parece feo. Lo que si es cierto es que una vez que lo tocas, haciendo un proyecto pequeño, te vas acostumbrando a él, es como todo.

    En realidad lo mismo que ocurre con Objective-C, de nuevo, hasta cuesta de leer, pero poco a poco, uno se familiariza con él.

  9. Ya me los he leído, casi todos…;-D

    Lazarus está muy bien, pq compilas en Nativo. Pero por ahora he tenido problemas al instalar el compilador GBD, en MACOSX.
    Es una gran logro, en código libre.
    No tiene sentido hacer una calculadora en Shell Atom, ocupa, la friolera de 52MB…:-(.

    Tengo que buscar webs, en donde tengan aplicaciones de ejemplo con Free Pascal, y Lazarus en MacOSX, IOS para iphone, para Ipad y android.

    Lazaros no puede hacer WebApps, que yo sepa.

  10. Un alumno muy aplicado Albert.

    Para Lazarus, se que existen componentes LCL para desarrollo web (http://wiki.freepascal.org/fcl-web), no los he probado, y por lo que he visto es más que nada Webservices y REST, nada de aplicaciones de cliente.

    Si que existió/existe HTML5 Builder, lo probé en sus inicios, y no era gran cosa, no se que tal estará ahora: http://www.embarcadero.com/products/HTML5-Builder

    Pero en mi opinión, si quieremos desarrollo web, lo suyo es HTML, JS y CSS, que son sus herramientas habituales. El resto de conversores/traductores, siempre tendrán un resultado peor.

Deja un comentario