¿Qué es Visual C?
¿Te resulta extraña esta pregunta? Probablemente. Sin embargo, cuando veo a alguien haciendo comentarios tan elevados como "Windows/Office está escrito por VC" o "VC es omnipotente", no puedo evitar preguntarme esto. Según tengo entendido, Visual C es un conjunto de herramientas de desarrollo, que se puede dividir aproximadamente en tres partes principales: 1. Developer Studio es un entorno de desarrollo integrado. El 99% de nuestro trabajo diario se realiza en él. Además, su título dice claramente "Microsoft Visual C", por lo que mucha gente da por sentado que es Visual C. De hecho, este no es el caso. Aunque Developer Studio proporciona un buen editor y muchos asistentes, en realidad no tiene ninguna función para compilar y vincular programas. Los héroes detrás de escena que realmente completan estas tareas se presentarán más adelante. También sabemos que Developer Studio no se usa específicamente para VC, también se usa para otros hermanos de la familia Visual Studio como VB, VJ, VID, etc. Así que no piense en Developer Studio como Visual C. En el mejor de los casos, es solo una envoltura de Visual C. ¡Por favor recuerda esto! 2. MFC. En teoría, MFC no es exclusivo de Visual C. Borland C, C Builder y Symantec C también pueden manejar MFC. Al mismo tiempo, usar Visual C para escribir código no significa que deba usar MFC. Siempre que lo desee, puede usar Visual C para escribir programas SDK o usar STL o ATL. Sin embargo, Visual C se creó originalmente para MFC y muchas características y extensiones de lenguaje de Visual C también se diseñaron para MFC. Por lo tanto, usar Visual C en lugar de MFC significa abandonar una gran parte de la funcionalidad de Visual C. Sin embargo, Visual C no es igual a MFC. 3. SDK de plataforma. Esta es la esencia y el alma de Visual C y de todo Visual Studio, aunque rara vez tenemos acceso directo a él. En términos generales, Platform SDK se basa en el compilador Microsoft C/C (no en Visual C, ver claramente), combinado con MASM, complementado con algunas otras herramientas y documentación. Como se mencionó anteriormente, Developer Studio no tiene la función de compilar programas, entonces, ¿quién completará este trabajo? Son CL, NMAKE y muchos otros programas de línea de comandos. Estos programas que no podemos ver son las piedras angulares de Visual Studio. ¿Por qué me parece extraña la afirmación "Windows se desarrolla utilizando VC"? Porque es demasiado vago. Con VC, puede escribir aplicaciones MFC o programas SDK puros. No importa qué método se utilice, VC no es necesariamente necesario. Siempre que esté dispuesto, puedo usar UltraEdit para escribir un programa MFC y luego compilarlo con CL. No es necesario usar el gran VC. ¡Y hay muchos hackers y personas que no pueden pagar Visual Studio y que hacen precisamente eso! La programación con el SDK no requiere VC. Descargue un compilador Borlan C o utilice un compilador como lcc, se puede lograr el mismo propósito. Además, Windows no es un producto sencillo. No es ningún problema utilizar VC para escribir programas periféricos de Windows, pero ¿qué pasa con la parte central del sistema operativo? Incluso si puedes usar VC para escribir código, ¿qué pasa con la depuración? El depurador propio de VC es lo suficientemente potente para las funciones generales de la aplicación, pero es completamente impotente para la depuración a nivel del sistema, porque el depurador en sí depende del sistema operativo.
Sólo los depuradores a nivel de sistema, como debug, SoftIce y Wdebug, pueden realizar una tarea tan importante. Históricamente, Visual C 1.0 apareció más tarde que Windows 3.0, y MFC en ese momento era solo un prototipo y era imposible desarrollar un sistema operativo. Está Microsoft C/C 7.0 frente a Visual C 1.0, pero su nivel general no es tan bueno como el de Borland C 3.1, y sus funciones de administración de memoria extendida no son tan buenas como las de Watcom C, por lo que no ha ocupado un gran mercado. Ya no es un producto independiente, pero todavía existe en el producto Visual Studio como componente principal del SDK de la plataforma y su funcionalidad no es la misma que en el pasado. Cuando salió Windows 95, MFC todavía estaba intentando ponerse al día con las características del sistema operativo. Hay que decir que Visual C 5.0 es un punto de inflexión. Por un lado, MFC se ha desarrollado relativamente bien. Por otro lado, la estructura básica del sistema operativo también se ha estabilizado. La atención se centrará en la integración y mejora del sistema. como plataforma de negocios. Es imposible que un sistema ya estable sufra modificaciones trascendentales. Por lo tanto, puedo aceptar mejor la afirmación de que "los sistemas Windows se completan utilizando Microsoft C y MASM como compiladores". Al estudiar los archivos del sistema de Windows, podemos ver que la versión del Linker que se muestra en muchos archivos es obviamente el compilador de Microsoft C. ¿En cuanto a en qué está escrito el código? No sé, ni quiero saber, si cualquier buen editor de texto que no sea el editor de Developer Studio sea capaz de hacer esto. ¿Es Visual C omnipotente? Bueno, es mejor hablar de ello por separado. Developer Studio ciertamente no lo es, es solo un caparazón. ¿Qué pasa con el MFC? Ni. Por un lado, encapsula la API y no puede hacer nada sin la API; por otro lado, la encapsulación de la API por parte de MFC no es lo suficientemente completa y, a veces, todavía es necesario llamar directamente a la función API para "hacer"; lo que quieras." En cuanto al Platform SDK, realmente se puede decir que es casi omnipotente. Sin embargo, no tiene sentido enfatizar demasiado este punto. Siempre que exista un conjunto completo de compiladores y los archivos de soporte necesarios, también se puede decir que otras herramientas de desarrollo son "omnipotentes", como Borland C Compiler o lcc. Para ser honesto, no me gustan palabras como "omnipotente". La clave es que la comprensión de cada uno es diferente. Si fuera más serio y preguntara si podría escribir un programa VC para permitir que la computadora levante el mouse y golpee al jefe que no me gusta, ¿crees que se puede hacer? ¿Qué significa la llamada "omnipotencia"? Permítame usar VC para escribir un servidor que pueda soportar decenas de millones de visitas por segundo en una estación de trabajo normal. No podrá hacerlo incluso si me mata, no importa cuán efectivos sean los métodos de optimización de VC. En una plataforma específica y en un sistema operativo específico, no importa cuán poderosa sea una herramienta, en última instancia estará limitada por la plataforma y el sistema en sí. Todo el mundo debería conocer esta paradoja: ¿Puede Dios crear una piedra que no pueda levantar? También veo a menudo declaraciones como "MFC nunca quedará desactualizado" o "C nunca perecerá". Entiendo los sentimientos del portavoz, pero esta declaración no es en modo alguno objetiva. Ya sea un lenguaje o un marco de aplicación, la razón por la que tienen el estado actual no es puramente natural. Hay muchos factores complejos, incluida la razón por la que los tiempos crean héroes. No es por el viento de otoño". El escenario de la historia nunca ha sido preparado para alguien. Incluso si existe el llamado monstruo eterno, me temo que está en línea con el viejo dicho: "Todos están muertos, solo quedamos nosotros, dos viejos duendes, ¿cuál es el problema? ¡Punto!" Lo usamos ahora Todos los lenguajes, ya sean Basic, Pascal o C, incluso los más populares Java y C#, eventualmente se retirarán algún día.
Esto no es nuestra pérdida. Al contrario, los elementos buenos y razonables de un idioma definitivamente serán heredados y llevados adelante por quienes lo siguen. Así debe ser el metabolismo de la naturaleza. No hay rastro de vuelo en el cielo, pero los pájaros ya han volado. Mientras un idioma haya dejado una huella importante en la historia y haya cumplido su misión histórica de "llevar el aprendizaje sagrado a los sabios y crear la paz para todas las generaciones" (un poco exagerado), eso es suficiente. ¿Por qué quedarse como un hijo? y hija? No sé si veré la desaparición de C durante mi vida. Si sucede algún día, aplaudiré y animaré, porque esto demuestra que hay otro lenguaje más nuevo y mejor para reemplazarlo (quizás varios). . Pero según mi suposición, la muerte de una lengua como C, que causó sensación en las artes marciales y conmocionó a miles de religiones, probablemente no será silenciosa, sino que probablemente caerá en la categoría de "el primer emperador se fue, pero el el poder restante es impactante para el mundo". Finalmente, permítanme expresar algunas emociones. La calidad de un idioma es en realidad una cuestión que no necesita ser discutida. La experiencia personal y el entorno determinan en gran medida sus puntos de vista sobre un determinado idioma. Por ejemplo, si conoces a un amigo francés, probablemente te dirá con orgullo: el francés es el mejor y más bello idioma del mundo. Sonreiría y estaría de acuerdo con esta afirmación, y apreciaría su orgullo nacional, pero no pensaría que fuera una menosprecio al chino o al inglés, aunque siempre he creído en mi corazón que el chino es el mejor idioma del mundo. Por supuesto, si me hubiera dicho: "¿Cuáles son tus palabras chinas entrecortadas?", entonces podría haber tenido una reacción diferente. Dicho todo esto, sólo quiero reducir argumentos innecesarios. A menudo veo comentarios como "XXX es el mejor lenguaje (compilador), qué es XX" en los foros. No quiero discutir con ellos, una vez que una persona ha perdido por completo el interés en contactar y comprender algo, probablemente sea inútil decir nada. Sólo lo siento. El distanciamiento y los malentendidos entre las personas se deben principalmente al entendimiento mutuo, y muchas tragedias han sucedido debido a esto. En el mundo de la programación, probablemente no sea tan serio, pero hablar desde el corazón puede reflejar el carácter de una persona hasta cierto punto. Si la persona A habla a menudo mal de la persona B delante de mí, entonces no tendré malos sentimientos hacia la persona B. Por el contrario, mi puntuación de impresión de la persona A se reducirá en 20. Si no entiendes a las personas o cosas que no entiendes, simplemente ignóralas y no hables de ellas. ¿Por qué añadirse malas palabras unos a otros? No he trabajado durante mucho tiempo y he visto a muchos ingenieros de software. Por lo que he visto, los programadores son personas realmente taciturnas. Suelen comportarse con cortesía, pero a veces es raro verlos perder los estribos, tirar el mouse, romper el teclado, golpear el monitor y hacer cualquier otra cosa. se debe principalmente a un error que no se puede eliminar). Ante familiares y amigos, a veces optan por permanecer en silencio durante mucho tiempo. Su obsesión y fanatismo sólo se descubren cuando se sientan delante de la máquina. Aunque generalmente no son buenos para hablar, siempre parecen ser capaces de encontrar una manera de desahogar su ira en los juegos o en Internet. Entonces, en varios foros vi palabras con errores gramaticales que eran insoportables de leer, acusaciones e incluso ataques personales, e incluso muchas palabras indecentes. Aunque no podría estar más feliz, creo que puedo entenderlo. Sin embargo, todavía me siento preocupado. Después de todo, solo se necesitan unos pocos años para convertirse en programador, pero todavía queda un largo camino por recorrer en la vida. Sin una mentalidad sólida y habilidades suficientes para tratar con las personas, ¿cómo deberíamos afrontar la vida después de los 30 años?