Olá, seja bem-vindo de volta.
Nesta palestra, eu quero para falar sobre alguns tópicos adicionais
que você pode estudar.
Estamos basicamente encerrando a aula.
Estamos encerrando.
E então não conseguimos para cobrir tudo.
Obviamente, é uma aula para iniciantes.
Portanto, há muitos tópicos que você pode estudar
mais para que realmente se torne incrível em programação c, e eu só
queria mencionar alguns deles.
Então, primeiro, nós não entrar em typedefs.
Eu gostaria de ter falei sobre isso, mas é
mais um conceito avançado.
Conversamos sobre enums.
E enum é uma forma de criando seu próprio tipo.
Mas especificamente em c, há uma palavra-chave chamada typedef e você pode criar seus
próprios tipos de dados.
Isso é muito útil, mais de um conceito avançado.
Você poderia definitivamente aprenda mais sobre isso.
Há muito mais informações sobre o pré-processador que você pode
aprender sobre, especificamente concatenação de string.
O pré-processador lembra que é executado antes do compilador.
Aprendemos sobre o declaração definida.
Aprendemos sobre algumas outras coisas aqui e ali, mas o pré-processador
pode ser uma outra seção inteira com muito mais informações sobre ele.
Você pode usá-lo basicamente para otimizar muito do seu código, para que você possa
executá-lo de antemão.
Você pode fazer funções embutidas que rodam no pré-processador, todos um
monte de conceitos legais.
Há muito mais sobre estrelas vazias.
Estrelas vazias, lembre-se, muita flexibilidade.
Em particular, o malloc função retorna uma estrela vazia.
Poderíamos criar funções tomar void ponteiros e passe os ponteiros vazios
para torná-lo mais flexível.
Tem muito mais podemos estudar sobre isso.
Bibliotecas estáticas e objetos compartilhados.
Nós não falamos sobre isso conceito de biblioteca.
Usamos bibliotecas quando nos conectamos.
Especificamente, muitos dos as bibliotecas
são definidas nas bibliotecas padrão c.
Mas você pode criar suas próprias bibliotecas.
Criamos programas.
Programas são processos que correm na memória.
Mas as bibliotecas são na verdade outro código que você pode reutilizar em outros programas.
Por exemplo, a biblioteca padrão c.
Se você programou em outro linguagens, geralmente, são APIs que vêm
com a linguagem.
Existem dois tipos de bibliotecas que você pode criar.
Você pode criar um estático biblioteca onde você compila
todo o código ao vincular.
E então você também pode criar um objeto onde, durante a
execução do programa, você vai procure funções e invoque-as.
Portanto, as bibliotecas estáticas geralmente são encerradas em um ponto a e
eles são compilados em tempo estático ou são compilados em quando você compila o programa.
Objetos compartilhados são arquivos ponto so ou eles também podem pensar neles como dlls
se você tiver já ouviu falar de bibliotecas de links
dinâmicos e visual c plus plus.
Mas os objetos compartilhados não são tempo de compilação.
Novamente, é uma forma de reutilizar o código.
Poderíamos estudar esses conceitos e eu pode mostrar como construir bibliotecas estáticas,
bem como objetos compartilhados.
Macros.
Nós não tivemos a chance para falar sobre uma macro.
Este é um tópico avançado.
Isso é executado pelo pré-processador principalmente para fazer substituição, substituição
de string.
Algumas das funções que nós estudados são, na verdade,
escritos como macros, como a macro assert.
As macros podem ser exploradas com muito mais detalhes.
Sindicatos.
Sindicatos geralmente ir junto com structs.
É uma maneira de ter vários tipos de dados retornados ou diferentes tipos de elementos
membros dentro de um estrutura que representa a mesma coisa.
Então você poderia ter uma estrutura que tem um membro, mas esse membro pode
entrar em um flutuador e você usaria o sindicato para fazer isso.
Outros tópicos apontadores de função.
Nós conversamos sobre personagem ponteiros principalmente, e mesmo ponteiros inteiros
e ponteiros duplos.
Mas você pode realmente ter dicas que apontam para várias funções.
Então, enquanto seu programa está sendo executado, você pode executar uma função.
E então, da próxima vez que for executado, ele poderia executar uma função
diferente com base na entrada do usuário ou algo assim.
Ponteiros de função são um outro tópico totalmente diferente.
Ponteiros avançados.
Há muito mais dicas do que o que discutimos.
Discutimos o básico de ponteiros, mas poderíamos falar sobre ponteiros
com muito mais detalhes.
Existem verdadeiros indicadores para indicadores, então há dicas duplas, e esse é
um tópico principal mais avançado.
Argumentos variáveis para funções.
Estes são referidos como funções variáveis.
Usamos a função printf que tem um
número variável de argumentos, mas não definimos quaisquer funções que tivéssemos número
variável de argumentos, poderíamos explorar esse conceito muito útil.
Link dinâmico.
É quando você abre um biblioteca no momento e é um pouco diferente de
um objeto compartilhado.
Você pode abrir bibliotecas em tempo de execução e aumenta o
desempenho e torna o seu programas executáveis menores.
Então, dlm aberto, há um verdadeiro chamada de biblioteca para fazer isso.
Sinais, bifurcação comunicação entre processos.
Isso tudo pode ser explorado entre processos comunicação é quando você tem dois
programas que desejam se comunicar.
Existem maneiras diferentes que eles podem se comunicar.
Eles podem se comunicar por meio de arquivos.
Eles podem se comunicar via algo chamado de soquete.
Eles podem se comunicar usando tubulação.
Existem diferentes técnicas disponíveis lá, mas é quando dois processos
querem se comunicar.
Bifurcação é onde você pode crie outro processo.
Existem bibliotecas para criar outros processos em seu código.
Se você fosse criar outro processo em seu
código, ele teria seu próprio espaço de memória de endereço e pode tornar seu programa um
pouco mais eficiente.
E então sinais, não entramos em muitos, mas os sinais são
usados para depurar para gerar diferentes mensagens para diferentes programas.
Encadeamento e simultaneidade.
Outro tópico avançado que você deseja estudar.
Isso permite a execução múltipla pontos dentro do seu programa.
Ele permite que você execute código quase ao mesmo tempo.
Portanto, é uma coisa do tipo eficiência.
Se você tem uma tarefa de longa duração que você precisa fazer em
seu programa, como monitorar dados ou aguardar dados ou talvez sua tarefa seja ler um arquivo
enorme, você pode criar outro thread para fazer isso e ainda executar
outras partes do seu programa em conjunto ao mesmo tempo.
Tomadas.
Sockets são usados para rede.
Sockets seriam usados se você quisesse para se conectar a outro computador e
obter dados desse outro computador.
Networking é muito grande porque nós tem internet e tudo mais.
Então você pode aprender tudo sobre soquetes e ver também.
Existem duas funções chamado setjump e longjump.
Isso é para restaurar o estado.
Poderíamos estudar aqueles em bons detalhes mais sobre gerenciamento de
memória e fragmentação.
Não se trata apenas de malloc, mas é assim que você pode gerenciar sua memória e
colocá-la no heap ou na pilha.
Você pode ter certeza de que seu programa é um pouco mais eficiente,
então você não tem tanta fragmentação.
Fragmentação é onde você tem memória em locais diferentes e não
é sequencial, por isso pode ser mais difícil gaste mais tempo para pesquisar essa memória.
Você pode reduzir a fragmentação.
Podemos trabalhar para fazer o programas mais portáteis.
Em geral, programas c são bastante portáteis.
Mas existem mais técnicas que você pode utilizar para garantir que, ao escrever seu programa
uma vez, ele execute em muitos sistemas operacionais diferentes e você
não precisa reescrevê-lo.
Poderíamos essencialmente usar alguns dos padrões posix que estão
disponíveis em c.
Podemos ter certeza de que dependendo em que
versão diferente do padrão c, que eles trabalhar em vários padrões
usando certas convenções.
Também poderíamos escrever programas que interface direta com o kernel.
Lembre-se, o kernel é o cérebros do sistema operacional.
O kernel contém todos os drivers.
Ele contém todos os tipos de chamadas para funções de memória de nível inferior.
Faz muito informações diferentes.
Portanto, o kernel tem funcionalidade onde você pode interagir com
ele em seu programa c.
Isso seria baixo nível embutido.
Então, poderíamos usar chamadas como controles IO.
Poderíamos criar drivers para fale diretamente com o hardware.
Há muito mais no compilador e diferentes sinalizadores que
você pode passar para o compilador ou o vinculador, o que novamente torna
seu programa mais eficiente.
Nós não tivemos a chance de falar
muito sobre várias bandeiras diferentes.
Nós conversamos principalmente sobre o painel parede e alguns outros básicos,
mas nada mais avançado.
Falamos sobre o depurador e como depurar aplicativos.
O depurador em blocos de código era por meio da interface gráfica do usuário.
Mas a verdadeira vantagem de um depurador está sob o capô, ele usa gdb.
Gdb é o depurador gnu.
E nós só falamos sobre pontos de interrupção e usá-lo através da interface gráfica do usuário, mas
você pode na verdade, faça muito mais com o gdb.
Poderíamos passar pelo depurador gdb a partir do console, emita comandos diferentes,
faça muito mais com o compreensão do arquivo principal como
ler o arquivo principal usando gdb, um muitos tópicos avançados interessantes lá.
Ferramentas de perfil e rastreamento.
Não conseguimos falar sobre alguns analisadores estáticos, algumas ferramentas que podem analisar seu código
antes de você execute seu programa para ver
se há algum código morto ou se há quaisquer más práticas de programação.
E ferramentas de rastreamento também, trace, d trace, g profile, todas essas são ferramentas importantes
que você pode usar para ver para ajudá-lo a depurar e ajudá-lo
a medir a eficiência ou quanta memória você está usando ou o
desempenho do seu programa.
Há outra memória adicional ferramentas de depuração, como valgrind.
Isso ajuda quando você gosta condições de corrida ou você tem
problemas de corrupção de memória.
Muitas vezes, quando você está gerenciando sua memória e você tem estouro de buffer ou
vazamento de memória, é muito, muito difícil encontrá-los.
Portanto, existem ferramentas que podem ajudá-lo a encontrar aqueles como valgrind.
E então há muitos diferentes tópicos que você pode explorar para
se tornar um especialista em c.
Tocamos no básico.
Nós tocamos no realmente, realmente coisas importantes para começar.
Mas com estes adicionais tópicos, você pode se tornar um especialista.
Obrigada.