¿Deberían los programadores elegir java o c#?

¿Java o C#? De hecho, este no debería ser nuestro tema real, y pocas personas que han ingresado a la industria compararán java o c#. Pero para los principiantes, java y c# a menudo representan las dos escuelas principales, java reemplaza a j2ee y c# reemplaza a .net. ok, no importa, este es el título y no afecta de qué estamos hablando. Desde la perspectiva del lenguaje, C# sin duda gana, con facilidad de uso, umbral bajo, elegancia y simplicidad. Pero las características del lenguaje Java y C# son similares. En la denominación de muchas clases, son exactamente iguales:

//javaSystem.out.println("¡java es mejor que C#! j-a-v-a!");

//C #System. WriteLine("¿No viste que # tiene 4 caracteres? ¡Soy 2 mejor que c, así que deja de cocinar!");

C# apareció más tarde que Java, por lo que es natural. absorbido y aprendido de , y al mismo tiempo tiene sus innovaciones, como el soporte temprano para expresiones lambda, eventos y delegados, como var y linq. Pero desde una perspectiva orientada a la interfaz, Java también puede realizar eventos y oyentes, pero la transferencia de referencias de objetos es más sencilla. La biblioteca de clases .Net y jdk tienen sus propias ventajas y desventajas.

Desde la perspectiva de las aplicaciones, los sistemas Javaee y .Net casi cubren las principales direcciones de desarrollo: escritorio, Web, servidor, base de datos, red, terminal móvil y middleware. ¿Qué dirección es más fuerte? Esto se deja a los lectores para que lo experimenten por sí mismos.

Microsoft le ha dado a .Net el IDE más poderoso del universo y una experiencia de programación unificada y fluida en todas las direcciones. Hay que decir que Microsoft hace que comenzar sea mucho más fácil.

Java es inseparable del código abierto desde el principio. Existen innumerables marcos, motores, paquetes, blabla y el uso de Java para desarrollar, los programadores necesitan saber más cosas. Tendrás que integrarlo tú mismo en la mayoría de los casos. Pero es muy poderoso cuando se integra bien, como SSH.

En los campos de big data y computación en la nube que han estado muy de moda en los últimos años, hadoop, spark, tez, leveldb, mongodb, mariadb, hive, hbase y oracle están trabajando duro en diferentes niveles. , la mayoría de ellos son extremadamente amigables con Java.

Muchos programadores de Java piensan que el desarrollo de .net se trata simplemente de arrastrar controles. De hecho, puedo decirles que los programadores de Java que dicen esto son generalmente relativamente novatos. Si usted trabaja en .net, puede hacerlo. También decir que quienes trabajan en Java simplemente copian el código del software de código abierto de otras personas y luego lo modifican.

Por supuesto, no hay nada de malo en hacer cambios. A nadie le gusta reinventar la rueda. Por ejemplo, Google no se trata solo de innovación. A menudo "toma" las cosas de otras personas y no hace falta hacerlo. Por ejemplo, Taobao es muy difícil. Contraté a algunos programadores que podían cambiar C y compilar un poco. A menudo usaban varios marcos de código abierto y luego afirmaban que eran suyos. Por ejemplo, el problema del Doble 11.

Por supuesto, esto no quiere decir que haya algún problema con las personas que Taobao está buscando, sino que la cultura de esta empresa es la cultura de ventas y publicidad, y lo mismo se aplica a Google más adelante.

Volviendo al tema, la mayor innovación en wpf y silverlight (aunque ha sido EOL) es la tecnología xaml si crees que wpf es solo una simple actualización de winform, o que solo puedes arrastrar controles. en wpf, explique: Todavía eres un programador .net muy junior, independientemente de si tu salario es alto o no, o si ya eres un gerente de proyectos.

xaml nació para el modelo mvvm. Los estudiantes que trabajan en el front-end deberían estar familiarizados con esto. Incluso si no entiendes cómo hacer mvvm con wpf, js y html, deberías haberlo experimentado. beneficios.

En WPF, los controles están dispuestos en xaml y admiten la interfaz INotifyPropertyChanged. Es muy fácil separar la interfaz y los datos y crear un modelo mvvm.

Hablando de lenguaje de marcado, veamos el jstl de jsp, las etiquetas de struts2 y el motor razor después de asp.netmvc3:

Las etiquetas de jstl y aspx son similares, gratuitas. potente y se puede intercalar fácilmente en etiquetas HTML;

Las etiquetas Struts son una alternativa. Personalmente, no me gusta este tipo de cosas que no siguen los estándares convencionales ni son concisas, aunque mucha gente dirá que es fácil de usar. , eso es una cuestión de costumbre. Cuando digo esto, no digo que esto sea difícil de aprender y dominar, solo lo comparo con la sintaxis de etiquetas en el motor Razor.

Maquinilla de afeitar, potente, sencilla y elegante.

Debes pensar que soy un fanático de Microsoft.net. De hecho, lo que quiero decirte es que solo existen dos lenguajes de etiquetas más poderosos, html y xml. página y luego deslizar Nunca es una buena idea escribir HTML, porque usted no es el único que escribe el código, puede haber otras personas manteniendo esta página más adelante. Originalmente, esto es algo que debe hacer el diseñador web. pero con declaraciones, su coste de mantenimiento es muy elevado.

En el desarrollo de páginas estándar, los programadores no se involucrarán en un CSS o estilo. Los lenguajes dinámicos deben usarse lo menos posible en aspx, view y jsp. De lo contrario, también puedes usar php y asp. Te darás cuenta de esto profundamente en el trabajo. ¿Cómo eliges cuando eres joven?

Mire el reclutamiento actual, siempre están ahí

