Aprendendo as coisas de forma mais fácil

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Aprendendo as coisas de forma mais fácil

Mensagem por JoséQuintas »

Lembram de uma coisa antiga sobre programar:

A primeira coisa a fazer, quando se vai programar, é desligar o computador.

Então....
Não é necessáriamente desligar o computador.
É desligar "a cabeça" do computador, desligar dos bits e bytes.

Vai fazer compras, faz uma lista de compras.
Pode ser no mercado, na farmácia, no açougue.... uma lista pra cada.
De repente nem usa papel, apenas mentaliza na cabeça.

Aí você tem lá uma lista de cada, com o que vai comprar e a quantidade.

Pronto.

Como você fala das listas ?
Tem lá as coisas talvez numeradas, 1,2,3,4,5,6...
Cada mercadoria tem nome e quantidade e talvez adicional sobre embalagem
Você pode dizer item 1, ou primeiro item, ou nome do produto, quantidade do produto, último da lista, etc.
Pode dizer lista do mercado, lista da farmácia, lista do açougue.

Notou alguma semelhança ?
ARRAY
#define
HASH
CLASSE / OBJETO

Antigamente.... eram só variáveis básicas

Código: Selecionar todos

lista01 := "tomate 1kg"
lista02
um pouco pra frente vieram os arrays - listas

Código: Selecionar todos

Lista[1] := { "tomate", "1kg" }
um pouco pra frente, #define, começou a parecer o "normal"

Código: Selecionar todos

#define PRO_NOME 1
#define PRO_QTDE 2
Lista[ nOrdem ] [ PRO_NOME ] := "Tomate"
Lista[ nOrdem ] [ PRO_QTDE ] := 1
um pouco pra frente, o hash

Código: Selecionar todos

Lista[ nOrdem ] [ "Nome" ] := 'Tomate"
Lista [ nOrdem ] [ "Qtde" ] := 1

Um pouco pra frente, a classe

Código: Selecionar todos

Lista[ nOrdem ] Produto:Nome := "Tomate"
Lista[ nOrdem ] Produto:Qtde := 1
Qual o primeiro item da lista ? e o último ?

Pra deixar o computador parecido:

Código: Selecionar todos

Lista:PegaPrimeiro()
Lista:PegaUltimo()
Então....
As coisas estão ficando cada vez mais iguais à linguagem humana.

Olha aquela moça que linda.... aonde ? atrás do careca.

O que sua cabeça faz ? Vai olhando um por um, procurando o careca, pra encontrar a mulher.

Código: Selecionar todos

FOR EACH pessoa IN fila
   IF pessoa:cabeca == "careca"
       Pessoa:DeTras (seguinte)
   ENDIF
NEXT
ou

Procure o careca.... achou... agora olhe atrás

Código: Selecionar todos

nPos := hb_AScan( Pessoas, { | e | e:Cabeca == "careca" } )
nPos := nPos + 1 // moça
Então.....
Se pensar em bits e bytes, entender a diferença complica.
Mas se comparar com a coisa prática do dia a dia, é apenas usar cada vez mais a linguagem humana no computador.

Entendendo essa "teoria" da coisa, a prática fica mais fácil.
array, hash array, json, classe, xml, etc. é tudo tentando imitar a forma "humana" de interpretar as coisas.

Já tinham percebido isso ?

O detalhe de cada um vém depois.

Ao começar a alterar HMG3 pra objeto, isso tudo fica bem claro.
Só está alterando o formato de guardar as coisas, de array pra classe.
Ao invés de controle[2][1], controle[3][1] pra Controle(1):Name, controle[1]:Handle
Na linguagem humana: olhe lá o rosto da moça na cadeira 3
no computador

Código: Selecionar todos

pessoa0302
pessoa[3][2]
pessoa[3][ MOCA_ROSTO ]
pessoa[3][ "rosto" ]
pessoa[3]:Rosto
Tudo diferente, mas tudo igual.

E conforme a programação vai avançando... a "nova tecnologia".... que se trata apenas de representar de forma "mais humana".
e mesmo nisso... cada um tem seu jeito preferido.

Cada vez mais humano.... cada vez mais humano... até o ponto máximo, que é a IA.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder