ID 10660 - Tema: 114 - Java Script - Objetos

Responder
phdezv
PreparaTIC26
Mensajes: 697
Registrado: 18 Abr 2011, 16:00
Ubicación: Madrid 28002
Agradecido: 0
Agradecimiento recibido: 0

ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por phdezv »

De esta pregunta:

7) Indique la afirmación incorrecta: [MAL]
Tema: 114. Id Pregunta: 10660.
a) JavaScript es orientado a objetos.
b) JavaScript no puede ejecutarse en el lado del servidor.
c) Para interactuar con una página web, JavaScript utiliza una implementación de DOM (Document Object Model).
d) La tecnología AJAX utiliza JavaScript de forma asíncrona.


Según tengo en mis apuntes y confrontando con colegas, JavaScript es BASADO en objetos, pero no orientado, porque no cumple las características de OO.

¿Cómo lo veis?
Imposible es sólo una apreciación, como tantas otras. :wink:

Avatar de Usuario
Miguelinho
Usuario registrado
Mensajes: 787
Registrado: 16 Sep 2013, 00:28
Agradecido: 0
Agradecimiento recibido: 0

Re: Java Script - Objetos

Mensaje por Miguelinho »

Según tengo entendido JavaScript sí soporta la programación orientada a objetos. Es, pese a ello, un poco "sui generis":
1.- No hay palabras reservadas para la definición de clases y métodos, pero se pueden definir de una forma que yo calificaría como "torticiera".
2.- La herencia se hace a través de prototipos.

No te puedo indicar el libro concreto, pues no lo recuerdo, pero hace tiempo consulté un libro donde se afirmaba explícitamente que JavaScript era Orientado a Objetos. No obstante, me creería que hubiese autores que hiciesen distinciones como la que mencionas.

AÑADIDO: Consulta esta web, viene con un ejemplo.
Enlace: http://viralpatel.net/blogs/object-orie ... avascript/
Personalmente, creo que sí se puede considerar POO, pero es muy chapucero, al menos, para los que venimos de otros lenguajes con más palabras reservadas.

Un saludo,

Miguel

[EDIT para el AÑADIDO]

Avatar de Usuario
NachoMarAr
PreparaTIC25
Mensajes: 115
Registrado: 21 May 2015, 14:48
Agradecido: 0
Agradecimiento recibido: 0

Re: Java Script - Objetos

Mensaje por NachoMarAr »

Yo coincido con Miguelinho. Además, en este caso hay una respuesta falsa muy clara como para pensar que puede ser una pregunta trampa donde el truco esté en la distinción que mencionas

phdezv
PreparaTIC26
Mensajes: 697
Registrado: 18 Abr 2011, 16:00
Ubicación: Madrid 28002
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por phdezv »

La verdad es que no se me da bien lo de Java y la errónea que dices que es clara no la vi porque, entre otras cosas, en cuanto vi la A como falsa no perdí tiempo en verificar lo demás.

Para que un paradigma, lenguaje, etc. se considere como ORIENTADO a objetos debe tener ciertas características fundamentales (encapsulamiento, herencia, polimorfismo...). Según tengo entendido el JavaScript no admite herencia, por ejemplo.
Imposible es sólo una apreciación, como tantas otras. :wink:

Avatar de Usuario
NachoMarAr
PreparaTIC25
Mensajes: 115
Registrado: 21 May 2015, 14:48
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por NachoMarAr »

phdezv escribió:La verdad es que no se me da bien lo de Java y la errónea que dices que es clara no la vi porque, entre otras cosas, en cuanto vi la A como falsa no perdí tiempo en verificar lo demás.

Para que un paradigma, lenguaje, etc. se considere como ORIENTADO a objetos debe tener ciertas características fundamentales (encapsulamiento, herencia, polimorfismo...). Según tengo entendido el JavaScript no admite herencia, por ejemplo.
Como apuntó Miguelinho, la herencia en Javascript se soporta a través de "prototype". Bajo mi punto de vista, Javascript sí es orientado a objetos, pero no de la forma a la que estamos acostumbrados con C++, Java, etc. En estos lenguajes defines clases, y luego las instancias, mientras que en Javascript se suele heredar (mediante prototype) de instancias de objetos ya existentes. Es una filosofía bte diferente, pero orientada a objetos. Y al contrario de lo que opina Miguelinho, yo no la veo "torticera", sino diferente, con sus ventajas e inconvenientes

Avatar de Usuario
Miguelinho
Usuario registrado
Mensajes: 787
Registrado: 16 Sep 2013, 00:28
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por Miguelinho »

Sí, el calificativo que he brindado a la POO de JavaScript es sólo una opinión personal. Posiblemente, se deba a que he usado JavaScript en un par de webs y no le he sacado todo su potencial. En cambio, estoy más versado, sin ser tampoco un erudito, en Java, C++ y Objective-C.

Una última observación. JavaScript, como C++ o Python, es multiparadigma. No hay porqué sacar partido a la POO y al final, se puede usar un estilo estructurado. Además, los paradigmas de programación no son autoexcluyentes. He leído, por ejemplo, que en Java 8 han introducido cálculo lambda, que es una funcionalidad del paradigma funcional.

¡Y ésa es otra! Los lenguajes de programación están en constante evolución. Aparecen nuevos lenguajes (Dart de Google, Swift de Apple, Hack de Facebook) y los existentes evolucionan.

Un saludo,

Miguel

Milarqui
Usuario registrado
Mensajes: 37
Registrado: 23 Sep 2015, 13:18
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por Milarqui »

La duda es, cual es la respuesta correcta? Es que todavía no me la he cruzado en los tests...

Avatar de Usuario
NachoMarAr
PreparaTIC25
Mensajes: 115
Registrado: 21 May 2015, 14:48
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por NachoMarAr »

La b. Como ejemplo de javascript en el lado del servidor, Node.js

Rchins
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por Rchins »

:arrow:
Última edición por Rchins el 20 Nov 2017, 13:34, editado 1 vez en total.

Avatar de Usuario
Miguelinho
Usuario registrado
Mensajes: 787
Registrado: 16 Sep 2013, 00:28
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por Miguelinho »

No estoy de acuerdo, Rchins. Insisto en que los lenguajes de programación evolucionan. Depende como se redactase la pregunta, COBOL podría ser una cosa u otra. Al final, todo son matices.

La (b) tiene un matiz que la hace claramente descartable:
b) JavaScript no puede ejecutarse en el lado del servidor.

El "no puede" es fortísimo. Con un ejemplo, como el puesto por NachoMarAr, se viene abajo. Con estos errores, se pierde 1'5 puntos. 0'5 que resta y 1 punto que no sumamos.

Todas las preguntas se deben reflexionar. Cada matiz, cambia el sentido.

Rchins
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por Rchins »

:arrow:
Última edición por Rchins el 20 Nov 2017, 13:34, editado 1 vez en total.

Naranek
Usuario registrado
Mensajes: 46
Registrado: 11 Dic 2008, 12:59
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por Naranek »

Por regla general, hay que tener un cuidado exquisito con los "no nunca" y los "sí siempre".

phdezv
PreparaTIC26
Mensajes: 697
Registrado: 18 Abr 2011, 16:00
Ubicación: Madrid 28002
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por phdezv »

Gracias a todos por sus aclaraciones y comentarios.

Desde la experiencia con el paradigma OO pero desde la nula experiencia con JavaScript, y de lo que he leído sobre él:

1- Ciertamente los lenguajes evolucionan, pero los paradigmas establecidos no se mueven tanto, tienden a quedarse más quietos. El paradigma OO tiene características y reglas bien establecidas, como lo de la herencia. Puedes "simularla", como el caso de los prototypes, pero no se consideraría herencia propiamente dicha.

2. En el propio tema ASTIC p. 17, como característica básica de JavaScript dice: "Los scripts se ejecutan en el navegador web, no en el servidor".

