Do It Yourself (ou não)

Há algum tempo tenho feito alguns “experimentos” no meu canal do YouTube, afim de aprimorar também essa plataforma para que se torne um complemento desse blog.

Algumas lives sobre programação e principalmente, alguns mini projetos relacionados ao MSX e computação em geral, tem sido feitos nesse interim, como a live onde demonstrei o código da engine 3D portado a partir do vídeo e código apresentados em “Code it yourself – First person shooter” do excelente canal do Javidx9.

Pop!Live Stream Code It yourself-First person shooter on MSX-TR (Quick and simple Turbo Pascal 3.3F)
Pop! Live Stream – Code It yourself – First person shooter (Quick and simple Free Pascal)

Hoje finalmente liberei mais um formato, que acredito ainda precisar de aprimoramentos de maneira geral.

É o quadro “Faça você mesmo (ou não)”, para isso já até criei a playlist só para facilitar a busca nos vídeos dessa série em meu canal.

Entretanto podemos dizer que esse formato ainda é WIP (Work In Progress) e que estaremos ajustando nos próximos vídeos.

Toda sugestão é bem vinda.

MSX 1.1 Expert XP800 Capacitor Recap e CPU upgrade (Z80 6Mhz)

[]’s
PopolonY2k

Print Friendly, PDF & Email

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

“I double cross you and you get mysterious mail”

Com o avanço da tecnologia, principalmente no decorrer dos últimos 30 anos, chegamos a uma época em que a grande maioria dos profissionais de desenvolvimento de software e tecnologia, “terceirizaram o desenvolvimento” para os diversos frameworks existentes nas mais diversas linguagens, limitando assim muito o potencial da própria solução que se propõe a resolver.

Infelizmente técnicas simples e eficazes, outrora largamente utilizadas no passado, passam despercebidas hoje e sequer são implementadas pois esperamos que uma peça pronta o faça para nós.

Uma dessas técnicas é conhecida como double-buffering, amplamente utilizada em jogos e comunicação de dados desde os primórdios da computação, principalmente depois que dispositivos baseados em DMA passaram a ser mais populares e acessíveis do que os dispositivos baseados em portas (Port Mapped I/O), possibilitando assim um paralelismo “implicito” feito por hardware e software.

Single buffering technique

A indústria de jogos tem utilizado a técnica de double buffering, por exemplo, para evitar o “flickering” ao se desenhar diretamente no dispositivo de vídeo, em alta velocidade, o que geralmente causa perda e/ou corrupção de frames gerando esse efeito indesejado, dentre outros usos.

Double buffering technique

No campo da comunicação de dados, double buffering tem sido amplamente utilizado principalmente em processamento de dados que exigem um certo grau de paralelismo, o que é comumente encontrado em qualquer modelo simples de produtor/consumidor.

Double buffering in communication strategy

Como infelizmente perdemos anos preciosos de nossas vidas terceirizando as soluções que deveríamos ter feito nós mesmos, sugiro agora um pequeno “atalho” que é esse vídeo abaixo, bem como sugiro que se inscrevam no canal do cara do vídeo, que contém vídeos rápidos sobre diversas técnicas extremamente úteis e talvez por isso tenha poucos views e inscritos.

[]’s
PopolonY2k

Referência na internet

https://doc.embedded-wizard.de/framebuffer-concepts?v=9.00

https://gameprogrammingpatterns.com/double-buffer.html

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