19 Jul
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:
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.
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.
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.
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:
17 Jul
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
O 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
O 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
O 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
O 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:
16 Jul
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:
4 Jul
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: