Cómo Java difiere de c
Aunque Java fue modelado después de C, difiere de C en muchos aspectos. Java no incorpora una serie de características disponibles en C. Para el beneficio de los programadores de C, señalamos aquí algunas diferencias importantes entre los lenguajes C y Java.
Java y C
- Cómo evitar mostrar mi transcripción durante el proceso de entrevista
- Cómo prepararse para una entrevista de servicios web de Amazon
- ¿Las entrevistas técnicas para puestos de ingeniería de software a tiempo completo son más difíciles para los estudiantes de posgrado que para los estudiantes de pregrado?
- ¿Cuáles son las mejores y peores cosas de las entrevistas telefónicas técnicas?
- ¿Cuántas rondas de entrevistas hay en Amazon y cuáles son algunas de las preguntas que se hacen?
Java se parece mucho a C, pero la principal diferencia entre Java y C es que Java es un lenguaje orientado a objetos y tiene un mecanismo para definir clases y objetos; mientras que C es un lenguaje orientado a procedimientos . En un esfuerzo por construir un lenguaje simple y seguro, el equipo de Java no incluyó algunas de las características de C en Java.
· JAVA está orientado a objetos mientras que C es de procedimiento. Diferentes paradigmas, es decir, la mayoría de las diferencias entre las características de los dos lenguajes surgen debido al uso de diferentes paradigmas de programación. C se desglosa en funciones mientras que JAVA se desglosa en Objetos. C está más orientado a procedimientos mientras que JAVA está orientado a datos.
· Java es un lenguaje interpretado mientras que C es un lenguaje compilado.
· C es un lenguaje de bajo nivel mientras que JAVA es un lenguaje de alto nivel.
· C usa el enfoque de arriba hacia abajo {sharp & smooth} mientras que JAVA usa el enfoque de abajo hacia arriba {on the rocks} . En C, la formulación del programa comienza definiendo el todo y luego dividiéndolos en elementos más pequeños. JAVA (y C ++ y otros lenguajes OOP) sigue el enfoque ascendente donde los elementos más pequeños se combinan para formar el todo.
· JAVA admite la sobrecarga de métodos, mientras que C no admite la sobrecarga en absoluto: JAVA admite la sobrecarga de funciones o métodos, es decir, podemos tener dos o más funciones con el mismo nombre (con ciertos parámetros variables como los tipos de retorno para permitir que la máquina diferencie entre ellos) ) Es decir, podemos sobrecargar métodos con el mismo nombre que tengan firmas de métodos diferentes . JAVA (a diferencia de C ++), no admite la sobrecarga del operador, mientras que C no permite la sobrecarga en absoluto.
· A diferencia de C, JAVA no es compatible con preprocesadores, y realmente no los necesita. Las directivas de preprocesador como #include & #define, etc. se consideran uno de los elementos más esenciales de la programación en C. Sin embargo, no hay preprocesadores en JAVA. Como Java no es compatible con preprocesadores; no podemos usar las declaraciones #define, #include y #ifdef. JAVA utiliza otras alternativas para los preprocesadores. Por ejemplo, se utiliza public static final en lugar del #define preprocessor. Java asigna nombres de clase a un directorio y estructura de archivos en lugar del #include utilizado para incluir archivos en C.
· Java no incluye las palabras clave de declaración únicas C goto, sizeof y typedef.
· Java no contiene los tipos de datos struct, union y enum.
· Java no define las palabras clave de modificadores de tipo automático, externo, registro, con signo y sin signo.
· La fuente y los archivos binarios de Java son completamente portátiles (sujetos a la disponibilidad de las bibliotecas apropiadas), ya que el formato fuente está estandarizado y los archivos binarios se ejecutan en una emulación de software de un procesador estandarizado, que también ralentiza la ejecución. En C, los binarios no suelen ser portátiles de una plataforma a otra, ya que utilizan directamente el procesador de hardware nativo de la plataforma y, por lo tanto, se ejecutan más rápido.
· Java no admite un tipo de puntero explícito. El puntero va detrás del escenario en JAVA, mientras que C requiere un manejo explícito de los punteros. Cuando se trata de JAVA, no necesitamos los * ‘s &’ s para lidiar con los punteros y sus direcciones. Más formalmente, no se requiere sintaxis de puntero en JAVA. Hace lo que necesita hacer. Mientras estamos en JAVA, creamos referencias para objetos.
· Java no admite ningún mecanismo para definir argumentos variables para funciones.
· Java requiere que las funciones sin argumentos se declaren con paréntesis vacíos y no con la palabra clave nula como se hace en C.
· Java agrega nuevos operadores como instanceof y >>>.
· Java agrega saltos rotulados y declaraciones continuas .
· Las funciones estándar de entrada y salida: aunque esta diferencia podría no tener ningún significado conceptual (intuitivo), tal vez sea solo la tradición. C usa las funciones printf y scanf como entrada y salida estándar, mientras que JAVA usa las funciones System.out.print & System and Information and Information..read.
· Java agrega muchas características requeridas para la programación orientada a objetos.
Ventajas de Java sobre lenguaje C
· Todos sabemos lo que hace un compilador. Toma su código y lo traduce en algo que la máquina puede entender, es decir, 0 y 1, el código de nivel de máquina. Eso es exactamente lo que sucede con nuestro código C: se ‘compila’. Mientras que con JAVA, el código se transforma primero a lo que se llama thebytecode. Este bytecode es ejecutado por JVM (Java Virtual Machine). Por la misma razón, el código JAVA es más portátil.
· C es un lenguaje de bajo nivel (interpretación difícil para el usuario, mayor significado para el código de nivel de máquina) mientras que JAVA es un lenguaje de alto nivel (abstraído de los detalles de nivel de máquina, mayor significado para el programa en sí).
· La gestión de memoria detrás de escena con JAVA y la gestión de memoria basada en el usuario en C: ‘malloc’ y ‘gratis’ son las llamadas a la biblioteca utilizadas en C para asignar y liberar fragmentos de memoria para datos específicos (especificados usando la palabra clave ‘tamaño de’). Por lo tanto, en C, la memoria es administrada por el usuario mientras que JAVA usa un recolector de basura que elimina los objetos que ya no tienen ninguna referencia a ellos.
· Manejo de excepciones en JAVA Y los errores y bloqueos en C: cuando se produce un error en un programa Java, se produce una excepción. Luego se puede manejar usando varias técnicas de manejo de excepciones. Mientras que en C, si hay un error, hay un error.
· Los programas Java pueden ser más fáciles de desarrollar ya que:
a. La gestión dinámica de la memoria se maneja en gran medida automáticamente, y
si. Se lanzan excepciones de diagnóstico para operaciones ilegales (como acceder a través de una referencia nula o acceder más allá de los límites de una matriz).
· Mejora de la productividad del desarrollo de software: la programación orientada a objetos es modular, ya que proporciona separación de tareas en el desarrollo de programas basados en objetos. También es extensible, ya que los objetos se pueden extender para incluir nuevos atributos y comportamientos. Los objetos también se pueden reutilizar dentro de una aplicación cruzada. Debido a estos tres factores (modularidad, extensibilidad y reutilización), la programación orientada a objetos proporciona una productividad mejorada de desarrollo de software sobre las técnicas de programación basadas en procedimientos tradicionales.
· Mantenimiento mejorado del software: por las razones mencionadas anteriormente, el software orientado a objetos también es más fácil de mantener. Dado que el diseño es modular, parte del sistema se puede actualizar en caso de problemas sin necesidad de realizar cambios a gran escala.
· Desarrollo más rápido : la reutilización permite un desarrollo más rápido. Los lenguajes de programación orientados a objetos vienen con ricas bibliotecas de objetos, y el código desarrollado durante los proyectos también es reutilizable en proyectos futuros.
· Menor costo de desarrollo: la reutilización del software también reduce el costo de desarrollo. Típicamente, se pone más esfuerzo en el análisis y diseño orientado a objetos, lo que reduce el costo general de desarrollo.
· Software de mayor calidad: el desarrollo más rápido del software y el menor costo de desarrollo permiten utilizar más tiempo y recursos en la verificación del software. Aunque la calidad depende de la experiencia de los equipos, la programación orientada a objetos tiende a dar como resultado un software de mayor calidad.
Desventajas de Java sobre lenguaje C
· Tamaño de programa más grande: los programas orientados a objetos generalmente incluyen más líneas de código que los programas de procedimientos.
· No es adecuado para todo tipo de problemas: existen problemas que se prestan bien al estilo de programación funcional, al estilo de programación lógica o al estilo de programación basado en procedimientos, y la aplicación de programación orientada a objetos en esas situaciones no dará como resultado programas eficientes.
· Curva de aprendizaje empinada: el proceso de pensamiento involucrado en la programación orientada a objetos puede no ser natural para algunas personas, y puede llevar tiempo acostumbrarse. Es complejo crear programas basados en la interacción de objetos. Algunas de las técnicas de programación clave, como la herencia y el polimorfismo, pueden ser difíciles de comprender inicialmente.
· Los programas C generalmente se ejecutarán más rápido, ya que la administración dinámica de la memoria (que a menudo no se requiere) está completamente bajo el control del programador, y no hay controles para operaciones ilegales.
· En C es más fácil trabajar con hardware directamente. Además, los programas C suelen ser más eficientes.