WIP - Material para uma live stream que estou preparando

C para devs PHP

ATENÇÃO: Este projeto ainda está em progresso. A estrutura e conteúdo aqui provavelmente
ainda estão muito confusas. Eu não recomendo ler estes documentos até que tenha terminado
de organizar ao menos as três primeiras seções.

Digaí, véi! Então tu quer saber um pouco mais sobre C, hmm?

Este repositório é a minha preparação para uma live stream que eu vou conduzir em breve. Nessa live stream eu vou considerar que você já sabe programar, mais específicamente eu vou considerar que você já sabe programar em PHP.

Não significa que você não vá conseguir entender o conteúdo aqui caso tenha vindo de JavaScript ou Ruby, mas talvez alguns conceitos e funções não sejam tão familiares pra ti.

Em resumo, eu adotei as seguintes premissas sobre você:

  • Já sabe a sintaxe de uma linguagem como o PHP;
  • Já entende o mínimo sobre algoritmos;
  • Possui familiaridade com algumas funções PHP como o printf(), fopen() e strcmp()

Você não precisa dominar os itens que citei acima, mas quanto mais cristalizados estes conhecimentos estiverem pra ti, mais fácil será acompanhar a live!

Estrutura

A progressão que eu preparei aqui é bem simplista, com a intenção de te dar as chaves do castelo para que você possa abrir portas e explorar sem mim!

O meu objetivo pessoal é te encorajar a mexer no código fonte do PHP e contribuir com a linguagem. Este deste castelo as chaves que eu vou te dar 😉

Após coletar o feedback da comunidade eu decidi que esta estrutura de curso vai ser efetiva o suficiente pra muita gente. E quem tiver dificuldades com este material pode sempre me dar um alô no twitter.

Esta progressão vai tratar dos seguintes tópicos, em ordem:

Ambiente e instalação

Nós vamos adotar um ambiente cru para que todos nós possamos ter o mesmo ponto de partida.

Clique aqui para visitar esta seção

Compilação

Nós vamos dissecar o processo de compilação de um programa em C. Vamos falar um pouco sobre sistemas operacionais, compiladores, fases do programa e ferramentas (gcc, clang, make).

Não se assuste com a descrição. O tópico é mais simples do que você imagina!

Clique aqui para visitar esta seção

Memória

Aqui vamos entender como a memória é utilizada num computador. Portanto vamos falar de representações (decimal, hexadecimal, binário...), como um programa é carregado para a memória, como o C trata a memória na hora de alocar variáveis e, é claro, vamos falar de ponteiros e endereços.

Tudo de forma bem visual e didática!

Para fixar os conceitos melhor, vou imendar esta seção com um exercício: construir um emulador do CPU 6502, a mesma CPU do Nintendinho.

Exercício: Emulador do CPU 6502 (Nintendinho)

Aqui nós vamos implementar alguns OpCodes do CPU 6502 - um componente eletrônico utilizado em diversos equipamentos, sendo o Nintendinho (NES 8-bit) um dos mais famosos deles.

Nós vamos executar a seguinte linha em Assembler:

00 LDX #$20 // Carrega 0x20 no registrador X
01 INX      // Incrementa o registrador X em 1
03 STX $10  // Armazena o valor do registrador X no endereço 0x10

Clique aqui para vistar esta seção

Introdução ao PHP-SRC

Após passar pelos passos anteriores, você provavelmente já tem aptidão para fuçar e aprender sobre o PHP-SRC sem muitas dores de cabeça.

Eu vou te mostrar como as coias estão organizadas e algumas práticas comuns que o core adota.

Também vou te mostrar como navegar a página de bugs e enviar algumas correções.

Clique aqui para vistar esta seção

Agradecimentos

Este projeto é uma iniciativa conjunta com a comunidade PHPSP, obrigado por continuar sendo uma comunidade maravilhosa até mesmo em tempos de distanciamento!

Owner
Similar Resources

A gdnative plugin for Godot's UWP export to add xbox live integration

GodotXbox Current instructions for setting up DLL, steps to setup project for contributing/modifying are coming soon. It should be noted that Godot's

Sep 7, 2022

A demo of the relevant blog post: Hook Heaps and Live Free

A demo of the relevant blog post: Hook Heaps and Live Free

LockdExeDemo A demo of the relevant blog post: Hook Heaps and Live Free DEMO Explanation There are 2 compile types. The first is an EXE. The EXE requi

Sep 15, 2022

Wtf Riot? I just want to close League of Legends and live my life. Leave me alone. F*ck corporate adware.

RiotKiller Wtf Riot? Anyways... This application launches League of Legends by calling RiotClientServices.exe --launch-product=league_of_legends --lau

Mar 29, 2022

Live wallpapers for the X window system

Live wallpapers for the X window system

xlivebg - live wallpapers for the X window system About xlivebg is a live wallpaper framework, and collection of live wallpapers, for the X window sys

Aug 19, 2022

This plugin enables the use of Live++ by Molecular Matter inside of Cryengine.

Live++ // CRYENGINE This plugin enables the use of Live++ by Molecular Matter inside of Cryengine. Live++ allows for easy hot-reloading and on the fly

Dec 4, 2019

A single file header-only live reload solution for C, written in C++

A single file header-only live reload solution for C, written in C++

cr.h A single file header-only live reload solution for C, written in C++: simple public API, 3 functions to use only (and another to export); works a

Sep 17, 2022

CS:APP is an excellent material for learning computer systems and systems programming

CS:APP is an excellent material for learning computer systems and systems programming. However, it is inconvenient to use a virtual machine for self-learners. In this repo, I build a Docker image with most pre-requistes installed and attached all lab materials in it.

Sep 16, 2022

Code and material related to PICO-8 and other products by Lexaloffle Games LLP

lexaloffle This is a miscellaneous collection of code and material related to products by Lexaloffle Games LLP. This collection is maintained for the

Sep 15, 2022

This repository is to share the EdgeAI Lab with Microcontrollers Series material to the entire community

This repository is to share the EdgeAI Lab with Microcontrollers Series material to the entire community. We will share documents, presentations and source code of two demo applications.

Oct 23, 2021
Coleção de scripts para Linux que fornecem um Wallpaper dinâmico que muda com o tempo

DayPaper Solução básica de wallpaper dinâmico para Linux Introdução A maioria das engines de wallpapers animados são focadas em gifs, vídeos e slides

Nov 25, 2021
Projeto que estou empenhado em fazer um simulador de PangYa

Superss-Dev Projeto que estou empenhado em fazer um simulador de PangYa Todo o código está aí, não me peça para explica o código que eu não sei, peça

Jun 9, 2022
É uma simulação bem simples de uma execução de processos baseados na prioridade deles.
É uma simulação bem simples de uma execução de processos baseados na prioridade deles.

Priority Based Scheduling Trabalho realizado para composição da nota 2 de Sistemas Operacionais (ECOS02), do curso de Engenharia da Computação na Univ

Apr 5, 2022
Repos para armazenar exemplos de provas antigas e materiais que podem ajudar os estudantes para fazer as cadeiras no curso de Eng. Informática
Repos para armazenar exemplos de provas antigas e materiais que podem ajudar os estudantes para fazer as cadeiras no curso de Eng. Informática

Biblioteca de Provas e Materiais UCAN (Eng. Informática) Este repositório tem o objectivo de armazenar exemplos de provas passadas e materiais, que po

May 16, 2022
Material para clase y entregas para la materia "Sistemas Operativos", impartida por Gunnar Wolf, en la Facultad de Ingeniería, UNAM, semestre 2022-1

sistop-2022-1 • Sistemas Operativos ¡Bienvenido! Este repositorio es el espacio de entrega de proyectos para la clase impartida por Gunnar Wolf de Sis

Jan 31, 2022
Uma prova de conceito para mostrar como rodar código nativo GTK dentro do Qt Framework :)

QTK Uma prova de conceito para mostrar como rodar código nativo GTK dentro do Qt Framework :) Nota: Como toda PoC que se preze esse projeto está incri

Nov 27, 2021
Esse é um programa que fiz para um projeto de trabalho da faculdade.

Meu-primeiro-programa-em-C Esse é um programa que fiz para um projeto de trabalho da faculdade. O que o programa faz É um sistema para cadastrar pacie

Jan 9, 2022
A package to use Material side sheet into your Flutter project. Learn more about side sheet at Material.io
A package to use Material side sheet into your Flutter project. Learn more about side sheet at Material.io

Side Sheet A package to use Material side sheet into your Flutter project. Learn more about side sheet at Material.io Platform Support Android iOS Mac

Aug 25, 2022
Projeto pessoal: Obter a temperatura ambiente e através de um termistor ligado a um arduino e disponibilizar esses dados em tempo real via API NodeJS. No front-end os dados são acessados por uma interface em React JS.
Projeto pessoal: Obter a temperatura ambiente e através de um termistor ligado a um arduino e disponibilizar esses dados em tempo real via API NodeJS. No front-end os dados são acessados por uma interface em React JS.

INTEGRAÇÃO DA API COM OS DADOS DO ARDUINO FORNECIDOS PELO TERMISTOR Código Desenvolvido por Lucas Muffato. MATERIAIS 1 Placa de Arduino; 1 Cabo de con

Aug 16, 2022
This repo contains example software for the Kernelcon 2021 Hack Live! badge - the Hacker HotKey.
This repo contains example software for the Kernelcon 2021 Hack Live! badge - the Hacker HotKey.

Hacker HotKey This repo contains example software for the Kernelcon 2021 Hack Live! badge - the Hacker HotKey. Default Hotkey Mapping Hacker Hotkey is

Jan 24, 2022