Hoje me lembrei de algo que me ocorreu quando estava na faculdade. Nosso professor entrou em nossa sala, e nos pediu um trabalho sobre Threads. Ele queria um sistema capaz de realizar várias contas ao mesmo tempo utilizando processos paralelos.
Nos rostos dos alunos havia apenas uma dúvida. Não era sobre o que era Threads e para que serviam, mas sim, como programa-las, como fazer um sistema que fizesse várias coisas ao mesmo tempo. Me lembro que cheguei a falar para uma amiga: "Você tem que parar de pensar uma coisa linear e pensar em coisas paralelas". Talvez não tenha usado boas palavras, mas era o que ela precisava fazer.
Partindo do conceito inicial, Thread é um processo que compartilha o mesmo núcleo que o seu sistema. Ou seja, seu sistema em si já é uma Thread para o sistema operacional, pois é um processo rodando paralelamente junto ao sistema operacional.
Como eu amo analogias, vou fazer mais uma para explicar melhor. Pegue sua cidade, ela tem várias ruas, certo? E em cada rua está acontecendo coisas distintas, sem que a sua cidade precise se preocupar, né? E sua cidade está em um estado e o seu estado não precisa se preocupar com que esta acontecendo na cidade, não é? Então em nossa analogia, estado é nosso sistema operacional, pois no estado pode ter várias cidades, cidades é o nosso sistema, e as ruas são nossas threads.
Então quando você for programar um sistema usando as Threads, pense no seguinte: Seu sistema não precisa se preocupar com a Thread, pois ela tem que tomar conta de si sozinha, ou seja, você deve imaginar na Thread um novo sistema, com novos tratamentos de erro, novas estruturas, novos dados, e assim vai.
Mas tome cuidado com números excessivos de Threads, pois como dito, uma Thread compartilha o mesmo núcleo o seu sistema, então quanto mais Threads rodando em seu sistema, mas ele ficará pesado para o sistema operacional lidar.
É isso ai, threads são uma benção mas também uma praga, pois se não bem desenvolvidas pode prejudicar todo seu sistema.
Um abraço e até o próximo post!
Blog dedicado aos programadores de sistemas que buscam novas maneiras de solucionar problemas do dia-a-dia e também para aqueles iniciam sua jornada nessa carreira e buscam aprimorar seus conhecimentos.
sábado, 4 de setembro de 2010
sexta-feira, 3 de setembro de 2010
Variaveis, Vetores e Matrizes
Sabe eu me lembro uma vez, quando eu estava aprendendo HTML e queria fazer um formulário que fazia soma e subtração. Não tinha utilidade nenhuma mas eu só queria aprender como é que se fazia. Dai nas pesquisas eu achei o JavaScript e aquele monte de tutorial explicando como fazia. Mas uma coisa não entrava na minha cabeça, o quer era aquelas variáveis que eu tinha que criar e como funcionava aquilo. Depois disso me deparei com o vetor e posteriormente a matriz. Então o que era essas coisas e para que elas realmente existe? Bom, hoje com a cabeça totalmente mudada e com uma visão bem ampla sobre a lógica eu vejo muito simples isso mas acredite, se você não sabe muito sobre eles, você não é o único.
Então vamos lá, começando pelo principio básico:
* Variável: Bom como logo o nome diz, é algo que varia, ou seja, que muda com o tempo. Imagine sua roupa, você se veste todo dia igual? Não né? então a sua roupa é uma variável, ou seja, algo que você usa sempre que que sempre está com um novo valor. Então imagine isso agora, você quer fazer a conta 2 + 2. Dai você pega um papel, e coloca em um lugar o 2 e em outro lugar o outro 2, e num terceiro lugar o resultado, 4, certo? Esse lugar que você guardou isso é sua variável, pois você colocou um valor e o usou, e poderia usar para outra conta, 3 + 3 por exemplo. Isso é uma variável, um lugarzinho que você utiliza do computador para guardar suas coisas para poder usar.
* Vetor: Vamos pegar o conceito de variável acima e colocar nessa analogia: Você quer guardar os dados digitados pelo usuário, por exemplo, uma lista de números. Porém você não sabe quantos números o usuário irá digitar, então como você guardaria esses dados? Criaria uma infinidade de variáveis e as usaria? Isso até funcionaria, mas com certeza não é uma das melhores soluções, então para isso você criaria um Vetor. Uma variável que tem várias posições. Como assim posições? você deve estar se questionando, e para isso eu tenho uma analogia que ajudar a ilustrar o que acontece no computador quando se cria um vetor. Pegue uma folha de caderno, olhe para ela, ela tem várias linhas não tem? e é nessas linhas que você coloca os dados que você quer não é? Isso é um vetor, um lugar ( a folha ) que contém várias posições ( as linhas ) para colocar os dados e assim facilitar seu uso.
* Matriz: Bom, se você entendeu o que é vetor, fica mais fácil entender matriz. Matriz é um conjunto de vários vetores. Certo, vamos fazer uma analogia para ficar fácil: Lembra da nossa folha? o nosso vetor? A folha fica presa aonde? Ao caderno certo? Ele é nossa matriz! Ou seja, em um lugar único ( o caderno ) temos uma reunião de vários vetores ( as folhas ) com vários dados ( as linhas ). Outra analogia que ajuda a entender é a analogia da caixa de cerveja. Olhe para ela, e veja que na caixa há vários buracos, alinhados em fila. A caixa é nossa matriz, as filas são os vetores e os buracos são nossas posições.
Agora você deve estar dizendo "Certo Donda, mas quando eu uso eles?". Bom, quando você for programar pergunte para si mesmo, este dado que preciso guardar, é único, ou há vários dados que estão ligados à ele? Se for único, como por exemplo, apenas um número ou um nome, guarde em uma variável, mas se por exemplo este dado está ligado à outros que talvez possa usar, como por exemplo, dados do nome da rua, bairro, número e complemento de uma pessoa, use um vetor, pois esses dados estão ligados à uma pessoa, e assim você agrupa eles para poder consultar posteriormente.
Bom é isso ai, espero ter ajudado a ilumiar a mente de vocês.
Abraços.
Então vamos lá, começando pelo principio básico:
* Variável: Bom como logo o nome diz, é algo que varia, ou seja, que muda com o tempo. Imagine sua roupa, você se veste todo dia igual? Não né? então a sua roupa é uma variável, ou seja, algo que você usa sempre que que sempre está com um novo valor. Então imagine isso agora, você quer fazer a conta 2 + 2. Dai você pega um papel, e coloca em um lugar o 2 e em outro lugar o outro 2, e num terceiro lugar o resultado, 4, certo? Esse lugar que você guardou isso é sua variável, pois você colocou um valor e o usou, e poderia usar para outra conta, 3 + 3 por exemplo. Isso é uma variável, um lugarzinho que você utiliza do computador para guardar suas coisas para poder usar.
* Vetor: Vamos pegar o conceito de variável acima e colocar nessa analogia: Você quer guardar os dados digitados pelo usuário, por exemplo, uma lista de números. Porém você não sabe quantos números o usuário irá digitar, então como você guardaria esses dados? Criaria uma infinidade de variáveis e as usaria? Isso até funcionaria, mas com certeza não é uma das melhores soluções, então para isso você criaria um Vetor. Uma variável que tem várias posições. Como assim posições? você deve estar se questionando, e para isso eu tenho uma analogia que ajudar a ilustrar o que acontece no computador quando se cria um vetor. Pegue uma folha de caderno, olhe para ela, ela tem várias linhas não tem? e é nessas linhas que você coloca os dados que você quer não é? Isso é um vetor, um lugar ( a folha ) que contém várias posições ( as linhas ) para colocar os dados e assim facilitar seu uso.
* Matriz: Bom, se você entendeu o que é vetor, fica mais fácil entender matriz. Matriz é um conjunto de vários vetores. Certo, vamos fazer uma analogia para ficar fácil: Lembra da nossa folha? o nosso vetor? A folha fica presa aonde? Ao caderno certo? Ele é nossa matriz! Ou seja, em um lugar único ( o caderno ) temos uma reunião de vários vetores ( as folhas ) com vários dados ( as linhas ). Outra analogia que ajuda a entender é a analogia da caixa de cerveja. Olhe para ela, e veja que na caixa há vários buracos, alinhados em fila. A caixa é nossa matriz, as filas são os vetores e os buracos são nossas posições.
Agora você deve estar dizendo "Certo Donda, mas quando eu uso eles?". Bom, quando você for programar pergunte para si mesmo, este dado que preciso guardar, é único, ou há vários dados que estão ligados à ele? Se for único, como por exemplo, apenas um número ou um nome, guarde em uma variável, mas se por exemplo este dado está ligado à outros que talvez possa usar, como por exemplo, dados do nome da rua, bairro, número e complemento de uma pessoa, use um vetor, pois esses dados estão ligados à uma pessoa, e assim você agrupa eles para poder consultar posteriormente.
Bom é isso ai, espero ter ajudado a ilumiar a mente de vocês.
Abraços.
quinta-feira, 2 de setembro de 2010
Para tudo tem sua lógica
Essa semana entrou um rapaz novo na empresa em que trabalho. Sem experiência em nenhuma linguagem de programação, com um conhecimento básico que carrega de suas aulas na faculdade e com uma grande dificuldade em lógica. Coisa que todos nós que nós passamos quando iniciamos nesta carreira, e acredito que você possa até se perguntar: Por quê ele contratou esse rapaz, já que não tem experiência? Bom a resposta é que eu acredito que alguém tem que dar a oportunidade para aqueles que começam, e também, a empresa ganha junto com o conhecimento deste novo funcionário.
Mas esse não é o ponto deste post e sim que, nestes primeiros dias dele, eu sentei uns minutos com ele e dei algumas dicas em como é que ele tem que começar a pensar para conseguir resolver um problema, e essas dicas resolvi postar aqui também, para que você possa usa-las para melhorar sua lógica.
Então vamos lá:
Primeiro, tenha um caderno contigo. Sim, um caderno, pode ser de uma matéria mesmo, capa dura ou mole, pequeno ou grande, você escolhe, mas tenha contigo junto sempre que for pensar, e use-o como rascunhos de seus pensamentos, rabisque-os com que você acha que deva ser, escreva uma conta pra ver se dá certo, até desenhe nele enquanto pensa, mas use-o e você verá que irá ajudar muito, porque se uma hora você se perde nos pensamentos, é só olhar para o caderno que tudo fica claro ou até mesmo um pensamento antigo que você queira dar uma consultada, ele vai estar lá no caderno.
Segundo, coloque-se como humano primeiro e tente resolver o problema. Imagine se fosse você que teria que fazer aquilo e não um programa, como você resolveria? coloque como resolveria no caderno e tente então ver como dai os passos que você seguiu para resolver o problema seriam escritos em comando e funções para o seu sistema. Imagine assim, vamos pensar que você tem que calcular dois números, como você faz isso? Como seu cérebro trabalhar para resolver o calculo? Primeiro você pega o primeiro certo? e coloca em algum lugar para consultar, depois pega o segundo e colocar em um lugar para consultar, né? Dai então você consulta os dois números que pegou e efetua a conta, não é assim que você faz na sua cabeça? então transfigure isso para um programa, pegar seria receber os dados, do cliente por exemplo, dai colocar num lugar seria armazenar em uma variável, dai repete o passo para o segundo e depois efetua o calculo.
Terceiro, se não consegue resolver o problema naquele instante, relaxe a cabeça. Eu por exemplo gosto de andar e conversar com outras pessoas, então eu saio na rua, vou tomar um refrigerante na padaria e assim vai. Outros assistem videos no youtube, lê revistas, e assim vai, mas relaxe sua cabeça e depois de uns minutos volte a tentar novamente.
Quarto, e esse eu acho o melhor de todos mas o mais "difícil" para aqueles que estão começando a programar, tente achar a solução de seu problema olhando para solução de outro problema mas que se assemelha com o seu. Por exemplo, você precisa trocar a cor de uma certo componente/objeto mas não consegue, então tente ver como seria fazer a mesma coisa com outro tipo de componente/objeto. As vezes quando fazemos pesquisas, não achamos as respostas diretas para nossos problemas, mas sim respostas para problemas similares ao nosso e que nos ajudam a "abri a mente" e achar a solução.
Quinto e último, leia artigos. Leia sempre que possível artigos que estão relacionado à sua linguagem. As vezes você pode encontrar a resposta em um artigo que leu à muito tempo e que tinha uma lógica parecia com a que você precisava.
E é isso, seguir esses passos irá ajudar a você a construir uma melhor lógica e melhorar seus conhecimentos.
Abraços e até o próximo post.
Mas esse não é o ponto deste post e sim que, nestes primeiros dias dele, eu sentei uns minutos com ele e dei algumas dicas em como é que ele tem que começar a pensar para conseguir resolver um problema, e essas dicas resolvi postar aqui também, para que você possa usa-las para melhorar sua lógica.
Então vamos lá:
Primeiro, tenha um caderno contigo. Sim, um caderno, pode ser de uma matéria mesmo, capa dura ou mole, pequeno ou grande, você escolhe, mas tenha contigo junto sempre que for pensar, e use-o como rascunhos de seus pensamentos, rabisque-os com que você acha que deva ser, escreva uma conta pra ver se dá certo, até desenhe nele enquanto pensa, mas use-o e você verá que irá ajudar muito, porque se uma hora você se perde nos pensamentos, é só olhar para o caderno que tudo fica claro ou até mesmo um pensamento antigo que você queira dar uma consultada, ele vai estar lá no caderno.
Segundo, coloque-se como humano primeiro e tente resolver o problema. Imagine se fosse você que teria que fazer aquilo e não um programa, como você resolveria? coloque como resolveria no caderno e tente então ver como dai os passos que você seguiu para resolver o problema seriam escritos em comando e funções para o seu sistema. Imagine assim, vamos pensar que você tem que calcular dois números, como você faz isso? Como seu cérebro trabalhar para resolver o calculo? Primeiro você pega o primeiro certo? e coloca em algum lugar para consultar, depois pega o segundo e colocar em um lugar para consultar, né? Dai então você consulta os dois números que pegou e efetua a conta, não é assim que você faz na sua cabeça? então transfigure isso para um programa, pegar seria receber os dados, do cliente por exemplo, dai colocar num lugar seria armazenar em uma variável, dai repete o passo para o segundo e depois efetua o calculo.
Terceiro, se não consegue resolver o problema naquele instante, relaxe a cabeça. Eu por exemplo gosto de andar e conversar com outras pessoas, então eu saio na rua, vou tomar um refrigerante na padaria e assim vai. Outros assistem videos no youtube, lê revistas, e assim vai, mas relaxe sua cabeça e depois de uns minutos volte a tentar novamente.
Quarto, e esse eu acho o melhor de todos mas o mais "difícil" para aqueles que estão começando a programar, tente achar a solução de seu problema olhando para solução de outro problema mas que se assemelha com o seu. Por exemplo, você precisa trocar a cor de uma certo componente/objeto mas não consegue, então tente ver como seria fazer a mesma coisa com outro tipo de componente/objeto. As vezes quando fazemos pesquisas, não achamos as respostas diretas para nossos problemas, mas sim respostas para problemas similares ao nosso e que nos ajudam a "abri a mente" e achar a solução.
Quinto e último, leia artigos. Leia sempre que possível artigos que estão relacionado à sua linguagem. As vezes você pode encontrar a resposta em um artigo que leu à muito tempo e que tinha uma lógica parecia com a que você precisava.
E é isso, seguir esses passos irá ajudar a você a construir uma melhor lógica e melhorar seus conhecimentos.
Abraços e até o próximo post.
Tudo tem seu início
Olá Amigos. Meu nome é Anderson Donda e este é meu primeiro post no Diário da Lógica. Um blog dedicado aos aspirantes à programador e também à programadores de longa data que procuram soluções para problemas do dia-a-dia,dicas e novas maneiras de enxergar como solucionar um problema, ou, novos caminhos a seguir para poder obter um novo resultado.
Diariamente tentarei passar toda minha experiência e as formas que vejo de como resolver problemas do cotidiano de um programador e claro que sei que, as vezes, o que eu apresentar aqui não seja a melhor saída, mas meu objetivo será abri a mente do leitor e assim ajudar no que for necessário.
Nos vemos nos próximos posts, e se tiverem dúvidas ou sugestões me mandem um email: andersondonda@gmail.com que estarei feliz em tentar ajudar.
Abraços!
Diariamente tentarei passar toda minha experiência e as formas que vejo de como resolver problemas do cotidiano de um programador e claro que sei que, as vezes, o que eu apresentar aqui não seja a melhor saída, mas meu objetivo será abri a mente do leitor e assim ajudar no que for necessário.
Nos vemos nos próximos posts, e se tiverem dúvidas ou sugestões me mandem um email: andersondonda@gmail.com que estarei feliz em tentar ajudar.
Abraços!
Assinar:
Comentários (Atom)