¿Qué espero de un lenguaje de programación? [SGCE2013]


Existen cientos de lenguajes de programación, cada uno con características propias y a la vez semejantes entre si. Algunos dirán que lo importante no es el lenguaje sino quien lo usa (y para que). Tal vez sería ideal que tuviera documentación fácil de leer, y de entender.

include "stdio.h"

void main(){
    printf("¡Hola, mundo!");
}

El primer lenguaje que use fue C. Muy bueno para operaciones matemáticas, aunque la verdad los árboles y listas dinámicas con punteros daban muchos dolores de cabeza (muchos días sin dormir y permanecer aislado como zombie).

Public Sub algo()
MsgBox "Hola mundo",vbInformation, "Aviso del sistema"
End Sub

Decidi probar otros lenguajes como VB, al principio parecía bueno. Podía crear ventanas con mucha facilidad. Sin embargo, cuando queria hacer algo más avanzado (usar bases de datos por ejemplo) tenia muchos problemas. Tal vez era yo y no el lenguaje, pero de plano no me convenció y dejé de usarlo.

<?php
echo "¡Hola, mundo!";
?>

El siguiente lenguaje fue PHP, la verdad muy útil al principio. Podía crear páginas web fácilmente, hacer conexiones a BD, etc, el problema es que escribir código ordenado era bastante dificil (al menos para mi).

public class Post{
    public static void main(String[] args){
    System.out.println("¡Hola, mundo!");
 }
}

Y aparece Java. Bastante dificil al principio, herencia, polimorfismo y un sin fin de cosas nuevas por conocer. Algunas cosas parecian muy sencillas, otras no tanto.

println "¡Hola, mundo!"
object Scalar extends App{
    Console.println("¡Hola,mundo!")
}
void run(){
    print("!Hola, mundo¡");
}

Después aparece la nueva ola de lenguajes JVM, le eché un ojo a tres lenguajes: Groovy,Scala y Ceylon. Escribias menos código, cosas nuevas por aprender. Algunas cosas extraña también (jeje).

El lenguaje perfecto...

A mi parecer no existe todavia, o tal vez ni lo haya. Todos los lenguajes fueron diseñados y desarrollados pensando en resolver "cosas" de una manera más sencilla que en otros (ej. Java y PHP se basaron en C). Cuando alguien inicia en este mundo de la programación espera que todo sea sencillo, uno o dos ejemplos para aprender a programar. Después viene la decepción, tienes que tener bases de lógica y matemáticas antes de escribir tus primeros programas. Conocer otras plataformas de trabajo (sistemas operativos, IDEs, etc.), y si quieres vivir de esto no dormirte, seguir aprendiendo.

Esperamos que sean sencillos de aprender, tener documentación fácil de leer, entendible, que tenga una comunidad para compartir ideas y que nos ayuden.

La mayoría ya estarán familiarizados con las virtudes del programador. Son tres, por supuesto: pereza, impaciencia, y orgullo desmedido.
–:: Larry Wall (Creador de Perl) ::

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de luxspes

Que he vivido en lenguajes de programacion

Buen post, me hizo recordar mi propia historia como desarrollador, el primer lenguaje que utilice (ya no recuerdo si fue terminando la secundaria o iniciando preparatoria), fue el basic de una Vic 20 :

 
10 PRINT "Hello World!"

El hermano de un amigo tenia un programa muy simple, de resolucion de areas de figuras geometicas (el tipico area de cuadrado, area de triangulo, area de ...) pero estaba fallando. Me dijo " tu papa es programador, tu sabes de computadoras no? Me ayudas?" Y... pues tenia un error en una condicional... y lo resolvi... una autentica simpleza, pero me hizo sentir bien haberlo resuelto son contar con ninguna experiencia.

En mi casa, me puse a jugar con el QBasic que venia incluido en MS-DOS, despues de hacer unos cuantos programitas muy simples..

 
PRINT "Hello World!"

De ahi ya en la prepa, tome curso de programacion en el CETEC de Turbo Pascal. Recuerdo que me enoje mucho por que me dejaron de tarea "ordenar un array" y no pude tuve oportunidad de descubirar por mi mismo como hacer el algoritmo de burbuja, la clave esta en usar una variable "temp" para intercambiar valores, pero antes de que pudiera ocurrirseme (debo admitir que estuve largo rato sin poder resolverlo) mi papa me dijo "pues pon una variable temporal"... grrrr, me enoje mucho con el aquel dia por no haberme dejado descubrirlo (todavia hoy me pregunto si hubiera o no podido descubrirlo por mi mismo):

Procedure BubbleSort(var array:IntArray; size:integer);
  var i,j,temp: integer;
  begin
    for i := size to 1 do
      for j := 1 to i-1 do
        if array[j] > array[j+1] then
          begin
            { swapping: array[j]<->array[j+1] }
            temp = array[j];
            array[j] = array[j+1];
            array[j+1] = temp;
          end;
  end;

Despues de eso, en un pueblito al lado del pueblito donde vivia, un vendedor de computadoras cometió el "error" de comprar Borland C++ 3.1, nadie por alla estaba dispuesto a comprarselo, mi papa le hizo una oferta de comprarselo con descuento si se lo daba en ese momento... y se lo vendio.

Asi pase a C++, el lenguaje no era dificil para alguien que ya hubiera usado Pascal, pero tarde años en entender "para que servian los objetos". Los usaba practicamente como las "Unit" de Pascal. Con el tiempo le agarre el chiste a la herencia, y los templates me encantaban

template <typename Type>
Type max(Type a, Type b) {
    return a > b ? a : b;
}

pero pasarian años para que entendiera el polimorfismo, ya estando en 4to semestre de la universidad, durante las vacaciones de verano para pasar al 5to semestre, lei el captitulo de Virtual Functions del libro "Teach yourself borland c++ 3 in 21 days". A partir de ahi me emocione con la idea de construir mi propio turbo vision (cosa que haria al siguiente semestre).

En la universidad aprenderia a programar tambien en SQL, Lisp y Prolog

SELECT 'Hello, world!' FROM DUAL;
(princ "Hello, world!")
main :- write('Hello, world!'), nl.

Y por mi cuenta (con algo de ayuda de mi papá), aprenderia tambien lo basico de Delphi (Object Oriented Pascal), dBase y FoxPro (estos 2 ultimos solo superficialmente).

Mi contacto con la programacion orientada a objetos estilo C++ me prepararia para mi encuentro con un lenguaje que me pareceria fascinante al conocerlo, Objective-C

@interface Hello:NSObject
- (void) say;
@end
@implementation Hello
- (void) say {
   NSLog(@"Hello, world!");
}
@end
 
int main(int argc, char *argv[])
{
    NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];
    Hello *hello = [Hello new];
    [hello say];
    [hello release];
    [p release];
    return 0;
}

Y el framework de construccion de aplicaciones que todavia hoy, a una decada, no ha podido ser superado por nada que me haya encontrado: WebObjects.

Tuve al mismo tiempo cierto contacto con Php y Perl... ninguno de ambos me convencio de pasar de la introduccion (aunque tal vez Perl pudiera en algun momento llamar mi atencion)

Luego trabajaria con Java... y C#.... y luego Java... y otra ves C#.... y luego Java... y ahorita, pues ando en C#... con toques de JavaScript. PL/SQL y TSQL por todas partes.

Perifericamente he jugado con Scala, con Rel, con Haskell, Scheme, Erlang, F# y Mathematica... pero no he tenido todavía oportunidad de tener ningún proyecto "de trabajo real con ninguno de ellos"... y por supuesto, tengo intenciones de aprender Ceylon...

Que nos deparara el futuro en cuanto a lenguajes de programacion? Yo espero que con la aparicion de teclados LCD como el Optimus Maximus (deberian rifar uno aqui en JavaMexico) aparezcan lenguajes mas al estilo de APL que nos permitan mayor expresividad con menos teclazos... y al mismo tiempo utilizar simbolos que hagan mas facil de leer el codigo (una vez que te acostumbres a ellos)

En cuanto a paradigmas, me gustaría ver al enfoque Relacional levantarse de las cenizas y volver a enseñarle un par de trucos olvidados al mundo del desarrollo de software...

Pero predecir el futuro es muy dificil....

Imagen de ezamudio

teclados?

O sea el lenguaje debería de depender del teclado? Había oído que la sintaxis y puntuación de Scala fue parcialmente influida por el layout de los teclados suizos, pero... eso de requerir un teclado especial para programar en un lenguaje ya sería ridículo, no?

Siguen enfocándose en escribir código como la habilidad principal. Es igual o más importante poder leer y comprender el código que ya fue escrito, por uno mismo o por otros.

Imagen de luxspes

O sea el lenguaje debería de

O sea el lenguaje debería de depender del teclado? Había oído que la sintaxis y puntuación de Scala fue parcialmente influida por el layout de los teclados suizos, pero... eso de requerir un teclado especial para programar en un lenguaje ya sería ridículo, no?

Es ridiculo, precisamente, por que dependes de un teclado, pero cuando las teclas sean LCD, y puedan presentar las imagenes que nos de la gana... la cosa tal vez cambiará...

Siguen enfocándose en escribir código como la habilidad principal. Es igual o más importante poder leer y comprender el código que ya fue escrito, por uno mismo o por otros.

Contar con mas símbolos tambien ayudaria a mejorar la lectura, por ejemplo eso de "=" y "==" es un absurdo.

Pero coincido contigo en que debemos preocuparnos mas de que sea leible que de sea facil de escribir

Imagen de Sr. Negativo

Lenguajes

Tampoco me llamaban la atención Perl ni Ruby. Pero me dio curiosidad y empecé a hacer algunos programitas.

#perl
print "¡Hola, mundo!\n";
#ruby
puts  "¡Hola, mundo!"

Perl lo he ocupado para algunas tareas sencillas (sacar datos de un archivo TXT, o ejecutar comandos, etc) me parece muy buen lenguaje, pero es obvio que Java al menos donde se, sigue siendo el lenguaje más usado. Yo creo que lo que importa es tener iniciativa por aprender, probar coas nuevas aunque al principio nos cueste trabajo.

Seguir aprendiendo.

p.s. yo también quiero uno de esos teclados jeje

0_o