Hungarian rapsody

A computação é uma ciência “recente”, que se move quase que na velocidade da luz em comparação com as demais ciências.

Em pouco tempo diversas mudanças ocorrem e tecnologias dominantes são praticamente varridas quase que para baixo do tapete em “segundos”.

É uma área em constante mudança que acontecem desde a concepção da tecnologia em seus mínimos detalhes, mesmo os invisíveis a olho nú, até aqueles estruturais e que abalam o ecossistema todo, ecoando através dos tempos deixando sua marca nos mais diversos meios de comunicação.

Nesse cenário a indústria de desenvolvimento de software moderna tem aprendido muito através do desenvolvimento de novas ferramentas que auxiliam a construção de tecnologias e produtos, entretanto nem sempre existiram IDE’s poderosas capazes de integrar com debuggers e analisadores estáticos, dentre outros ferramentais disponíveis na atualidade.

Borland Turbo C 2.0

No inicio dos anos 90, IDE’s como Turbo Pascal 5.0 e Turbo C 2.0, da Borland, começavam a revolucionar a forma como softwares eram desenvolvidos, com seus debuggers integrados, excelentes editores de código com seus syntax highlighting.

Entretanto nessa época os desenvolvedores, em sua grande maioria, não terceirizavam sua confiança e competência nas IDE’s e na maioria das vezes utilizavam ou desenvolviam técnicas para auxiliar a organização, compreensão e depuração do código.

Charles Simonyi

Nessa mesma época, Charles Simonyi, um jovem engenheiro de software nascido na Hungria e que havia sido recrutado por Bill Gates para trabalhar no desenvolvimento da suite Microsoft Office na Microsoft, começou a popularizar uma técnica que já havia sido criada por ele em seu antigo emprego na Xerox PARC.

Essa técnica consiste em uma notação de código, independente de plataforma e linguagem, que tenta padronizar prefixo de nomes de variáveis de acordo com seus tipos e comportamento, bem como estilo de nomes de funções (se estendendo a classes) de forma a deixar o desenvolvimento uniforme e com um padrão conhecido e documentado, auxiliando a compreensão principalmente em grandes projetos e por pessoas diferentes.

Esse padrão é conhecido como notação húngara (hungarian notation) e foi popularizada pela Microsoft em suas literaturas oficiais, principalmente nos anos 90, sendo ainda um padrão forte dentro da empresa até os dias atuais.

Programming Windows 3.1

Eu mesmo conheci essa notação em 1993, quando adquiri a terceira edição de Programming Windows 3.1, de Charles Petzold – Microsoft Press, esse também um dos melhores escritores de livros técnicos que eu já li (menção honrosa também a Peter Norton), me apresentando assim essa notação.
Me rendendo ao entusiasmo de Petzold, decidi tentar escrever todo software que eu pudesse, utilizando notação hungara para saber se traria algum benefício, não só por isso mas também porque meus softwares começavam a se tornar cada vez maiores e complexos, portanto eu deveria tornar as coisas mais compreensíveis para o EU do futuro.

Apesar de ser alguém, corportivamente falando, com raízes fortíssimas no UNIX, tendo iniciado no XENIX, passado por SCO UNIX, IBM-AIX e Sun Solaris, confesso que era bastante influenciado pelo estilo Microsoft, antes dela se tornar esse elefante branco que é hoje, pois ela era a Google da época e portanto uma forte influenciadora dentre os jovens programadores, algo em proporções muito maiores do que ela mesmo representa nos dias atuais junto aos programadores mais jovens.
Pessoalmente, a Microsoft foi um dos pais do padrão MSX, portanto era “alguém” por quem eu tinha um certo carinho até então e por isso usar uma notação difundida pela Microsoft e não pela galera do UNIX, a qual eu estava mais corporativamente inserido, não foi nada estranho.

