Hoy os hablamos de los mejores software de programación. Y es que cuando hablamos de software de programación nos referimos a las herramientas que permiten el diseño de nuevos programas informáticos haciendo uso de determinado lenguaje de programación.
Dentro de este conjunto de herramientas se tienen en consideración los siguientes módulos:
- Editores de texto, editores de código fuente y entornos de desarrollo integrado o interactivo (IDE). Estas aplicaciones ofrecen un espacio de trabajo donde el programador puede escribir código. Esta tarea se puede realizar desde un simple editor de texto, o en un entorno especializado con pareo de llaves, herramientas de autocompletado preinstaladas y resalte de sintaxis. El caso más avanzado es el de los IDE que aúnan este cometido con el de los depuradores. Ejemplos de este tipo de software son: Adobe Dreamweaver, Eclipse, jEdit, Notepad++, Lazarus o ci/Vim, por citar algunos.
- Compiladores. Son aplicaciones de traducción que pasan de un lenguaje de programación a otro. El funcionamiento usual es que el código fuente sea transformado en código máquina o bytecode. Suelen estar incluidos dentro de una suite de programación. En todo caso, los siguientes programas se corresponden con compiladores: PowerBASIC, GCC (g++), Mono, IBM COBOL, Intel Fortran Compiler, javac OpenJDK, Delphi, Turbo Pascal, entre muchísimos otros.
- Intérpretes informáticos o interpretadores. El intérprete analiza y ejecuta programas de manera progresiva según sea necesario, de forma que estiman instrucción a instrucción el correcto funcionamiento del mismo. Son similares a los compiladores en su servicio de traducción, pero su funcionamiento es más lento. Dependiendo de la aplicación concreta pueden ser preferibles por su gran versatilidad. QBasic, ActivePerl Interpreter, Gauche, Wish y varios más son muestras de interpretadores.
- Enlazadores. Se conoce como enlazador a un software especializado de programación que gestiona los objetos y bibliotecas necesarias, conectándolos cuando sea oportuno y limpiando los recursos que no están en uso. El objetivo último del enlazador es generar un fichero ejecutable. Un ejemplo de estos enlazadores es GNU ld.
- Depuradores o debuggers. Este software de programación tiene como cometido la detección de errores en el código fuente para que estos puedan ser localizados con mayor facilidad por el programador, estudiados y eliminados posteriormente. Entre los múltiples debuggers disponibles podemos encontrar nombres como GNU Debugger, IDA Pro, Emacs, Allinea’s DDT o CodeLite.
Queda meridianamente claro que la selección de un software de programación no es tema sucinto ni sencillo. En los siguientes apartados vamos a realizar algunas recomendaciones en este sentido, con el fin de aliviar la carga sobre los programadores noveles e indecisos.
¿Qué considerar a la hora de elegir software de programación?
Al elegir software de programación la primera pregunta a la que tenemos que responder es qué lenguaje de programación vamos a emplear. Cada lenguaje trae consigo unas ventajas y desventajas que serán más o menos importantes dependiendo del uso que se le vaya a dar al programa. En la actualidad los cinco lenguajes de programación más populares son Java, C Programming, Python, C++ y Visual Basic .NET, en este orden.
Veamos brevemente cuáles son sus fortalezas y débilidades.
Java
Unos 3000 millones de dispositivos electrónicos usan Java para funcionar, por ello no es de extrañar que el lenguaje de programación asociado sea el más popular del mundo. Su aparición data de 1995 y actualmente es propiedad de Oracle Corporation. Se trata de un lenguaje imperativo orientado a objetos y con un sistema de tipos fuerte y estático. Toma múltiples ideas de Pascal, C++ y Objective-C. Java es pionero en traer flexibilidad, applets y desarrollo guiado por pruebas a la programación.
Ventajas:
- Programación orientada a objetos (OOB); es decir, código reusable, organizado, blindado contra errores, sencillez de mantenimiento y actualización.
- Lenguaje de alto nivel con sintaxis sencilla que resulta fácil de aprender.
- Estándar en aplicaciones informáticas en entornos empresariales, gracias a ello hay una gran comunidad de expertos y librerías extensivas.
- Ausencia de punteros y presencia de reglas de acceso definidas mediante el Security Manager que minimizan los riesgos de seguridad.
- Política Write Once Run Anywhere o WORA por la cual se compatibiliza el uso de código en aplicaciones multiplataforma.
- Lenguaje distribuido que facilita el trabajo en equipo mediante el protocolo de distribución Remote Method Invocation (RMI) y soporte para metodologías CORBA y Socket Programming.
- Gestión automática de memoria (AMM) y sistema de recolección de basura.
- Preparado para programación y computación multihílo.
- Lenguaje estable mantenido y actualizado con regularidad.
Desventajas:
- Desde 2019 se necesita licencia comercial para desarrollo de propósito general.
- Problemas de rendimiento asociados a la virtualización, recolector de basura, configuración de caché e interbloqueo de los hilos.
- Escasez de soluciones para crear interfaces gráficas para usuario (GUI).
- Lenguaje excesivamente conversacional que dificulta la lectura y análisis del código.
Así, Java es usado comúnmente para desarrollar aplicaciones para el sistema operativo Android, diversas soluciones de software orientado a usuarios, programas para el mundo financiero y mercantil, código para terminales punto de venta y soluciones de macrodatos, por citar algunos de sus usos.
C Programming
Hablar de C es hablar de uno de los lenguajes de programación que más tiempo han persistido en el mercado. Desarrollado originalmente por Dennis Ritchie y Laboratorios Bell entre 1969 y 1972, actualmente es propiedad de Nokia Corporation. Es un lenguaje procedural imperativo y estructurado con sistema de tipos débil y estático. Hereda características directamente de B, ALGOL, lenguaje ensamblador, PL/I y Fortran, denotando su antigüedad.
Ventajas:
- Es una unidad constructiva de otros lenguajes de programación más modernos, su aprendizaje facilita la comprensión de dichos lenguajes.
- Múltiples operadores y tipos de datos nativos mejoran su potencia y eficiencia.
- Buena portabilidad del lenguaje, el código puede ser usado en diferente hardware con pocos cambios.
- Librería de funciones C que extienden las aplicaciones usuales del propio lenguaje.
- Lenguaje de medio nivel con compatibilidad para programación a alto y bajo nivel.
- Uso inteligente de algoritmos y tipos de datos, lo cual provee a los programas escritos en C con gran poder y velocidad de computación.
- Posibilidad de asignar memoria dinámica durante la ejecución del código.
- Especialmente indicado para la programación de sistemas.
Desventajas:
- No tiene soporte para abstracción, ocultación de datos, encapsulación, polimorfismos o herencia. De igual modo faltan constructores y deconstructores.
- Depuración holística; cuando el programa termina de ejecutarse todos los errores del mismo aparecen en pantalla al mismo tiempo.
- Imposibilidad de definir espacios de nombres.
- Ausencia de un asistente de manejo de excepciones.
- Bajo nivel de abstracción que facilita las vulneraciones de seguridad al usar este lenguaje de programación.
C Programming se usa para desarrollar sistemas operativos, aplicaciones de escritorio, herramientas científicas e industriales, simuladores, animación 3D y otros usos avanzados.
Python
Python ha cobrado durante esta década especial relevancia. Se trata de un lenguaje de programación multiparadigma fuertemente tipado y dinámico. El lenguaje es invención de Guido van Rossum y apareció públicamente por primera vez en 1991, aunque fue desarrollado años antes. Toma prestadas características de una plétora de lenguajes anteriores, entre ellos Haskell, Lisp, Perl y Java. Actualmente es propiedad de la Python Software Foundation, una organización sin ánimo de lucro que distribuye la licencia de código abierto.
Ventajas:
- Alta versatilidad, sencillez que favorece su uso y aprendizaje, y rapidez en el desarrollo.
- Comunidad de programadores volcados con el lenguaje y licencia de código abierto que da la bienvenida a quienquiera que se interese por el lenguaje.
- Amplia colección de librerías aportadas tanto por la fundación que apoya el software como por la comunidad.
- Excelente para prototipado y scripting rápido.
- Fácilmente extensible usando código de C Programming, C++ o Java, existen múltiples espacios de trabajo que permiten una programación extremadamente flexible.
- Prometedor futuro en aplicaciones IoT gracias a su combinación con Raspberry Pi
Desventajas:
- Problemas de velocidad debido a las limitaciones inherentes de todo lenguaje interpretado.
- Computación multihílo mal optimizada a causa del mútex Global Interpreter Lock (GIL) que impide la apertura simultánea de varios hilos.
- Inadecuado para programación en entornos móviles; ni iOS ni Android soportan oficialmente este lenguaje. Tampoco brilla en aplicaciones de exploración de medios.
- Cuenta con múltiples limitaciones a la hora de acceder a bases de datos y otras aplicaciones que hagan un uso extensivo de memoria. Palidece en comparación a las tecnologías ODBC (Open DataBase Connectivity) y JDBC (Java DataBase Connectivity).
- Aprender este lenguaje como primera opción puede derivar en dificultades a la hora de conocer subsiguientes softwares de programación dada su inusitada sencillez.
Python se usa especialmente en robótica, scripting, inteligencia artificial, aprendizaje de máquina, diseño asistido por ordenador, desarrollo multimedia (excepto entornos interactivos 3D) y otras aplicaciones empresariales.
C++
Se trata de una extensión del lenguaje C Programming ya tratado anteriormente. Fue desarrollado en 1979 como lenguaje de programación multiparadigma con sistema de tipos fuerte, estático y nominativo. Vio la luz en el mercado en 1983 gracias al trabajo de Bjarne Stroustrup, actualmente es propiedad de Nokia Corporation.
Ventajas:
- Amplio soporte gracias a su popularidad, esto se traduce en que haya una alta disponibilidad de librerías, compiladores y documentación al alcance del usuario.
- Lenguaje preinterpretado; confiere alta velocidad y potencia de computación al ejecutar el código fuente.
- Fácil aprendizaje si ya se conocen otros lenguajes de programación como Java, C Programming o C# con sintaxis muy similares.
- Número reducido de restricciones al contar con una librería estándar de pequeñas dimensiones.
Desventajas:
- Especialmente propenso a presentar comportamientos anómalos inesperados; es por tanto poco seguro.
- Mala gestión de la memoria debido a una implementación OOB demasiado básica.
- Depende críticamente de las funciones, que además no son clases de primer nivel; no existe la posibilidad de definir operadores personalizados.
- Obliga al usuario a definir múltiples tipos de datos básicos, su sintaxis es compleja y estricta.
- Mala compatibilidad debido al uso de especificaciones no estándar de alto nivel (GUI, redes, procesamiento paralelo, etcétera).
C++ es ampliamente utilizado en cualquier aplicación siendo casi omnipresente. Los casos excepcionales en los que C++ no tiene cabida son los sistemas extensos como apps ejecutadas desde exploradores, back-ends en servidores y webs, así como en entornos empresariales con abundancia de lógica, desarrollo para iOS, .NET, y Windows en régimen de exclusividad.
Visual Basic .NET
Visual Basic .NET es un lenguaje de programación orientado a objetos moderno, multiparadigma y con sistema de tipos estático, dinámico, fuerte, seguro y nominal. Es una evolución de Visual Basic, lenguaje con el que no es retrocompatible. El software es diseño y propiedad de Microsoft, y lleva casi dos décadas en el mercado.
Ventajas:
- Gran resistencia a la inestabilidad generada por la gestión de punteros, pues realiza esta tarea de forma indirecta.
- Compatibilidad con las utilidades del Visual Basic clásico, disponibilidad de espacio de nombres y enlace tardío si se inhabilita la configuración Option Strict.
- Ejecución de código gestionado gracias al CLR (Common Language Runtime) que deriva en aplicaciones seguras, estables y robustas.
- Facilidad para establecer interoperabilidad COM gracias a que acepta parámetros opcionales.
- Utilización de XML para intercambiar información dentro de la Digital Network Architecture (DNA).
- Recolección de basura muy eficiente gestionada por el CLR.
Desventajas:
- Estrechos derechos de propiedad que reducen las posibilidades de VB.NET fuera de SO Windows y encarecen el desarrollo con prohibitivas licencias.
- Mejorable gestión de algunos tipos de datos, como las matrices, que no se pueden inicializar al declararlas.
- Obliga al uso del espacio de trabajo .NET Framework.
Visual Basic .NET, a veces referido como VB.NET, está especialmente ligado a Windows; esto resulta evidente al observar algunos de los productos que es posible desarrollar con este lenguaje de programación: apps para la consola de Windows; aplicaciones estándar para Windows; servicios, controladores y gestores de librerías para Windows; aplicaciones ASP.NET; servicios, controles y gestores de librerías en entornos web; clases .NET; y automatismos COM.
Cuando sabemos con claridad cuál es el lenguaje de programación que queremos usar, es hora de elegir el software con el que lo haremos. La elección lógica es un IDE que integre la mayoría de funcionalidades necesarias para que nuestras líneas de código fuente sean ejecutables.
Los mejores IDE según el lenguaje de programación empleado
En los siguientes párrafos analizamos los IDE más apropiados para cada uno de los lenguajes enumerados arriba. Además, ofrecemos alternativas para aquellas aplicaciones en las que sea más conveniente usar otra suite de programas.
Software NetBeans Integrated Development Environment para Java
Netbeans IDE es el software preferido por la mayoría cuando se trata de programar en Java. Es seguido de cerca por Eclipse. Se trata del editor de código más completo y versátil, algunas de las características que lo hacen popular son:
- Diseño orientado a usuario con el que resulta sencillo familiarizarse.
- Organización rápida, fácil y eficiente de los proyectos.
- Funcionamiento rápido.
- Herramienta de autocompletado implementada con excelencia.
- Integración con Git (software de control de versiones).
- Programa de código abierto actualizado de forma regular.
- Compatibilidad con otros lenguajes de programación (HTML5, C Programming, C++, PHP…).
NetBeans ofrece un IDE robusto para cualquier aplicación. Si bien hay algunas ocasiones en las que emplear otro entorno puede beneficiar nuestro trabajo. Se lista a continuación una compilación de alternativas según uso:
- Eclipse. Preferible para programas multiplataforma, apps móviles, desarrollo web y creación de GUI.
- Intellij IDEA Community Edition. Adecuado para apps Android y al usar código de Groovy o Scala. Es un IDE ligero poco exigente con el hardware que tengamos disponible.
- jGRASP. Ligero y muy potente en el desarrollo de visualizaciones automáticas.
- BlueJ. Su sencillez lo hace perfecto como IDE de aprendizaje. Además cuenta con una copiosa y exhaustiva documentación.
Software Code:Blocks para C Programming
Menos conocido de lo que debiera. El desconocimiento que la comunidad tiene sobre el IDE Code::Blocks se atribuye a su escasa compatibilidad con otros lenguajes de programación. Sin embargo este editor de código es perfecto para no pasar por alto muchas de las peculiaridades de C Programming, que en entornos como Eclipse quedan… Eclipsadas.
Code:Blocks trae consigo una serie de ventajas que el programador debe conocer:
- Compatibilidad con Windows, macOS y Linux.
- Elevada capacidad de configuración y pocas limitaciones al extender el software básico con plug-ins.
- Dispone de características de exploración de base que permite visualizar la OOP.
- Interfaz gráfica de usuario completa, intuitiva y bien organizada.
Hay pocas ocasiones en las que usar Code::Blocks no sea la opción adecuada. Los siguientes casos pueden justificar el uso de otros IDE:
- Eclipse. Refactorización de grandes volúmenes de código.
- Visual Studio Code. Para aplicaciones destinadas a exclusivamente a Windows. VSC es software desarrollado por Microsoft, por ello está optimizado para el SO de esta casa pese a que soporte otros.
- CodeLite. Adecuado para aprendizaje, máquinas con poca potencia y desarrollo de widgets.
Software Atom para Python
Es un IDE repleto de utilidades, hasta el punto que pudiera confundirse con un editor de texto al uso. Es mantenido por GitHub, por lo que la calidad del software está garantizada. Las principales ventajas de usar Atom son:
- Altísima flexibilidad y gran repertorio de plug-ins
- Gestor de librerías exhaustivo, incluyendo paquetes como Teletype para colaboración remota.
- Integración nativa con Git y GitHub.
- Buena compatibilidad multiplataforma gracias al uso del espacio de trabajo Electron.
- Interfaz diáfana e intuitiva.
Por lo general Atom es una opción apropiada sin importar las características de nuestro código. Sin embargo algunos otros editores de código pueden presentar mejoras de rendimiento relativas al realizar determinadas tareas. He aquí las alternativas a Atom y sus áreas de excelencia:
- IDLE. Máxima sencillez para facilitar el aprendizaje, consume además escasos recursos.
- Visual Studio Code. Como ya hemos apuntado en el apartado anterior, este IDE es idóneo para desarrollar software destinado de forma exclusiva a Windows.
- Eric. Magnífico gestor de proyectos que lo hace preferible cuando se trabaja con grandes volúmenes de código. Además tiene buena integración con Ruby.
Software Visual Studio para C++
Hay consenso en que desde el punto de vista técnico, Dev-C++ es el mejor IDE disponible para trabajar con C++. Por desgracia, el editor de código cuenta con dos desventajas severas: solo está disponible para Windows y no ha sido actualizado en varios años. Actualmente se trabaja para desarrollar una versión Linux, pero no se sabe cuándo estará disponible. Decimos adiós a los famosos DevPacks de Dev-C++ y hola a Visual Studio.
Visual Studio es a día de hoy la mejor herramienta para trabajar de forma sencilla con C++. Su instalación no ofrece dudas y la descarga es gratuita si se usa la versión Express (capada). Es un software que está mejor optimizado en Windows, pero se puede usar también en macOS y Linux sin problema aparente. Las principales ventajas técnicas del IDE son:
- Dispone de un comprobador de sintaxis nativo llamado Command Line Interface y autocompletado Intelligent Code.
- GUI personalizada que facilita empujar nuevo código en Git, así como hacer commit y publicar.
- API robusta con múltiples herramientas de depuración.
- Adecuado para todo tipo de propósitos, desde snippets hasta refactorizaciones.
Visual Basic no tiene ningún competidor en la actualidad. El único entorno en el que podría interesar un IDE de menor entidad es al desarrollar en SO ajenos a Microsoft, nichos en los que puede existir software poco conocido y altamente optimizado que pudiera convenir investigar.
Visual Studio para Visual Basic .NET
Visual Studio repite como mejor IDE también en el caso de que se emplee VB.NET. Lo expuesto arriba se ajusta perfectamente a las características del editor de código también ahora. Añadimos no obstante que #develop o SharpDevelop es una magnífica alternativa que es además gratuita. En las siguientes líneas estudiamos sus pros y contras al compararlo con Visual Basic .NET.
Ventajas:
- Gran velocidad de trabajo incluso con proyectos de grandes dimensiones.
- Sistema de plug-ins a través de AddIn y aceptable cantidad de plantillas.
- Estabilidad encomiable.
Desventajas:
- Su sistema de refactorización palidece en comparación a la utilidad Jetbrains Resharper de VB.NET.
- Escaso soporte para ASP.NET.
Los IDE son un magnífico entorno de trabajo para nuestros primeros esfuerzos de programación. Según se va obteniendo experiencia, es lógico que se haga la transición de los IDE a esquemas de edición, compilación, interpretación, enlazado y depurado personalizados, cuestión que puede consumir cantidades ingentes de tiempo hasta que el conjunto se logra hacer funcionar coordinadamente. Estas soluciones quedan fuera del ámbito de estudio de este artículo. Esperamos que vuestras dudas estén resueltas.