Ver Mensaje Individual
  #3  
Antiguo 24-09-2017
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Existe un numero realmente pequeño de conceptos universales en la programación. De esto, el creador de PASCAL determino que:

Cita:
PROGRAMA = DATOS + ALGORITMOS
Donde muchos se pierden es que solo se preocupan por los algoritmos, sin pensar en los datos. Aqui "datos" se refiere a LA ESTRUCTURA DE LOS DATOS, no meramente a su contenido como lo veríamos ingenuamente, ni tampoco a su *implementación concreta* ya que esta puede cambiar (aunque exista una forma canonica de hacerlo en la programación), sino literalmente, a su estructura o FORMA.

Basicamente, hay un pequeño conjunto de "formas" generales, que a nivel abstracto son lo mismo, pero que se *implementan* de formas diversas.

Pero estas formas generales (*DATOS*) se operan de forma igual con sus correspondientes (*ALGORITMOS*)!

Asi que el "truco" es pensar: Que forma de datos estoy operando, asi sabre que algoritmos le aplican.

-----

Estas son las siguientes. Lease "Valores de tipo ....":
P.D: Coloco el valor + el Tipo/Type

- Unitarios/Scalars: 1:int, true:bool, "hello":string, cliente:Object(Customer)

Se podria decir que un scalar es un caso especial de las siguientes formas de grupo:

- Colecciones/Listas - Collections/List: [1, 2, 3]
que pueden ser representados como: Arrays, LinkedLists, Queue, InifiniteSequences, etc

Esta es la forma mas familiar

- Tablas/Relaciones/Relations/DataSets/Tables: Clientes:TDataSet, Ciudades:HashMap[NombreCampo:ArrayOf...], etc

Estas son un poco mas complejas, son estructuras de 2 dimensiones, y son el fundamento de la bases de datos relacionales. Se podria decir que los escalares y las listas son casos especiales de las relacionales

- Grafos/Arboles/Graphs/Trees: Cuentas:BTree, Genealogia:AVTree, *XML:Tree*

Y por ultimo los grafos, con su mucho mas util (osea, en la practica) caso especial de los arboles <-- LEE ESTO.

Un XML es de esta familia. Es simplemente una forma de *serializar* o convertir a una forma que permita ser almacenada en disco, un arbol *cualquiera*.

Puedes usar un visualizador grafico, que permite darse cuenta de esto, como:

https://codebeautify.org/xmlviewer

XML es *complejo*. De ser posible, es mejor usar algo como Json o similar.

-----
La parte importante es que cada "forma" tiene un numero finito y corto de tareas universales que se hacen con estas. Por ejemplo un lista:

- Crear
- Recorrer valor a valor
- Ir a la posición X (que puede derivarse de la anterior!)
- Determinar si es finita o infinita (mirar sus tamaño)

Y ya. Puede que adicionalmente se permita modificar la lista, pero estas tres tareas son todo lo que se necesita para hacer TODAS LAS DEMAS.

Igualmente, los arboles tienen un conjunto pequeño de tareas.

Entre estos, el importante es:

- Recorrer el arbol:

https://es.wikipedia.org/wiki/Recorrido_de_%C3%A1rboles

Una vez que domines como operar un arbol de forma generica, ya veras que "pasar" a XML es "pan comido", de la misma manera que si entiendes como se opera una matriz volverla un archivo plano no es nada del otro mundo.
__________________
El malabarista.

Última edición por mamcx fecha: 24-09-2017 a las 17:47:16.
Responder Con Cita