Foro SofosAgora

Foro abierto a los intereses de sus usuarios. Debate, aprende y diviértete.
Fecha actual 16 Jul 2018, 04:36

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 10 mensajes ] 
Autor Mensaje
 Asunto: ¿Qué instrucciones son insustituibles en programación?
NotaPublicado: 16 Ene 2018, 07:22 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 8356
Por ejemplo toda instrucción redondear hacia abajo(número) se puede sustituir con un Si tiene "." (o ",") para ver si el número tiene decimales y Tomar parte(texto) en caso de que ser cierto, por ello floor es sustituible.
Nota: Para el caso descrito puede que se requiera también Si es número y Convertir a texto, creo que depende del código de programación.

¿Todo "Si" puede ser sustituído por otra cosa?

¿Y todo "Tomar parte"?

Lo de "todo" puede ser redundante, pero es para dejar claro que si sirve en algunos casos pero en otros no, entonces la respuesta no sería "sí", sino quizá "a veces", pero yo pregunto si "siempre" (sí) o "no siempre" (no).

Por ahora, según he pensado, estas son las instrucciones insustituibles:
- Establecer el valor de una variable.
- Tomar parte del valor de una variable.
- Si, Sino, Sino si (*).
- Ir a/Hacer mientras/Mientras hacer (**).

(*): Tal vez con más de un Hacer mientras o Mientras hacer, de algún modo se puede hacer Sino y Sino si, pero no sé, no soy de usar mientras.
Tengo la idea de que éstos (Si, Sino, Sino si) pueden ser sustituídos por variables o funciones (según se requiera), y eval, pero lo investigué muy poco.

(**): Diré por qué esto me parece confuso, pero no quiero discutirlo.
Por un lado, vimos que redondear hacia abajo es una instrucción compuesta, al parecer, de otras. Y es sustituible. Eso no significa que todas las compuestas sean sustituibles, pero meh, parece lo lógico: Son sustituibles por esas otras de las que está compuesta. Bueno, Hacer mientras está compuesto de algo (hacer, algo), Si e Ir a, por lo tanto parece sustituible por ellas. Similar para Mientras hacer, sólo cambia el orden.
Pero por otro lado, parece que Mientras hacer y Hacer mientras, abarcan todo lo que puede hacerse con Si e Ir a. Es un caso distinto a redondear hacia abajo porque eso abarca algunas de las cosas que pueden hacerse con las instrucciones mencionadas en el ejemplo correspondiente, pero en este otro caso, todas las cosas están abarcadas.
Y tal vez Mientras hacer abarca todo lo que puede hacerse con Hacer mientras, pero repito, no sé, no soy de usar mientras.

Lo siguiente no me atrevo a decir que sea insustituíble pero me ha servido para reducir la cantidad de casos que se requieren nombrar.
- Tomar valor de variable o activar función, según referencia.
Con esto se puede tomar valores variables o activar funciones variables.

La pregunta está en el título y ya di mi opinión. Instrucciones como Mostrar algo en la pantalla o Emitir un sonido no las conté porque no me interesan, pero si a uds se les ocurre alguna que les parezca importante escucho.
Ah, y Cerrar el programa es bastante obvia...

El contexto del tema es...
Spoiler: show
Para solucionar dudas "simples" conozco 3 métodos:
A- Requiere conocer una lista de soluciones en situaciones similares, y los candidatos a generar son ecuaciones tales que encajen con los ejemplos (relaciones situación-solución, X-Y, o todas las variables que hagan falta).
B- Se pueden generar todo tipo de candidatos, pero se requiere saber la condición que deben cumplir.
C- Se pueden generar todo tipo de candidatos, pero se requiere saber el código para generarlos de modo que cumplan la condición que se quiere.

En general me dan algún obstáculo:
A- No sé generar funciones.
B- No siempre sé expresar la condición que deben cumplir.
C- No siempre sé el código.

Considero que aprender a generar candidatos "complejos" ayudaría.
En el caso A, está claro, debo generar funciones.
En B, generar descripciones de condiciones me ayudaría a entender cómo expresar la que no imagine o comprenda.
Y en C, es muy similar a B.

Generar candidatos así 1, 2, 3, etc, es fácil.
Generar textos así A, B, C... AA, AB... no es tan difícil.
Generar funciones... sí me es difícil.

Son modificaciones a una variable.

¿Cuales son esas posibles modificaciones?
En principio pensé en cosas "simples" como redondear hacia abajo, pero en eso me di cuenta que esas cosas en el fondo son instrucciones más simples o menos compuestas.
En el fondo, las posibles modificaciones son todos los códigos posibles que hagan una modificación a una variable, que causen resultados distintos entre sí en algunos casos.

Entonces ¿cuales son las instrucciones insustituíbles en cuanto a causar diferentes modificaciones a una variable?
Eso estoy consultando.

Aunque veo que hay instrucciones, o más precisamente modificaciones, que no nombré, porque lo hice un modo muy general, sin saber bien qué cosas abarcaba.
Redondear hacia abajo se puede hacer con Si y demás, y quizá sumar 1 a una variable también, pero está claro que es mejor usar el +...
Pero bueno, hay modificaciones que no se pueden hacer tan simples y necesito las instrucciones "elementales" para poder formarlas.

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Arriba
 Perfil  
Responder citando  
 Asunto: Re: ¿Qué instrucciones son insustituibles en programación?
NotaPublicado: 16 Ene 2018, 10:25 
Desconectado
Avatar de Usuario

Registrado: 03 Ene 2018, 17:00
Mensajes: 251
Tachikomaia escribió:
¿Qué instrucciones son insustituibles en programación?


Antes de leer el spoiler.
Luego edito si es necesario.

Tu micro no ejecuta las instrucciones que indicas, sino otras de más bajo nivel.
El juego de instrucciones indispensable es aquél que permita a un micro operar sus registros.

Dado que hoy en día existen instrucciones específicas para multimedia y otras características específicas de la CPU,
para aproximar una lista de instrucciones insustituibles deberías irte al juego de instrucciones de un moto 68K, o similar.
Pero te adelanto que la carga de registro, el salto JMP y los corrimientos de bits son lo más imprescindible.



EDITO: No comprendo lo expresado el spoiler.
Si quieres la definición de la sintaxis de un lenguaje, incluida aquella que concierne a la operación con variables, busca el BNF de ese lenguaje.
Las operaciones compuestas del API de un lenguaje solo pueden ser refritos de lo declarado en él.


Arriba
 Perfil  
Responder citando  
 Asunto: Re: ¿Qué instrucciones son insustituibles en programación?
NotaPublicado: 16 Ene 2018, 11:04 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 8356
Iba a aclarar que el tema no era irse al lenguaje máquina, electricidad o esas cosas, pero con todo se me olvidó. Aclarado ahora.

Más tarde te respondo mejor, aunque ya desde el inicio me esforcé bastante en aclarar el tema, lo que me queda es buscar según las pistas que me has dado.

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Arriba
 Perfil  
Responder citando  
 Asunto: Re: ¿Qué instrucciones son insustituibles en programación?
NotaPublicado: 16 Ene 2018, 12:38 
Desconectado
Avatar de Usuario

Registrado: 10 Jun 2011, 21:52
Mensajes: 4353
https://softwareengineering.stackexchan ... g-complete

_________________
Spoiler: show
Imagen


Arriba
 Perfil  
Responder citando  
 Asunto: Re: ¿Qué instrucciones son insustituibles en programación?
NotaPublicado: 16 Ene 2018, 22:53 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 8356
Mustafá Mond:
Suponte que quieres producir todos los textos posibles (no importa si carecen de significado) ¿qué necesitas? Ir combinando los símbolos usados al escribir. No necesitas combinar palabras o en definitiva texto formado por varios símbolos, porque eso se formaría usando símbolos sueltos.
Si tienes los elementos A, B, C (supongamos que sólo existieran esas letras) y AB, ese último es redundante porque es obtenible mediante los anteriores, está compuesto por ellos.
Si combinas esos elementos tienes:
A+A = AA
A+B = AB
A+C = AC
A+AB = AAB
Y si sigues llegará un punto en que tendrás A+A+B=AAB, un resultado que ya tienes. Parece claro que se quiere evitar resultados repetidos, así que algo sobra. El elemento AB, por lo ya explicado.

Ahora suponte que en vez de textos se quieren producir instrucciones tales que modifiquen una variable ¿qué necesitas? Parece claro que otra vez trata de combinar ciertos elementos de modo que los resultados no se repitan, en la medida de lo posible. ¿Cuales serían los elementos necesarios para esto?

