Ver Mensaje Individual
  #12  
Antiguo 30-01-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Mario, hola nuevamente

Puedo aceptar algunas de las cosas que comentas, pero en cierto punto entra un poco lo personal, y volviendo sobre lo mismo:

Código Delphi [-]
  for Each in Customers do
  begin
    if ((Each.Age > 9) and (Each.Age < 23)) or (Age = 4) then
      Writeln(Format('%s - Edad: %d', [Each.Name, Each.Age]));
  end;

vs

Código Delphi [-]
  Customers
    .Where(OlderThan(9))
    .Where(YoungerThan(23))
    .ForEach(PrettyPrint);

A mi me parece muchisimo mas sencillo y legible la segunda opcion, porque el donde viene la data, del como se filtra, y de lo que se hace esta separado. Es mas pareciera que estoy leyendo "plain english", es decir, como si estuviera leyendo una oracion. Pero bueno es una opinion personal

En cuanto a la complejidad "interna" del codigo es un aspecto que discrepo. Que la implementacion sea "complicada" pero ofrece una interface amigable y sencilla me parece de lo mas bien.

Por ejemplo, los dependency injection container tienen una implementacion muy intricada, que trabaja con RTTI, con assembler y mil yerbas mas. Pero el uso es sencillo.

Sin ir muy lejos, las propias colecciones son complicadas. Un "simple" TList tiene dentro una docena de metodos que no tengo ni idea de como ni para que se usan (ni me interesa).

La Vcl es otro gran ejemplo. A veces lo unico que hacemos es cambiar una propiedad pero por dentro se esta mandando un mensaje a Windows para que deshabilite ese boton y luego la Vcl captura en su bucle de mensajes la notificacion que le manda al boton para que se repinto como deshabilitado

La conclusion que hoy mas que "que lenguaje sabes" es "que framework sabes" porque han evolucionado tanto y hacen las cosas mucho mas sencillas que son mas importantes que ser un experto en el "lenguaje"

Sobre el abuso de que se crean "micro-dialectos", si es cierto, pero eso pasa sin necesidad de introducir "codigo de afuera", o "ideas de afuera". Cada cual programa como se le da la gana a menos que se establezcan reglamentaciones o estandares. Con solo el lenguaje en la mano ya es suficiente para que nazcan los "micro-dialectos", incluso con lenguajes "poco abusables"

En el momento que se introduce una biblioteca externa (cualquier componente de lo que sea, controles visuales, criptografia, etc) ya es en si mismo un micro dialecto. "Ah ok pero yo siempre use Synapse, no uso Indy". "Ah pero yo uso la DBGrid de las RXLib no de las Jedi". "Ah pero yo SuperObject para manejar json, no XXX"

En fin, el objetivo que siempre persigo (y croe que todos) es generar codigo que hoy sea facil de escribir, y que mañana sea facil de leer, corregir, extender o reutilizar en otro lado. A veces con solo lo que te da el lenguaje de fabrica no es posible
Responder Con Cita