"Variable" está mal usado en programación. ¿Solución?

Iniciado por Tachikomaia, 24 Julio 2019, 04:20 AM

0 Miembros y 2 Visitantes están viendo este tema.

Tachikomaia

Estaba describiendo algo en que pretendía llamar variable sólo a lo que fuese "cosa de la situación de la duda", por ejemplo si la duda es:
¿Qué 3 movimientos debo realizar para hacer jaque mate antes que mi rival?
...entonces las variables o cosas de la situación de esa duda serían las posiciones de las fichas y de quién es el turno.

El problema, me pareció, es que iba a resultar confuso porque en mis códigos hay otras cosas que en programación llaman variables pero que yo no llamaría así.

Para arreglar eso inventé la palabra "Sitpart" que abreviaría "parte de la situación".

Ahora bien, ya que estamos quisquillosos, el término "variable" en programación es ya de por sí confuso, porque si bien un programa puede variar el dato si se dan las instrucciones necesarias, hay programas con datos que no varían, es decir, "variables que no varían".

¿Pero qué sentido tienen esos programas, ponerle un nombre a algo que no variará, por qué no decir simplemente el dato?
En lo que estoy haciendo creo que puede tener sentido, ciertos datos pueden existir o no, y en tal caso variar las consecuencias del programa, aunque esos datos de por sí no varíen. Supongo que se puede hacer de otra forma, pero de momento no veo por qué.
Otro caso en que podrían tener sentido es cuando cierto dato se usará muchas veces pero no se sabe exactamente cómo debe ser, por lo que el programador probaría uno, luego otro, y así sucesivamente hasta hallarlo, momento en que sería una pérdida de tiempo sustituir por el dato todas las referencias a él. Como lo hubiera sido modificar varias veces el mismo número pudiendo simplemente modificar el dato.

Por eso intenté crear un nuevo "glosario" de términos de programación:

CitarValor bautizado o ValB:
Es lo que en programación se acostumbra llamar variable, pero ahí ocurre que es posible hacer códigos que tengan "variables que no varían", lo cual es una contradicción que con las nombres que estoy asignando no ocurre, y es por eso en parte que los estoy asignando, para evitar contradicciones y confusiones. Es claro que en un código ponerle un nombre a por ejemplo un número no hace que dicho número sea "variable".

Pero veo 2 problemas con la palabra "valor".

1-
Hay cosas de los programas, que no son variables, como las funciones, pero yo no pretendí referirme a ellas ni a otras cosas distintas a lo que en programación son "variables". ¿Sería una función un "valor bautizado"? ¿qué cosas serían un "valor bautizado"?

2-
Dudo mucho que un texto o cualquier dato pueda ser un "valor". La palabra "dato" se me ocurrió mientras hacía este tema así que podría ser una corrección (y todo dato está por definición bautizado creo), aunque parece complicar más el problema 1.

¿Qué nombre sería adecuado para "dato que no es una función ni array, etc"? Correcciones a mis descripciones también...

Agradezco.

Serapis

#1
Por qué insistes en querer reinventar (malamente) la rueda..?.

Por qué no estudias algo de la gramática de calquier lenguaje de programación y así por fín podrías llamar a las cosas de alguna manera que tenga sentido?. No es tantoq eu vengamos a coincidir siempre, muchos términos se llaman de una manera en un lenguaje y de otra en otro, pero las diferencias son claras y las razones no tanto, pero tampoco son contradictorias.

Una 'variable' que como tú dices no cambia de valor, se llama 'constante' en programación...

Lo que tu llamas 'situaciones', 'sitparts' o lo que sea, en programación se llaman 'estados'. Hay estados iniciales (como la posición inicial de las figuras del ajedrez, cada una con su posición, y el de todas a la vez es el estado inicial de una partida dle ajedrez) estados de de transición (casi cualquier movimiento siguiente de cualquier figura en una partida) y estados finales (como cuando se hace 'jaque mate', 'haces dama', 'enroque', etc... unos son propios para una figura ('ficha comida', por ejemplo) y otros para la partida 'jaque mate').

Referencia del lenguaje VB11:
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/index
Especificación de VB11:
https://github.com/dotnet/vblang/blob/master/spec/README.md
(hay un pdf para descargar, aconsejo descargarlo).

No es preciso que aprendas Visual Basic, si no quieres, pero al menos aprende que es cada cosa, cada componente de un lenguaje de programación... Nadie usa al 100% la terminología precisa de programación, muchas veces porque prima hacerse entender que la exactitud de un término, que tiene más sentido y propiedad si por ejemplo vas a escribir un libro que si vas a contestar algún mensaje... pero lo mínimo es entenderlo y no andar dando vueltas queriendo inventarse cosas que llevan ahí décadas... Pero si quieres vivir en tu burbuja, sería mejor que no salieras de ella nunca.

Tachikomaia

#2
Cita de: NEBIRE en 24 Julio 2019, 04:45 AM
Por qué insistes en querer reinventar (malamente) la rueda..?.
Ufa ¿qué estás diciendo, más específicamente?
Quizá sería mejor ni preguntarte.

CitarPor qué no estudias algo de la gramática de calquier lenguaje de programación y así por fín podrías llamar a las cosas de alguna manera que tenga sentido?
No lo había pensado recientemente, no me pareció necesario antes, y no me gusta leer esas cosas. Basicamente por eso.

Creo que plantee una duda bastante concreta. Menos mal que no hablé de "variables innacidas inmortales" por ejemplo. Si quieres te explico mejor de qué va lo que hago, pero me salgo de tema, y me podrías preguntar o cuestionar por qué hago lo que hago, y no me interesa discutir al respecto.
Está incompleto:
https://i.ibb.co/Dkfh0YQ/gfhfgh.jpg
Basicamente es agregarle cosas a un código, luego (en una nueva fila) agregarle cosas a uno de los resultados y así sucesivamente con todos los resultados hasta llegar a cierto punto.
El código resuelve una duda mediante fuerza bruta. Las cosas a agregarle están relacionadas con las propiedades de dicho código. Por ejemplo no tiene variables (Vs, lo que dije al inicio que decidí llamar Sitparts; C se refiere a candidato que aunque es "variable" no es algo de la situación sino algo que se inserta). En principio es inútil agregarlas, pero para llegar a ciertos niveles es necesario, puedes considerar que en ciertos códigos lo que ves son códigos a medio hacer.
Bueno ¿cuales son las propiedades de un código así? ¿en qué libro está escrito prolijamente? Si conoces alguno y me quieres dar un link, bárbaro. Sino seguiré intentando percibirlas y asignarles nombres lo menos confusos posibles (que conste entiendo que lo son, precisamente intento mejorar eso). Y aunque exista un libro tengo derecho a pensar por mi mismo ¿por qué no?

Citarmuchos términos se llaman de una manera en un lenguaje y de otra en otro
No sabía. Menos motivo para prestarle atención entonces ¿no?

CitarUna 'variable' que como tú dices no cambia de valor, se llama 'constante' en programación...
Pensé que también le llamaban variable. Quizá es un problema del lenguaje que uso, ya que no existe por ejemplo "borrar constante", es "borrar variable".

CitarLo que tu llamas 'situaciones', 'sitparts' o lo que sea, en programación se llaman 'estados'
Algo había visto... lo que pasa es que yo suelo querer resolver situaciones, no estados... En el fondo es lo mismo sí, pero situación es una palabra más común y específica creo, pues estado puede referirse al gobierno de un país.

¿El estado se compone de variables y constantes? Creo que estado a su vez se relaciona más bien con el estado del programa, no con el estado de la situación que se intenta resolver. Creo que es más fácil quitar "el estado de". Puedes decir "la sit que se intenta..." pero no puedes decir "el estado que se intenta...", o al menos me suena a frase incompleta.

Bueno, gracias por la info, pero por lo dicho no me interesa usar estado en vez de situación.

CitarReferencia del lenguaje VB11:
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/index
Especificación de VB11:
https://github.com/dotnet/vblang/blob/master/spec/README.md
(hay un pdf para descargar, aconsejo descargarlo).

No es preciso que aprendas Visual Basic, si no quieres, pero al menos aprende que es cada cosa, cada componente de un lenguaje de programación... Nadie usa al 100% la terminología precisa de programación, muchas veces porque prima hacerse entender que la exactitud de un término, que tiene más sentido y propiedad si por ejemplo vas a escribir un libro que si vas a contestar algún mensaje... pero lo mínimo es entenderlo y no andar dando vueltas queriendo inventarse cosas que llevan ahí décadas... Pero si quieres vivir en tu burbuja, sería mejor que no salieras de ella nunca.
Creo, como dije, que plantee una duda bastante concreta, por lo que no veo necesidad de leerme un libro para hallar la respuesta. Si has leído alguno y la sabes, por favor dímela. Aunque quizá debería especificar o corregir algunas cosas que confundí. En mis programas habría:
Candidatos: Variables que no son parte del estado sino que se insertan o aplican a él.
Partes del estado: Variables o constantes que determinan al estado.
Contadores: Variables que sirven a la fuerza bruta, por ejemplo para ver cuántas veces se intentó cargar un archivo.
Recordatorios o abreviaciones: Más o menos lo mismo.
...
De momento se me ocurren esas.
Si digo que un código tiene 0 variables y un candidato cualquiera que sepa algo haría un WFT. En vez de decir variables debo decir por ejemplo "subestados". Y... mira, quiero ofrecer un trabajo (pagarlo), hacer la tabla, por lo que debo explicar qué es cada cosa. Y lo más básico de todo son las constantes o variables ¿no? Tal vez empezando por ahí no tendría problema. Gracias.

Ah: ¿A qué te refieres con "si quieres vivir en tu burbuja, sería mejor que no salieras de ella nunca."? ¿preguntar algo en este foro es salir de ella, y me estás diciendo que sería mejor que no preguntara cosas en este foro? Perdón si te estoy malinterpretando pero es la única interpretación con sentido que se me ocurre. Sino ¿por qué sería mejor que nunca salga? ¿sería muy doloroso despertar? En fin...

Otra cosa:
¿Conoces a alguien que haya hecho algo similar a lo que intento? Lo de agregar distintas cosas a un programa más o menos como yo, haciendo todas las combinaciones posibles. Lo normal es simplemente agregar cosas dejando muchos intermedios de lado. Yo lo hago así porque así practico más y porque en ciertos casos me resulta difícil agregar muchas cosas a la vez.

@XSStringManolo

#3
Ya que te gusta tanto el lenguaje. Son variables. able del inglés inglés significa "con derecho a". En español el significado de la palabra inglesa variable es "con derecho a variar." En ningún momento está implicito en ningún lado que deba variar. Eso es una interpretación erronea tuya.

Un dato no es lo mismo que una variable por mucho que te empeñes. Todo lo que dices es desde el desconocimiento y la ignoracia absoluta. El dato es el contenido que se podría o no, asignar a una variable. La variable no es un dato que cambie o no.
var a;
La variable es a.
a = 5;
La variable sigue siendo a.  
5 tampoco varía. 5 siempre va a ser 5.
a = 8;
5 sigue siendo 5. Lo que varió fue lo asignado a la variable.

Lo que puede variar es el contenido de la variable. Ni la variable varia, ni el dato almacenado varia. Lo que varía es una asignación distinta.

Un programa no tiene "consecuencias". Un programa hace operaciones.

Un dato es algo definido y concreto. Si no está definido o no existe, no puedes probar que sea un dato.
Cómo vas a sustituir un dato por las "referencias" a él?
Entonces serían referencias a la nada, que en programación sería arbitrariedad absoluta. Lo cual es un error del programador. En todo caso utilizarás la referencia en su lugar.

Valor Bautizado.
Lee el primer párrafo de este escrito. No hay necesidad de utilizar otro nombre. Variable está estandarizado y es ampliamente reconocido.
Una variable puede inicializarse sin necesidad de asignarle un valor. var a;
Por qué algo que puede no tener un valor lo llamarías Valor Bautizado haciendo ambas palabras referencia a que sí debe tener un valor asignado?

Una función un valor bautizado... Madre mía...

void funcion();

void funcion()
{
}

funcion();

Dónde hay un valor ahí? Void es el tipo de dato que será devuelto. Al ser void no hay.

El "nombre" ya está puesto para cada cosa. Pointer, vector, array, struct, class... Se llaman keywords.

Deja de decir sandeces  :xD

Tachikomaia

#4
Cita de: string Manolo en 24 Julio 2019, 07:22 AMable del inglés inglés significa "con derecho a". En español el significado de la palabra inglesa variable es "con derecho a variar." En ningún momento está implicito en ningún lado que deba variar. Eso es una interpretación erronea tuya.
2 cuestiones.

1-
El tema es el momento en que estemos hablando.
Mientras alguien hace el programa, se puede "variar el contenido de la variable" (para mí es redundante decirlo así, pero por ahora te seguiré el juego) o como dices tiene derecho a variar.
Pero cuando el programa está hecho, las instrucciones puede que no impliquen la posibilidad de que "varíe el contenido de la variable", y por lo tanto si está escrito en algún lado que tiene derecho a variar sería una falsedad, o un ideal que no llega a cumplirse, el programador quitó (o más bien no dió) ese derecho.
Para que haya "derecho a" tiene que haber "posibilidad de".

2-
Que algo vulnerable sea algo "con derecho a ser vulnerado" no me convence. Y supongo que debe haber cosas aún menos convincentes.

CitarUn dato no es lo mismo que una variable por mucho que te empeñes.
No recuerdo haber afirmado eso. Afirmé que es un dato al que se le puso un nombre. El dato suelto, sin el nombre, no sería una variable.

CitarTodo lo que dices es desde el desconocimiento y la ignoracia absoluta.
¿Todo? ¿absoluta? Bah... entonces desconozco el significado de lo que me dices, cómo postear, etc.

CitarEl dato es el contenido que se podría o no, asignar a una variable.
Quizá he visto alguna vez variables así, pero no les vi sentido y no memoricé bien que existieran.