Si lo pongo más claro se convierte en harina :lol:

Citar:
busca el BNF de ese lenguaje.
No sé si entiendo esto:
https://es.wikipedia.org/wiki/Notaci%C3 ... ackus-Naur
...pero en los ejemplos sólo parecen estar poniendo la estructura de toda instrucción, lo cual, um... tal vez por lógica debería servirme, pero no creo, más bien preciso saber cuales son las instrucciones insustituibles... ...
Es como si preguntara qué es lo más necesario y me dijeses "el Ser", no me sirve porque no sé qué abarca. Si me dijeses "la partícula Dios y el espacio" supongo que sería cuestión de juntar las partículas de diferentes formas, pero yo con "<simbolo> ::= <expresión con símbolos>" no sé qué puedo hacer, necesitaría saber las cosas que pueden ubicarse en esas variables pero eso sería como saber todas las funciones definidas de un lenguaje ¿no? Eso no me dice si dichas funciones están compuestas por otras o no.

Repito que no sé si entendí, de hecho creo que no.

Puedes, en principio, pensarlo de este modo. Suponte que te pregunto cómo harías Convertir al absoluto(Número) si no existiera la función que suele existir en los lenguajes.
Eso te lo preguntaría (en teoría) respecto a cada función que suela existir.
En los casos en que no sepamos la respuesta se puede suponer que esa función es insustituible.
Pero obviamente no tienes que pensar una por una, simplemente "revuelve" en tu mente en busca de insustituibles. Si me preguntas cuales son las figuras regulares sin curvas yo no me estrujaría haciendo todas las combinaciones de líneas, simplemente diría las que se me vengan a la mente: Cuadrado, triángulo...
Bueno, uf ¿qué instrucciones se te vienen a la mente cuando hablamos de las insustituibles?

Busqué BNF of Actionscript y Actionscript BNF y me aparecen cosas raras, algunas de JAVA.
http://data.bnf.fr/13745419/actionscrip ... ammation_/
Si encuentras algo tú, bárbaro.

Tengo entendido que este lenguaje está basado en Javascript. Además el que yo uso es de MACROMEDIA Flash 5, es decir, no el de Adobe, el que uso es muy viejo. Pero bueno, si lo encuentras en una versión nueva supongo que no importará.

Para Javasript fue más fácil hallar.
No entiendo ni J.
http://www.lecad.fs.uni-lj.si/documents ... cript.html
¿Seguro que es algo así lo que preciso?

¿Qué es parse? Los que buscan esto suelen mencionar that word.
"analizar gramaticalmente"
Ya.

------------------------------------------------------------

Niiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiil y tus links:
¿Qué es turing complete?

Whats a turing complete language?
https://es.wikipedia.org/wiki/Turing_completo

¿Crees que yo o alguien que no lo sepa pueda deducir algo a partir de esto?
En la teoría de computadoras reales y virtuales, de los lenguajes de programación y de otros sistemas lógicos, un sistema Turing completo es aquel que tiene un poder computacional equivalente a la máquina de Turing universal. En otras palabras, el sistema y la máquina universal de Turing pueden emularse entre sí.
Aún cuando es físicamente imposible que existan estas máquinas debido a que requieren de almacenamiento ilimitado y probabilidad cero de falla, de forma coloquial la completitud de Turing se atribuye a máquinas físicas o lenguajes de programación que podrían ser universales si tuvieran almacenamiento infinito y fueran absolutamente fiables



https://es.wikipedia.org/wiki/M%C3%A1qu ... _universal
En ciencias de la computación, una máquina universal de Turing (UTM) es una máquina de Turing que puede simular una máquina de Turing arbitraria en la entrada arbitraria. La máquina universal esencialmente logra esto mediante la lectura de tanto la descripción de la máquina a ser simulada como también la entrada misma de su propia cinta. Alan Turing introdujo esta máquina en 1936-1937. Este modelo es considerado por algunos (por ejemplo, Martin Davis (2000)) el origen del computador de programa almacenado — usado por John von Neumann (1946) para el "instrumento de computación electrónica" que ahora lleva el nombre de von Neumann: la arquitectura de von Neumann. Es también conocida como una máquina de computación universal, máquina universal.

"una máquina universal de Turing (UTM) es una máquina de Turing que puede simular una máquina de Turing arbitraria en la entrada arbitraria"
WOOOOOOOOOOOOOOOOOOW.
Y una cancha cuadrada es una zona con forma cuadrada. ¡Cómo se aprende leyendo!

Explica todo eso, por favor. O hago un tema, no sé.

Acá parece mejor explicado:
https://stackoverflow.com/questions/728 ... g-complete

A Turing Complete system means a system in which a program can be written that will find an answer (although with no guarantees regarding runtime or memory).
¿Un programa que encuentra respuestas? Lo mío es más específico, no es respuesta a cualquier problema, son programas que buscan respuestas para problemas particulares. No le dices "es un problema de ajedréz", el programa sólo sirve para cierto tipo de problemas (los especifico al hacer el programa, no cuando se ejecuta. Eso lo intenté hace años y me dijiste "es más fácil hacerlo en texto plano" ¿recuerdas? Supongo que no, pero no tengo el link. ¿Te acordás de aquél duelo que tuvimos donde debíamos hacer una tabla estilo Excel? Bueno, fue por aquellos tiempos, ahora estoy con algo más simple).
El tiempo no lo tengo en cuenta, en teoría podrían pasarse infinitamente buscando una solución si las posibilidades a poner a prueba son infinitas.
Y en cuanto a memoria creo que estoy MUY lejos de tener un problema, no estoy hablando de problemas donde se requiera guardar "metas" alcanzadas (búsqueda del camino más corto), es simplemente tener un candidato y modificarlo de modo que siempre surja uno diferente, el anterior se borra, no ocupa espacio. Y los candidatos son poco texto... por ahora...

El mensaje que sigue allí parece más completo, aunque diferente.
Alan Turing created a machine that can take a program and run that program and show some result. But then he had to create different machines for different programs. So he created "Universal Turing Machine" that can take ANY program and run it. Tal vez estás adelantándote. Yo no pretendo que mi programa generador de instrucciones ejecute esas instrucciones que él construya. Si acaso eso es lo que dice ese texto.
En teoría, es lo que yo "precisaría" para averiguar si las instrucciones generadas son las que preciso, es decir, sería la forma más rápida, si pudiera decir también al programa las condiciones que esas instrucciones deben cumplir. Pero no es el único modo de averiguarlas, lo puedo hacer yo mismo revisándolas.
Por ahora sólo quiero generarlas, como genero 1, 2, 3, etc. Es decir, si las genero es porque busco alguna que cumpla ciertas condiciones, pero por ahora no estoy pensando en describir tales condiciones, sería otro problema si no supiera cómo describirlas, para solucionarlo tendría que generar condiciones y decir las condiciones para que las condiciones generadas sean las que busque. No, estoy con algo mas simple. Genero instrucciones y yo mismo veré cuales son las que preciso. Lo otro es un ideal que no persigo aún.

Citar:
Most modern programming languages like Java, JavaScript, Perl etc are all turing complete because they all implement all the features required to run programs like addition, multiplication, if-else condition, return statements, ways to store/retrieve/erase data and so on.
[/quote] Esto puede que haya dado en el clavo. Pero ¿exactamente qué puede hacer una turing machine? ¿puedo por ejemplo romper partes de un disco duro? Windows parece que puede xD

Dudo que este tema que plantee esté necesariamente vinculado a la TM, es decir, esa tendrá una serie de funciones que quizá a mí no me interesen, por ejemplo esa de romper partes de discos duros no me interesa (al menos por ahora). Entonces lo que yo pido es algo más simple. Es como si preguntara qué preciso para hacer una pizza y tu me respondieras qué preciso para hacer una pizzería. No me compliques hombre xD

Aunque ha sido interesante...

Como este blog pero Chrome no me permite entrar por temas de "seguridad"
https://medium.freecodecamp.com/javascr ... .6t0b2w66p
Lo dejo acá para luego verlo (con una versión antigua de Mozilla, que tiene otros modos de interpretar las páginas, protocolos TPP o no sé cuanto).

"A Turing complete language is one that can perform any computation"
WOOOOOOOOOOOOOOOOOOOOW, qué explicación!!!

Lo demás parece estar relacionado con 0s y 1s. ¿Está máquina pasa por todos los estados posibles (excepto cambios en su imput) hasta hallar el resultado? Si es eso, sí es similar a lo que quiero hacer... pero en mi caso son menos estados, no profundizo tanto. Eso de cambiarle estados así a la ligera no sé qué puede provocar, me refiero a que se puede trancar o romper... creo...

A Turing machine can make decisions based on what it sees in memory - The 'language' that only supports +, -, *, and / on integers is not Turing complete because it can't make a choice based on its input, but a Turing machine can. ¿Qué significa eso? Lo puedo traducir pero entenderlo no.
"Una TM puede tomar decisiones basada en qué ve en memoria. El lenguaje que sólo soporte +, -, * y / en números enteros no es TMC porque no puede tomar una decisión basada en su imput, pero una TM puede."
¿Qué importancia tiene esto? ¿la precisión del resultado de la operación? Entonces vale, entiendo, sino no.

Una TMC es más útil que una máquina normal o no?

Porque si una TMC puede "comerse los mocos" y una normal no entonces qué me importa. ¿Se entiende? ¿es algo importante eso de "poder tomar una decisión basada en su imput"? No entiendo, todos los programas pueden hacerlo xD Salvo que usen otros programas para hacerlo, pero a mí eso no me importa. O sí debería... tal vez. Pero mira, yo simplemente quiero generar instrucciones y pensar qué hacen y si fuera el caso ejecutarlas. Con el proyector de Flash. Obviamente dicho proyector funciona con unas instrucciones que yo desconozco, y las instrucciones que yo le de también están hechas de instrucciones en lenguaje máquina, pero yo no quiero llegar a tanto...
Es como si preguntara cuales son los posibles estados de un documento de Paint (estados normales, los estados del dibujo) y me digan... no sé... algo mucho más allá, cómo está hecha cada una de los posibles estados, 0s y 1s, no...
Yo pido algo similar a las posibles instrucciones del lenguaje que uso, no el cómo esas instrucciones son en términos de un nivel más bajo.
Un punto en Paint se puede hacer con el lapiz, con el pincel, con paste, etc. Me interesa el punto, no cómo se puede hacer. Me basta con el lápiz y la opción de cambiar colores. Y no pido qué instrucciones son usadas para que la computadora grabe que en ese lugar de la pantalla hay un punto, me basta con el punto, el color y el lugar.
En lo que yo pido es algo similar. Una repetición se puede hacer con if y goto o con do while. Me basta con una forma. Y no me interesa saber cómo está hecho el if, SALVO que esté hecho de modo que con otras instrucciones DEL LENGUAJE lo pueda emular.

Puf, puf...

A Turing machine has random access memory - A language that only lets you work with memory through push and pop operations to a stack wouldn't be Turing complete. If I have a 'language' that reads a string once and can only use memory by pushing and popping from a stack, it can tell me whether every ( in the string has its own ) later on by pushing when it sees ( and popping when it sees ). However, it can't tell me if every ( has its own ) later on and every [ has its own ] later on (note that ([)] meets this criteria but ([]] does not). A Turing machine can use its random access memory to track ()'s and []'s separately, but this language with only a stack cannot. ¿Y esto? ¿me puede ser útil? ¿qué es?

I think the importance of the concept "Turing Complete" is in the the ability to identify a computing machine (not necessarily a mechanical/electrical "computer") that can have its processes be deconstructed into "simple" instructions, composed of simpler and simpler instructions, that a Universal machine could interpret and then execute. Por ahí van los tiros, pero yo hablo de las instrucciones de un lenguaje de programación "normal", no de bajo nivel xD

Bueno ahora que entendí mejor voy a revisar tu link mejor.

...Ahora tengo la duda de qué tipo de lenguaje uso, imperativo o declarativo. Haré un tema.

In general, for an imperative language to be Turing-complete, it needs:

A form of conditional repetition or conditional jump (e.g., while, if+goto)
A way to read and write some form of storage (e.g., variables, tape)
Suponiendo que uso un imperativo, entonces no estuve muy errado en mi respuesta, aunque la pregunta que están respondiendo es otra (probablemente abarca la mía).