Competente en j2ee, competente en struts, springmvc, hibernate o mybatis, tiene un conocimiento profundo de mysql y oracle, competente en Servicio web, competente en subprocesos múltiples. Para poder manejar una alta concurrencia, algunos también necesitan comprender jvm, y es mejor tener experiencia en desarrollo como hadoop. Finalmente, otros 211 o más.

¿Qué pasa con .net?

Competente en .Net, competente en mvc3-5, competente en wpf, wcf, multiproceso, mssql, etc.

Actualmente estoy dimitido, por lo que recibo algunas recomendaciones de sitios web de contratación todos los días, lo que me deprime mucho, porque ninguno de ellos es de los que domino.

Pero eso no me impide recibir un salario mensual de 13.000 dólares durante mi pasantía en 2012, que puede ser más alto que el de algunos empleados regulares.

Además, si lo piensas detenidamente, el código a menudo habla de que es fácil de mantener, este patrón de diseño, ese AOP, esta gran concurrencia, ese alto rendimiento. Personalmente, no he visto código que sea fácil. para mantener. Aprender el conjunto de modelos y productos antiguos de una nueva empresa lleva mucho más tiempo que aprender una nueva tecnología. Descubrirá que el 99% de las veces, lo que más necesita no es código o patrones, sino la comprensión de los productos y el negocio, en muchos casos. , a menos que sea un novato, el código de todos es similar. ¿Quién tiene tiempo para refactorizar el código? ¿Por qué los programadores trabajan horas extras?

Esta es la situación del mercado. Un proyecto tras otro, la empresa necesita ganar dinero. Esta es la situación actual de la mayoría de las empresas.

Algunas dudas

Para acceder a la base de datos basta con buscar un conector o driver eficiente. Generalmente, entre los fabricantes que proporcionan datos, ¿quién no proporciona un conector? ORM es muy necesario, pero a las empresas que buscan rendimiento y anti-framework no les importa la conveniencia que brinda ORM. Aún pueden escribir acceso a datos estable y eficiente usando un jdbc sql.

Para ser una interfaz web, ¿realmente necesitas escribir un marco tú mismo? ¿Cuántos proyectos realmente necesitan este tipo de desarrollo? jQuery y d3, javascript nativo es suficiente. Es posible que lo que escriba no se llame marco, pero como mucho es un contenedor.

No he descubierto el índice único, el índice agregado y el índice auxiliar de la base de datos, así que comencé a trabajar en hadoop, spark, hbase y mongodb. ¿Existe realmente tal cosa en su proyecto? ¿No se puede resolver con rdbms tradicionales?

Empiezas a entender el concepto de la rueda, y sabes que no hay que reinventar la rueda. Pero ya no eres un programador, sino un frameworkr.

Entonces, la cuestión de si volver a Java o C# es mucho más simple que la división técnica que encontré.

Mi opinión es que, olvídate de la oposición entre java y c#. Si quieres ser un programador feliz, autodidacta y satisfecho con tu empleo, debes prestar atención a los siguientes aspectos:

1. Pila de llamadas de funciones, muchos programadores experimentados solo lo saben pero no saben por qué. No puede comprender el ensamblaje, la entrada de funciones, la dirección del remitente, el registro, pero necesita depurar, debe tener un conocimiento profundo de la pila de llamadas de funciones, ya sea que esté depurando una página jsp desarrollada por struts en modo de desarrollo o depurando una En la página aspx en modo de depuración, debe leer Comprender la información de la pila de llamadas;

2. Estructuras de datos y algoritmos básicos, cómo se organizan los índices en la base de datos, ya sea B-tree, Hash o heap. Su empresa tiene usuarios web, de escritorio y móviles. Si hay productos en la comunidad, es posible que desee hacer una recomendación o investigar un gráfico social o algo así.

3. Un lenguaje dinámico. Lua, Python y JavaScript están disponibles. Necesita interactuar con el sistema en cualquier momento, implementar un prototipo o usar programas para dibujar interfaces, gráficos de datos, etc. ¿Son lo suficientemente livianos y rápidos?

4. Un lenguaje de peso. Como java o c#. Dependes de ellos para alimentarte.

5. Comprender el significado de multiplataforma. Domine algunas tecnologías multiplataforma básicas, como xml, c, html y json.

6. Preste atención a la práctica y la comprensión de la programación de redes. Cuando usa URLConnection, MySqlConnection o WebRequest, ¿comprende su ciclo de vida y su implementación subyacente? Hay que recordar tcp/ Características básicas del protocolo IP y http. De esta manera no tendrás que preocuparte por escribir programas durante varios años y aún no saber qué es método=post.

7. Encuentre un IDE cómodo. Personalmente, no soy un experto en CLI. Aunque tengo que usar CLI, un IDE cómodo realmente puede mejorar la productividad. .Net recomienda vs resharper y java recomienda intellijIDEA.

8. Preste atención a algunos campos clásicos y populares, como el aprendizaje automático, el procesamiento de imágenes y la minería de datos. Incluso si ya tiene mahout, no lo hace. No significa que no las necesites. Comprenda estas áreas, es posible que nunca las utilice en el trabajo, pero vale la pena tener sus ideas porque elige ser programador, no programador de cualquier empresa. ?

El resto son sus ideas para resolver problemas y su arduo trabajo (capacidad de codificación) para implementarlas. Creo que muchas personas que leen este artículo no pueden escribir fácilmente un servidor ftp. clasificación rápida sin hacer referencia o acceder a Internet para consultar datos, y también es imposible escribir fácilmente un SQL de paginación general, pero aún pueden funcionar normalmente.

Así que es fácil olvidar las habilidades externas, pero puedes adquirirlas si tienes Internet. Las habilidades internas son las cosas más profundas.