Ver Mensaje Individual
  #12 (permalink)  
Antiguo 07/06/2013, 21:09
HighCore
(Desactivado)
 
Fecha de Ingreso: abril-2013
Mensajes: 70
Antigüedad: 11 años
Puntos: 5
Respuesta: ¿Diferencias Pro y contras entre los lenguajes de programacion web?

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,



No voy a criticar tu punto de vista porque llevo 10+ años programando en Java y C#, y siempre hay alguien que se aposta en un uno u el otro al punto del fanatismo, y a mi los dos lenguajes me han dado de comer en su momento.

Pero no entiendo muy bien lo del boilerplate; por que te estas contradiciendo, dices que Java tiene workarounds basados en interfaces lleno de boilerplate. Simplificando ... los delegados son clases que reciben eventos que se cumplen con una interface, como ves en Java hay delegados, pero no existe el boilerplate de C#; usando una palabra clave adicional para lo mismo que ya sabemos que es una clase que cumple con una interface.

Los eventos son eventos, que en C# y VB exista la palabra Event solo genera una boilerplate innecesario que un programador experto implementa hasta en C sin la palabra Event, ni java.awt.Event.

Pero en fin, si conoces bien a profundidad la programación, cualquier lenguaje tiene todo lo del otro, solamente hay que saber implementarlo correctamente.

Saludos,
Capo decí lo que quieras, pero tengo razon. Te propongo un juego, se llama "encontrar el boilerplate".

Empiezo yo:



De que me estas hablando?

aparte tu argumento del keyword es cualquiera. O sea, poner un keyword versus crear una clase e implementar una interfaz? me estas cargando?
Aparte existe System.Action y System.Func que tienen hasta 16 T. Yo en mi vida tuve que escribir la palabra delegate para declarar un delegado custom.

- Boilerplate = codigo inutil

por lo tanto

- Un lenguaje que te obliga a poner 60% de boilerplate es un lenguaje 60% inutil.

por lo tanto

java = lenguaje inutil

Querés que me ponga a comparar java con codigo LinQ?

Mostrame tu versión en java de esto en C#:

Código C++:
Ver original
  1. public abstract class FiltradoDinamico<T>
  2. {
  3.     public Predicate<T> Criterio {get;set;}
  4.  
  5.     public virtual IEnumerable<T> Filtrar(IEnumerable<T> origen)
  6.     {
  7.          return (Criterio != null && origen != null) ? origen.Where(x => Criterio(x)) : origen;
  8.     }
  9. }
  10.  
  11. public class FiltradoPersona: FiltradoDinamico<Persona>
  12. {
  13.     public string Filtro {get;set;}
  14.  
  15.     public FiltradoPersona()
  16.     {
  17.          Criterio = x => x.LastName == Filtro ||
  18.                                  x.FirstName == Filtro;
  19.     }
  20. }

No te olvides que el Criterio es una Property. Por lo tanto se puede definir DESDE AFUERA. por ejemplo desde otra clase "Foo" instanciar un nuevo FiltradoPersona y ponerle un criterio de filtrado diferente basado en properties de la clase Foo.

Última edición por HighCore; 07/06/2013 a las 21:29