En esta página:
Termino el mes de Setiembre de 2019 y nuevas preguntas se han realizado en la popular plataforma para Desarrolladores, me refiero a Stack Overflow y como cada fin de mes en este Post te compartiré las preguntas que han sido más populares en este mes que ha terminado, entre los Lenguajes de Programación que más destacan están C++ y Java, vamos con este Post.
Como siempre con artículos anteriores vamos a Colocar la consulta original y la versión traducida al español, el Link de la consulta, el Lenguaje o tecnología de la consulta, una descripción y una imagen de la consulta.
Puesto N° 5
Consulta Original: Why can’t we use uninitialized local variable to access static content from type of that variable ?
Consulta Traducida: ¿ Por qué no podemos usar una variable local no inicializada para acceder al contenido estático desde el tipo de esa variable ?
Link: Visitar
Lenguaje(s): Java
El usuario Pshemo esta trabajando con el lenguaje de Programación Java, si bien menciona que no esta usando el código en un proyecto real, pero si la parece interesante el fenómeno que se produce cuando intenta acceder a la variable estática x que no ha sido inicializada, al hacerlo le arroja un error Error: Variable ‘foo’ might not have been initialized
1 2 3 4 5 6 7 8 9 10 |
class Foo{ public static int x = 1; public static void main(String[] args) { Foo foo; System.out.println(foo.x); // Error: Variable 'foo' might not have been initialized } } |
El error parece tener sentido ya que no se ha inicializado la variable estática x, hasta que nos damos cuenta que para acceder a un miembro estático el compilador no usa el valor de una variable si no solo el tipo de la variable, Pshemo menciona también que se puede inicializar foo con valor null y esto ya nos permite acceder a la variable x sin problemas
1 2 3 4 |
Foo foo = null; System.out.println(foo.x); //compiles and while running prints 1!!! |
El usuario Nexevis le da una respuesta mencionando que si el campo es estático la expresión primaria se evalúa y el resultado se descarta, si la evaluación de la expresión Primaria se completa abruptamente pues la expresión para acceder al campo estático se completa también abruptamente esto lo hace descartable, si deseas más información sobre esta consulta, por favor visita el Link a la consulta en Stack Overflow.
Puesto N° 4
Consulta Original: Why does (inf + 0j)*1 evaluate to inf + nanj ?
Consulta Traducida: ¿ Por qué (inf + 0j) * 1 evalúa a inf + nanj ?
Link: Visitar
Lenguaje(s): Python
El usuario marnix menciona que al ejecutar un código de Python le produce un error que no le parece agradable, este error que se produce es un tipo de evaluación (inf+nanj)
1 2 3 4 |
>>> (float('inf')+0j)*1 (inf+nanj) |
Sabiendo esto marnix consulta porque la entidad multiplicadora 1 no devuelve (inf+0j).
El usuario Marat responde a su consulta mencionando que la entidad 1 se convierte en un número complejo, la operación 1 + 0j conduce a una multiplicación inf * 0 y resulta o devuelve un valor nan
1 2 3 4 5 6 7 8 |
(inf + 0j) * 1 (inf + 0j) * (1 + 0j) inf * 1 + inf * 0j + 0j * 1 + 0j * 0j # ^ this is where it comes from inf + nan j + 0j + 0 inf + nan j |
Si deseas más información sobre esta consulta, por favor visita el Link a la consulta en Stack Overflow.
Puesto N° 3
Consulta Original: What’s the point of a PROTOTYPE macro that merely expands to its arguments ?
Consulta Traducida: ¿ Cuál es el punto de una macro de PROTOTIPO que simplemente se expande a sus argumentos ?
Link: Visitar
Lenguaje(s): C++
El usuario Charlie Elverson que esta trabajando con el Lenguaje de Programación C++ consulta que tiene un archivo con el encabezado:
1 2 3 |
#define PROTOTYPE(s) s |
El desea saber cual es el punto de ese encabezado, menciona que talvez simplemente reemplaza la entrada por sí misma. Así mismo Charlie Elverson menciona que también hay otras directivas, pero el único que parece tener una relación es si se define #ifndef PROTOTYPE. Entonce menciona que esto no le parece útil.
El usuario Pete Becker hace una respuesta detallada mencionando que en tiempos atrás en el Lenguaje de Programación C no existía un prototipo y las listas de argumentos llegaron después del uso de paréntesis en una función
1 2 3 4 5 6 7 8 |
square(x) int x; { int y = x * x; return y; } |
Entonces en esos días obviamente los argumentos van entre paréntesis
1 2 3 4 5 6 7 |
square(int x) { int y = x * x; return y; } |
Los prototipos de funciones en ANSI C tienen una lista de argumentos
1 2 3 |
int square(int x); |
Durante esta transición, los Desarrolladores usaron macros exóticos o extravagantes para compilar en ambos sentidos
1 2 3 |
int square(PROTOTYPE(int x)); |
Entonces con #define PROTOTYPE(s) se expandiría a la primera versión y con #define PROTOTYPE(s) s se expandiría a una segunda versión.
Por ultimo Pete Becker menciona en su respuesta que los paréntesis adicionales en el código de la consulta de Charlie Elverson son necesarios cuando hay más de un argumento en la lista de argumentos. Si estos paréntesis la invocación del macro tiene más de un argumento, por lo que no coincidirá con una macro definida con un solo argumento
1 2 3 4 |
PROTOTYPE(int x, int y) // error: too many arguments PROTOTYPE((int x, int y)) // ok: only one argument (enclosed in parentheses) |
Si deseas más información sobre esta consulta, por favor visita el Link a la consulta en Stack Overflow.
Puesto N° 2
Consulta Original: Does the ‘java’ command compile Java programs ?
Consulta Traducida: ¿ El comando ‘java’ compila programas Java ?
Link: Visitar
Lenguaje(s): C++
El usuario milad menciona que muchos sitios web dicen
“Use el comando javac para compilar un archivo .java Luego ejecútelo usando el comando java”
Menciona que escribió el siguiente y sencillo Hola Mundo
1 2 3 4 5 6 7 |
public class Myclass { public static void main(String[] args){ System.out.println("hello world"); } } |
Y cuando milad intento compilar el programa en Java con javac
1 2 3 |
$ javac hello.java |
Obtuvo el siguiente resultado extraño
1 2 3 4 5 6 |
hello.java:1: error: class Myclass is public, should be declared in a file named Myclass.java public class Myclass { ^ 1 error |
En cambio cuando lo ejecuto sin el comando javac, el programa se ejecuto sin ningún problema
1 2 3 4 5 |
java hello.java hello world |
Su duda es, si el comando java ya compila un programa, porque necesitamos usar el comando javac y cuando debemos usarlo.
El usuario kaan da una respuesta detallada y terminando su respuesta menciona que el uso del comando javac es para crear archivos .class para que el código del programa pueda crear, probar, distribuir, ejecutar, compartir, etc. esto es parte de facilitar las primeras etapas de aprendizaje de Java para escribir pequeños programas útiles.
Si deseas más información sobre esta consulta, por favor visita el Link a la consulta en Stack Overflow.
Puesto N° 1
Consulta Original: Why should I always enable compiler warnings ?
Consulta Traducida: ¿ Por qué debería habilitar siempre las advertencias del compilador ?
Link: Visitar
Lenguaje(s): C++
El usuario n.m. menciona que ha menudo escucha que al compilar programas en C y C ++ debería de habilitar siempre las advertencias del compilador, entonces consulta Porque es esto necesario y como se puede habilitar las advertencias del compilador.
El mismo usuario n.m. crea su propia respuesta a su misma consulta mencionando debajo de su respuesta que ha publicado el mismo la pregunta y su respuesta porque esta cansado de decirle a la gente que habilite las advertencias, así mismo mencionas otros detalles muy importantes.
Si deseas más información sobre esta consulta, por favor visita el Link a la consulta en Stack Overflow.
Bueno estas son las mejores consultas que se hicieron en Setiembre de 2019, nos vemos a finales del siguiente mes con un nuevo Top de consultas que son tendencia en Stack Overflow.
Notas
- La cantidad de Respuestas, Vistas, Votos, etc. de las consultas pueden variar en Stack Overflow en el futuro, hasta la fecha de este artículo son las que presentamos en las imágenes.
- Si lees con atención las consultas y las respuestas vas aprender sobre el problema que tenia el usuario que realiza la consulta y puede que sea el problema que estas intentando solucionar, esto es importante para tu aprendizaje.
- La idea de este artículo es comentar y exponer los temas que son tendencia en el mes determinado, no intentamos dar una respuesta al problema ya que estos son resueltos por los usuarios de la comunidad Stack Overflow, que son grandes Desarrolladores y con mucha experiencia en el área o Lenguaje de Programación determinado.
- Algunos enlaces a otras páginas colocados en este artículo pueden dejar de existir o continuar en el futuro, esto no depende de nosotros si no de los usuarios o empresas que son dueños de los servidores en donde se encuentran alojados estos enlaces, hasta la fecha de este artículo estos enlaces aún están disponibles.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.