Los arrays, que por ahí mencionan, son como variables mencionadas así V1, V2, etc. Quizá pueden sustituir a las variables sueltas, en definitiva habría que elegir una cosa u otra, pero yo elijo la que me parece más simple, que son las variables comunes y corrientes (de hecho un array es una forma de variable, al menos en algunos programas).

Bueno, ya está, ahora intentaré crear el generador de instrucciones y si falta alguna importante en las que dije lo veremos.

Dejo el link que me falta ver
https://medium.freecodecamp.com/javascr ... .6t0b2w66p

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Arriba
 Perfil  
Responder citando  
 Asunto: Re: ¿Qué instrucciones son insustituibles en programación?
NotaPublicado: 16 Ene 2018, 22:58 
Desconectado
Avatar de Usuario

Registrado: 10 Jun 2011, 21:52
Mensajes: 4353
Pero... si ni siquiera has llegado a la parte de Turing tarpit...

_________________
Spoiler: show
Imagen


Arriba
 Perfil  
Responder citando  
 Asunto: Re: ¿Qué instrucciones son insustituibles en programación?
NotaPublicado: 17 Ene 2018, 00:11 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 8356
En tu link se lo menciona en la 2nda respuesta, que la he leído.

En las páginas de wikipedia no aparece la palabra tarpit.

Y acá tampoco
https://stackoverflow.com/questions/728 ... g-complete

Lo googleo a ver

https://en.wikipedia.org/wiki/Turing_tarpit
Lo leí. ¿Ahora qué se supone que debo decir y no haya dicho aún?

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Arriba
 Perfil  
Responder citando  
 Asunto: Re: ¿Qué instrucciones son insustituibles en programación?
NotaPublicado: 17 Ene 2018, 09:39 
Desconectado
Avatar de Usuario

Registrado: 03 Ene 2018, 17:00
Mensajes: 251
Tachikomaia escribió:
Ahora suponte que en vez de textos se quieren producir instrucciones tales que modifiquen una variable ¿qué necesitas? Parece claro que otra vez trata de combinar ciertos elementos de modo que los resultados no se repitan, en la medida de lo posible. ¿Cuales serían los elementos necesarios para esto?


Entiendo que me preguntas por la completitud de un juego mínimo de instrucciones de programación.
Por completo se tiene que pueda realizar cualquier operación de computación en un tiempo dado.

La respuesta depende de a qué nivel quieras situarte.
En última instancia, disponiendo de operadores lógicos (AND, OR, NAND, XOR, NOT, etc), ya tienes lo necesario para modificar cualquier variable.
Te copio de la wiki un sumador completo, que modifica una variable S (de un bit), calculándola como la suma de dos variables A y B. (C es el acarreo de la suma, por eso se llama completo):

Imagen

En realidad la puerta NAND ya sería un conjunto completo de instrucciones (con ella se pueden implementar todas las demás).
Lo mismo para la NOR, o para AND+NOT.

A un nivel un poco más alto, un ensamblador añade unas pocas instrucciones para controlar el flujo, mover registros, etc.
Tales instrucciones al final se componen de puertas lógicas y de la arquitectura del micro en cuestión.

El alto nivel solo aporta una serie de comodidades, pero no afecta al conjunto mínimo de instrucciones, que es por lo que tú preguntas.
Si tu programa se va a compilar a un código máquina que no dispone de un if, qué mejor indicador de que el if de alto nivel no es atómico sino una combinación de comparaciones y saltos condicionales, y que por tanto lo podrías suplantar con un puntero a la instrucción que se ejecuta y un salto condicional.

El compañero ya te ha citado lenguajes como el Brainfuck, que con solo un movimiento de puntero, dos operadores aritméticos, y dos saltos condicionales, cumple tu petición de poder realizar cualquier modificación posible en una variable.

De todas formas se computa con un objetivo. Y el tuyo no lo especificas.
No es lo mismo llenar variables con permutaciones de un juego de valores,
que llenarlas con números "aleatorios" para cuyo calculo necesitarás otras instrucciones.


Arriba
 Perfil  
Responder citando  
 Asunto: Re: ¿Qué instrucciones son insustituibles en programación?
NotaPublicado: 18 Ene 2018, 00:34 
Desconectado
Avatar de Usuario

Registrado: 10 Jun 2011, 21:52
Mensajes: 4353
El contexto es importante, pero lo más importante es esto:

