« Foros, blogs y comentariosCómo NO hacer las cosas »

Lenguajes de programación

A lo largo de bastantes años he tenido la oportunidad de tropezarme con bastantes lenguajes diferentes, así que podría ser un buen momento para dejar mi opinión sobre unos cuantos de ellos...

Follow up:

Ensamblador
El lenguaje básico, originalmente una representación directa de las órdenes básicas ejecutadas por el procesador
Pros: máxima velocidad, funciones específicas de cada procesador
Contras: una auténtica paliza para hacer cualquier cosa algo avanzada

C
El paso siguiente tras el ensamblador, con algunas construcciones lógicas para facilitar la programación.
Pros: alta velocidad, mucho más fácil de utilizar que el ensamblador, ofrece una visión exacta de los datos almacenados
Contras: no se puede uno librar de esa visión exacta de los datos

C++
Creciendo sobre C, introduce el concepto de clases sin perder toda la compatibilidad.
Pros: permite una visión tanto exacta como abstracta de los datos, máxima flexibilidad estructural
Contras: este exceso de flexibilidad puede conducir a fallos del programa que de otra forma el compilador habría detectado

Java
Las clases y la independencia del hardware llevadas al extremo. Se ejecuta sobre una "máquina virtual" que enmascara el hardware real del sistema.
Pros: todo es una clase, completa flexibilidad léxica, muy completo y explícito. integrable con distintos entornos, por ejemplo navegadores web.
Contras: no hay forma de librarse de las clases, la cantidad de estas y el exceso de información redundante obligatoria hacen bastante pesado el desarrollo sin un IDE decente y una buena planificación del proyecto

C#
Una versión de Java un poco más relajada y un algo ampliada
Pros: añade estructuras y conceptos de C, permite manejar punteros, añade más conceptos de clases
Contras: mala portabilidad, no garantiza la compatibilidad entre entornos de ejecución, reintroduce los problemas causados por los punteros, peor integración con clases remotas

BASIC
Uno de los primeros lenguajes en aparecer en los hogares
Pros: muy simple, fácil de aprender
Contras: muy simple, no se puede hacer nada más que proyectos simples

QBASIC
Un BASIC ampliado y mejorado
Pros: igual de simple que el BASIC, pero con muchas más funciones. permite definir subrutinas y funciones propias
Contras: es posible algún proyecto más complejo, pero se queda corto rápidamente

Visual Basic
BASIC llevado al mundo de los objetos
Pros: permite desarrollar fácilmente aplicaciones sin demasiados conocimientos, o integrar rápidamente distintos módulos
Contras: permite a alguien sin conocimientos, y de la peor manera posible, desarrollar aplicaciones críticas aparentemente funcionales

LOGO
El lenguaje de la tortuguita, especial para niños
Pros: muy simple, órdenes fáciles asociables con los movimientos de una tortuga con un lápiz
Contras: las órdenes están traducidas en cada idioma, no vale más allá del ámbito educativo

LOGOS-B
Una evolución del LOGO
Pros: múltiples tortugas simultáneas, sintaxis más completa
Contras: sigue estando muy limitado

Pascal
Lenguaje educativo parecido al C
Pros: estructura clara, bastante potente, tipos lógicos de datos además de las representaciones directas de la máquina
Contras: poca base de desarrollos, se he hecho viejo

Object Pascal
La evolución de Pascal al mundo de la orientación a objetos
Pros: estructura clara con soporte de objetos
Contras: sus distintos tipos de datos tienen poca razón de ser pudiendo usar objetos

SH/BASH
No es un lenguaje en sí, sino una línea de comando del mundo U*IX
Pros: perfecto para automatizar la administración del sistema
Contras: se basa más en ejecutar programas completos que en procesar órdenes

PERL
Lenguaje pensado para extraer y manipular datos textuales
Pros: altísima integración con las REGEXPs, permite economizar el código al máximo, dispone de una amplia base de código, fácilmente extensible en C/C++, puede generar código en C/C++
Contras: las REGEXPs se cuelan por todos lados, la legibilidad del código "economizado" deja mucho que desear

PHP
Lenguaje para plantillas de páginas web que ha evolucionado hasta incorporar funciones que permiten crear aplicaciones completas
Pros: completa integración con plantillas web del lado del servidor, muy buen manejo de texto, sintaxis fácil pero completa, excelente referencia on-line
Contras: al estar destinado a ejecutarse en servidores su evolución está centrada en adaptarlo a este ámbito, no tiene ni tanta capacidad para manipular datos como C/C++ ni tanta flexibilidad léxica como Java

Python
Una mezcla rara entre PHP, Java, Pascal y LOGO
Pros: fácil de aprender, limpio y bastante flexibile, fácil de integrar con otros proyectos, permite usar funciones lambda y parámetros con nombre
Contras: impone unas normas de estilo desde el lenguaje restando libertad al desarrollador

...y alguno más que se me olvida ahora mismo.
Hm, a lo mejor debería poner esto en wiki en vez de un post :D

Trackback address for this post

This is a captcha-picture. It is used to prevent mass-access by robots.
Please enter the characters from the image above. (case insensitive)

No feedback yet

Deja un comentario


Your email address will not be revealed on this site.

Your URL will be displayed.
(Line breaks become <br />)
(Name, email & website)
(Allow users to contact you through a message form (your email will not be revealed.)

¿Cuántos LOMOS hay en la foto?

(si fallas, puedes volver a intentarlo... al menos por ahora)

Jaroslaw Filiochowski
jar<QUIT@ESTO>fil@gmail.com
(e-mail, jabber, gtalk)
Desde: Bilbao, España

Noviembre 2008
Lun Mar Mié Jue Vie Sáb Dom
 << <   > >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Ordenar por:

Yo NO veo TV

Yo NO veo TV
00 horas de TV a la semana
image

powered by

powered by b2evolution free blog software

+

Gentoo
Gentoo


photos powered by

Foto de una cámara de fotos difital Nikon Coolpix 7600
Nikon Coolpix 7600

+

Foto de un móvil Nokia 3650 con logo personalizado
Nokia 3650

Por cortesía de NokiaGame 2002


Creative Commons License
Esta obra está bajo una licencia Creative Commons salvo donde se especifique explícitamente otra licencia.


IBSN: 3-3718-9164-1