VidaGeek.net

Linux, Open-source, Programação e Produtividade

Archive for July, 2007

YACP (Yet Another C Primer)

Este é o primeiro post de uma série que tem por objetivo ensinar programação em C a alguém que já tem noção do que é programação, mas nunca programou. Programadores menos experientes também encontrarão muito material útil aqui.

Esta série está dividida em três partes:

  1. Apresentação e instalação de compiladores, bons editores de texto e um depurador.
  2. Estrutura da linguagem de programação C.
  3. Bibliotecas do padrão ANSI C (ISO C 89) e ISO C 99.

A primeira parte, irá mostrar rapidamente como instalar o compilador GCC, os editores de texto GVim e Emacs e o depurador GDB.

A segunda parte tratará de como a sintaxe de C é estruturada e das palavras reservadas a linguagem. Introduzirá o conceito de variáveis, a estrutura de controle de fluxo de um programa, operações com os temidos ponteiros (que são bem mais simples de usar do que as pessoas costumam pensar), manipulação de bits, funções e preprocessamento.

A terceira parte vai funcionar como um guia de referência para as funções dos padrões ANSI e ISO C 99. Assim você poderá saber qual suporte C oferece para seus programadores.

Instalando o GCC

O GCC é um dos melhores compiladores da linguagem C que existe. Boa parte do que foi adicionado ao padrão ISO C 99 eram extensões apenas do GCC. Além disso ele é OpenSource. Nos exemplos vou usar o GCC, mas qualquer compilador ISO C 99 deve compilar os exemplos.

Instalar o GCC em Linux é bem simples. Provavelmente você já possui ele instalado (sei apenas de uma versão do Ubuntu que não vinha com o GCC por padrão). Para checar, abra um terminal e digite ‘gcc –version’. Ele irá informar qual a versão do compilador. Se a shell devolver alguma mensagem de erro, instale o GCC com o seu gerenciador de pacotes (como são muitos, não vou entrar em detalhes).

Em MacOS X, você deverá se cadastrar na Apple Developer Connection (ADC) e baixar o pacote xCode. O xCode vai instalar dezenas de programas, bibliotecas e frameworks em seu computador. Possui muita coisa realmente útil e muita coisa inútil. Ainda bem que você pode escolher o que instalar.

Em Windows, a melhor opção é instalar o cygwin, que é um emulador de Linux para Windows. Muito bom.

Instalando o depurador

O depurador que uso é o GDB (GNU Debugger). Excelente depurador, poderá ajudar muito a detectar algum erro em seus programas.
Em Linux ele já deve estar instalado, caso contrário siga o mesmo procedimento feito para o GCC.
Em MacOS X, o xCode já instala o GDB.
Em Windows, o cygwin também já traz o GDB.

Instalando um editor de textos

Em Linux e MacOS X, o vim vem instalado por padrão. Para instalar o Gvim use seu gerenciador de pacotes preferido ou acesse o site do Vim e faça o download.

Para instalar em Windows, acesse o site do Vim e pegue o instalador.

Além do Vim, existe um outro bom editor chamado Emacs, criado por Richard Stallman.

Para instalar o Emacs no Linux basta usar o seu gerenciador de pacotes (Portage, Synaptic, etc…) e escolher a opção de instalar o Emacs. Caso sua distribuição não tenha um gerenciador de pacotes, entre no site do Emacs e faça o download.

Para instalar no Windows, acesse o site do Emacs e pegue o pacote de arquivos pré-compilados. Ele não contém um instalador, mas basta extraí-lo (ele é um .zip) e executar o bin/runemacs.exe, você pode deixar a pasta em qualquer lugar mas é interessante deixar em um lugar fácil de lembrar (C:\ ou Arquivos de Programas).

Posts Relacionados:

  • YACP - Condições Booleanas
  • YACP - Variáveis e Tipos Primitivos
  • YACP - Aprendendo a usar suas ferramentas
  • YACP - Definindo seus próprios tipos
  • Acompanhe-nos por RSS, por Email ou via Twitter.

    Jogos Educativos

    Recentemente alguns jogos educativos em Flash me chamaram a atenção. São todos muito bem feitos, divertidos e você acaba aprendendo alguma coisa. Os quatros que me chamaram mais a atenção foram:

    Stop Disasters

    Stop Disasters ScreenO Stop Disasters é um jogo criado pela ONU e pela ISDR (International Strategy for Disaster Reduction) onde o objetivo é criar medidas preventivas contra desastres como Tsunami, furação e terremoto. Em cada fase você tem uma quantidade limitada de dinheiro para realizar as obras para melhorar a segurança do local, e tem como objetivo salvar vidas e construções através de medidas preventivas quando o desastre acontecer. Outros objetivos podem aparecer também como a construção de escolas, hospitais e hoteis. Este é um jogo bem interessante para pensar sobre o que pode se feito em relação aos desastres que podem ocorrer e como os tipos de vegetação e estrutura das casas influenciam no numero de mortos.

    McDonald’s Video Game

    McDonald´s Video GameO McDonald’s Video Game é um ótimo jogo para ver como mega-corporações como o McDonald’s utilizam-se de métodos agressivos para obter o máximo de lucro possível. No jogo, você precisa controlar todos os aspectos da produção do McDonald’s, desde a criação de gado (com a possibilidade de realizar pecuária intensiva) e ração para os mesmos (que podem ser alteradas genéticamente, passando pelo confinamento do gado para engorda (onde é possível alimenta-lo com resíduos industriais e resto de outros gados, o que pode causar vaca-louca), depois pela venda nas lojas (onde podemos ver a linha de montagem dos lanches, punir, recompensar e demitir funcionários) e finalmente a parte administrativa, onde você será pressionado a gerar mais lucro e poderá criar campanhas de marketing para melhorar a imagem da sua empresa.

    ElectroCity

    ElectroCityO ElectroCity é uma delícia para os fãs do grande SimCity, já que num estilo muito parecido procura ensinar as diferenças entre os vários tipos de energia (eólica, termoelétrica, hidrelétrica, nuclear, etc…) e como é importante saber balancear a utilização dos recursos naturais com a preservação dos mesmos para proteger o meio ambiente. Nele você deve criar fazendas para aumentar a sua cidade, explorar recursos, criar parques e passeios para aumentar o turismo e instalar usinas dos mais diferentes tipos na sua cidade. Realmente é um jogo muito interessante, principalmente para conhecer os impactos de algumas formas de obtenção de energia no meio ambiente.

    Ayiti: The Cost of Life

    Ayiti: The Cost of LifeO Ayiti: The Cost of Life lembra muito o The Sims, mas obviamente com as suas limitações. Ele é um jogo de estratégia por turnos, onde seu objetivo é melhorar a vida de uma família do Haiti, escolhendo como cada um dos membros irá agir para que esse progresso seja obtido. Você tem inicialmente várias escolha, que mudam de turno para turno, coisas como mandar os membros da família trabalhar, estudar, descansar, serem voluntários da ONU ou irem para o hospital. Nisso tudo, pelo bem da família, você pode fazer coisas moralmente dúbias como mandar os filhos pequenos para o trabalho, algo algumas vezes necessário para conseguir dinheiro para sobreviver. Trata-se de um jogo bem complexo e principalmente difícil, demorei vários dias para termina-lo e ainda sim não foi em um nível muito satisfatório, mas de qualquer forma vale a pena dar uma olhada pois é um jogo muito bem feito e que mostra a dificuldade na vida das pessoas do 3º mundo.

    Posts Relacionados:

  • Game Developers Conference
  • Linux para jogos
  • Futuro dos Jogos
  • Nova Coluna Semanal: Geek Style of Life
  • FISL 9.0: Desenvolvendo jogos com PyGame
  • Desenvolvimento de jogos com o Morphic
  • Notícias Fresquinhas
  • Acompanhe-nos por RSS, por Email ou via Twitter.

  • 0 Comments
  • Filed under: Jogos
  • Neste Google Tech Talk, o Dr. Ben Goertzel explica suas visões de como o ramo de Inteligência Artificial deve ser explorado para alcançar o tão sonhado objetivo de criar programas com uma capacidade de aprendizado verossímil a de um ser humano.

    Ele explica que devemos criar um “bebê” artificial que irá aprender as coisas mais básicas até crescer em capacidade e então aprender coisas mais sofisticadas. Para isso é necessário um ambiente que simule de forma muito aproximada a nossa realidade para que o programa aprenda coisas parecidas com o nosso próprio aprendizado. Ele sugerio o uso de ambientes 3D avançados, como o Second Life.

    Esse assunto tem se tornado cada vez mais polêmico com o passar dos anos envolvendo não só questões ciêntificas para analisar como deve ser feito esse processo, mas também questões éticas e religiosas (se podemos imitar o cerebro humano se tivermos um espírito). Particularmente, penso que o objetivo de gerar um ser tão inteligente quanto o ser humano está ciêntificamente impedido pela nossa própria incapacidade de conhecer como o conhecimento deve ser aglutinado para formar conhecimentos superiores.

    Hoje os algoritmos de Aprendizado Computacional tentam criar programas que aprendam novas coisas mas não os permite ser criativos ou encontrar a melhor solução, como nós somos capazes. Segundo Ian Millington, em seu livro Artificial Intelligence for Games, além desta incapacidade temos ainda que na maioria das vezes não podemos impedir que um algoritmo de Aprendizado Computacional aprenda coisas erradas (o que segundo o autor inviabiliza a larga utilização do mesmo em jogos).

    De qualquer forma, sendo possível ou não o desenvolvimento de uma inteligência artificial tão avançada, vale dar uma olhada no video do Dr. Ben Goertzel. Você pode obter mais informações em KurzweilAI.net e Novamente.net.

    Posts Relacionados:

  • Alguns Videos da Google….
  • Google SO: Haiku
  • Inteligência Artificial
  • Design de APIs
  • O Mal da Google
  • Google Tech Talks
  • Viva aos programadores brasileiros
  • Acompanhe-nos por RSS, por Email ou via Twitter.

  • 0 Comments
  • Filed under: Google, IA
  • Falando Em Java: A Web2.0 somos nozes

    Após enfrentar longas horas de aeroporto (e acabar vindo de ônibus), Philip Calçado ainda teve pique para dar uma palestra divertida e focada na desambiguação do termo “Web2.0″.

    Começando pela diferenciação entre “Web1.x” e “Web2.0″, Calçado mostra a migração do conteúdo somente editorial - revisado e produzido por jornalistas e afins - para o modelo em que entramos, que soma conteúdo editorial a conteúdo de usuários e conteúdo garimpado*.

    Com o crescimento do acesso à internet há um aumento absurdo na demanda de informações e um novo tipo de conteúdo tende a surgir na forma de blogs, wikis, YouTube, Flickr e afins.

    Iniciando o exemplo abordado em todas as palestras, temos o vovô enófilo, usuário do Flickr, que viu a uva milhares de vezes e a classificou - um exemplo explicativo de Folksonomy.

    A palestra seguiu indicando a incerteza de como fazer dinheiro com Web2.0, mas apontando a garimpagem de conteúdo* como excelente opção. Além disso, foi mencionado o grande crescimento de SOAs** e seu impacto.

    Melhores frases:
    “É um problema agradável, mas é um problema.”
    “É o senso comum e o senso comum quase sempre ‘tá errado!”

    Aguardamos a publicação dos slides dessa palestra, com as tirinhas do Dilbert que -propositalmente- Calçado não nos deu tempo de ler.

    * Este termo se refere àqueles websites que aprendem suas preferências e mostram ítens de interesse particular de cada pessoa - vide Amazon.
    ** Service-Oriented Architecture, só fui entender a sigla ao fim da palestra.

    Posts Relacionados:

  • Falando em Java: Overview
  • Evento de metodologias ágeis: Falando em Agile
  • Falando em Java: Interfaces ricas na Web com Ajax
  • Inteligência Artificial
  • Cursos de verão do IME/USP reabrem inscrições
  • Java 1.6 no Mac
  • Voltando as atividades
  • Acompanhe-nos por RSS, por Email ou via Twitter.

  • 2 Comments
  • Filed under: Eventos, Web 2.0

  • Publicidade