mejor - ¿Por qué querrías usar C#si es más lento que C++?
java vs c# performance (11)
Estoy buscando un nuevo idioma para aprender después de C ++ y Java. Iba a probar C #, pero mucha gente dice que es muy lento porque es un lenguaje de alto nivel. Entonces, ¿por qué alguien usaría C #? ¿C ++ no es mucho más rápido? ¿Facilita el desarrollo, pero solo tiene un producto final más lento?
Además, ¿para qué se puede usar C #? Lo usas con muchas cosas .NET en Windows y con ASP.NET, pero ¿en qué otras situaciones usarías C #? ¿Habrá muchas oportunidades de trabajo para eso?
¿Por qué debería ser lento? De hecho, C # se compila en ''Intermediate Language'', que está JIT ''en tiempo de ejecución, pero esto puede darle una ventaja de rendimiento, ya que el tiempo de ejecución puede generar el más optimizado para la plataforma en la que se ejecuta el código ...
Dependiendo de la aplicación que desee escribir, la "velocidad" del idioma tendrá un impacto menor. El rendimiento de su aplicación estará determinado principalmente por la forma en que diseña su aplicación, si hace un buen uso de las herramientas / tecnologías que utiliza, etc. Claro, C # no es una bala de cristal, y hay proyectos en los que no debería No lo use, simplemente porque no es la herramienta adecuada para el trabajo, pero funcionará perfectamente para la mayoría de las aplicaciones empresariales / empresariales.
¿Quién es exactamente este "grupo de personas"? ¿En qué lo están comparando?
Para la gran mayoría de las cosas, C ++ no es "mucho más rápido" que C #. Ciertamente tiene beneficios en diversas situaciones, particularmente donde se desea un manejo de la memoria más determinista, pero en mi experiencia el cuello de botella en la mayoría de las aplicaciones no está en los lugares donde C ++ podría ayudar. Como dice spoulson, en el diseño hay mucho rendimiento en lugar de la implementación exacta, y allí, ayuda a poder probar diferentes diseños fácilmente.
¿Por qué usaríamos C # cuando es un poco más lento que C ++? Debido a que generalmente se considera (es decir, a algunos en desacuerdo :) que es mucho más fácil desarrollarse sin tirarse un tiro en el pie.
En cuanto a lo que se puede usar C # ... ¿para qué lo quieres usar? A menos que desee desarrollar controladores y núcleos, puede que esté bien para usted. (Incluso el desarrollo del sistema operativo tiene algunas personas que usan C # ...)
¿Oportunidades de trabajo? Cargas.
Desventajas? Bueno, .NET solo está disponible en las plataformas de Microsoft. Hay Mono , pero no tiene el mismo grado de portabilidad que Java (sin duda, otro lenguaje "lento" según el mismo grupo de personas).
C # no siempre es más lento; en muchos casos, puede funcionar tan bien como cualquier otro idioma que hayas enumerado. Por lo general, el algoritmo tiene más que ver con la velocidad que con la elección del idioma.
Sin embargo, C # es muy expresivo, y tiene una gran biblioteca de clase base para trabajar y una compilación superrápida. Esto significa que es muy fácil trabajar con él, y puede permitirle ser mucho más productivo que muchos otros lenguajes, especialmente C ++. Por ejemplo, acabo de tener un proyecto pequeño que habría presupuestado 1 hombre-semana en C ++, y lo terminamos en menos de un día en C #, principalmente porque las bibliotecas de la clase base simplificaron muchas de las tareas.
Definitivamente usaría C #. En realidad, es la velocidad promedio, y si te gustó Java, es casi exactamente lo mismo, ya que ambos están basados en C ++.
El código escrito en el ensamblaje puede ser tremendamente rápido. ¿Por qué no solo escribir en ensamblaje?
No creas todo lo que oyes C # ha sido muy rápido para todos mis proyectos. Por lo general, el rendimiento es más un factor de diseño que el rendimiento de la plataforma en bruto.
Incluso si C ++ es más rápido de ejecutar, la diferencia no es grande en las computadoras de hoy. Es por eso que en los dispositivos móviles donde la CPU y la memoria son bastante limitadas, C / C ++ todavía se usa ampliamente.
Pero piense en tiempos de desarrollo en su lugar. Si lleva 2 meses usando C ++ y 1 mes usando C #, ¿cuál irías? Y cuando se necesitan grandes modificaciones / refactorización, ¡un lenguaje de nivel superior lo hace significativamente más rápido y fácil!
Las personas con las que hablas no saben de lo que están hablando. C # es un lenguaje muy similar a Java, todo dicho; tiene la mayoría de los mismos beneficios y desventajas. La forma en que todo funciona es bastante similar (Java / C # se compila en un lenguaje / bytecode intermedio que se interpreta o compila JIT en código nativo, con varias optimizaciones similares de las que no tiene que preocuparse como programador). Se usa en muchas de las mismas situaciones que Java, y está realmente dirigido al mismo mercado. Se está moviendo mucho más rápido y trayendo mucha innovación como lenguaje, pero es (en la práctica) prácticamente solo para Windows, si esa es una preocupación de los suyos. El mercado de trabajo es similar. Ambos son idiomas muy populares.
En cuanto a un idioma para aprender, sugeriría algo DIFERENTE. Usted dice que conoce C ++ y Java; C # no debería ser difícil de recoger. Los posibles empleadores sabrán esto. Prueba Scala o Python. Ambos le darán nuevas perspectivas sobre las cosas (C no tanto), y le harán un mejor programador al enseñarle nuevas formas de pensar, en lugar de simplemente agregar otra herramienta a su caja.
Mi última compañía fue fundada por 5 veteranos de C ++ con más de 15 años de experiencia. Pasaron más de un mes construyendo un determinado servicio de Windows. Uno de ellos encontró e incursionó en C #. En una semana había llegado más lejos que el colectivo en su mes. Poco después, todos cambiaron a C #.
¿Por qué C # si puede funcionar más lento: qué precio le pones a ese grado de desarrollo rápido?
No he encontrado muchas instancias en las que C # no sea una buena elección de idiomas, y .Net (o Mono) no es una plataforma decente. Excepciones notables son el desarrollo de nivel kernel, o controladores. Hay muchas áreas en las que se necesita un bajo nivel y un rendimiento crudo. Para la mayoría, si no todos los negocios, o las aplicaciones empresariales C # es una de las mejores opciones para el desarrollo. Está bien soportado, funciona con muchos otros sistemas, bibliotecas, canales de comunicación y componentes ya disponibles, sin mencionar que es un lenguaje bastante agradable (especialmente 3.5) para trabajar.
ASP.Net no era una mala plataforma, por lo general encuentro que la pila objeto / control es una de las deficiencias de las interacciones complejas. Creo que ASP.Net MVC se adapta mejor a aplicaciones basadas en web más escalables. De todos modos, es mejor que muchos otros sistemas con los que he trabajado en el pasado.
En términos de capas de servicio e incluso desarrollo de GUI es bastante agradable. Tengo mucha más experiencia en aplicaciones basadas en web y en capas de servicios / comunicaciones / negocios que con aplicaciones de GUI de escritorio, por lo que no puedo comentar mucho allí. Siento que una gran cantidad de desarrollo de GUI es más sobre el IDE / Toolkit, que el lenguaje en particular.
En cuanto a la lentitud, enumera específicamente Java, en la mayoría de los casos, C # /. Net es tan rápido o más rápido que Java. En mi humilde opinión, el desarrollo de IMHO es más fluido con C # (Visual Studio) que con Java (Eclipse). Para aplicaciones basadas en web, me gusta ASP.Net MVC (e incluso ASP.Net) sobre Swing. Aunque soy solo yo.
Tendría que decir que las personas con las que hablas simplemente no saben de lo que están hablando. Simple y simple.
Muchas aplicaciones de nivel empresarial se crean sobre C # y otros lenguajes .Net. No hay nada inherentemente lento en ellos. Sí, tienden a tener tiempos de arranque más lentos, pero eso es más o menos donde termina.
Noté que mencionaste Java en la lista de idiomas. Si te sientes cómodo con la velocidad de Java, C # no presentará ningún problema. En términos generales, C # funciona al menos tan bien como Java en muchos tipos diferentes de marcas de referencia.
una gran razón para usar C # sobre C ++ ......... mire todos esos problemas de desbordamiento de búfer que C ++ tiene donde las personas se apoderan de su máquina porque inyectan código ejecutable en sus cadenas o pérdidas de memoria .... recolector de basura es bastante útil en mi humilde opinión