Habéis comentado sobre Node.js y lo he buscado, encontrando esto en Wikipedia:
Node.js es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor (pero no limitándose a ello) basado en el lenguaje de programación ECMAScript.
ECMAScript se basó fundamentalmente en JavaScript pero no es lo mismo.

Y en la wiki en inglés dice:
Node.js is an open-source, cross-platform runtime environment for developing server-side Web applications. Node.js is not a JavaScript framework,[3] but its applications are written in JavaScript and can be run within the Node.js runtime on a wide variety of platforms.
De todo lo anterior interpreto que lo que se ejecuta en el servidor no es directamente JavaScript sino "dentro de" Node.js. ¿Podría ser?

Perdonad el lío, pero quiero que me quede claro por cualquier pregunta similar que pueda salir en los exámenes.
Imposible es sólo una apreciación, como tantas otras. :wink:

Avatar de Usuario
NachoMarAr
PreparaTIC25
Mensajes: 115
Registrado: 21 May 2015, 14:48
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por NachoMarAr »

phdezv escribió:Gracias a todos por sus aclaraciones y comentarios.
Node.js es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor (pero no limitándose a ello) basado en el lenguaje de programación ECMAScript.
ECMAScript se basó fundamentalmente en JavaScript pero no es lo mismo.
Efectivamente, ECMAScript es un estandar que se creó a partir de JavaScript y no son lo mismo, pero Node.js no está basado en ECMAScript, sino en JavaScript. De hecho, está basado en el Chrome's V8 JavaScript engine.
phdezv escribió: Y en la wiki en inglés dice:
Node.js is an open-source, cross-platform runtime environment for developing server-side Web applications. Node.js is not a JavaScript framework,[3] but its applications are written in JavaScript and can be run within the Node.js runtime on a wide variety of platforms.
De todo lo anterior interpreto que lo que se ejecuta en el servidor no es directamente JavaScript sino "dentro de" Node.js. ¿Podría ser?

Perdonad el lío, pero quiero que me quede claro por cualquier pregunta similar que pueda salir en los exámenes.
Efectivamente, las aplicaciones Javascript se ejecutarían en Node.js, del mismo modo que las aplicaciones Java se ejecutan en la JVM (me refiero conceptualmente, técnicamente no se parecen en nada). Y, básicamente, el objetivo de Node.js es poder desarrollar con Javascript aplicaciones web, de ahí que la respuesta b sea cierta. El tema de ASTIC en este punto se ha quedado un poco obsoleto, si bien es cierto que el principal uso de Javascript (y cada día más extendido) sigue siendo en el cliente.

Avatar de Usuario
Miguelinho
Usuario registrado
Mensajes: 787
Registrado: 16 Sep 2013, 00:28
Agradecido: 0
Agradecimiento recibido: 0

Re: ID 10660 - Tema: 114 - Java Script - Objetos

Mensaje por Miguelinho »

phdezv escribió: 1- Ciertamente los lenguajes evolucionan, pero los paradigmas establecidos no se mueven tanto, tienden a quedarse más quietos. El paradigma OO tiene características y reglas bien establecidas, como lo de la herencia. Puedes "simularla", como el caso de los prototypes, pero no se consideraría herencia propiamente dicha.
Diría que no existe una guía exacta o un estándar que precise lo que es y deja de ser la herencia. Cada lenguaje, al final, lo hace un poco a su manera. Objective-C es orientado a objetos y desde mi perspectiva, no tiene nada que ver con Java, por ejemplo.

Según la Wikipedia, JavaScript es orientado a objetos (si bien, precisan que está basado en prototipos)
Paradigm: Multi-paradigm: scripting, object-oriented (prototype-based), imperative, functional
Fuente: https://en.wikipedia.org/wiki/JavaScript

Haces bien en querer disipar tus dudas, pero en este tema, como en otros del mundillo de la informática, la terminología no es exacta y al final, dependerá del criterio del Tribunal.

Responder

Volver a “PREGUNTAS TEST - ERRORES Y DUDAS”