Sobre a notação húngara, abaixo vou deixar alguns exemplos retirados desse documento, que é bem simples e direto e que faço questão de deixar aqui em meu site, mas também fazer referência ao link original onde ele originalmente está hospedado aqui e que me pareceu ser uma plataforma de ensino inglesa bem interessante.

[]’s
PopolonY2k

Print Friendly, PDF & Email

O melhor inimigo da humanidade

O ATARI VCS (2600) é um dos grandes exemplos da indústria de tecnologia que demonstra ser possível desenvolver software que entregue muito mais performance do que “teoricamente” o ecossistema em que ele irá “viver” suporta.

A economia da época impossibilitava um mercado de massa a baixo custo, entretanto em um mercado com elevado nível técnico esse tipo de limitação termina se transformando no desafio a se superar.

Para baratear o custo do produto os engenheiros da ATARI utilizaram o processador MOS 6507, que era uma versão mais barata (ainda) do clássico MOS 6502 (o mesmo do AppleII) e que dentre suas limitações tinha um BUS de endereçamento de apenas 13 bits, possibilitando até 8 KBytes de RAM, ao invés dos 16 bits do 6502, capaz de endereçar até 64 KBytes.

Atari 2600 (VCS) block diagram

Tudo isso feito para evitar a utilização de um componente caríssimo na época, que eram as memórias RAM, o que explica também a falta de um FrameBuffer (um dos componentes mínimos mais básicos para se desenvolver alguma saída visual) e também seus apenas 128 BYTES de RAM.

O principal componente que possibilitou essa redução da quantidade de memória no Atari 2600 foi o TIA, que é um chip customizado que podemos sem duvida nenhuma chamar de “coração” do Atari 2600, uma vez que além dos gráficos ele também é o responsável pela geração de sons e da leitura dos joysticks.

Com toda essa capacidade e multiplas funções, o TIA, é naturalmente um componente bastante complexo e dificil de se programar.

Apesar de toda essa limitação, o Atari 2600 foi capaz de entregar obras-primas inimagináveis em um primeiro momento e talvez até mesmo para os dias atuais para computadores cujos recursos são praticamente infinitos.

[]’s
PopolonY2k

Referência na internet

Print Friendly, PDF & Email

A link to the future

É possível fazer um modelo de plugins que seja capaz de expandir uma tecnologia para fazer muito mais do que ela foi projetada ?

O Super NES (SNES) é a prova de que quando uma arquitetura é projetada focando a expansibilidade e um alto grau de acoplamento futuro, a mesma ultrapassa os limites para a qual fora concebida.

Além da potência superior a qualquer concorrente da época, essa “potência” poderia ser multiplicada futuramente através de expansões via cartucho.

SNES block diagram

A diferença entre o BUS de cartucho do SNES e seu principal concorrente, o Mega Drive, é que os BUSes internos do SNES eram todos interconectados, possibilitando acesso direto entre os chips internos e externos e com isso vários jogos embutiram diversas tecnologias extras ao SNES através do sistema de cartuchos, como co-processadores matemáticos, DSPs, chips compressores/decompressores de dados e até outros processadores capazes de rodar como um “core” independente, inclusive podendo “interromper” um ao outro.

Bom, parece que o segredo sempre foi a “engenharia” das coisas mesmo. 😉


[]’s
PopolonY2k

Referência na internet

https://en.wikipedia.org/wiki/List_of_Super_NES_enhancement_chips

https://hackaday.com/2015/11/06/winning-the-console-wars-an-in-depth-architectural-study/

Print Friendly, PDF & Email

Genesis capitulo 1, versículo 1

A SEGA nos anos 80 (Nintendo idem) já lidava com o paralelismo e suas implicações de maneira inteligente, padronizada e principalmente estabelecendo os limites a seus players (fabricantes de jogos), através de uma arquitetura de software e hardware com limites muito bem delineados.

O Mega Drive (Genesis) é um excelente exemplo, até nos dias atuais, de como lidar com os componentes lentos (e muitas vezes sensíveis) em uma cadeia de processamento de um sistema compartilhado. O uso de “brute force”, ou poder de processamento exagerado, nem sempre vai resolver a sua lentidão e entregar o melhor resultado.

Mega Drive (Genesis) Block Diagram

No caso do Mega Drive por exemplo existem 2 CPUs extremamente potentes para cada fim, sendo o Motorola 68000 o processador principal e o Zilog Z80 o sequencer de música. Mesmo com todo esse poder de processamento, tanto o 68000 quanto o Z80, serão inúteis se eles entregarem muito mais processamento do que as pontas finais podem processar, nesse caso o Video Display Processor para o 68000 e o YM2612/SN76489 (som) para o Z80, causando distorções indesejadas.

A solução ? Hummm…vamos deixar esse papo para o próximo post ou nos comentários.

Apenas não se esqueça de que a estrutura que carrega a “internet” é exatamente um Mega Drive…só que gigante. 😉

[]’s
PopolonY2k

Print Friendly, PDF & Email

For Ada with love

Esse é um pequeno resumo da vida de Ada Augusta Byron King a Condessa de Lovelace, mais conhecida como Ada Lovelace.

Ada Augusta Byron King (Ada Lovelace)

Ada Lovelace é reconhecida por ter escrito o primeiro algoritmo processado por uma máquina, que foi a máquina analítica de Charles Babbage.

Charles Babbage sequer ainda tinha percebido a potencialidade da capacidade programática de sua máquina, entretanto Ada vislumbrou essa característica infinita do invento de Babbage. Por esse motivo Ada é reconhecida como a primeira programadora, ou programador em sentido mais amplo, da história da computação.

Ada era a única filha legítima do poeta Lord Byron e sua posição na sociedade da época era bem avantajada considerando a maioria das pessoas daquele período e apesar de ter nascido em situação privilegiada, ela se contrapôs ao “status quo” que naturalmente poderia tê-la feito entrar em uma situação de conforto levando-a talvez ao ostracismo e a viver uma vida irrelevante para a melhoria da humanidade.

Devido a sua capacidade de vislumbrar coisas inexistentes e até fantasiosas para a maioria das pessoas, talvez ela tivesse seguido a carreira artística influenciada por seu pai, entretanto Lord Byron morreu durante a guerra da independência Grega, deixando Ada órfã de pai com apenas 8 anos de idade.

Graças a Deus, a mãe de Ada Lovelace, Anne Isabella “Anabella” Byron, promoveu e estimulou o interesse de sua filha em matemática e lógica, até mesmo porque ela via na matemática uma forma de sua filha se distanciar do que ela acreditava ser a “insanidade” de Lord Byron.

Porém o que Anabella não sabia é que a “insanidade de Lord Byron” era justamente a sua “genialidade artística” e que isso jamais poderia ser retirado de Ada.

A “genialidade lógica e matemática” de Ada aliada à sua “genialidade artística”, naturalmente levaram-na a ter contato com Charles Babbage e, consequentemente, ter acesso a seu grande trabalho que foi a máquina analítica.

Durante sua vida Ada desenvolveu vários trabalhos matemáticos, por vezes complementando trabalhos de outros e também desenvolvendo os seus próprios.

Infelizmente Ada Lovelace viveu até os 36 anos de idade apenas, quando morreu de câncer.

Apesar de ter perdido seu pai muito cedo, Ada continuou interessada em sua vida e seus feitos e, a seu pedido, foi enterrada ao lado de seu pai, Lord Byron, quando morreu.

Ada Lovelace mudou o mundo, inclusive a criação do software que mantém essa página aqui, redes sociais e todos os demais softwares criados ao redor do planeta, depois de seu feito inicial de abrir o entendimento da humanidade sobre como comandar máquinas através de sequencias lógicas e matemáticas, conhecidas hoje como programas de computador ou simplesmente softwares.

Obrigado Ada.

PopolonY2k

Print Friendly, PDF & Email