Variables sin dato asignado... Me tomará un tiempo procesarlo. ¿Qué sentido o uso pueden tener?

CitarLa variable no es un dato que cambie o no.
Bueno... ¿un contenido entonces? Aunque sea nulo.

CitarLo que puede variar es el contenido de la variable. Ni la variable varia, ni el dato almacenado varia. Lo que varía es una asignación distinta.
Tengo mis dudas.

Es como si sólo llamaras variable al nombre.

Si dices que una variable es como un vaso, vale, no variará según su contenido (a menos que le eches un ácido o algo, pero no hay algo análogo en programación y no viene mucho al caso).

Pero yo lo veo como un todo, como un país, que cambia dependiendo de qué gente le pongan o quiten.

Me cuesta creer que variar el contenido no varía a la variable. Al nombre sí que no lo varía.


Y en cuanto al dato almacenado... ¿por qué es tan distinto de decir "el contenido" o "lo asignado"? Es como si estuvieras viendo sólo la palabra "dato". Vale, el 5 por ejemplo no cambia, es un ente eterno o no sé qué, pero el dato almacenado es otro ahora, por lo tanto el dato almacenado cambió, me refiero a algo sinónimo de "el contenido".


Es decir, que una variable pueda no tener dato asignado te lo llevo si tú lo dices (no tengo por qué dudarlo), pero lo demás me parece probable que sean formas de verlo. ¿Hay perspectivas como la que digo o en esto hay una definición universal digamos?

CitarUn programa no tiene "consecuencias". Un programa hace operaciones.
No le veo sentido a esta "corrección". Una consecuencia es algo que ocurre luego de ciertas instrucciones/operaciones. Dependiendo de cuales sean y del estado de un programa tendrá unas consecuencias/instrucciones/operaciones u otras.

CitarUn dato es algo definido y concreto. Si no está definido o no existe, no puedes probar que sea un dato.
Cómo vas a sustituir un dato por las "referencias" a él?
Entonces serían referencias a la nada, que en programación sería arbitrariedad absoluta. Lo cual es un error del programador. En todo caso utilizarás la referencia en su lugar.
Puede que tengas razón en esta critica, pero te diré un ejemplo a ver si lo entiendes mejor. En un videojuego de tenis quiero que la pelota caiga a una velocidad parecida a la real. Y esa velocidad determina ciertos cálculos. Por lo tanto es un número que se usa en distintos sitios del código. Le llamo "Gravedad" por ejemplo. Al comienzo le asigno 0.1. Pruebo el programa. Me parece que cae demasiado rápido. Pongo 0.01. Pruebo. Está bien. ¿Se entendió?
Quizá ese número que resolvería el problema (de que la pelota caiga a una velocidad que me parezca realista) no es un dato en tanto no esté grabado en la computadora ¿no? Pero bueno... está grabado en la realidad, existe, hay un número que cumple las condiciones. Pero no es un dato en tanto no sea grabado en una computadora, ok...

CitarValor Bautizado.
Lee el primer párrafo de este escrito. No hay necesidad de utilizar otro nombre.
Creo que concuerdo, el problema era si llamaban variable a las constantes.

CitarUna variable puede inicializarse sin necesidad de asignarle un valor. var a;
Por qué algo que puede no tener un valor lo llamarías Valor Bautizado haciendo ambas palabras referencia a que sí debe tener un valor asignado?
Es que no sabía esa posibilidad.

CitarUna función un valor bautizado... Madre mía...

void funcion();

void funcion()
{
}

funcion();

Dónde hay un valor ahí? Void es el tipo de dato que será devuelto. Al ser void no hay.
Tampoco sabía eso. Pero... ¿alguien hace funciones así? ¿para qué?

CitarEl "nombre" ya está puesto para cada cosa. Pointer, vector, array, struct, class... Se llaman keywords.
Ese dato me servirá.

CitarDeja de decir sandeces  :xD
Mejor pide que El Bien suceda... creeme que quisiera.

tincopasan

me causa gracia la interpretación que se les da y /o busca a palabras ya establecidas. Podríamos buscar no solo en la informática, sino en todos los rubros.Por ejemplo ¿por qué se llama cuchillo? no lo uso para acuchillar nada, en todo caso debería ser un cortador,pero... sino corta y lo uso para sujetar papeles lo llamo pisapapeles. etc. 

Markski

Le se llama variable a cualquier simbolo que pueda cambiar su valor libremente. Tal es así porque varia a gusto de quien la este usando dentro del rango de su representación (numero, caracteres, etc..).

Que una variable con un valor dado, cambie su valor por otro, no afecta en nada al valor en si, si no a cual valor la variable este representando en dicho momento.