C# VB o C++ La eterna discusión!

Derivada de una pregunta en los foros sobre que lenguaje elegir, os dejo esta conversacion para continuarla si lo considerais interesante. 


Debemos hacer honor a la verdad y desde la introducción de .NET francamente no existe diferencia alguna y apenas pequeños matices para valorar si es mejor desarrollar con Visual Basic o en C#. Los amantes de formas metódicas,  programadores veteranos e inclusive la mayoría de empresas del sector, tienden a valorar mucho mas el C# que el VB, por la herencia que supone creer que el «C» conlleva un grado más elevado de conocimiento, de la misma forma que cuando hablamos de Visual Basic parece que sea un lenguaje asociado a los que están iniciando o aprendiendo, personalmente creo que estos pensamientos no ayudan ni reflejan la realidad de ambos lenguajes.


A mi forma de entender y estando seguro de que me dejare cosas en el tintero, las justificaciones para utilizar uno u otro vienen determinadas principalmente por rasgos tales como :




  • C++, Dentro de la familia de Visual Studio, va a ser el único lenguaje que me permitirá compilar aplicaciones «no administradas» o sea generar compilados binarios o ejecutables directamente por la CPU. A demás de brindarme la posibilidad de desarrollar con uno de los lenguajes más extendidos y valorados por la comunidad de desarrolladores. –> Cuando hablamos de código no administrado haciendo referencia a compilados binarios que se ejecutan directamente, significa que los compilados no dependen de ningún ‘runtime’ o  ‘JIT’ (Just in time compiler.) Solo rinden dependencias sobre las librerías o en su contexto MFC, WIN32, CLR o lo que utilicen externamente. En este caso tenemos en nuestras manos todos los mecanismos para incrementar los rendimientos o podemos implementar técnicas de optimización para controlar procesos donde la velocidad o determinados parámetros pasan a ser críticos. En este sentido con el Framework lo tendremos muy complicado o inaccesible.


  • C#, A mi entender destaca por ser una atractiva implementación del «C» tradicional a la plataforma.NET, su principal distinción mirandolo fríamente debería radicar en ser un lenguaje reconocido y aprobado como estándar por el «ECMA » y que como tal cualquier plataforma puede adoptar, pues como especificación pertenece a la comunidad. «Véase proyecto MONO» que compatibiliza plataformas con la implementación de un compilador de C# y las librerías que dan soporte a las diferentes tecnologías de .NET.


  • Finalmente Visual Basic, es un «DULCE», pues a pesar de no estar considerado un lenguaje de primera línea, sus formas, expresiones y facilidades lo hacen el favorito de los que se concentran más en la facilidad de programar, anteponiendo la simplicidad (RAD) a técnicas y estilos de programación.

En igualdad de condiciones y pensando en una aplicación que va a rodar bajo plataforma Windows, vas a obtener los mismos resultados tanto en C# como en Visual Basic (con algún que otro matiz), es mas Visual Studio te permite desarrollar soluciones con independencia de cómo y con qué lenguaje se hayan desarrollado diferentes partes.


Sé que esta explicación no te ofrece una respuesta, yo prefiero pensar en que tu entorno en tanto a recursos humanos o recursos de ayudas que puedas tener más a mano, deberían definir si VB o C#… de entrada descartaría C++ si no es para una aplicación de cierta complejidad con necesidades muy concretas de rendimiento o de prestaciones como procesamiento paralelo, que exigen trabajar directamente con librerías de Intel o para poder aprovechar de una forma directa alguna librería de renderizado en 3D (que quizás sea tu caso), por poner un ejemplo. 


😉

Saber con que aplicacion me estoy ejecutando!


Algunos de vosotros mostráis interés en saber que aplicaciones se están ejecutando en un momento determinado, os adjunto un sencillo fragmento de código en forma de idea y como introducción a como saber y controlar de la ejecución de otras aplicaciones.


En este ejemplo, eliminaremos todas las aplicaciones con el mismo nombre que la nuestra y que no sea la nuestra… la debilidad se encuentra en que podremos engañarlo ejecutando una instancia de la misma con el nombre cambiado ya que ‘process’ no sabrá que se trata de la misma aplicación. Pero en fin… para evitar múltiples instancias en ejecución de la misma aplicación, disponemos de mecanismos mucho más adecuados.


NOTA: Esto es un ejemplo sin malicia!… esta claro que a nadie en su sano juicio va a empezar a ‘KILEAR’ (de Kill) aplicaciones a lo Bruto o ¿al menos eso creo?, por lo tanto solo entender que disponemos de un potente espacio para interactuar con los procesos y esto es lo interesante.

Dim ProcesosLocales As Process() = Process.GetProcessesByName(«ElNombreDeMiAplicacion»)
‘ Saber si existe mas de una aplicacion
‘ con el mismo nombre en ejecucion
If ProcesosLocales.Length > 1 Then
   ‘Aviso
   MessageBox.Show(«Solo se puede ejecutar UNO con el mismo nombre!»)
   ‘Obtener las referencias de mi proceso (para no autoeliminarme)
   Dim yo As Process = Process.GetCurrentProcess
   ‘Eliminar todos los procesos con el mismo nombre pero diferente Id
   For Each tu As Process In ProcesosLocales
       If yo.Id <> tu.Id Then tu.Kill()
   Next
End If

Saludos,
Pep Lluis


 PD. La semana que viene… ¿existira algun antidoto para que evitar el KILL de un extraño?

TechEd 2007 en BCN – del 5 al 9 de Noviembre

TechEd


Pues eso! que ya volvemos a tener el TechEd encima. Algunos de nosotros estaremos en los mostradores del ATE o dando Charlas en algunas sesiones, el año pasado tuvimos modesta representación de las empresas y profesionales Españoles. Espero que este año sea más abundante y no tardemos 3 días en encontrarnos, por lo que os invito a Visitarme en los ATE para poder tener nuestro punto de encuentro y aprovechar para compartir buenas compañias en conversaciones y cafes! desde el primer día.


Un Saludo a todos y no tardéis en dar señales de vida. :-)))
Pep LLuis,