https://en.wikipedia.org/wiki/One_instr ... t_computer

Con una instrucción vale, aunque no puede ser cualquiera, claro.

_________________
Spoiler: show
Imagen


Arriba
 Perfil  
Responder citando  
 Asunto: Re: ¿Qué instrucciones son insustituibles en programación?
NotaPublicado: 18 Ene 2018, 22:28 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 8356
No he entendido bien lo que dijeron, y tal vez a su vez no me entendieron.

------------------------------------------------------------------------

Por otro lado me di cuenta de que "Tomar parte(variable)" parece y probablemente sea innecesario, y que "Sino" lo es, pero usarlo es más práctico que no hacerlo.

Spoiler: show
Tomar parte es innecesario si cada variable de la que fuera a usarse alguna parte fuese la suma de otras variables hechas de sólo un signo. Por ejemplo en vez de hacer:
Numero = 12345
// Ver si la suma de sus partes es 10
Suma = Tomar parte 1 (de Número) + Tomar parte 2 (de Número), etc...
Si suma == 10

etc

Se puede hacer:
Numeroparte1 = 1
Numeroparte2 = 2
etc
Suma = Numeroparte1+Numeroparte2, etc
etc

Es lo mismo pero en el 2ndo caso no se usó "Tomar parte".

Spoiler: show
"Sino" puede ser sustituído por un "Sino si" cuya condición se cumpla siempre, pero es más práctico poner simplemente "Sino".

El tema, a su vez, es que no se generen códigos repetidos. Si fuese a usar "Sino si" con condiciones que se cumplan siempre, no tendría sentido que se generen 9092039 códigos con condiciones así pero diferentes entre sí.

Yo diría de no usar condiciones como esas, y sí "Sino". Aunque en este caso habría que indicar al generador de instrucciones qué condiciones se cumplirían siempre, para que las evite. Lo mismo podría hacer con las que nunca vayan a cumplirse.

Y con este tema de la practicidad de Sino, me doy cuenta que podría usar otras funciones también por practicidad, sólo tendría que evitar que el generador de instrucciones genere las que son iguales a esas pero hechas con instrucciones más simples. Tendría pues que prohibirle hacer ciertas combinaciones.

No he pensado mucho en el tema, pero si vamos al caso estoy pensando qué nombres pueden tener las variables.

Como las instrucciones que quiero son para agregarlas en búsquedas por fuerza bruta y en todas éstas uso la variable C (Candidato), está claro que esa sería una posibilidad.

Como puede haber más de un C, serían C1, C2, etc.

Luego está lo que llamo variables del problema o la duda, que las llamo V1, V2, etc.

Tal vez a veces normalmente sea práctico definir cosas de este modo:
Triángulo1Lado1
Triángulo1Lado2
Triángulo1Lado3
Triángulo1Ubicación
Triángulo2Lado1
Triángulo2Lado2
Triángulo2Lado3
Triángulo2Ubicación
Cuadrado1Lado1
etc

O lado izquierdo, etc.

Que en mi caso podría ser:
V1A1
V1A2
etc

Pero si eso es necesario o no, se verá.

Por último estarían las variables que llamo "internas", usadas para que no se pierdan valores mientras 2 o más variables intercambian los suyos, o para conservar el resultado de una operación para evitar realizar las operaciones de nuevo en caso de que se requiriera el resultado y fuese claro que será el mismo.
I1, I2, etc.

Ahora bien, esos nombres sólo tienen sentido si las variables nombradas así son usadas como el nombre marca. Indicar al programa cómo usar cada variable según su inicial puede ser lioso.

Por ahora usaré D (Desconocida) y cambiaré los nombres manualmente si fuera a usar el código.

¿Daría problemas?
Si fuese necesario generar variables internas y del problema, y fuese necesario analizar un conjunto, sería complicado marcar qué variables analizar. Tal vez el programa se ingenie xDDDD pero no es lo mismo tener:
V1
V2
I1
V3
I2
Y analizar todas las V.
Que tener
D1
D2
D3
D4
D5
Y analizar D1, D2 y D4, info que si estuviera guardada sería en una serie de Ds que deberían indicar donde empiezan y donde terminan, juas.

Mejor usaré C, V e I... aunque al generar el código puede que no sean lo que dicen ser.

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 10 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO